Abbiamo visto Struttura di un programma Commenti

Slides:



Advertisements
Presentazioni simili
Qualche esercizio per fissare le idee. Esercizio 1. Scrivere un programma SommaApprossimata che chiede all’utente di inserire due numeri con la virgola,
Advertisements

Table View. Problemi ricorrenti Una situazione ricorrente è quella in cui il controller potrebbe avere un’altezza superiore a quella dello schermo. In.
Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica FONDAMENTI DI INFORMATICA Domenico Talia
1 Elementi DI INFORMATICA Università degli Studi di Cagliari Corso di Laurea in Ingegneria Elettronica Linguaggio C A.A. 2011/2012
Un semplice programma C /* Programma che stampa un saluto */ #include main() { printf(“Hello World!\n”); }
NUMERI ed ERRORI MANOLO VENTURIN UNIVERSITÀ DEGLI STUDI DI PADOVA DIP. DI MATEMATICA PURA ED APPLICATA A. A. 2007/2008.
.  I tipi di dati non primitivi sono gli array, le struct e le union.  Gli array sono degli aggregati di variabili dello stesso tipo.  La dichiarazione.
Ereditarietà Uno dei principi della programmazione orientata agli oggetti (OOP) è il riuso Le classi dovrebbero essere progettate come componenti riutilizzabili.
© 2007 SEI-Società Editrice Internazionale, Apogeo
Unità A2 Java: le basi del linguaggio
LA PROGRAMMAZIONE: Algoritmi e programmi
Unità di apprendimento 1
La rappresentazione delle informazioni
Introduzione al linguaggio C
Dal problema al processo risolutivo
INFORMATICA DI BASE I FONDAMENTI.
IL CONCETTO DI ALGORITMO
Dal problema al processo risolutivo
Commenti Ogni riga che comincia con il simbolo # non viene letta dall’interprete per cui rappresenta un modo per commentare il listato # Questo è un esempio.
Excel 1 - Introduzione.
L’AMBIENTE CODE BLOCKS E L’IO
TIPI PRIMITIVI TIPI STRUTTURATI
JAVA usa una rappresentazione in VIRGOLA MOBILE
Programmazione strutturata
Tipo di dato: array Un array è un tipo di dato usato per memorizzare una collezione di variabili dello stesso tipo. Per memorizzare una collezione di 7.
Informatica per l’Ingegneria
Lezione 9 – A.A. 2016/2017 Prof. Giovanni Acampora
Tipo Carattere Finora abbiamo lavorato con valori numerici.
realizzato dal prof.Conti Riccardo
© 2007 SEI-Società Editrice Internazionale, Apogeo
Rappresentazione dei Numeri
Programmazione e Laboratorio di Programmazione
IL CONCETTO DI ALGORITMO
Programmazione e Laboratorio di Programmazione
INFORMATICA DI BASE I FONDAMENTI.
I RADICALI Definizione di radicali Semplificazione di radicali
Codicfiche Interi Complemento alla base.
© 2007 SEI-Società Editrice Internazionale, Apogeo
Strutture di Controllo
Secondo Programma in C.
Programmazione e Laboratorio di Programmazione
Struttura di un programma
I numeri relativi DEFINIZIONE. Si dicono numeri relativi tutti i numeri interi, razionali e irrazionali dotati di segno (positivo o negativo). ESEMPI Numeri.
Programmazione e Laboratorio di Programmazione
Struttura di un programma
Algebra Booleana.
Ricorsione 16/01/2019 package.
Programmazione e Laboratorio di Programmazione
© 2007 SEI-Società Editrice Internazionale, Apogeo
Programmazione e Laboratorio di Programmazione
I fogli elettronici Microsoft Excel.
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Unità A2 Java: le basi del linguaggio
Sistemi Digitali.
La struttura dei primi programma in C
Excel 3 - le funzioni.
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Unità 1 Programmi base.
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Array e Stringhe Linguaggio C.
La programmazione strutturata
Algoritmi.
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione Procedurale
Transcript della presentazione:

Abbiamo visto Struttura di un programma Commenti Dichiarazioni di variabili Istruzioni semplici: istruzione di output istruzione di input istruzione di assegnamento

Riepilogo: struttura di un programma direttive main() { dichiarazioni; istruzioni; }

