





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
linguaggio c ed evoluzione al linguaggio c++ struttura di un programma variabili, costanti, operandi ed operatori, operatore di assegnamento, istruzioni di input ed output, operatori aritmetici, operatori di confronto, ed altri tipi di operatori, casting esplicito CONTIENE IMMAGINI E TABELLE
Tipologia: Appunti
1 / 9
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!






In offerta
Il C è il risultato dello sviluppo di due linguaggi di programmazione precedenti; è un linguaggio di programmazione imperativo di alto livello, ossia un linguaggio che si avvicina molto al ragionamento umano a fine di semplificare il più possibile la scrittura dei programmi. Il C è un linguaggio versatile: viene usato sia per semplici programmini didattici, sia per programmare sistemi operativi: ha un'infinità di usi grazie ad una libreria vastissima. Questo linguaggio ha pochissime keyword (parole riservate), e una vastissima gamma di funzioni che spaziano da quelle per gli input e output standard alle funzioni matematiche, fino agli strumenti per creare le interfacce grafiche. Le caratteristiche principali di C General purpose (multiuso), cioè può essere utilizzato per codificare progetti software di natura diversa. È strutturato, di tipo imperativo (o procedurale). Case sensitive , cioè distingue tra lettere maiuscole e minuscole (variabile “PIPPO” è diversa da “Pippo” e “pippo”). Crea programmi efficienti : evita le operazioni che possono portare ad un decadimento di efficienza del programma eseguibile. Crea programmi di dimensioni ridotte : possiede una sintassi per la scrittura di un codice compatto. Multipiattaforma : può essere compilato su molti PC (il linguaggio operativo compilato non è legato alla piattaforma che lo compila). L’EVOLUZIONE DEL C: IL LINGUAGGIO C++ (entrambi compilati a blocco) Il C++ è nato per l'esigenza di una maggiore estrazione di dati, che permettesse la risoluzione di numerosi problemi con la stessa efficienza e portabilità del linguaggio C. Il linguaggio C++ mette a disposizione la programmazione orientata agli oggetti ; questo linguaggio ha un modo totalmente diverso di concepire la programmazione. Essendo l'evoluzione del C, il linguaggio C++ conserva le stesse strutture di controllo e la stessa sintassi del suo predecessore, con qualche differenza nel proseguo del testo. DAL CODICE SORGENTE AL CODICE ESEGUIBILE Un programma viene sviluppato scrivendo il “codice sorgente” in un opportuno linguaggio (della cui sintassi segue le regole). Una volta scritto il codice deve essere sottoposto una fase di traduzione che ne verifica la correttezza formale e lo traduce nel linguaggio comprensibile dal processore. Esistono due tipi di traduttori: i compilatori e gli interpreti. I linguaggi come il C e il C++ sono linguaggi compilati e la fase di compilazione prosegue attraverso questi passaggi:
I linguaggi di programmazione sono linguaggi formali , quindi richiedono precise regole di scrittura (non ammette ambiguità o eccezioni). Un linguaggio C/C++ è costituito da funzioni e variabili: La funzione è una porzione di codice racchiusa tra due parentesi graffe che contiene le istruzioni che specificano le operazioni da eseguire, accetta in ingresso un insieme di argomenti e restituisce un valore. La funzione rappresenta un sottoprogramma. La variabile è un contenitore all'interno del quale vengono memorizzati i dati che le varie istruzioni usano per svolgere il compito previsto dal programma. Funzioni e variabili devono essere collocate all'interno di una specifica struttura. Gli identificatori Gli identificatori sono i nomi definiti dal programmatore per riferirsi in modo univoco a oggetti di categorie diverse: variabili costanti simboliche funzioni. #include <stdio.h> e #include <stdlib.h> sono direttive al processore : rappresentano il modo per indicare al compilatore le librerie (librerie standard) che dovranno essere usate nel programma. Tutte le direttive non devono terminare con il punto e virgola. Main() è la funzione principale di ogni programma C/C++ e deve essere sempre presente, infatti l'esecuzione del programma inizia proprio con questa funzione. Le parentesi tonde poste dopo il nome main rappresentano il simbolo di riconoscimento di una funzione. int a,b,somma; float pgreco=3.14;… è la sezione dichiarativa : in questa sezione si dichiarano le variabili che saranno usate dalle istruzioni presenti nella funzione main. Nel linguaggio C non è obbligatorio dichiarare le variabili in una sezione specifica del programma. Le parentesi graffe racchiudono l'intero codice blocco di codice Sezione esecutiva: è la zona in cui vengono scritte le istruzioni che devono essere eseguite. Ogni istruzione termina con un punto e virgola, che segnala al compilatore la fine dell'istruzione. Per garantire una buona leggibilità del codice: scrivere una sola istruzione per riga introdurre nell'istruzione degli spazi, che vengono ignorati dal compilatore Funzione è il termine che viene utilizzato per indicare i sotto programmi; racchiuso tra le parentesi graffe { } (ctrl + alt gr+ tasto maiusc + parentesi quadra) In C/C++ tutti gli identificatori devono: iniziare con una lettera o con un carattere di underscore “_” Non posso iniziare con una cifra numerica. Possono contenere un numero qualsiasi di lettere, cifre o underscore, ma non spazi. Le funzioni non devono avere lo stesso nome di parole chiave, ma possono contenere caratteri speciali (es. @) Non vanno bene: 2parole, spazio aperto, @mio_mobile, 100$...) Vanno bene: x, spazio_aperto, SeCoNdO. I COMMENTI In C/C++ i commenti hanno valore solo per il programmatore e vengono ignorati dal compilatore.
attraverso la direttiva #define ; bisogna porre tale dichiarazione all'inizio del programma, insieme alle altre direttive del preprocessore. Dopo la direttiva #define si indica l'indicatore della costante, che prende il nome di costante palese , e il relativo valore. Come tutte direttiva per compilatore, anche #define non deve terminare con il punto e virgola. Es. #define POSTI 100 Le costanti simboliche servono a identificare valori che non cambiano nel tempo; vengono considerate solo nomi utilizzati per intensificare un valore ESPRESSIONI OPERANDI E OPERATORI Un 'espressione è una combinazione di operandi operatore che descrivono un’elaborazione il cui risultato è un valore che può essere assegnato a una variabile. Gli operandi sono combinazioni di costanti, variabili semplice di altre espressioni, e rappresentano i valori che vengono trattati nelle espressioni. Di particolare importanza nello studio degli operandi sono le variabili, le costanti e il tipo che può essere a loro assegnato. Gli operatori sono simboli che specificano come devono essere trattati gli operandi dell'espressione. La valutazione dell'espressione avviene eseguendo le operazioni indicate dagli operatori sui loro operandi secondo le regole di precedenza degli operatori tipiche della aritmetica. A elaborazione terminata l'espressione restituisce un valore. Essendo che ogni operando presenta un valore, anche gli operandi sono espressioni, lo sono anche tutte le variabili e le costanti. La valutazione dell'espressione viene effettuata seguendo le operazioni indicate dagli operatori secondo le regole di precedenza dell’aritmetica (prima * e / poi + e - ). Un operando viene detto unario, binario o ternario a seconda del numero di operandi che richiede. Gli operatori si classificano in: Operatore di assegnamento: consentono di assegnare un valore alle variabili Operatori aritmetici: comprendono somma, sottrazione, moltiplicazione, divisione intera e divisione con modulo Operatori di confronto: permettono di verificare determinate condizioni Operatori logici: consentono di utilizzare le condizioni e le istruzioni iterative Operatori sui bit; (sizeof) Operatori speciali. L'OPERATORE DI ASSEGNAMENTO: Il C ++ è un linguaggio basato sul paradigma imperativo. Il paradigma imperativo è un’unione di istruzioni e dati, ed è strutturato in: Una parte dichiarativa in cui si dichiarano tutte le variabili del programma e il loro tipo; Una parte che descrive l'algoritmo risolutivo. Nel linguaggio di C++ è fondamentale la sequenza di assegnamento dei valori alle variabili. Da qui deriva la straordinaria importanza dell’ operatore di assegnamento (=) Il risultato dell'assegnamento è il valore prodotto dalla valutazione della parte a destra del segno di uguale, il valore ricavato (dalla parte destra) viene assegnato alla variabile a sinistra dell’uguale. Gli identificatori di variabili possono comparire sia a destra, sia sinistra dell'operatore di assegnamento. Se si trovano a destra, il valore che contengono è il valore da assegnare alla locazione di memoria a cui si riferisce identificatore che si trova a sinistra. La semantica dell'assegnamento, per evitare ambiguità, impone che prima si valuti la parte a destra e poi si esegue l'assegnamento del valore allo operando di sinistra. a=5; assegna come valore alla variabile a il numero 5 orazio = ‘a’; assegna come valore alla variabile Orazio il carattere a pluto=ora zio; assegna come valore alla variabile Pluto il valore della variabile Orazio, Essendo la variabile Orazio = a ed essendo a = 5 Pluto sarà = a 5 a=a+7; incrementa di 7 e il valore della variabile a (5+7)
b=4+25; assegna come valore alla variabile b la somma di 4 + 25 x=3a; alla variabile x viene assegnato il risultato dell'espressione 3 x a ovvero 3 int k=h=33; la selezione multipla Non può essere utilizzata come inizializzazione in una dichiarazione. ERRATA , perché le inizializzazioni non sono selezioni: pur essendo simili, il compilatore le tratterà in maniera differente. int k=33, h33; Questa invece è corretta, dichiara le variabili k,h come intere e assegna a entrambe il valore 33 y= (x=3a) Assegnazione Multipla. viene assegnato il valore 3 per alla variabile a e poi si assegna il risultato ottenuto alla variabile x e poi alla variabile Y (35=y=x) L'assegnazione di valore a una variabile segue specifiche regole in funzione del tipo di un dato associato alla variabile in questione: ❏ Le variabili intere (int) si assegnano utilizzando un numero senza parte decimale; ❏ Le variabili reali (float e doube) si assegnano utilizzando la notazione inglese (punto decimale anziché “,” per dividere la parte intera da quella frazionaria) ❏ La variabile carattere (char) si assegna chiudendo il carattere tra due apici; La variabile stringa si assegna racchiudendo la stringa tra virgolette. Una stringa è una concatenazione di caratteri. Int b= 20; char carattere = ‘b‘; char lettera = ‘m’; float tappo=10.2; char frase [20] = “Ciao a tutti”; ISTRUZIONI DI INPUT E OUTPUT DI C++: in C++ gli oggetti reali monitor e tastiera prendono parte nell’interazione con il compilatore. Il monitor prende il nome di cout ( console output), la tastiera prende il nome di cin ( console input) Output: cout << x; (viene stampato a monitor il valore di x) cout << “Ciao a tutti”; (viene stampato a monitor ciao a tutti) Nelle espressioni di output, è presente anche la parola chiave endl ed è utile per portare il cursore a capo su una riga. Input: cin >> numero (viene chiesto all’utente di inserire un numero) OPERATORI ARITMETICI:
Gli operatori di confronto sono tutti operatori binari e richiedono operandi di tipo fondamentale. Producono sempre un risultato booleano: true se la relazione è verificata false se la relazione non è verificata (a==b ) Vera se a è uguale a b (a!=b) Vera se a è diversa da b (a<b) Vera se a è minore di b (a>b) Vera se a è maggiore di b (a<=b ) Vera se a è minore o uguale a b (a>=b ) Vera se a è maggiore o uguale a b OPERATORI LOGICI: Gli operatori logici richiedono come operandi delle espressioni booleane e producono un risultato booleano. AND (&&)= viene posto fra due proposizioni. Questa è vera solo quando entrambe sono vere OR (||)= l'operatore or lo uso quando posso avere una risposta falsa solo quando entrambe le proposizioni sono false. NOT (!)= l'operatore not va a modificare significato della proposizione ad esempio l'Etna è un vulcano sarebbe vera ma utilizzando l'operatore not diventa falsa. L’operatore || non valuta l’operando destro se non è necessario al risultato, quindi il risultato è indipendente dal valore dell’operando destro. (3>1)||(x>7) Poiché l’operando sinistro ha valore true, l’operando destro non viene valutato (qualunque sia il suo valore), il risultato rimane sempre true OPERARORI DI ASSEGNAMENTO: In un’operazione di assegnamento il valore dell’operando di destra viene assegnato alla locazione di memoria a cui fa riferimento l’operando di sinistra. Oltre all’operatore assegnamento “=”, in C++ sono previste delle forme di assegnamento compatte, costituite oltre che dall’operatore di assegnamento anche da un operatore matematico. Assegnamento esteso Assegnamento compatto x=x+y X+=y oppure y+=x x=x-y X-=y oppure y-=x x=xy X=y oppure y*=x x=x/y x/=y oppure y/=x x=x% y X%=y oppure y%=x OPERATORE ?: Il simbolo? Indica un operatore TERNARIO, sostituisce l’IF. Y((x>0)?5:10);
questo operatore ci permette di assegnare alla variabile y il valore 5 nel momento in cui x>0. Se x<=0 ad y verrà assegnato il valore di 10. Le parentesi in questo operatore NON sono obbligatorie, permettono solo di dare ordine e maggiore chiarezza. OPERATORE SIZEOF: L’operatore sizeof restituisce la dimensione in byte della memoria occupata da un tipo di dato o da una determinata variabile definita nel programma. L’uso di sizeof permette di dirimere ogni dubbio sull’effettiva quantità di memoria occupata dai diversi possibili identificatori, su qualunque architettura. Sizeof(Tipo dato) Sizeof(Nome variabile) CONVERSIONI ARITMETICHE (casting implicito o esplicito): il linguaggio C++ è debolmente tipizzato, significa che una variabile di un certo tipo può essere convertita dal programma in un altro tipo di variabile. In C++ esistono due tipi di conversioni di tipo: conversioni automatiche o implicite (casting implicito) conversioni esplicite (casting esplicito) Casting implicito: in C++, le operazioni si eseguono SEMPRE tra operandi dello stesso tipo. Quando all’interno di un’espressione compaiono operandi di tipi differenti, il compilatore, durante la valutazione dell’espressione, li riconduce ed esegue delle promozioni o delle retrocessioni per portare i vari operandi allo stesso tipo e poter eseguire l’operazione richiesta. Esistono tipologie di qualificatori che possono essere raggruppati in due tipologie: OPERANDI INTERI (short e long): con questa tipologia di qualificatori si perdono i decimali. Il risultato viene troncato all’unità. SHORT dimensioni 2 byte LONG dimensione 4 byte OPERANDI INTERI CHAR (signed e unsigned): con questa tipologia di identificatori si possono ottenere o meno dei valori negativi. SIGNED l'operando può assumere valori negativi UNSIGED l’operando NON può assumere valori negativi.