Estratto del documento

C++ -> Linguaggio ad alto livello

Commenti

-> ignorati dal compilatore

// per commento di 1 riga

/* */ per commento di blocco

Identificatori

  • Variabili: contengono il valore di un qualche tipo -> valore -> cambia nel tempo
  • Costanti: simbolo -> identificano valori che non cambiano nel tempo -> tipo -> non cambia
  • Etiacche: utilizzate da goto
  • Tipi definiti dal programmatore: costruiti da tipi primitivi
  • Funzioni: indicano il sottoprogramma

Keywords

Parole chiave cui significato è prestabilito, non possono essere usate come identificatori.

Intero

  • Senza cifre decimali (con e senza segno) -> int, long int, unsigned long int
  • O negativo o intero a cero, o al massimo postivo...
  • Se più valori si vuole usare 0 o 1. Se non viene specificato il compilatore sceglie il tipo più piccolo possibile per conservare Float (f + F) o long double (l + L)

Operassegnamento

  • Op += Prime valore ia espresso: ovv esempi sopraprogrammazione -> a vx
  • Opera ++ e ---> postiposta esegue esame, dopo esecuzione il valore (gia incrementata)

Operatore ternario

Cond ? expr1 : expr2 -> Se cond è vera -> expr1 altrimenti -> expr2

Break e Continue

  • Miglior controllo sui cicli
  • Break -> dentro ciclo o switch, ne causa la eliminazione -> Controllo passato o sei successiva al ciclo
  • Continue -> solo nei cicli, causa l'interruzione della corrente esecuzione del corpo del ciclo -> Controllo passato alla prima fine del capo del ciclo

Dichiarazioni

  • Ogni identificatore deve essere dichiarato
  • Contenente di stack/area persistenza necessaria
  • Determinare l'interpretazione da attribuire al var. bit.
  • Permette al compilatore di determinare errie errori semantici
  • Dichiarazioni più determinazione di ottenere un var
  • Determina il tipo di parametri: e il tipo del valore restituisto
  • Consente compilatore per determinare errori semantici

E.g:

  • VARIABILI - COSTANTI - TIPI

Scope e Lifetime

  • Dichiarazione variabile: -> si estende dal anno immediatamente più vicino fino alla fine del blocco di istruzioni in cui viene inserito.
  • Operare -> risolve il blocco cui referisce alla dichiarazione globale di un identificatore
  • Lifetime -> variabile vive esattamente dal notificarla e distrutta alla fine del blocco dove è passa la dichiarazione

Array

  • Array -> permette di raccogliere nello stesso nome variabili dello stesso tipo -> Multidimensional collegabili -> array o matrici

char x[1-10] -> lunghezza [0]-10 carattere nella

No infrerire l'operazione di assegnamento

C++ -> linguaggio ad indirizzo

Commenti

// -> ignorati dal compilatore

Identificatori

  • Variabili: Contenitori di valori di un qualche tipo - valore -> cambia nel tempo
  • Costanti: Sintattico - identificano valori che non cambiano nel tempo - tipo -> non cambia
  • Etichette: Utilizzato da goto
  • Tipi definiti dal programmatore: costrutti della tipi primitive
  • Funzioni: indicano sottoprogrammi

Keywords

Parole chiave cui significato è prestabilito; non possono essere usate come identificatori.

Intero

  • Senza cifra decimale (con o senza segno) -> int, long int, unsigned long int
  • Ogni numero intero o in ottale o in esadecimale
  • Virgola mobile e double e float (f, F) o long double (l, L)

Operatore di assegnamento

  • Op += prefissa -> prima esegue l'esame, poi esegue assegnamento a sx
  • Op = postfissa -> esegue l'esame dopo l'esecuzione a il valore (gia incrementato)

Operatore ternario

Condi ? expr1 : expr2 -> se condi è vera -> expr1 altrimenti -> expr2

Break & Continue

Miglior controllo sui cicli

  • Break -> dentro ciclo o switch, ne causa la terminazione -> controllo passato a istr. successiva al ciclo.
  • Continue -> solo nei cicli, causa l’interruzione della corrente esecuzione del corpo del ciclo

Dichiarazioni

  • Ogni identificatore deve essere dichiarato
  • Contenuti di stack/heap variabili necessarie
  • Determinare l’inizializzazione da ottenere su variabili

Scopo & Lifetime

Dichiarazione variabile: -> si estende dal punto immediatamente più vicino fino alla fine del blocco di istruzioni in cui appare; operatore -> risoluzione di breve intervallo di riferirsi alla dichiarazione globale di un identificatore

Array

Permette di raccogliere nello stesso nome più variabili dello stesso tipo

  • Multi-dimensionali: logging (o matrici)
  • char c[] = "ciao" -> lunghezza = (n+1)

STRUCT

Per racchiudere più elementi in un unico:

Struct e array

persona [2]: 5 → {5*30B} = 300B

amico3: 300B

struct persona {   char nome[20];   int età; };

struct dentro struct struct Data {   int anno,   int mese; } struct persona pippo {   char nome[20];   int età;   Data dataNas; }; persona pippo = {"pippo", 20}; pippo.nome[0], pippo.datanas.mese

Si definisce l'operatore di assegnamento Data og.data1 = {2022, 3}; Data donna = {3, 2023}; donna = op1;

UNION

Sintatticamente → Uguale a struct

I campi vengono memorizzati a partire dallo stesso indirizzo → memoria: v1. L'oggetto → quello della componente più grande

ENUMERAZIONI

→ Per poter definire insieme esplicitamente → enum nome { id1, id2, id3 }; Gli enumerazione a ciascuni identificatore una costante intera:   int n=verde [r=2];

TYPEDEF