Riepilogo: comenti // commenti in questo modo il compilatore non valuta una riga intera /* commenti */ in questo modo il compilatore non valuta quello che c'è dentro Nota bene Non si può inserire un commento in un altro (vietato l’annidamento dei commenti) /* /* non si può fare */ */

Riepilogo: dichiarazioni di variabili int x,y,z; Dichiarazione di tre variabili (x, y, z) di tipo intero

…ancora sulle dichiarazioni di variabili Nelle dichiarazioni può essere anche definito un valore iniziale, che viene automaticamente assegnato alle posizioni di memoria Esempio: int y; int x=5;

Riepilogo: istruzione di output printf("stringa"); stampa tutti i caratteri che compongono stringa uno dopo l'altro Nota: stringa è semplicemente una sequenza di caratteri

Riepilogo: istruzione di output printf usata anche per stampare il contenuto di una variabile sintassi printf(< stringa di formato >, < argomenti >) < stringa di formato > messaggio che deve essere visualizzato, comprensivo dei riferimenti ai tipi di dati contenuti nelle variabili < argomenti > variabili contenenti i dati da visualizzare

Riepilogo: istruzione di output Bisogna specificare il formato della variabile utilizzando il carattere speciale di formattazione % seguito dal carattere che definisce un certo formato per una variabile: %d per il tipo intero printf("%d%d%d", x, y, z); Provoca la stampa di tre valori interi contenuti in x, y e z. Ogni occorrenza del carattere % nel primo argomento è associata al corrispondente argomento di printf, a partire dal secondo: affinché non si verifichino errori, la corrispondenza deve riguardare sia il numero che il tipo di argomenti.

Esempi di printf Valore di x: 3 Valore di y: 5 Valore di x: 3 #include<stdio.h> main() { int x=3; int y=5; printf("Valore di x: %d\n", x); printf("Valore di y: %d\n", y); } printf("Valore di x: %d\nValore di y: %d\n", x, y); Valore di x: 3 Valore di y: 5 Valore di x: 3 Valore di y: 5

Cosa stampa? int a=0; int b=2; int c=4; int d=6; int e=8; int f=10; printf("Numeri pari da 0 a 10: %d %d %d %d %d \n",a,b,c,d,e); Messaggio visualizzato: Numeri pari da 0 a 10: 0 2 4 6 8

Cosa stampa? int a=0; int b=2; int c=4; int d=6; int e=8; int f=10; printf("Numeri pari da 0 a 10: %d %d %d %d %d %d \n",a,b,c,d,e,f); Messaggio visualizzato: Numeri pari da 0 a 10: 0 2 4 6 8 10

Cosa stampa? int a=0; int b=2; int c=4; int d=6; int e=8; int f=10; printf("Numeri pari da 0 a 10: %d %d %d %d %d \n",a,b,c,d,e,f); 5 Messaggio visualizzato: Numeri pari da 0 a 10: 0 2 4 6 8

Cosa stampa? int a=0; int b=2; int c=4; int d=6; int e=8; int f=10; printf("Numeri pari da 0 a 10: %d %d %d %d %d %d %d \n",a,b,c,d,e,f); 6 5 Messaggio visualizzato: Numeri pari da 0 a 10: 0 2 4 6 8 2293472

Ancora printf I calcoli possono essere eseguiti all’interno di una printf. #include<stdio.h> main() { int x=3; int y=5; x=y+x; printf("x=%d\n", x); } #include<stdio.h> main() { int x=3; int y=5; printf("x=%d\n", x+y); } Entrambi stampano: x=8

Riepilogo: istruzione di input scanf usata anche per acquisire l’input da tastiera sintassi scanf(< stringa di formato >, < argomenti >) < stringa di formato > indica il formato in cui saranno inseriti i valori < argomenti > variabili che devono contenere i valori inseriti, preceduti dal carattere &

Riepilogo: istruzione di input scanf("%d", &x) legge la prossima sequenza di caratteri sullo standard input che rappresentano un valore di tipo intero e assegna tale valore alla variabile x; occorre premettere al nome della variabile & Posso anche scrivere: scanf("%d%d", &x, &y);

Riepilogo: istruzione di assegnamento x = 1 + 4 * (y + 2); calcola il valore dell’espressione a destra del segno = e lo assegna alla variabile x

Esercizio Scrivere un programma che, utilizzando una sola istruzione printf, visualizzi: Prove tecniche di visualizzazione

