Dichiarazioni e tipi predefiniti nel linguaggio C

Slides:



Advertisements
Presentazioni simili
Il linguaggio C++.
Advertisements

Introduzione al linguaggio C++
Corso di Fondamenti di Programmazione canale E-O
LINGUAGGIO DI PROGRAMMAZIONE C
Introduzione al linguaggio C
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità F2 Selezione.
Stringhe di caratteri In linguaggio C.
Algoritmi e Programmazione
Fondamenti di Informatica CDL in Ingegneria Meccanica - A.A CDL in Ingegneria Meccanica - A.A Tipi di dati Ing. Simona Colucci.
Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A Tipi di dati Ing. Simona Colucci.
Introduzione al linguaggio C
Anno accademico Gli operatori e le espressioni in C.
Il linguaggio C Gli operatori e le espressioni C Language
INFORMATICA Strutture iterative
Programmazione Procedurale in Linguaggio C++
Programmazione Procedurale in Linguaggio C++
Prof.ssa Chiara Petrioli -- Fondamenti di programmazione, a.a. 2009/2010 Corso di Fondamenti di programmazione a.a. 2009/2010 Prof.ssa Chiara Petrioli.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Puntatori Marco D. Santambrogio – Ver. aggiornata al 21 Marzo 2013.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Stringhe e Puntatori Marco D. Santambrogio – Ver. aggiornata al 18 Marzo 2013.
Laboratorio di Linguaggi lezione III Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea.
Laboratorio di Linguaggi P R I M O C O M P I T I N O Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese.
Laboratorio di Linguaggi lezione XI: I/O Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Introduzione a JAVA Anno Accademico 2009/2010.
1 Corso di Informatica (Programmazione) Lezione 7 (5 novembre 2008) Programmazione in Java: lessico, variabili, tipi primitivi, assegnamento a variabile.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Variabili e tipi primitivi Anno Accademico 2009/2010.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Assegnamento di valore a una variabile Anno Accademico 2009/2010.
Istruzioni di selezione in Java Programmazione Corso di laurea in Informatica.
Strutture di controllo nel C
Strutture di controllo in C -- Flow Chart --
Politecnico di Milano Esercizi Stringhe Ricerca binaria.
Esercizi Puntatori, struct con campi puntatore, puntatori a struct, rapporto tra array e puntatori. FUNZIONI Passaggio di parametri per indirizzo, passaggio.
Politecnico di Milano Esercizi Preparazione alla prima prova intermedia.
File di testo, file binari
Esercizi C su array e matrici
Fondamenti di Informatica A - Massimo Bertozzi TIPI DI DATO IN C++ What's in a name? That which we call a rose By any other name would smell as sweet.
I File.
Il Linguaggio C.
Le funzioni.
Espressioni condizionali
Algoritmi e Programmazione (in C) Stefano Cagnoni e Monica Mordonini
Java base I: Sintassi e tipi di dati
Programmazione in Java
Programmazione in Java Claudia Raibulet
JAVA Franco Bombi 8 ottobre FB Introduzione Java è un linguaggio di impiego generale, basato su classi e orientato agli oggetti Java.
CODIFICA Da flow-chart a C++.
Tipi di dati elementari
Prof.ssa Chiara Petrioli -- Fondamenti di programmazione, a.a. 2009/2010 Corso di Fondamenti di programmazione a.a. 2009/2010 Prof.ssa Chiara Petrioli.
Unità Didattica 3 Linguaggio C
14 marzo 2002 Avvisi:.
BIOINFO3 - Lezione 201 Come in ogni corso di introduzione ad un linguaggio di programmazione, proviamo a scrivere lormai celebre primo programma di prova.
Fopndamenti di programmazione. 2 La classe String Una stringa è una sequenza di caratteri La classe String è utilizzata per memorizzare caratteri La classe.
1Piero Scotto - C14. Finalità del corso Programma Materiale Requisiti Spendibilità 2Piero Scotto - C14.
Tipi di dati semplici in C (1/3)
Unità Didattica 1 Linguaggio C
Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 Corso di Programmazione 1 a.a.2006/2007 Prof.ssa Chiara Petrioli Corso di Laurea.
1 Corso di Informatica (Programmazione) Lezione 8 (7 novembre 2008) Programmazione in Java: operatori aritmetici, operatori di assegnamento e cast.
Introduzione a Javascript
Variabili Numeriche –Interi (byte, short, int, long): complemento a 2 –A virgola mobile (float, double): IEEE 745 Alfanumeriche –Carattere (char): Unicode.
Parte 3 Lo stato: variabili, espressioni ed assegnazioni
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Puntatori Marco D. Santambrogio – Ver. aggiornata al 11 Ottobre 2014.
Corso di Algoritmi e Strutture Dati APPUNTI SUL LINGUAGGIO C
Informatica B Allievi Elettrici - AA Fondamenti della programmazione in linguaggio C (II) Istruzioni e strutture di controllo.
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
1 Il linguaggio C Precisazioni sull’esperienza in laboratorio.
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
FI - Algoritmi e Programmazione 1 Variabili Consentono di aumentare notevolmente la potenza espressiva. Una variabile è caratterizzata da:  Un nome 
Informatica B Allievi Elettrici - AA Fondamenti della programmazione in linguaggio C (III)
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – Ver. aggiornata al 24 Agosto 2015.
Basi di Java Strutture base di Java. Basi di java ▪Variabili ▪Operatori ▪Condizioni e Cicli ▪Array.
Appunti su formati numerici. Tipi numerici Il C dispone di due tipi numerici: tipi interi e tipi reali; I tipi reali sono anche detti floating, ovvero.
Transcript della presentazione:

