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


linguaggio c e c++ (INFORMATICA), Appunti di Informatica

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

2020/2021
In offerta
30 Punti
Discount

Offerta a tempo limitato


Caricato il 10/01/2022

francesca._.
francesca._. 🇮🇹

4.7

(19)

49 documenti

1 / 9

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
IL LINGUAGGIO C
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:
1. Si scrive il codice sorgente e lo si memorizza in un file con estensione .c (o .cpp se il linguaggio
scelto è C++). Il codice può essere scritto con un qualsiasi editor di testi o utilizzando un ambiente
di sviluppo integrato: un IDE, che consiste in un editor di codice sorgente, un compilatore e un
interprete, uno strumento di building automatico e un debugger (un apposito modulo software che
consente di effettuare la diagnosi del programma per trovare i relativi bug in esso presenti).
2. Il codice sorgente viene controllato per verificare che non siano presenti errori formali. È segnalata
la presenza di eventuali errori (con un messaggio error), oppure visualizzati dei Warning:
avvertimenti che indicano la presenza di situazioni anomale che potrebero creare problemi in una
fase di esecuzione. Successivamente il codice viene compilato, cioè tradotto in linguaggio
macchina. Il codice ottenuto, detto codice oggetto, viene memorizzato in un file con estensione
.obj e non è ancora eseguibile.
3. Il codice oggetto diviene l'input di un ulteriore software, il linker, che “collega” il codice oggetto con
le librerie standard del linguaggio dichiarate nel codice sorgente. Il risultato sarà il programma
eseguibile, memorizzato in un file con estensione .exe.
pf3
pf4
pf5
pf8
pf9
Discount

In offerta

Anteprima parziale del testo

Scarica linguaggio c e c++ (INFORMATICA) e più Appunti in PDF di Informatica solo su Docsity!

IL LINGUAGGIO C

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:

  1. Si scrive il codice sorgente e lo si memorizza in un file con estensione .c (o .cpp se il linguaggio scelto è C++). Il codice può essere scritto con un qualsiasi editor di testi o utilizzando un ambiente di sviluppo integrato: un IDE , che consiste in un editor di codice sorgente, un compilatore e un interprete, uno strumento di building automatico e un debugger (un apposito modulo software che consente di effettuare la diagnosi del programma per trovare i relativi bug in esso presenti).
  2. Il codice sorgente viene controllato per verificare che non siano presenti errori formali. È segnalata la presenza di eventuali errori (con un messaggio error ), oppure visualizzati dei Warning : avvertimenti che indicano la presenza di situazioni anomale che potrebero creare problemi in una fase di esecuzione. Successivamente il codice viene compilato, cioè tradotto in linguaggio macchina. Il codice ottenuto, detto codice oggetto , viene memorizzato in un file con estensione .obj e non è ancora eseguibile.
  3. Il codice oggetto diviene l'input di un ulteriore software, il linker, che “collega” il codice oggetto con le librerie standard del linguaggio dichiarate nel codice sorgente. Il risultato sarà il programma eseguibile, memorizzato in un file con estensione .exe.

STRUTTURA DI UN PROGRAMMA

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.

  1. secondo lo stileC, i commenti vengono racchiusi tra i simboli /* e /; vengono definiti commenti a blocchi , ed è considerato commento tutto ciò che è racchiuso tra i simboli. Es. /commento in stile C*/
  2. secondo lo stile C++ i commenti vengono preceduti dal simbolo //; consideriamo commento ciò che segue il simbolo fino alla fine della riga. Non si può considerare un commento se distribuito su più righe. Es. //commento in stile C++

 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:

OPERATORI DI CONFRONTO O BOOLEANI:

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.