Compendio sottoinsieme del C++ a comune col C. (Libreria standard, Input/Output, Costanti, Dichiarazioni e typedef, Memoria Dinamica)

Documenti analoghi
Programmazione I Paolo Valente /2015. Lezione 18. Compendio C/C++

Input/Output. Lettura e scrittura Caratteri e Stringhe: Terminale e file. Input/output. caratteri stringhe formattato ascii binari

Il linguaggio C. Puntatori e dintorni

Linguaggio C. Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore.

Lezione 19 e Allocazione dinamica della memoria - Direttive al preprocessore - Libreria standard - Gestione delle stringhe

Costanti e Variabili

Il linguaggio C. Notate che...

Unità Didattica 1 Linguaggio C. Fondamenti. Struttura di un programma.

LIBRERIE STANDARD in C. LIBRERIE STANDARD in C

Il sistema C è formato dal linguaggio C, dal preprocessore, dal compilatore, dalle librerie e da altri strumenti di supporto.

Le librerie standard. ! La libreria standard del C è in realtà un insieme di librerie

Tipi di dato semplici

Corso di Fondamenti di Informatica Il sistema dei tipi in C++

ESECUZIONE DI PROGRAMMI C SU MACCHINE REALI. Docente: Giorgio Giacinto AA 2008/2009. formalizzazione degli algoritmi in linguaggio C

Strutture Dati Dinamiche

Primi passi col linguaggio C

ESECUZIONE DI PROGRAMMI C SU MACCHINE REALI. Docente: Giorgio Giacinto AA 2009/2010

! Per quanto sappiamo finora, in C le variabili sono sempre definite staticamente

Scrittura formattata - printf

C O P Y R I G H T ( C ) W W W. F O N D A M E N T I. I N F O

Struct, enum, Puntatori e Array dinamici

Linguaggio C. Vettori, Puntatori e Funzioni Stringhe. Università degli Studi di Brescia. Prof. Massimiliano Giacomin

Ogni variabile in C è una astrazione di una cella di memoria a cui corrisponde un nome, un contenuto e un indirizzo.

Allocazione dinamica della memoria

Unità F1. Obiettivi. Il linguaggio C. Il linguaggio C++ Linguaggio C. Pseudolinguaggio. Primi programmi

Esercitazione 11. Liste semplici

Gestione dinamica della memoria

Un esecutore di un linguaggio simbolico e costituito dalla coppia Compilatore, processore (o Interprete, processore)

Stringhe e allocazione dinamica della memoria

<programma> ::= {<unità-di-traduzione>} <main> {<unità-di-traduzione>}

Tipi di dati strutturati e Linguaggio C. Record o strutture Il costruttore struct in C

File binari e file di testo

Librerie Stringhe. Librerie e stringhe. Lezione 9. Laboratorio di Programmazione I. Corso di Laurea in Informatica A.A. 2015/2016

Programmare in C. Maurizio Palesi Salvatore Serrano. Valori. Operazioni. Un insieme di valori del tipo. Per operare su tali valori Tipi

Linguaggio C - sezione dichiarativa: costanti e variabili

Lezione 6 Introduzione al C++ Mauro Piccolo

La sintassi del C APPENDICE H

Linguaggio C. tipi di dati definiti dall utente. Università degli Studi di Brescia. Docente: Massimiliano Giacomin

Tipi di dati scalari (casting e puntatori) Alessandra Giordani Lunedì 10 maggio 2010

Introduzione a. Funzioni di Ingresso e Uscita. Compilazione

Dal C al C++ Corso di Linguaggi di Programmazione ad Oggetti 1. a cura di Giancarlo Cherchi

Lezione 8 Struct e qsort

Elementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I

Unità Didattica 4 Linguaggio C. Vettori. Puntatori. Funzioni: passaggio di parametri per indirizzo.

Variabili. Unità 2. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER

Informatica (A-K) 7. Linguaggio C - 1

Università di Roma Tor Vergata L12-1

Esercizi C sui tipi definiti dall utente