Soluzione #include<stdio.h> main() { printf("Prove\n\n tecniche\ndi\n visualizzazione"); } #include<stdio.h> main() { printf("Prove\n\n tecniche\n di\n visualizzazione");

Esercizio Che sarà visualizzato (se lo sarà), quando ognuna delle seguenti istruzioni C verrà eseguita? Assumete che x=2 e y=3. printf("%d", x); printf("%d", x+x); printf( «x=%d», x); z=x+y; scanf("%d%d", &x, &y); /* printf("x+y=%d", x+y)*/; 2 4 niente

Esercizio Scrivere un programma che richieda all’utente un numero intero. Il programma deve quindi calcolare e visualizzare il doppio. Esempio Dammi un numero 5 Il risultato = 10

Soluzione printf("Dammi un numero\n"); scanf("%d", &numero); #include<stdio.h> main() { int numero; printf("Dammi un numero\n"); scanf("%d", &numero); numero = numero+numero; printf("Il risultato = %d", numero); }

Esercizio Scrivere un programma che richieda all’utente tre numeri interi. Il programma deve quindi calcolare la differenza dei tre numeri e moltiplicare il risultato per il primo numero. Visualizzare il risultato Esempio Dammi il primo numero 10 Dammi il secondo numero 2 Dammi il terzo numero 3 Il risultato = 50

Soluzione #include<stdio.h> main() { } int primo, secondo, terzo, risultato; printf("Dammi il primo numero "); scanf("%d", &primo); printf("Dammi il secondo numero "); scanf("%d", &secondo); printf("Dammi il terzo numero "); scanf("%d", &terzo); risultato = (primo-secondo-terzo)*primo; printf("Il risultato = %d", risultato); }

Soluzione alternativa #include<stdio.h> main() { int primo, secondo, terzo; printf("Dammi i tre numeri separati da spazio\n"); scanf("%d %d %d", &primo, &secondo, &terzo); printf("Il risultato = %d", (primo-secondo-terzo)*primo); }

Esercizio Indicare tutti gli errori commessi nel seguente listato e fornire una versione corretta. #include<stdio.h>; */ programma con errori /* main() Printf("programmi con errori"); int num = 9 scanf("d", num); ris+2 = num; printf("Risultato=" ris); } NO /* */ p ris va dichiarato % & %d

Versione corretta #include<stdio.h> /* programma con errori */ main() { int ris; int num = 9; printf("programmi con errori"); scanf("%d", &num); ris = num+2; printf("Risultato=%d", ris); }

Esercizio Cosa stampa il seguente programma? #include<stdio.h> { int x=2, y=3; scanf("%d %d", &x, &y); y=x*y; printf("Il prodotto x*y = y", y); }

Soluzione Stampa: Il prodotto x*y = y Se volevo stampare il prodotto di due numeri letti dall’esterno avrei dovuto usare questa istruzione: printf("Il prodotto x*y = %d", y);

Esercizio Stabilite quali delle seguenti affermazioni sono vere o false 1) Quando sarà invocata la funzione printf, questa comincerà a visualizzare sempre dall’inizio di una nuova riga 2) I commenti inducono il computer a visualizzare sullo schermo il testo racchiuso tra /* e */ durante l’esecuzione del programma 3) Tutte le variabili devono essere dichiarate prima di essere utilizzate

Soluzione 1) Falso. La funzione printf incomincerà sempre a visualizzare laddove sarà stato sistemato il cursore, e questo potrà essere ovunque su una riga dello schermo 2) Falso. I commenti non causano l’esecuzione di nessuna azione durante l’esecuzione del programma. Essi sono usati per documentare i programmi e migliorare la loro leggibilità 3) Vero

Tipi elementari, costanti

Tipi di dati VALORI: un insieme dei valori del tipo OPERAZIONI: per operare su tali valori TIPI Strutturati Semplici Intero Reale Carattere

Per ogni tipo Campo di variabilità Notazione per i valori costanti Operazioni Metodi di input/output

Tipo Intero Gli interi servono per contare, e contare è uno dei compiti più tipici per i computer Il tipo intero viene utilizzato per tutte le grandezze che possono essere rappresentate come numeri interi, come per es.: età, numero di figli, ecc.

Campo di variabilità Intervallo finito TIPO DIMENSIONE (byte) VALORE MINIMO VALORE MASSIMO short int 2 -32768 +32767 int 4 -231 231 -1 long int 4 (8) (-263) 231 – 1 (263 – 1)

