La funzione main() La funzione main(), presente in tutti i programmi C, è una funzione come tutte le altre

Documenti analoghi
La funzione main() (

Funzioni. Il modello console. Interfaccia in modalità console

Fondamenti di Informatica T-1 modulo 2

Fondamenti di Informatica T-1 modulo 2

C: panoramica. Violetta Lonati

Ambienti di Programmazione per il Software di Base

Lezione 8: Stringhe ed array multidimensionali

Lezione 22: Input/Output e Files

Progetto di FILTRI. FILTRO SIPC (SOLO_I_PRIMI_CARATTERI) #include <stdio.h> #include <string.h>

Funzioni e. Alessandra Giordani Mercoledì 16 maggio 2012

Programmazione C: Esercizi su vettori e funzioni. Titolo presentazione. sottotitolo. Milano, XX mese 20XX

Funzioni come parametri

Esercizio 1 (15 punti)

Precedenza e associatività. Complementi sul C - 2. Esempi. Esempi

Il linguaggio C. Breve panoramica su stdio.h

Puntatori e array. Violetta Lonati

ESERCIZIO: SHIFT ARRAY (1)

I/O Avanzato in C: scheda riassuntiva

C: primi elementi. Lezione 4

Strutture dati. Operatori di incremento e decremento. Strutture di dati. Strutture di dati. ++ e -- Esempi. Vettori e matrici.

Lezione 11: Liste a Puntatori e Input/Output

Funzioni in C. Funzioni. Strategie di programmazione. Funzioni in C. Come riusare il codice? (2/3) Come riusare il codice? (1/3)

Esercitazione di Reti degli elaboratori

Le funzioni: la dichiarazione

Le funzioni: dichiarazione, definizione e chiamata Il passaggio degli argomenti per valore e riferimento La funzione main() Le regole di visibilità

Strategie di programmazione

JAVA. import java.util.*; #include <stdio.h> public static class test { int variable; private int variable; int main (int argc, char *argv[]) {

Settimana n.9. Obiettivi Stringhe Matrici Vettori di Stringhe

cout << "Inserisci un numero:" << endl; cin >> n; ris = n*2; cout << "Il doppio di " << n << " e " << ris << endl;

Corso di Informatica A.A

Funzioni con numero variabile di parametri: Funzioni Variadiche in C. Massimo Benerecetti Laboratorio di Algoritmi e Strutture Dati

Input/Output. Lettura e scrittura Caratteri e Stringhe: Terminale e file. Input/output. caratteri stringhe formattato ascii binari

ESTRARRE PAROLE (SIMBOLI) DA UNA STRINGA 1

File. Molto astratta: file ha un nome (ex. Pippo.c), ed altre caratteristiche (dimensione, tipo, etc). Operazioni: copiare, cancellare, eseguire..

Titolo presentazione

Ingresso ed Uscita in C. Informatica 1 / 15

Università degli Studi di Cassino Corso di Fondamenti di Informatica Tipi strutturati: Stringhe. Anno Accademico 2010/2011 Francesco Tortorella

Linguaggio C I puntatori

Operazioni sulle stringhe Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR

Librerie C. Corso di Linguaggi e Traduttori 1 AA Corso di Linguaggi e Traduttori 1 AA stdio.h

2 Operatori matematici e costrutto if

Linguaggio C e sistema operativo

Lezione 9: Puntatori a funzioni. Tipi enumerativi e orientati ai bit

Consideriamo un vettore allocato dinamicamente

Funzioni con numero variabile di parametri: Funzioni Variadiche in C. Massimo Benerecetti Laboratorio di Algoritmi e Strutture Dati

Introduzione al linguaggio C Puntatori

TUTORAGGIO INFORMATICA Settimana 5

Operazioni sulle stringhe

Librerie C. Corso di Linguaggi e Traduttori 1 AA

Le stringhe. Le stringhe sono sequenze di caratteri,

Perché il linguaggio C?

Sistemi Operativi (M. Cesati)

Informatica A (per gestionali) A.A. 2004/2005. Esercizi C. Funzioni: variabili e tipi locali e globali, passaggio parametri per valore, prototipo

Stringhe. In C le stringhe ben formate sono in realtà array di caratteri terminati sempre da un carattere speciale, \0, detto anche

I puntatori. Un puntatore è una variabile che contiene l indirizzo di un altra variabile. puntatore

Corso di Informatica

Cosa serve per cominciare?

Operazioni su file di caratteri

Esercizio 1 (15 punti)

LABORATORIO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO III Indice

Introduzione al linguaggio C Primi programmi

Alcuni esercizi. 1. Valutazione in cortocircuito 2. If e if innestati 3. Switch 4. Cicli

Laboratorio. Due. 1) Switch 2) Costrutti Iterazione (For, While, do while)