Dichiarazioni e tipi predefiniti nel linguaggio C Variabili, costanti, tipi semplici, conversioni di tipo.

Premessa Programmi provati sul compilatore Borland C++ 1.0 Altri compilatori: lievi differenze Istruzioni per l’uso: Cercate di capire gli algoritmi Provate i programmi!!! Errori di sintassi Errori a run-time Modificate i programmi!!! Cosa succede se cambio/scambio/tolgo/aggiungo istruzioni? … e se volessi che facesse anche quest’altra cosa?

Le variabili Nome simbolico Rappresenta un dato in memoria Occupa una certa quantità di celle di memoria Lettura e scrittura Es.: a = 3; a = b; 3 = a; NO!!! Ha un tipo.

I tipi ed il linguaggio C Un tipo influenza: L’interpretazione dei bit (carattere? intero? reale? …) Lo spazio occupato (allocato) in memoria L’intervallo dei valori che possono essere memorizzati Le operazioni permesse sulla variabile e la semantica associata Il C possiede le seguenti categorie (tipi semplici): Caratteri Numeri naturali Numeri interi Numeri in virgola mobile.

Dichiarazione variabili Dichiarazione: tipo nome; Dichiarazione con inizializzazione: tipo nome = espressione; Valore non definito (ovvero, casuale) se non inizializzo Più variabili dello stesso tipo: tipo nome1, nome2,…, nomen; tipo nome1=espr1,nome2=espr2,…,nomen=esprn; Esempio: int x = 24, y, z = 34;

Dichiarazione costanti Assegno un valore permanentemente Dichiarazione: const tipo nome = espressione; Più costanti: const tipo nome1 = espressione1, nome2 = espressione2,…, nomen = espressionen; Esempio const int x = 24, y = 55; A cosa servono? .

Caratteri Nome Significato Occupazione* e Range char carattere ASCII 8 bit tabella ASCII * Valore indicativo Operazioni consentite: assegnamento (=) relazionali (==, !=, <, >, <=, >=) logici (&&, ||, !) operazioni aritmetiche (+, -, *, /(intera), %) ??? Costante esplicita: char pluto; pluto = 'a'; 'a' è detta literal o costante esplicita.

Naturali e interi Nome Significato Occupazione* e Range short int intero “corto” 16 bit [-32768, +32767] int intero 16 bit [-32768, +32767] long int intero “lungo” 32 bit [-231, 231–1] unsigned short int naturale “corto” 16 bit [0, 65535] unsigned int naturale 16 bit [0, 65535] unsigned long int naturale “lungo” 32 bit [0, 232-1] * Valore indicativo

Naturali e interi I valori espressi per Occupazione e Range sono indicativi Lo standard C stabilisce però le seguenti regole: Occupazione short  occupazione int  occupazione long Occupazione unsigned short  occupazione unsigned int  occupazione unsigned long Inoltre, vale anche: Occupazione int = occupazione unsigned int .

