




Studia grazie alle numerose risorse presenti su Docsity
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Prepara i tuoi esami
Studia grazie alle numerose risorse presenti su Docsity
Prepara i tuoi esami con i documenti condivisi da studenti come te su Docsity
Trova i documenti specifici per gli esami della tua università
Preparati con lezioni e prove svolte basate sui programmi universitari!
Rispondi a reali domande d’esame e scopri la tua preparazione
Riassumi i tuoi documenti, fagli domande, convertili in quiz e mappe concettuali
Studia con prove svolte, tesine e consigli utili
Togliti ogni dubbio leggendo le risposte alle domande fatte da altri studenti come te
Esplora i documenti più scaricati per gli argomenti di studio più popolari
Ottieni i punti per scaricare
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Riassunto sulle funzioni in linguaggio di programmazione c. Teoria e esercizi esempio. Accenni a array e strighe.
Tipologia: Appunti
1 / 8
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!





Include math.h (pow) Passaggio di parametri ESPLICITO:In c il passaggio di parametri avviene sempre per valore, ogni par. formale è inizalizzato con il suo par. attuale.Non è necessaria una perfetta corrispondenza Il passaggio dei parametri puo essere effettuato tra FLOAT DOUBLE e tra Char/shortINT IMPLICITO:definire una var globale sia alla funzione chiamante che a quella chiamata Gli array non possono effettuare il passaggio di parametri (troppo lunga, troppi dati)
Definibili in un file al di fuori di ogni funzione,possiamo leggerlo e scriverlo da qualsiasi funzione.
Es per chi non usa nessun parametro messerr(visualizzare un mess)
Se una funzione in c restituisce piu di un valore o si usano le variabil globali o si rende nota alla funzione le locazioni in cui andare a depositare le sue uscite.
#include <stdio.h> #include <stdlib.h> //parametri attuali e formali devono essere dello stesso numero e tipo //il prototipo serve per dichiarare una funzione all'interno del programma, x decidere se la chiamata è fatta in modo corretto int annobisestile (int a); int main() { int anno=2000; if (annobisestile (anno)==1) //chiamata parametri attuali () printf ("l'anno è bisestile"); else printf ("l'anno non è bisestile"); } int annobisestile(int a){ //parametro formale () if (a%400==0||(a%4==0 && a%100!=0)) return 1; else return 0; } libro p 74- sorgente ->pre processore/header->sorgente modificato->compilatore->file oggetto->linker/librerie-
applicazione compilatore controlla la sintassi genera il file oggetto nel linguaggio macchina le funzioni non vengono tradotte fino a che il linker non le traduce tramite le librerie(contengono codice macchina delle funzioni) FUNZIONE CHE RESTITUISCE IL DATO VOID #include <stdio.h> #include <stdlib.h> void stampa_min_e_max(int a,int b,int c); int main() { stampa_min_e_max (10,3,18); } void stampa_min_e_max(int a,int b,int c) { int min,max; min=max=a; if (a>b) min=b; else max=b; if(min>c) printf ("%d e' il minimo\n",c); else
printf("%d e' il minimo\n",min); if(max>c) printf ("%d e' il massimo\n",max); else printf("%d e' il massimo\n",c); } ESERCIZIO CAPITO Realizzare un programma, organizzato in funzioni, per la risoluzione degli esercizi a pag 185 n.1, 11, 14, 15. Per ogni esercizio va sviluppata una funzione. Si precisa che tutte le funzioni devono acquisire e restituire i dati da e verso il main, solo nel caso degli esercizi 14 e 15 è consentito effettuare l'output direttamente dalle stesse. Si richiede anche lo sviluppo di un menù (esso stesso sarà una funzione con eventuale autonomia per l'input o l'output dei dati) che metta a disposizione le scelte legate all'esecuzione delle funzioni di risoluzione degli esercizi e che prende in input la scelta restituendola al programma principale #include <stdlib.h> #define DIM 20 void menu(int); void elementi(int); void inizializza(int[],int); int azzera(int[],int,int); int Cerca(int[],int,int); int main() { int n,ch,arr[DIM],pos,num,in=0; elementi(&n); do{ menu(&ch); switch(ch){ case 1: inizializza(arr,n); for(int i=0;i<n;i++){ printf("Elemento %d: %d\n",i+1,arr[i]); } in=1; break; case 2: if(in){ printf("Che elemento vuoi azzerare del vettore? "); scanf("%d",&pos); pos--; if(azzera(arr,n,pos)) printf("Elemento %d azzerato\n",pos+1);
srand(time(NULL)); for(int i=0;i<n;i++){ arr[i]=rand()%100; } } int azzera(int arr[],int n,int pos) { if(pos>=0 && pos<n){ arr[pos]=0; return 1; } return 0; } int Cerca(int arr[],int n,int num) { for(int i=0;i<n;i++){ if(arr[i]==num) return 1; } return 0; } ESERCIZIO GESTIONE STRINGHE #include <stdio.h> #include <stdlib.h> #define DIM 50 int lunghezzaparola (char *parola1); int vocali (char parola2[DIM]); int confrontoparole (char *parola1, char *parola2); int main() { char parola1[DIM], parola2[DIM]; printf("Inserisci la prima stringa\n"); scanf("%s",&parola1); printf("Inserisci la seconda stringa\n"); scanf("%s",&parola2); printf("La lunghezza della prima parola e': %d \n",lunghezzaparola(parola1)); printf("La lunghezza della seconda parola e': %d \n",lunghezzaparola(parola2)); printf("sono le vocali presenti in parola2,numero: %d \n", vocali(parola2)); if (confrontoparole(parola1, parola2)== 1) printf("Le parole sono uguali\n"); else
printf("Le parole sono diverse\n"); return 0; } int lunghezzaparola(char parola1) { int i=0; while(parola1++){ i++; } return i; } int vocali (char parola2[DIM]) { int i=0, num=0; for(i=0; parola2[i]!='\0'; i++) { if (parola2[i]=='a'||parola2[i]=='e'||parola2[i]=='i'||parola2[i]=='o'||parola2[i]=='u'){ num++; printf ("'%c'",parola2[i]);} } return num; } int confrontoparole (char *parola1, char *parola2) { int i = 0, n = 0; while( *parola1++ && *parola2++ ){ if(parola1[i]!= parola2[i]){ n = 1; } i++; if(n>=1) return 0; else return 1; } }