Le Funzioni in C. Fondamenti di Informatica Anno Accademico 2010/2011. Corso di Laurea in Ingegneria Civile Politecnico di Bari Sede di Foggia

Laboratorio di Informatica I

Esercizi proposti. Funzioni. Esercizio Confronto tra date. Esercizi proposti. Analisi. Controlli

Esercizi. FUNZIONI Passaggio di parametri per valore, variabili e tipi locali e globali, prototipo. Funzioni

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

Passare argomenti al programma

Compito A. Compito A Sintesi (main(

Perché il linguaggio C?

Uso avanzato dei puntatori Allocazione dinamica della memoria

Programmazione I (Classe 1)

ELEMENTI DI INFORMATICA. Linguaggio C

Ingresso ed Uscita in C. Luca Abeni

Fondamenti di Informatica 2

Input / Output. Come già detto, input e output sono realizzati in C da funzioni di stdio.h all'interno della libreria standard

Funzioni. Unità 1. Domenico Daniele Bloisi. Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR

Le strutture. Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune.

Lezione 7: Funzioni e gestione dei File

Le funzioni, e le istruzioni di input/output

Laboratorio di Informatica

Puntatori. Un puntatore contiene un numero che indica la locazione di memoria dove è presente la variabile puntata

Laboratorio di Programmazione: Linguaggio C Lezione 21 del 19 maggio 2014

Laboratorio di Elementi di Architetture e Sistemi Operativi Esercizi del 18 Aprile 2012

Programmazione I. Sessione giugno - luglio (Primo appello) Prova scritta 10 giugno Classe 1 (Matricole congrue a 0 modulo 3)

Introduzione al C. Unità 8 Stringhe

Struttura dei programmi e Variabili

Corso di Informatica A.A

Introduzione al C. Unità 8 Stringhe. S. Salza, C. Ciccotelli, D. Bloisi, S. Peluso, A. Pennisi

Stringhe Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR

Corso sul linguaggio C

giapresente( ) leggi( ) char * strstr(char * cs, char * ct) NULL

File binari e file di testo

Transcript:

La funzione main() La funzione main(), presente in tutti i programmi C, è una funzione come tutte le altre Unica particolarità: viene chiamata dal Sistema Operativo, appena il programma viene avviato Non esiste mai una chiamata a main() L interfaccia della funzione viene definita dalle caratteristiche del sistema operativo Modalità «consolle» Ricordiamo che il linguaggio C si è evoluto con interfacce «a caratteri» L attivazione di un programma avviene digitandone il nome in una finestra di comando

Modalità «consolle» Ricordiamo che il linguaggio C si è evoluto con interfacce «a caratteri» L attivazione di un programma avviene digitandone il nome in una finestra di comando Al termine dell esecuzione, il programma restituisce un codice di uscita Un numero intero Indica eventuali condizioni di errore Durante l esecuzione, il programma può accedere a file di stream Default (e se avete incluso «stdio.h» ): L input è la tastiera L output è lo schermo Modalità «consolle» La finestra di comando permette di passare al programma una serie di argomenti Nessuna, una o più stringhe di testo Utilizzate dal programma come dati in ingresso

Argomenti del programma Numero variabile di argomenti Anche nessuno Tipo argomenti Numeri Caratteri o stringhe Gli argomenti sono anche indicati come «argomenti del programma» «argomenti del main» «parametri del programma» «parametri sulla linea di comando» Il chiamante (sistema operativo) non ha modo di sapere quanti parametri servono al programma, né di che tipo verranno trattati in modo standardizzato Argomenti del programma Gli argomenti sulla linea di comando vengono trattati come un vettore di stringhe Anche nessuno Il programma riceve Una copia del vettore di stringhe Un valore numerico che indica quante stringhe sono presenti

ARGC, ARGV int argc Numero di parametri sulla linea di comando Incrementato di uno, in quanto il nome del programma viene considerato come un parametro Se non vi sono argomenti, vale 1 Se vi sono k argomenti, vale k+1 char *argv E un vettore di stringhe Ogni stringa è un parametro del programma Vi sono argc diverse stringhe La prima stringa (argv[0]) è il nome del programma La seconda stringa (argv[1]) è il primo argomento (se esiste) L ultimo argomento è in argv[argc-1] ARGC, ARGV

ARGC, ARGV ARGC, ARGV Il vettore argv contiene i dati sotto forma di stringa Per i dati di tipo numerico (int o double) occorre effettuare la conversione da stringa a numero i=atoi(argv[1]); r=atof(argv[1]); Se il parametro è invece una stringa, è possibile Utilizzare un puntatore alla stringa di interesse Copiarlo in una variabile (all occorrenza, mediante strcpy) C:\progr>progr pippo 12 paperino 23

Esempio 1 Scrivere un programma che dato un carattere e una stringa da linea di comando, conti quante volte il carattere compare nella stringa c:> contaoccorrenze c stringaincuicercare Algoritmo Recuperare gli argomenti Scandire la stringa carattere per carattere, contando le occorrenze del carattere dato Scrivere il numero di occorrenze a video Esempio 1 #include <stdio.h> int main (int argc, char* argv[]) { int cont=0, i=0; char ch=argv[1][0]; char *s=argv[2]; while (s[i]!= \0 ) if (s[i++] = =ch) cont++; printf ( totale occorrenze: %d, cont); }

Esempio 1 (migliore ) #include <stdlib.h> int main (int argc, char* argv[]) { int cont=0, i=0; if(argc!=3){ printf("numero argomenti non corretto\n"); exit(0);} {char ch=argv[1][0]; char *s=argv[2]; while (s[i]!='\0') if (s[i++]==ch) cont++; printf ("totale occorrenze: %d\n", cont); } } Esempio 2 Scrivere un programma che sommi tutti i numeri (supposti interi) passati come argomenti a linea di comando e stampi a video questo risultato c:> sommatutto 12 34 5 67 Algoritmo Recuperare gli argomenti Trasformare ciascun argomento (stringa) in un intero: si utilizza una funzione di libreria int atoi(char *) Scrivere il risultato a video

Esempio 2 #include <stdio.h> #include <stdlib.h> int main (int argc, char* argv[]) { int sum=0, i=0; while (i < (argc-1)) sum += atoi(argv[++i]); } printf ( somma totale : %d, sum); Argomenti da linea di comando Come passare argomenti dalla linea di comando quando non c è una linea di comando, come negli ambienti di sviluppo integrati (esempio lcc)? C:> nomeprog pippo 12 pluto 25 Esiste un apposita opzione da menu Projectconfigurationdebugger (command line arguments) Oppure si esegue il programma da finestra di comando

Valore di ritorno Al termine dell elaborazione il programma restituisce un numero intero al sistema operativo Tale valore viene spesso ignorato, ma in caso di esecuzione può essere utilizzato a livello di sistema operativo Il valore di ritorno è un int si preferisce utilizzare «interi positivi piccoli». Convenzionalmente: 0, se tutto è OK!=0, se si è verificata una condizione di errore (il valore specificato può essere utilizzato per specificare la causa dell errore) Il modo più semplice per restituire tale valore è di utilizzare l istruzione return all interno della funzione main() L elaborazione è immediatamente interrotta Il valore ritornato viene passato al sistema operativo Valore di ritorno Esiste inoltre la funzione di libreria exit, dichiarata in «stdlib.h», che assolve alla stessa funzione L elaborazione è immediatamente interrotta Il valore ritornato viene passato al sistema operativo Il vantaggio rispetto all istruzione return è che può essere usata all interno di qualsiasi funzione, non solo del main() Il modo più semplice per restituire tale valore è di utilizzare l istruzione return all interno della funzione main() L elaborazione è immediatamente interrotta Il valore ritornato viene passato al sistema operativo

Esercizio 3 Si scriva un programma da utilizzarsi come semplice calcolatrice sulla linea di comando Il programma, denominato «calcola», accetta 3 parametri sulla linea di comando Il primo ed il terzo parametro sono degli operandi, espressi come numeri reali Il secondo parametro è un operatore, scelto tra +, -, * e / Il programma stampa il risultato corrispondente all operazione