Introduzione alla programmazione in C(++)

Documenti analoghi
PROGRAMMAZIONE: Le strutture di controllo

Corso di Fondamenti di Informatica Il sistema dei tipi in C++

Esercizi Programmazione I

Elementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I

Laboratorio di programmazione

Informatica (A-K) 7. Linguaggio C - 1

Linguaggio C: le funzioni

IL PRIMO PROGRAMMA IN C

Breve Manuale di Riferimento sulla Sintassi Linguaggi C++ e FORTRAN

Unità F1. Obiettivi. Il linguaggio C. Il linguaggio C++ Linguaggio C. Pseudolinguaggio. Primi programmi

Elementi di C++ di base

Un esempio per iniziare. Il controllo del programma in C. Altri cenni su printf() Esercizi (printf) printf( 8!=%d, fatt);

Le Strutture di controllo Del Linguaggio C. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

Linguaggio C - le strutture di controllo: sequenza, selezione, iterazione

Caratteristiche di un linguaggio ad alto livello

Istruzioni Condizionali in C

Variabili. Unità 2. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER

Sviluppo di programmi

Informatica 1 Tipi e dichiarazioni in C++ C++ - Tipi e dichiarazioni 1

Matematica con Python

Espressioni logiche. Espressioni logiche. Operatori logici. Operatori logici. Operatori logici. Espressioni Logiche e Istruzione di Test

Linguaggio C: introduzione

Struttura dei programmi C

Informatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica

Il potere espressivo di un linguaggio è caratterizzato da: PROGRAMMA = DATI + CONTROLLO

Somma di numeri binari

LINGUAGGI DI PROGRAMMAZIONE!

IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale

Programmazione in Java (I modulo)

Linguaggio C. strutture di controllo: strutture iterative. Università degli Studi di Brescia. Docente: Massimiliano Giacomin

HOMEWORKS. in modo che il programma stampi N ripetizioni della stringa HelloWorld (su righe diverse), con N inserito dall utente.

6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Pr1: determinare il maggiore di n numeri interi n. Fondamenti di Informatica Prof. Vittoria de Nitto Personè

Istituto Tecnico Industriale M. M. Milano Polistena. Classe III D a.s. 2015/2016 C++ Guida Base

Compitino di Laboratorio di Informatica CdL in Matematica 13/11/2007 Teoria Compito A

PROGRAMMAZIONE IN C E C++

Esercitazione 4. Comandi iterativi for, while, do-while

Algoritmi e basi del C Struttura di un programma

SULL USO DEI CARATTERI. char x; si legge con ( %c,&x) e si stampa con ( %c,x) ma anche con ( %d,x) DUE ESEMPI

Tipi elementari, costanti. Tipi di dati. VALORI: un insieme dei valori del tipo OPERAZIONI: per operare su tali valori. Tipi. intero reale carattere

Primi passi col linguaggio C

Lezione 7: La Formalizzazione degli Algoritmi - Strutture di Controllo e Selettive La Programmazione Strutturata (3 p) Giovedì 21 Ottobre 2010

a.a Codice corso: 21012, HOMEWORKS

PROGRAMMAZIONE IN C E C++ Prof. Enrico Terrone A. S: 2014/15

Costrutti condizionali e iterativi

Appunti, esempi ed esercizi sui linguaggi C/C++

Diagrammi a blocchi 1

Le Funzioni e la Ricorsione

Linguaggio C Espressioni e operatori

Elementi di Programmazione in C++

Introduzione al Linguaggio C

Creare una funzione float square(float x). La funzione deve restituire il quadrato del parametro x.

MATLAB I/O. Informatica B - A.A. 2012/2013 ACQUISIZIONE DI INPUT DA TASTIERA

Analogico vs. Digitale. LEZIONE II La codifica binaria. Analogico vs digitale. Analogico. Digitale

Codice binario. Codice. Codifica - numeri naturali. Codifica - numeri naturali. Alfabeto binario: costituito da due simboli