Introduzione alla programmazione in C

Introduzione C++ Il compilatore. La compilazione in g++ Introduzione a C, C++ e Java. C++ C Java 1977 C 1986 C++ Compilatori Librerie Usare oggetti

L'allocazione dinamica della memoria

Introduzione alla programmazione in C++

Corso di Fondamenti di Informatica. Puntatori e Allocazione Dinamica

direttive del preprocessore simboli speciali parole chiave identificatori costanti

Il linguaggio C. Puntatori e dintorni

1) definizione di una rappresentazione 2) specificazione di un algoritmo (dipendente dalla rappresentazione) 3) traduzione in un linguaggio

Sommario. Le differenze fra C e C++ Funzioni. Varie. Memoria. commenti. parametri per funzioni funzioni inline overloading di funzione

Lezione 2. Introduzione al linguaggio C/C++ Tipi di dato e numeri interi Variabili e costanti con nome Struttura di un programma

Tipi di dato e istruzioni elementari in C++

Breve Manuale di Riferimento sulla Sintassi Linguaggi C++ e FORTRAN

Struttura dei programmi C

Laboratorio di Informatica Ingegneria Clinica Lezione 9/11/2011. Prof. Raffaele Nicolussi

Esiste però anche un ambiente globale: quello dove tutte le funzioni sono definite. Qui si possono anche definire variabili, dette variabili globali

Input/Output di numeri

Il puntatore. Il puntatore

Linguaggio C Variabili e tipi di dato

L'Allocazione Dinamica della Memoria nel linguaggio C

Tipi di dato. Le variabili in C. Problema: dato in input un carattere, se esso è una lettera minuscola, trasformarla in maiuscola.

Funzioni, puntatori, strutture. Lab. Calc. AA 2006/07

Tipi di dato. Unità 2. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER

Output formattato Le quattro operazioni Tipi, costanti, variabili Over & Under Libreria Prog. Programmazione 1. Lezione 2

Fondamenti di Informatica

Puntatori. Unità 6. Domenico Daniele Bloisi. Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR

Informatica 1 Tipi e dichiarazioni in C++ C++ - Tipi e dichiarazioni 1

Espressione di chiamata di funzione

Lezione 10. L arte della programmazione

Input/output in C e in C++

Linguaggio C Informatica Grafica

ADT LISTA: altre operazioni non primitive ADT LISTA COSTRUZIONE ADT LISTA COSTRUZIONE ADT LISTA (2)

Allocazione dinamica della memoria

Fondamenti di Informatica Il linguaggio C (parte 1) IL LINGUAGGIO C

Laboratorio di Programmazione: Linguaggio C Lezione 21 del 19 maggio 2014

LABORATORIO di INFORMATICA

Funzioni di I/O per numeri. Input e output di valori numerici. Input formattato scanf. Stream preesistenti

Il linguaggio C. Caratteristiche generali

Tipi di dato. Unità 2. Domenico Daniele Bloisi. Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR

IL PRIMO PROGRAMMA IN C

Linguaggio C. Tipi predefiniti. Università degli Studi di Brescia. Prof. Massimiliano Giacomin. Prof. M. Giacomin

Introduzione alle stringhe e algoritmi collegati

Puntatori. Obiettivi: Richiamare quanto noto sui puntatori dal modulo A Presentare l analogia tra puntatori e vettori e l aritmetica dei puntatori

Puntatori. Unità 6. Corso di Laboratorio di Informatica Ingegneria Clinica BCLR. Domenico Daniele Bloisi

Allocazione Dinamica. Allocazione Statica. malloc() La funzione malloc()

Riprendiamo l esercizio calcolatrice

Alfabeto ed elementi lessicali del linguaggio C

Qualsiasi programma in C++ segue lo schema:

Linguaggio C: PUNTATORI

Le funzioni, e le istruzioni di input/output

Le strutture. Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune.

Appunti del corso di Informatica 1. 6 Introduzione al linguaggio C

Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C

Transcript:

Compendio sottoinsieme del C++ a comune col C (Libreria standard, Input/Output, Costanti, Dichiarazioni e typedef, Memoria Dinamica)

Librerie 1/2 Il solo insieme di istruzioni di un linguaggio di programmazione come il C/C++ è sufficiente a scrivere un qualsiasi programma in grado per lo meno di interagire con l'utente? Decisamente no Gli oggetti cin e cout erano oggetti predefinti del linguaggio? Programmazione I - Paolo Valente, 2008/2009 2

Librerie 2/2 No, sono oggetti appartenenti ad una libreria Una libreria è una raccolta di funzioni ed oggetti che permettono di effettuare determinati insiemi di operazioni Esistono ad esempio librerie per l'ingresso/uscita, librerie matematiche e così via Programmazione I - Paolo Valente, 2008/2009 3

Libreria standard 1/2 Sia nel linguaggio C che nel linguaggio C++ è prevista la disponibilità di una libreria standard La libreria standard del C++ è più o meno un sovrainsieme di quella del C Sia la libreria standard del C che quella del C++ sono costituite da molti moduli, ciascuno dei quali è praticamente una libreria a se stante, che fornisce funzioni ed oggetti per un determinato scopo Per utilizzare ciascun modulo è tipicamente necessario includere un ben determinato header file Programmazione I - Paolo Valente, 2008/2009 4

Libreria standard 2/2 Alcuni moduli di base della libreria standard sono ad esempio: Libreria Header C Header C++ Matematica math.h cmath Ingresso/Uscita stdio.h iostream Limiti numerici limits.h limits Programmazione I - Paolo Valente, 2008/2009 5

Uso dei moduli comuni tra C e C++ Per utilizzare i moduli della libreria standard C++ a comune col C è bene includere degli header file il cui nome si ottiene, a partire dal nome del corrispondente header file per il C, eliminando il suffisso.h ed aggiungendo una c all'inizio del nome Es.: la libreria matematica è presentata nell'header file math.h in C, mentre in C++ è presentata nell'header file cmath Volendo, anche in C++ si possono includere gli header file originali, ma è una pratica sconsigliata Nel caso del C++, i nomi delle funzioni e degli oggetti di queste librerie sono definiti nello spazio dei nomi std In pratica, per usarli, bisogna aggiungere sempre la direttiva: using namespace std ; Programmazione I - Paolo Valente, 2008/2009 6

Input/Output formattato in C Diversamente dal C++, in C l'input/output formattato è realizzato mediante funzioni di libreria presentate in <stdio.h> <cstdio> se volete utilizzare tali funzioni in C++ Tra le funzioni principali: printf: output formattato su stdout scanf: input formattato da stdin Programmazione I - Paolo Valente, 2008/2009 7

printf void printf(const char format[],... ) ; Lista valori da stampare La stringa format può contenere due tipi di oggetti: Caratteri ordinari (incluso quelli speciali), copiati sullo stdout Specifiche di conversione, che controllano la traduzione in caratteri del valore dei successivi argomenti o Una per ogni successivo valore da stampare Programmazione I - Paolo Valente, 2008/2009 8

printf Esempio: int a = 15; double b = 16.5 ; printf( Il valore di a è %d, quello di b è %g\n, a, b) ; Equivale a cout<< Il valore di a è <<a<<, quello di b è <<b<<endl; Si sono utilizzate due delle seguenti specifiche di conversione: %d Numero intero, stampare in notazione decimale %g Numero reale, stampare in notazione decimale %c Carattere, tipicamente codifica ASCII %s Stringa, tipicamente codifica ASCII Programmazione I - Paolo Valente, 2008/2009 9

scanf void scanf(const char format[], &<nome_variabile>) ; Variabile da modificare La stringa format può contenere solo specifiche di conversione Supponiamo solo una Controlla l'interpretazione da dare ai caratteri letti da stdin per determinare il valore da memorizzare nella variabile passata come secondo argomento Programmazione I - Paolo Valente, 2008/2009 10