Esiste la possibilità di dichiarare un altro tipo typedef <tipo> <cost> → typedef unsigned short int OSI; Utile per creare abbreviazioni di tipo complesso → soprattutto in presenza di puntatori e funzioni

FUNZIONI

Valore di ritorno → tipo definito entro il main Definizione di funzione → si ripete la dichiarazione, del nome o dei parametri, e il tipo Parametri → Ciò che è necessario - il nome dei parametri, il tipo Se manca → Formal non mod permette acquisire il passato per comunicare Modalità di passato di output → passaggio per riferimento o puntatori

Parametri di default → int somma (int a, int b=7) → se non viene specificato valore 3

L'ultimo esame gli ultimi;

LA FUNZIONE MAIN()

Invocare automaticamente dal sistema quando il programma viene eseguito int main(char argc, char\* argv[]); usato per comunicare al SO la causa di terminazione.

argc → indice di n dei parametri sul riga di comando attraverso cui il codice eseguito programma argv → sovraspici scritte l'interessa come cercare e parametri. Il primo index del programma l'argomento sul riga del comando

FUNZIONI INLINE

→ Per non influenzare il vaiaggio della ricola funzioni Le compilazione memorizzato ccomp → quando intende la chiamata lo sostituisce alla chiamata della funzione

MACRO

 #define dimensione (min, max) …

La inlin chiamato non sono → separati e prendere inline qualsiasi funzione Con funzione tipo ciao e y → Perché era e lo scopo della funzione

OVERLOADING

Sovraccaricamento → Attribuire alla stessa nome più significati; il compilatore decide quale valutare  int somma (int, int)  float somma (float, float)

Condizione: La nuova deve differire per tipo di numero di parametri.

Puntatori e riferimenti

int a; → puntatore a intero double *b; → puntatore a puntatore a double int *c, int *d;

a, → per ottenere l’indirizzo: &a

anche malloc(fflo di operand indicherà la zona di memoria. sono variabili. b

  • !
  • z per ottenere l’indirizzo:

Puntatori di array

Esempio semplificato:

  • dereferenzia un puntatore nello stesso modo in una selezione di elemento di un array
  • → stesso nome del primo elemento di array

 

int a[]={0,1,2,3,4,5}

int *ptr3 equivale a ptr={5}a0

Aeq{3} equivale a *(ptr+3)

Tipo char

char array[6]=“ciao”

char *ptr= “ciao”

cout<array>. e ok ptr

Differenza

Puntatore vs più usare l’aritemica. e usarlo come array

Il nome di un array non è un puntatore a cui è possibile assegnare un nuovo valore.

  • P{t+i}
  • cout «t[i]

Uso dei puntatori

1. Realizzazione strutture dati dinamiche → quando non riesce a priori la quantita di dati che si andremo a manipolare

2. Inizializzazione di variabili di oggetti passati

3. Passaggio address di parametri di grosse dimensioni

4. Rendere possible il passaggio di parametri di una funzione

LISTA

Utilizzo: puntatori, Numero massimo di elementi non definito a priori.

  • Composta da celle (nucleo) tra di loro:
  • each:
    • La prenota: valore
    • Puntatore della cella successiva

struct elem { int e; elem *next;} q = memorizza il valorenext = puntatore alla cella successiva

Creazione di un nuovo oggetto

  • Allocando un nuovo blocco di memoria della heap-memory
  • Si tramite l'operatore new e il tipo specificato

Distribuzione di un oggetto

  • Deallocare il blocco allocato nella heap-memory

Operatori statici

Numero massimo strutture dinamiche, determinato dalla dimensione della heap-memory o da certo il limite della quantità di memoria del sistema.

Un oggetto allocato dinamicamente può essere creato in uno scopo ed essere acceduto in un altro trasmettendone l'indirizzo.

Passaggio di parametri

void change(int * p) riceve come parametro un puntatore a int, quindi riceve l'indirizzo di una cella di memoria. \n La dereferenziazione con tanti la modifica dell'oggetto, *(p) = *(p) + 1 esprime che vega vo. costante void funzione (elem p); void change(*p); *(p) = *(p) con grandi dimeso e modificia -> cambia i di esezione della funzione

Restituire un puntatore

A int* somme (int q, int s) { int res; return & res; }

Se scriviamo l'indirizzo di una variabile local, viene distrutto quando la funzione termina. Soluzione: allocare la variabile fill nello heap per restituire l'indirizzo (E: ricordarsi di allocarla)

Passaggio parametri con riferimento

void funct(int & a) -> main() int a=5; fun(A); →

  • I riferimenti non devono essere dereferenziati
  • I riferimenti non possono essere associati ad un'altra variabile dopulare dell'inizializzazione.

Linkage

Identificatori di variabili. Costanti, funzioni possiedono linkage. Un programma può avere più file che vengono compitiati separatamente e poi linkati per ottenere un eseguibile

  • F1:
    • f1.cpp
    • void fun() {
    • int c=0
    • return c;
  • F3:
    • f3.cpp
    • extern int c
    • fun(5)
  • F2:
    • f2.cpp
    • c=0
      • dichiarare e iniziare una variabile
    • protinisce il valore della variabile nel file a.cpp

exterm = keyword che informa il compilatore che la variabile esiste in un altro file. Il linker provvede a collegare i file. Quindi extern sarà seguito solo da un identificatore. extern per le funzioni serve a far completare il compilatore della funzione externa int c(int);

Nomi visibili all'eserno di un file: linkage esternoidentifiers

  • inte: variabili locali non interne
  • nomi invocati esterni

Anteprima
Vedrai una selezione di 1 pagina su 5
Elementi lessicali Pag. 1
1 su 5
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher rebbb2504 di informazioni apprese con la frequenza delle lezioni di Fondamenti di programmazione e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Pisa o del prof Cococcioni Marco.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community