3. Indicare cosa sta a significare la figura geometrica del rombo in un diagramma a blocchi

Indice. Prefazione. 3 Oggetti e Java 53

Espressioni ed operatori in C

Errori frequenti Cicli iterativi Array. Cicli e array. Laboratorio di Programmazione I. Corso di Laurea in Informatica A.A.

Transcript:

Testi Testi Consigliati: Introduzione alla programmazione in C(++) A. Kelley & I. Pohl C didattica e programmazione A. Kelley & I. Pohl C didattica e programmazione B.W. Kernighan & D. D. M. M. Ritchie Linguaggio C C Materiale disponibile sul sito http://www.fisica.unile.it/~martello/corsi/dottorato/tecnooo/tecnooo_03-04/index.html

Variabili Un importante tipo di identificatori sono le variabili. Tutti voi possedete già il concetto di variabile in matematica. In programmazione una variabile è un elemento del codice che identifica un particolare blocco di memoria. Il contenuto di tale blocco di memoria potrà quindi essere utilizzato e manipolato dal programma. Per poter utilizzare una variabile occorre in primo luogo definirla. La definizione di una variabile è un punto essenziale in quanto permette al compilatore di allocare la quantità di memoria necessaria al tipo di variabile che si deve gestire e di scegliere le istruzioni in linguaggio macchina idonee ad eseguire operazioni su di essa. In C le definizioni di variabili vanno tutte inserite all inizio del blocco di istruzioni. In C++ possono essere definite quando vengono utilizzate.

