Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli

Informatica: operatori &,*. Ambiente locale, globale e variabile globale. Cicli in C, Sintesi del corso di Informatica

Informatica: operatori &,*. Ambiente locale, globale e variabile globale. Cicli in C

Tipologia: Sintesi del corso

2020/2021

Caricato il 24/11/2021

maya_mt
maya_mt 🇮🇹

1 documento

Anteprima parziale del testo

Scarica Informatica: operatori &,*. Ambiente locale, globale e variabile globale. Cicli in C e più Sintesi del corso in PDF di Informatica solo su Docsity! Utilizzo funzioni 3 motivazioni: 1riusabilità->1utilizzare lo stesso codice come "mattone per la soluzione di problemi diversi 2astrazione->esprimere operazioni complesse in modo sintetico3risparmio->scrivere una sola volta codice usato più volte. Valore tra2 n: int max(int m,int n)||{]| if(m>=n)|| return m;|[else][return n;|]} Operatore & è un operatore che restituisce l'indirizzo di memoria dell'operando cui è applicato Operatore* è un operatore che indica di prendere il dato NON nell'operando che lo segue ma all'indirizzo di memoria indicato all'operando cui è applicato. Funzione è l'astrazione del concetto di operatore: si può attivare durante la valutazione di una qualunque espressione e restituise un valore. Ambiente locale=l'insieme delle variabili e delle costanti definite da una funzione prende il nome di ambiente locale e ele variabili sono dett evariabili locali. Variabile Globale una variabile che viene dichiarata al di fuori di tutte le funzioni prende il nome di variabile globale. Ambiete globale L'insieme delle variabili locali e globali di una funzione costituisce l'ambiente globale cioè l'insieme di tutte le variabili che possono essere utilizzate dalla funzione stessa.Ambiente di un blocco è un insieme di tutti gli elementi dichiarati nella parte dichiarativa di un blocco. Quello che viene definito all'interno del blocco è visibile solo nel blocc stesso. RDA record di attivazione cast. int uno, due;float tre;uno = 1;due = 2;tre = uno/due; printf("%f",tre);Tale programma nonostante le aspettative (dettate dal fatto che la variabile tre è dichiarata float) produrrà un risultato nullo. Infatti la divisione viene effettuata su due valori di tipo int, il risultato viene conservato temporaneamente in una variabile di tipo int e, solo alla fine, conservato in una variabile float. È evidente, a questo punto, che la variabile tre conterrà solo la parte intera (cioè 0). int uno, due;float tre; uno = 1;due = 2; tre = (float) uno/due; printf("%f",tre);In questo caso il programma fornisce il risultato atteso. Infatti il quoziente viene calcolato come float e quindi, dopo, assegnato alla variabile tre.In definitiva il costrutto cast forza una espressione a essere di un tipo specifico (nel nostro caso una divisione intera viene forzata a fornire un risultato di tipo virgola mobile). Int a=5,b=4;floatc;c=(a+b)/2;printf("la media è: %f",c); stack=004 È un’area di memoria privilegiata dove si può salvare momentaneamente e poi recuperare i dati di varia natura. Int p; p=2 chiamata a funzione richiede che siano copiati sullo stack tutti i parametri ad ogni istruzione eseguita, viene decrementato di due per puntare all’indirizzo al quale memorizzare il parametro. quando sono stati copiati tutti i parametri nello Stack viene eseguita la CALL Che trasferisce il controllo alla funzione. heap=008È una parte dinamica, in cui la dimensione degli elementi può cambiare durante l’esecuzione del programma [p=p malloc (sizeof)]sizeof, restituisce la dimensione del tipo di dato da allocare.]]p=malloc(sizeof(int)); printf("non ho abbastanza memoria x l'allocazione/n");exit(1);Malloc int *p; p=(int*) malloc(sizeof(int));*p=50;printf("*pvale %d/n",*p);Malloc_ void *malloc(size_t)] float, lungo 32 bit precisione di 7 cifre double lungo 64 bit, pecisione di 15 cifre, basta usare il tipo double quando è necessario un valore / variabile in virgola mobile [char 1(8bit) contiene qualsiasi carattere definito secondo ASCII (minuscola maiuscola da 0a 9. contiene un unico carattere char a = 'r';] float4(32bit) double8(64bit) double x = 7.0; double y = 2.0; double z; z = x / y; // z vale 3.5Essa alloca nella area dell’heap un blocco di memoria costituito da un numero di bytes pari al valore del parametro numero_bytes passato e restituisce al chiamante un puntatore al primo byte del blocco allocato. [void* malloc(size_t numero_bytes);]//Allocazione dinamica di un blocco di memoria pari a n intint* v = (int*) malloc(sizeof(int)*n);if (v==NULL) exit(1);.... free(v); return0; } free= per deallocare (liberare e rendere di nuovo disponibile) il blocco di memoria creato nell’heap e puntato dal puntatore v. while(condizone){ istruzione } do{ istruzione; } while(condizione); [vengono all'interno sicuramente 1 volta] Printf=stampa o il valore di variabili definite o un mess x l'utente Scanf=legge da tastiera e memorizza all'interno di variabili FORint n, i; for(i=0;i<10;i++) { printf("inserisci il %d numero: ", i+1);scanf("%d", &n);}
Docsity logo


Copyright © 2024 Ladybird Srl - Via Leonardo da Vinci 16, 10126, Torino, Italy - VAT 10816460017 - All rights reserved