Notazione per i valori costanti Sequenza di cifre, preceduta eventualmente dal segno + o - int x; x = 356; x = -987;

Operazioni + somma - meno unario - differenza * prodotto / divisione intera % resto della divisione intera (modulo)

Esempi int x=9; int y=6; Se y=0 -> errore perché un computer non è in grado di eseguire una divisione per zero Per i numeri negativi, la direzione di troncamento del / ed il segno del risultato di %, dipendono dalla macchina Se x%y restituisce 0 e x è multiplo di y x/y =>1 x%y =>3

Metodi di input/output int x; Output printf("%d", x); Input scanf("%d", &x);

Esempio #include<stdio.h> main() { int x=9; int y=6; printf("x/y=%d\n", x/y); printf("x%%y=%d\n", x%y); }

esempio #include<stdio.h> main() { short int x; printf("Dammi uno short intero:"); scanf("%d", &x); printf("%d", x); }

Al computer TIPO DIMENSIONE (byte) VALORE MINIMO VALORE MASSIMO short int 2 -32768 +32767 int 4 -231 231 - 1

Sul tipo intero Possibile aggiungere il qualificatore unsigned alla definizione di tipo, che consente alla variabile di contenere solamente numeri positivi TIPO DIMENSIONE (byte) VALORE MINIMO VALORE MASSIMO unsigned short int 2 65535 unsigned int 4 +232-1 unsigned long int 4 (8) +231-1 (+264 - 1)

Differenza tra tipo intero ed interi proprietà valide per i numeri interi non lo sono sempre per il tipo intero Esempio x + (y - z) = ( x + y) - z 9 fuori intervallo Ipotesi tipo intero è [-10, 10], x = 8, y = 7, z = 6

Cosa stampa? #include<stdio.h> main() { } int x; x = 3*5+2; printf("%d", x); } 17 oppure 21

Precedenze Il C dispone di un insieme di regole che determinano l’ordine in cui le varie operazioni devono essere eseguite Per le operazioni aritmetiche le precedenze sono quelle definite in matematica

Precedenze degli operatori aritmetici ASSOCIATIVITÀ Parentesi : () dall’interno all’esterno Operatore unario: - da destra a sinistra Operatori binari: * / % da sinistra a destra + - +alta +bassa

2*3*5 => ((2*3)*5) Da sinistra a destra Associatività 2*3*5 => ((2*3)*5) Da sinistra a destra

Regole In base alla precedenza Se tutti gli operandi hanno la stessa precedenza: associatività Priorità degli operatori può essere alterata con le parentesi tonde: vengono valutate per prima le operazioni all’interno delle parentesi tonde più interne

Esempio 3*5+2 17 * precedenza su + 2*3/2*3 9 * e / stessa precedenza sx verso dx: ((2*3))/2)*3 3*(5+2) 21 7+3-15+4*5 15 (((7+3)-15)+(4*5))

Esercizio 1 Scrivere un programma che richiede all’utente un numero che rappresenta un periodo di tempo espresso in minuti. Il programma converte tale periodo in ore e minuti e visualizza il risultato in ore e minuti Esempio Utente immette 134m -> 2 h, 14 m Utente immette 45m -> 0 h, 45 m Utente immette 180m -> 3 h, 0 m

Soluzione #include<stdio.h> main() { } int numero, minuti, ore; printf("Dammi il tempo in minuti "); scanf("%d", &numero); ore = numero/60; minuti= numero%60; printf("%d h, %d m", ore, minuti); }

Esercizio 2 Scrivere un programma che richiede all’utente un numero positivo di tre cifre. Il programma stampa la cifra centrale. Esempio: 356 -> 5 789 -> 8

Soluzione #include<stdio.h> main() { } int n, cfr; printf("Introduci un numero positivo di tre cifre\n"); scanf("%d", &n); cfr = (n/10) % 10; printf("Cifra centrale: %d", cfr); }

Esercizio 3 Rovesciare un numero positivo di tre cifre Esempio: 356 diventa 653 789 diventa 987

Soluzione #include<stdio.h> main() { } int n, unita, decine, centinaia; printf("Introduci un numero positivo di tre cifre\n"); scanf("%d", &n); unita = n % 10; decine = (n/10) % 10; centinaia = n/100; printf("Numero rovesciato: %d%d%d", unita, decine, centinaia); }