Naturali e interi Operazioni consentite: assegnamento (=) operazioni aritmetiche (+, -, *, /(intera), %) relazionali (==, !=, <, >, <=, >=) logici (&&, ||, !) Costante esplicita (literal): int pippo; pippo = 10;

Numeri in virgola mobile Nome Significato Occupazione* e Range float “singola precisione” 32 bit [-10+38, +10+38] double “doppia precisione” 64 bit [-10+308, +10+308] long double “precisione estesa” 80 bit [-10+4932, +10+4932] La precisione massima che posso ottenere è circa : float: 10-38 double: 10-308 long double: 10-4932 Questa precisione si ottiene nell’intorno dello zero. * Valore indicativo

Numeri in virgola mobile I valori espressi per Occupazione e Range sono indicativi Vale però: Occupazione float  occupazione double  occupazione long double Operazioni consentite: assegnamento (=) operazioni aritmetiche (+, -, *, /) relazionali (==, !=, <, >, <=, >=) attenzione: (x/y)*y == x in generale non è vera! Costante esplicita (literal): float: pippo = 10.321f; double: pippo = 15.0; oppure pippo = 15.0d; Notazione esponenziale: pippo = -10.0E+23;

Regole di conversione implicita Espressioni miste del tipo: x operatore y char, short  int se l’espressione è ancora eterogenea: int  long  unsigned int  unsigned long  float  double  long double il risultato dell’espressione sarà uguale a quello del più alto livello gerarchico 5.0 / (23 / 9)  5.0 / 2  5.0 / 2.0  2.5 double d1 = 3.4E+100, d2 = 6.8E-100; float f = 1250.35f; d1= f; la f viene convertita a double  f = d2; le cifre frazionarie di d2 sono troncate  f = d1; la d1 provoca un overflow  Esiste anche la conversione esplicita (type cast).

Primi esempi in “quasi C” Una versione semplificata del linguaggio C

Il mio primo programma! Il “punto d’ingresso” del programma I blocchi /* Il mio primo programma in “quasi C” */ main() { printf ("Hello world!!!"); printf ("Ovvero: ciao mondo!!!"); } Il “punto d’ingresso” del programma I blocchi L’ordine di esecuzione delle istruzioni I commenti La “sintassi colorata”.

Somma Le keyword (parole chiave) predefinite: /* Non è proprio C… */ main() { unsigned int operando1, operando2, somma; operando1 = 10; operando2 = 15; somma = operando1 + operando2; printf (somma); } Le keyword (parole chiave) predefinite: if, while, else, unsigned, int, … Il vocabolario del C I comandi definiti usando il linguaggio stesso: printf(), scanf(), … Funzioni di libreria operando1, operando2, …

Area cerchio /* non è proprio C… */ main() { const float PI = 3.1415f; float raggio, area; scanf (raggio); area = raggio * raggio * PI; printf (area); } .

Esempi in C: tipi semplici Variabili, costanti, tipi semplici, specificatori di formato, cast implicito.

Il mio primo programma! La printf() è una “funzione di libreria” #include <stdio.h> /* Il mio primo programma in C!!! */ void main() { printf ("Hello world!!!"); printf ("Ovvero: ciao mondo!!!"); } La printf() è una “funzione di libreria” #include specifica dove andare a cercare la definizione void main() lo vedremo più avanti…

Area cerchio e quadrato #include <stdio.h> void main() { const float PI = 3.1415f; float x, area; scanf ("%f", &x); area = x * x * PI; printf ("Area cerchio: %f", area); x = 2 * x; /* cambia “significato” */ area = x * x; printf ("Area quadrato: %f", area); } . x

Cast implicito #include <stdio.h> void main() { int x = 3, y = 4; float k = 4.0, z, w; z = x / k; /* z: 0.75 */ w = 75.0 / z; /* w: 100 */ printf ("%f", w); z = x / y; /* z: 0 */ w = 75.0 / z; /* Divisione per zero */ } .

Alcuni specificatori di formato Per la scanf() e la printf(): "%u" indica un unsigned int "%lu" indica un unsigned long int "%d" indica un int "%ld" indica un long int "%c" indica un char "%f" indica un float.

Minuscolo  maiuscolo #include <stdio.h> void main() { char carattere; printf ("Inserisci un carattere minuscolo: "); scanf ("%c", &carattere); carattere = carattere - 32; printf ("Carattere maiuscolo: %c\n", carattere); } .