system("pause")
Transcript
system("pause")
Informatica Applicata Laboratorio 1 Ing. Antonella Dimasi Ambiente di sviluppo L’ambiente di sviluppo utilizzato in questo corso è DEVC++. Dev-C++ è un ambiente di sviluppo integrato (IDE) per la programmazione C/C++. Utilizza come compilatore il porting Mingw del compilatore GCC (GNU Compiler Collection). Può creare eseguibili nativi Win32, o eseguibili console o GUI, come DLLs e librerire statiche. Dev-C++ può anche essere utilizzato in combinazione con Cygwin o con altri compilatori GCC based. Dev-C++ è un Free Software distribuito con licenza GNU General Public License (GPL). Informatica Applicata Laboratorio 1 2 Creazione di un file sorgente Per poter creare un file sorgente, dal menu File cliccare su Nuovo, poi su File Sorgente. Le operazioni successive sono: Stesura: consiste nella scrittura del testo del programma nel pannello di editor. Il programma risultante si chiama file sorgente (.c). Compilazione: una volta editato il programma è necessario procedere alla sua compilazione. Dal menù Esegui si seleziona l’opzione Compila. In questa fase viene verificata la correttezza sintattica (grammaticale) e semantica (per esempio, compatibilità tra i tipi di variabili) del programma. In seguito il file sorgente è tradotto generando il file eseguibile (.exe). Esecuzione: eseguita con successo la fase precedente, il programma può essere eseguito selezionando dal menù Esegui l’opzione Esegui. Informatica Applicata Laboratorio 1 3 Creazione di un progetto Un progetto è un modo per poter manipolare diversi file sorgente. Aiuta la navigazione del codice, permette di configurare facilmente i parametri. E’ utile utilizzare un progetto Dev-C++: se c’è più di un file sorgente, bisogna creare un progetto affinché Dev-C++ possa linkare tutti i file sorgente dopo la loro compilazione; nel caso in cui si voglia creare una DLL o una libreria statica (static library). Per poter creare un progetto Dev-C++, dal menu File cliccare su Nuovo, poi su Progetto. Scegliere quindi il tipo di progetto che si vuole creare: Windows application: crea un programma Windows, utilizando le Win32 API Console Application : crea un programma console Static library: crea un progetto vuoto con le opzioni richieste per la creazione di una static library DLL: crea un Win32 Dynamic Link Library Empty project: crea un progetto vuoto Selezionare il tipo di progetto, il nome del progetto e il corrispondente linguaggio (C o C++). Informatica Applicata Laboratorio 1 4 Avvertimenti sul DEV-C++ Programmi C e C++. Per scrivere programmi in C, è necessario salvare il file con estensione “.c”. Se non si fa attenzione, il file viene salvato con l’estensione “.cpp”, e diventa un file C++. Ogni programma corretto in C può essere salvato anche come programma C++, purchè si includano le librerie tipiche del C, con i comandi: #include stdlib.h e <#include stdio.h. Se si desidera salvare con estensione ".c" occorre rimpiazzare l'istruzione #include iostream.h del C++ (inclusa automaticamente dal Dev-C++) con l'istruzione #include stdio.h del C. Altrimenti il programma scritto sarà corretto in C++, ma non in C, e verrà quindi considerato errato se gli avete assegnato estensione ".c". Nomi dei file. Per i file C/C++, evitate i nomi lunghi, che contengano spazi vuoti o caratteri speciali. Il compilatore non li legge bene, e rischia di non trovare il file o di scambiarlo con un altro. La finestra di output del Dev-C++. Questa finestra ha un difetto: si chiude da sola, impedendoci di vedere i risultati di un calcolo. Per evitarlo dovete inserire, come ultima istruzione del main: system("pause") . Questa istruzione fa sì che, terminato il programma, l’esecuzione si fermi mostrando il risultato, e aspettando un “a capo”. Programmi non modificabili. Finchè non si darà tale “a capo”, il programma sarà considerato ancora in esecuzione, e non potrà essere modificato. Potrà capitare di correggere un errore quante volte vogliamo, salvando le modifiche ogni volta: eseguendo il programma incontreremo nuovamente l'errore appena eliminato. Questo perchè, finchè almeno una finestra di output è aperta, ogni modifica che potremo scrivere sarà, semplicemente, ignorata. Informatica Applicata Laboratorio 1 5 Hello World #include <stdio.h> È una libreria che dice al compilatore di includere le informazioni relative alla libreria standard di input/output int main(){ /* printf stampa sullo schermo la frase “Hello, World!” */ printf(“Hello, World!\n"); system("PAUSE"); return 0; } Informatica Applicata Laboratorio 1 6 Input/Output (1/4) Printf() int printf(char *format, arg1, arg2, …) La libreria da includere è stdio.h printf converte, formatta e stampa sullo standard output i suoi argomenti sotto il controllo di format. Essa ritorna il numero di caratteri stampati. La stringa di formato contiene due tipi di oggetti: caratteri ordinari, che vengono semplicemente copiati sull’output, e specifiche di conversione, ognuna delle quali provoca la conversione e la stampa del successivo argomento di printf. Es: printf(“Salve %c %d %s”,’c’,10,”gente!”); visualizzerà: Salve c 10 gente! Informatica Applicata Laboratorio 1 7 Input/Output (2/4) Printf() Ogni specifica di conversione inizia con un % e termina con un carattere di conversione. Tra il % ed il carattere di conversione si può trovare nell’ordine: 1. Un segno meno, che specifica l’allineamento a sinistra dell’argomento convertito. 2. Un numero, che specifica l’ampiezza minima del campo. 3. Un punto, che separa l’ampiezza del campo dalla precisione. 4. Un numero, la precisione, che specifica il numero di caratteri da stampare di una stringa, o il numero di cifre dopo il punto decimale, o il numero minimo di cifre di un intero. 5. Una h se l’intero deve essere stampato come short, oppure una l se deve essere stampato come long. Informatica Applicata Laboratorio 1 8 Input/Output (3/4) Alcuni specificatori di formato %d %6d %f stampa un intero decimale stampa un intero decimale in un campo di almeno 6 caratteri stampa un numero frazionario %6f stampa un numero frazionario in un campo di almeno 6 caratteri %.2f stampa un numero frazionario, con 2 cifre dopo il punto decimale %6.2f stampa un numero frazionario, in un campo di almeno 6 caratteri e con almeno 2 cifre dopo il punto decimale Informatica Applicata Laboratorio 1 9 Input/Output (4/4) Scanf() int scanf(char *format, …) La funzione scanf() legge caratteri dallo standard input, li interpreta in base al contenuto della stringa format e memorizza il risultato di queste operazioni negli argomenti successivi. Gli argomenti indicano dove deve essere registrato l’input convertito. Es: scanf(“%d%d”, &var1,&var2) legge due interi assegnandoli alle variabili var1 e var2. Informatica Applicata Laboratorio 1 10 Tabella Fahrenheit-Celsius #include <stdio.h> #define LOWER 0 #define UPPER 300 #define STEP 20 Sono delle costanti simboliche, non variabili, quindi non appaiono nelle variabili. int main(int argc, char *argv[]){ int fahr; for(fahr = LOWER; fahr<=UPPER; fahr=fahr+STEP){ float ris = (5.0/9.0)*(fahr-32); printf("%3d %6.1f\n", fahr, ris); } system("PAUSE"); Stampa il primo numero di ogni linea in un return 0; campo di tre cifre, ed il secondo in un campo di } almeno sei. Il primo numero è un intero ed il secondo è un float con una posizione decimale. Informatica Applicata Laboratorio 1 11 Casting #include <stdio.h> int main(int argc, char *argv[]){ int x=5; int y=9; %d indica che il risultato della divisione x/y è un numero intero %f indica che il risultato della divisione 5.0/9.0 è un numero frazionario printf(“risultato dell’operazione ‘x/y’: %d\n", x/y); un punto decimale in una costante indica che essa è un printf(“risultato dell’operazione ‘x/y’: %f\n", 5.0/9.0); numero frazionario, quindi printf("risultato dell’operazione (double)x/y: %f\n", (double)x/y ); 5.0/9.0 non viene troncato, printf("risultato dell’operazione (double)x/y: %f\n", (double)(x/y) ); perché è un quoziente tra due numeri decimali. printf("risultato dell’operazione ‘x/y+5.0’: %f\n", x/y+5.0 ); printf(" risultato dell’operazione ‘5.0+x/y’: %f\n", 5.0+x/y ); int numero; conversione dell’intero x in int lettera = 'A'; double e successiva divisione numero = (int)lettera; printf("numero: %d\n", numero); system("pause"); divisione x/y e successiva conversione del risultato in return 0; double } Informatica Applicata Laboratorio 1 12 scanf Programma che legge da tastiera un numero intero e lo assegna alla variabile x. Al termine di questa operazione il programma stampa a video una sequenza di x asterischi. #include <stdio.h> int main (void){ int x; int i; printf("Inserisci un numero>\n"); /*scanf legge dalla tastiera un numero intero e lo assegna alla variabile x*/ scanf("%d", &x); for (i=0; i<x; i++) printf("*"); printf("\nFine del programma \n "); system("pause"); } Informatica Applicata Laboratorio 1 13 Media Programma in C che legge da tastiera 2 numeri interi, ne calcola la media aritmetica e stampa il risultato a video. #include <stdio.h> int main (void) { int x; int y; int media; media=0; printf(“Inserisci il primo numero>\n”); scanf(“%d”, &x); printf(“Inserisci il secondo numero>\n”); scanf(“%d”, &y); media=(x+y)/2; printf(“La media dei due valori e: %d \n”, media); system(“pause”); } Informatica Applicata Laboratorio 1 14 Calcolo dei primi 100 numeri di Fibonacci (1/2) Ricordiamo che la successione dei numeri di Fibonacci è definita come segue: • F(0) = 0 • F(1) = 1 • F(n) = F(n-1) + F(n-2) per n>1 L’algoritmo scritto in pseudo codice è: Per i che va da 2 a 100 ( F Å ULTIMO + PENULTIMO; stampa F; PENULTIMO Å ULTIMO; ULTIMO Å F; ) Informatica Applicata Laboratorio 1 15 Calcolo dei primi 100 numeri di Fibonacci (2/2) #include <stdio.h> main(){ int ultimo = 1; int penultimo = 0; int i, f; printf(“%d/n”, penultimo); ultimo = 1; printf(“%d/n”, ultimo); for(i=2; i<100; i=i+1){ f = ultimo+penultimo; printf(“%d\n”, f); penultimo = ultimo; ultimo = f; } system(“pause”); Notare che non è possibile stampare effettivamente 100 numeri, poiché sicuramente tra i primi cento numeri di Fibonacci vi sono sicuramente numeri maggiori degli interi del tipo C int. } Informatica Applicata Laboratorio 1 16