Oppure… #include<stdio.h> main() { } int n, unita, decine, centinaia; printf("Introduci un numero positivo di tre cifre\n"); scanf("%d", &n); unita = n % 10; decine = (n/10) % 10; centinaia = n/100; printf("Rov: %d", 100*unita+10*decine+centinaia); }

Esercizio Scrivere un programma che richiede all’utente un numero che rappresenta un’altezza in centimetri. Il programma converte tale altezza in metri e centimetri e visualizza il risultato in metri e centrimetri Esempio Utente immette 134cm -> 1 m, 34 cm Utente immette 45cm -> 0 m, 45 cm Utente immette 200cm -> 2 m, 0 cm

Soluzione #include<stdio.h> main() { } int numero, metri, centimetri; printf("Dammi l’altezza in cm "); scanf("%d", &numero); metri = numero/100; centimetri= numero%100; printf("%d m, %d cm", metri, centimetri); }

Tipo Reale I numeri reali vengono usati per rappresentare prezzi, pesi, misure, per calcoli matematici, ecc.

Campo di variabilità Intervallo finito TIPO DIMENSIONE (byte) VALORE MINIMO VALORE MASSIMO float precisione singola 4 -3.2*10±38 +3.2*10±38 double precisione doppia 8 -1.7*10±308 +1.7*10±308

Notazione per i valori costanti Esistono due modi di scrivere numeri reali 1. parte intera punto parte decimale 4.34 2. parte intera e o E esponente con segno -3E3 rappresenta -3⋅103 cioè –3000 5e-2 rappresenta 5⋅10-2 cioè 0.05

Operazioni somma, differenza unaria e binaria, prodotto, divisione reale, esponenziali, logaritmi, funzioni trigonometriche, …

Funzioni Aritmetiche #include<math.h> x e y di tipo double e restituiscono un double pow(x, y) xy sin(x) seno di x, con x espresso in radianti cos(x) coseno di x, con x espresso in radianti exp(x) ex log(x) logaritmo naturale di x sqrt(x) radice quadrata x, x>=0 log10(x) logaritmo in base 10 di x

Metodi di input/output float x; Output printf("%f", x); Input scanf ("%f", &x);

Metodi di input/output double x; Output printf("%lf", x); Input scanf ("%lf", &x);

Limiti di precisione Operazioni aritmetiche sui reali non sono necessariamente esatte Per brevi computazioni questo di solito non rappresenta un problema, se invece la computazione contiene molte operazioni, come la risoluzione numerica di equazioni differenziali, è importante conoscere gli effetti degli errori dovuti alla rappresentazione Di questi aspetti si occupa l’analisi numerica

Esercizio Scrivere un programma che calcola l’area di un cerchio di raggio r immesso dall’utente

Soluzione #include<stdio.h> main() { } float r, area; printf("Dammi il raggio: "); scanf("%f", &r); area = r*r*3.14; printf("L'area del cerchio di raggio %f = %f\n", r, area); }

Scrivere un programma che effettua la conversione da LIRE ITALIANE a EURO Esempio Se immetto 1000 LIRE 1000 LIRE = 0.516457 EURO (1 euro = 1936.27 lire)

Soluzione #include<stdio.h> main() { } float euro, lira; printf("Dammi il numero in LIRE: "); scanf("%f", &lira); euro = lira / 1936.27; printf("%f LIRE = %f EURO", lira,euro); }

Miglioriamo la stampa #include<stdio.h> main() { } float euro, lira; printf("Dammi il numero in LIRE: "); scanf("%f", &lira); euro = lira / 1936.27; printf("%.0f LIRE = %.2f EURO", lira,euro); } %.nf stampa un numero frazionario con n cifre dopo il punto decimale

Esercizio Scrivere un programma che calcola l’area di un triangolo di base b ed altezza h, immessi dall’utente

Soluzione #include<stdio.h> main() { } float base, altezza, area; printf("Dammi la base: "); scanf("%f", &base); printf("Dammi l'altezza: "); scanf("%f", &altezza); area = (base * altezza)/2; printf("L'area: %f\n", area); }

Esercizio Scrivere un programma che effettua la conversione da EURO a LIRE ITALIANE Esempio Se immetto 100 EURO 100 Euro = 193627 LIRE

Soluzione #include<stdio.h> main() { } float euro, lira; printf("Dammi il numero in EURO: "); scanf("%f", &euro); lira = euro * 1936.27; printf("%f EURO = %f LIRE", euro,lira); }