Variabili Elemento importante nella definizione di una variabile è il tipo di dato che essa deve contenere. Le quattro parole chiave riportate di seguito identificano i quattro più comuni tipi di dato contenuto in una variabile che potrete trovare in C. char int float double char int float double carattere. Richiede un byte di memoria intero. Richiede (quasi sempre) 4 bytes di memoria reale in singola precisione. 4 bytes di memoria. reale in doppia precisione. 8 bytes di memoria int main() { int a; int numero_di_studenti; double Media_voto,media_voto;

Variabili: int Le variabili intere (int) vengono memorizzate in una parola della memoria della macchina. Le macchine moderne usano parole da 32 bit per cui il massimo numero intero memorizzabile è +/-2 31 int main() { int a=2000000000; int b=2000000000; int c=a+b;

Variabili: float e double I due formati di dato che più frequentemente vengono usati in C per rappresentare variabili di tipo reale sono double e float Di default (a differenza di molti altri linguaggi) una costante reale in C è di tipo double (doppia precisione). Nella maggior parte delle macchine un reale di tipo float è registrato in 4 bytes di memoria mentre un reale di tipo double in 8. Dato che la macchina lavora in binario un reale non è quasi mai registrato in maniera esatta, per cui le operazioni tra reali (a differenza delle operazioni tra interi) non sono necessariamente esatte. I possibili valori assegnabili ad un reale sono espressi da due attributi: precisione e range. La precisione identifica il numero di cifre significative rappresentabili, mentre il range identifica il più grande e il più piccolo numero rappresentabile

Variabili: float e double Un float normalmente ha una precisione di 6 cifre significative e un range di 10-38 -10 38 Un float può essere visto come un numero scritto nel formato 0.d 1 d 2 d 3 d 4 d 5 d 6 x 10 n con n compreso tra -38 e 38 Un double ha invece una precisione di 15 cifre significative e un range che va da -308 a 308 int main() { float a=1.e+8; float c=a+0.1; limite in precisione int main() { float a=1.e+38; float c=a*10; limite in range

Variabili: char I caratteri sono un particolare tipo di variabili. Una variabile di tipo char può contenere uno e un solo carattere. Dato che la macchina lavora utilizzando sempre e solo numeri, i caratteri vengono registrati in memoria sotto forma di un numero intero. Esiste quindi una tabella di conversione (ASCII) che permette di mettere in relazione biunivoca i caratteri con gli interi ad essi associati. Un solo byte di memoria è sufficiente a registrare 256 valori diversi (2 8 ). Per cui un solo byte è sufficiente a contenere tutti i caratteri utili.

Espressione Una espressione e una successione di identificatori, costanti e operatori che da origine a un risultato (numerico, logico o di tipo carattere). Non costituiscono una espressione: Le parole chiave Gli elementi di punteggiatura (normalmente utilizzati per delimitare le espressioni) Esempi di espressioni a=b+c; a == b; (-i+j*5>= ++k*3) ( A +c- a == z )

Istruzione e Istruzione composta Un istruzione e una successione di elementi limitata da un punto e virgola (;). Il compilatore, una volta individuati i vari elementi li raccoglie in istruzioni. Le istruzioni vengono valutate una sola volta. Una istruzione puo coincidere con una espressione (istruzioni di assegnazione). Un istruzione composta e un insieme di istruzioni semplici delimitate da due parentesi graffe ({ ). Un istruzione composta puo contenere definizioni. In questo caso e spesso detta blocco. Esempi di istruzioni int a; c=a; while(a>b) c++; if (a>b) c=a; while (a > b) /* commento.. */ c++; Definizione Assegnazione Controllo del flusso Esempi di istruzioni composte { { int a=1; a++; int h=0; { int c=3; c++;

Funzioni Matematiche Per poter utilizzare le funzioni matematiche occorre renderle note al compilatore #include <math.h> #include <iostream> int main(void) { double x=0.5; double y; y=sin(x); std::cout << sin ( <<x<< ) = <<y << std::endl; return 0; sin(x), cos(x), tan(x) funzioni goniometriche asin(x), acos(x), atan(x) funzioni goniometriche inverse exp(x) esponenziale log(x), log10(x) logaritmo naturale e in base 10 fabs(x) valore assoluto pow(x,y) elevazione a potenza x y sqrt(x) radice quadrata

Operatori Logici Operatori () ++ (postfisso) -- (postfisso)! + (unario) (unario) ++ (prefisso) -- (prefisso) * / % + - < <= > >= ==!= && = += -= *= /* Associativita Sin. - Des. Des. - Sin. Sin. Des. Sin. Des. Sin. Des. Sin. Des. Sin. - Des. Sin. Des. Des. Sin.

Operatori Logici Nel linguaggio C falso e rappresentato dal valore zero mentre vero e rappresentato da una qualsiasi espressione diversa da zero. 0, 0.0, \0 e NULL sono esempi di valori considerati falsi. L azione di un operatore logico tra due espressioni dara quindi come risultato l intero 1 nel caso in cui la relazione sia vera e l intero 0 nel caso in cui la relazione sia falsa. Consideriamo alcuni esempi char c= h ; int i=1, j=10, k=-10; float x=7e+30, y=1e-8; a +3<c -i+j*5>k*2 3<j<5 x<x+y ( a +3)<c (-i)+(j*5)>(k*2)??? x<(x+y) 1 1??????

Operatori Logici char c= h ; int h=0,i=1, j=10, k=-10; float x=7e+30, y=1e-8; i && j && k!++h!h++!h*!!x!(x<y) && k (h==i) && j (h=i) && j (i && j) && k 1 0 1????????????

Controllo del Flusso: if if-else La parola chiave if permette l esecuzione di una istruzione se e solo se una espressione e vera. espressione espressione if (a>b) { if (a>b) c=a; c=b; b++; istruzione composta istruzione if (a>b) c=a; else c=b; if (a>b) { c=a; b++; else { c=b; a++; if (a>b) { c=a; b++; else c=b; if (a>b) { c=a; b++; else if (a==b) a++; else { c=b; a++;

Controllo del Flusso: while La parola chiave while permette di eseguire una istruzione (semplice o composta) sino a quando una espressione e vera. Nota: l istruzione viene eseguita se e solo se l espressione e vera. espressione while (a>b) b++ ; espressione istruzione while (a>b) { b++; istruzione composta c+=b; std::cout<< c<<std::endl;

Controllo del Flusso: for La parola chiave for permette di eseguire la stessa istruzione un numero di volte fissato e introduce la possibilita di utilizzare all interno dell istruzione un indice che identifica il numero di iterazione. L istruzione for ha (normalmente) tre argomenti. for (arg1 ; arg2 ; arg3) istruzione ; Se confrontata con la parola chiave while, essa e equivalente a: arg1; while (arg2) { istruzione; arg3; Come si puo vedere dalla precedente sintassi, il primo e il terzo argomento di for sono a loro volta delle istruzioni (normalmente istruzioni di assegnazione o definizione) mentre il secondo argomento e una espressione che torna una condizione logica (zero / non-zero)

Controllo del Flusso: for for ( i=1 ; i<= k ; i++ ) fattoriale *=i; La successione delle operazione eseguite dalla precedente istruzione e la seguente: 1. Viene valutato il primo argomento (eseguita l espressione di definizione e assegnazione int i=0;) 2. Viene valutato il secondo argomento (espressione i<=k ). Se e vero (nonzero) 3. Viene eseguita l istruzione ( fattoriale *=i; ) 4. Viene valutato il terzo argomento (istruzione i++). 5. Ritorna al passo 2 L istruzione termina quando l espressione al passo 2 diventa falsa. Vantaggi: Numero di iterazioni fissato. Disponibilita di un indice di iterazione per l istruzione (i nell esempio).

Controllo del Flusso: for int i=0; for ( ; i<=10 ; i++) std::cout<< Ciao Mondo! <<std::endl; int i=0; for ( ; i<= 10 ; ) { std::cout<< Ciao Mondo! <<std::endl; i++; for ( ; ; ) {.. /* questo e un loop infinito */

Controllo del Flusso: break e continue Mentre si e all interno di un loop e possibile saltare una parte dell istruzione che si sta eseguendo o interrompere bruscamente l intera esecuzione del loop al verificarsi di particolari condizioni mediante le parole chiave break e continue. /* calcolo la radice quadrata di numeri inseriti da tastiere */ #include <iostream> #include <math.h> Pre-compilatore??? int main(void) { double radicando,radice; while (1) { std::cin >> radicando; input mediante cin if (radicando< 0.0) break; radice=sqrt(radicando); Funzione matematica sqrt() std::cout<< La radice di << radicando << è << radice<< std::endl; return 0; Output mediante cout

Controllo del Flusso: break e continue /* calcolo la radice quadrata di numeri inseriti da tastiera */ #include <iostream> #include <math.h> int main(void) { double radicando,radice; while (1) { std::cin >> radicando; if (radicando< 0.0) continue; radice=sqrt(radicando); std::cout<< La radice di << radicando << è << radice<< std::endl; return 0;

Esempi 1. Leggere un numero da tastiera e stamparlo sullo schermo 2. Leggere due numeri da tastiera, sommarli e stampare il risultato 3. Leggere un numero da tastiera, calcolarne la radice quadrata e stamparla sullo schermo 4. Scrivere un programma che calcoli l ipotenusa di un triangolo rettangolo leggendo la lunghezza dei cateti da tastiera. Stampare il risultato sullo schermo. 5. Sommare due vettori 6. Calcolare il prodotto scalare/vettoriale tra due vettori nel piano. 7. Come 3 ma verificare se il numero in input è positivo 8. Calcolare il valore assoluto di un numero in input 9. Calcolare la distanza di un punto da una retta 10. Leggere 10 numeri da tastiera sommarli e stampare il risultato 11. Leggere N numeri da tastiera sommarli e stampare il risultato 12. Leggere N numeri da tastiera e sommarli in valore assoluto e stampare il risultato

Esercizio Scrivere un codice in grado trovare gli zeri di un polinomio di secondo grado ax 2 +bx+c=0 Il codice deve: 1. Chiedere all utente il valore numerico dei tre coefficenti. 2. Calcolare e stampare il valore degli zeri.