scanf Esempio: int a ; scanf( %d, &a) ; // equivale a cin>>a ; Si è utilizzata una delle seguenti specifiche di conversione: %d Numero intero, in notazione decimale, da memorizzare in un int %lg Numero reale, in notazione decimale, da memorizzare in un double %c Carattere, tipicamente codifica ASCII, da memorizzare in un char %s Stringa (lo spazio è un separatore), tipicamente codifica ASCII, da memorizzare in un char [] Programmazione I - Paolo Valente, 2008/2009 11

NOTA Che succede se ci si sbaglia con le specifiche di conversione? Errore logico Errore di gestione della memoria o Meno pericoloso nella printf o Estremamente dannoso nella scanf: corruzione della memoria Esempio: char a ; scanf( %d, &a) ; // corruzione della memoria Altro tipico errore molto pericoloso: int a ; scanf( %d, a) ; // corruzione della memoria Programmazione I - Paolo Valente, 2008/2009 12

File e Input/Output non formattato In questo corso non vedremo l'uso dei file e l'input/output non formattato in C Programmazione I - Paolo Valente, 2008/2009 13

Direttiva #define Solo negli ultimi standard del C è stato introdotto il qualificatore const Per le costanti in C si usa ancora spesso la direttiva #define Esempi: #define a 5 #define b2 5.5 E' una direttiva C/C++ per il preprocessore Comporta una sostituzione testuale del simbolo con qualsiasi sequenza di caratteri lo segua, prima della compilazione Nessuna dichiarazione/controllo di tipo Il simbolo sparisce prima della compilazione Può essere utilizzata anche per sostituzioni più complesse Programmazione I - Paolo Valente, 2008/2009 14

Tipo struct ed enum in C Anche in C si dispone dei tipi struct ed enum Però, data la dichiarazione di due tipi: struct <nome_tipo_struct> {... } ; enum <nome_tipo_enum> {... } ; a differenza del C++, in C la definizione di oggetti dei due tipi va fatta ripetendo ogni volta rispettivamente struct ed enum: struct <nome_tipo_struct> nome_variabile1 ; enum <nome_tipo_enum> nome_variabile2 ; Programmazione I - Paolo Valente, 2008/2009 15

typedef 1/2 Sia in C che in C++ si possono definire dei sinonimi di tipi primitivi, oppure di tipi precedentemente dichiarati. Si fa mediante le dichiarazioni di nomi typedef Esempi: Nuovo nome (sinonimo) per il tipo typedef unsigned int u_int ; u_int a ; // equivalente a unsigned int a ; typedef struct persona Persona ; Persona p ; Solo in C vanno aggiunti struct ed enum typedef enum colore colore_t ; colore_t c ; Programmazione I - Paolo Valente, 2008/2009 16

typedef 2/2 Sia in C che in C++ le dichiarazioni typedef possono aiutare tantissimo a migliorare la leggibilità dei programmi Permettono di evitare di dover ripetere in più punti dichiarazioni molto complesse Permettono di sostituire nel programma nomi di tipo di basso di livello con nomi di tipo significativi nel dominio del problema Programmazione I - Paolo Valente, 2008/2009 17

Allocazione array dinamici in C Mediante funzione di libreria malloc presentata in <cstdlib> (<stdlib.h> in C) prende in ingresso la dimensione, in byte dell'oggetto da allocare ritorna l'indirizzo dell'oggetto, oppure 0 in caso di fallimento (NULL in C) Allocazione di un array dinamico: <nome_tipo> * identificatore = malloc(num_elementi * sizeof(<nome_tipo>)) ; Programmazione I - Paolo Valente, 2008/2009 18

Deallocazione array dinamici in C Mediante funzione di libreria free presentata in <cstdlib> (<stdlib.h> in C) prende in ingresso l'indirizzo dell'oggetto da deallocare Deallocazione di un array dinamico: free(<indirizzo_array>) ; Programmazione I - Paolo Valente, 2008/2009 19