STRUTTURA DI UN PROGRAMMA C In prima battuta, la struttura di un programma C è definita dalla seguente produzione: ::= { }

Slides:



Advertisements
Presentazioni simili
Introduzione al linguaggio C++
Advertisements

INFORMATICA Tipi strutturati
I tipi Strutturati.
Corso di Fondamenti di Programmazione canale E-O
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array, matrici Marco D. Santambrogio – Ver. aggiornata al 21 Marzo 2013.
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità F2 Selezione.
Introduzione alla programmazione A. Ferrari. Il linguaggio C Nel 1972 Dennis Ritchie nei Bell Laboratories progettò il linguaggio C Il linguaggio possiede.
Selezione - approfondimento
I DATI I PRINCIPALI TIPI DI DATO UTILIZZATI IN PROGRAMMAZIONE
Type Checking (1° parte)
Programmazione Procedurale in Linguaggio C++
Indirizzi delle variabili A ogni variabile sono associati tre concetti fondamentali: il valore memorizzato; il tipo dati di appartenenza; lindirizzo. Il.
Fondamenti di Informatica II Ingegneria Informatica / Automatica (A-I) Meccanica Prof. M.T. PAZIENZA a.a – 3° ciclo.
Caratteri e stringhe di caratteri
Process synchronization
Allocazione dinamica della memoria
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Introduzione a JAVA Anno Accademico 2009/2010.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Variabili e tipi primitivi Anno Accademico 2009/2010.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Array Anno Accademico 2009/2010.
Eliana minicozzi linguaggi L1 Lezione3.
Il linguaggio Fortran 90: 2. Istruzioni di Controllo
nome: sequenza di caratteri usata per denotare un oggetto
memoria gestita staticamente:
8) Classi numeriche e operatori Lab. Calc. I AA2002/03 - cap.82 Classi numeriche Esempi di classi numeriche: int, numeri interi che occupano una parola.
Lab. Calc. AA 2005/061 puntatori. Lab. Calc. AA 2005/062 Attributi di un oggetto nome o identificatore; tipo o classe; valore o valori; indirizzo;
Dichiarazioni e tipi predefiniti nel linguaggio C
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.
Espressioni condizionali
Java base I: Sintassi e tipi di dati
FUNZIONI: IL MODELLO APPLICATIVO 1) Valutazione, nellenvironment corrente, del simbolo che denota il nome della funzione; 2) Valutazione, nellenvironment.
PUNTATORI Un puntatore è una variabile destinata a contenere lindirizzo di unaltra variabile Vincolo di tipo: un puntatore a T può contenere solo lindirizzo.
AN FI Un denominatoe comune Linguaggi di programmazione Un denominatore comune.
AN FI Un denominatoe comune Lo stile funzionale Concetti fondamentali.
TIPI DI DATO Un tipo di dato T è definito come: un dominio di valori, D un insieme di funzioni F 1,..,F n sul dominio D un insieme di predicati P 1,..,P.
4 Tipi di dati & variabili
2000 Prentice Hall, Inc. All rights reserved. Capitolo 6 (Deitel) I vettori Sommario Introduzione Vettori Dichiarazione di vettori 6.4.
CODIFICA Da flow-chart a C++.
In molti casi è utile assegnare a degli identificatori dei valori che restino costanti durante tutto il programma e che non possano essere cambiati nemmeno.
Il linguaggio C Le funzioni C Language Il passaggio dei parametri
Programmazione di Calcolatori
Programmazione di Calcolatori
Unità Didattica 3 Linguaggio C
Fopndamenti di programmazione. 2 La classe String Una stringa è una sequenza di caratteri La classe String è utilizzata per memorizzare caratteri La classe.
Tipi di dati semplici in C (1/3)
LdL - LP1 - lez 11 - ver 6 - aa Linguaggi di programmazione I Stringhe (II) Prof. Luigi Di Lascio Lezione 11.
GLI ARRAY MONODIMENSIONALI. Utilizzando le nostre attuali conoscenze, proviamo a risolvere il seguente problema: Calcolare la media dei voti conseguiti.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Funzioni e Procedure Marco D. Santambrogio – Ver. aggiornata al 3 Aprile 2015.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Puntatori Marco D. Santambrogio – Ver. aggiornata al 11 Ottobre 2014.
Università di Torino – Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a prof. Viviana Bono Blocco 7 – Array.
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
Fondamenti di Informatica II Ingegneria Informatica (A-I) Prof. M.T. PAZIENZA a.a – 3° ciclo.
1 Il linguaggio C Puntatori e dintorni. 2 Puntatori : idea di base In C è possibile conoscere e denotare l’indirizzo della cella di memoria in cui è memorizzata.
1 Tipi di Dato §descrittori, tipi, controllo e inferenza dei tipi §specifica (semantica) e implementazione di tipi di dato l implementazioni “sequenziali”
© Piero Demichelis Tipi strutturati I tipi considerati finora hanno la caratteristica comune di non essere strutturati: ogni elemento è una singola entità.
Programmazione in Java
13 ottobre Decisioni F. Bombi 13 ottobre 2002.
1 Il linguaggio C Precisazioni sull’esperienza in laboratorio.
ALLOCAZIONE STATICA: LIMITI Per quanto sappiamo finora, in C le variabili sono sempre dichiarate staticamente –la loro esistenza deve essere prevista e.
Informatica 6 Tipi di dato. Nelle celle di memoria di un calcolatore ci sono solo “0” e “1”, fisicamente realizzati tramite due diversi livelli di tensione.
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 
Esercizi.
Laboratorio di Linguaggi... altre D O M A N D E ! Marco Tarini Università dell’Insubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso.
Informatica Problemi e algoritmi. una situazione che pone delle domande cui si devono dare risposte. Col termine problema o situazione problematica s’indica.
Luca Chichisola1 Dal problema al programma LUCA CHICHISOLA.
Parsing ricorsivo discendente Il parsing ricorsivo discendente (recursive descent parsing) è un metodo di tipo top-down che può essere facilmente codificato.
Linguaggio SQL. Linguaggi per database La diffusione del modello relazionale ha favorito l’uso prevalente di linguaggi non procedurali: in questo modo.
Introduzione alle Classi e agli Oggetti in Java 1.
Transcript della presentazione:

STRUTTURA DI UN PROGRAMMA C In prima battuta, la struttura di un programma C è definita dalla seguente produzione: ::= { }

STRUTTURA DI UN PROGRAMMA C La parte è l’unica obbligatoria, ed è definita dalla produzione: ::= main(){ [ ] }

STRUTTURA DI UN PROGRAMMA C  introducono i nomi di costanti, variabili, tipi definiti dall’utente  sequenza di frasi del linguaggio ognuna delle quali è un’istruzione Il main() è una particolare unità di traduzione (una funzione).

CARATTERI E IDENTIFICATORI  set di caratteri dipende dall’implementazione; solitamente ASCII + estensioni  identificatori sequenze di caratteri tali che ::= { | }

COMMENTI  commenti sequenze di caratteri racchiuse fra i delimitatori /* e */ ::= /* */ ::= { } ::= { }  i commenti non possono essere innestati.

VARIABILI Una variabile è un’astrazione della cella di memoria. Formalmente, è un simbolo associato a un indirizzo fisico (L-value)... Perciò, l’ L-value di x è 1328 (fisso e immutabile!)..

VARIABILI … che denota un valore (R-value) e l’ R-value di x è attualmente 4 (può cambiare).

DEFINIZIONE DI VARIABILE È la frase che introduce una nuova variabile  identificata da un dato simbolo  e atta a denotare valori di un ben preciso tipo

DEFINIZIONE DI VARIABILE ::= | ::= | ::= {, } ;

Definizione di una variabile: ; int x; /* x deve denotare un valore intero */ float y; /* y deve denotare un valore reale */ char ch; /* ch deve denotare un carattere */ DEFINIZIONE DI VARIABILE - ESEMPI

Contestualmente alla definizione è possibile specificare un valore iniziale per una variabile Inizializzazione di una variabile: = ; INIZIALIZZAZIONE DI VARIABILI

Inizializzazione di una variabile: = ; int x = 32; double speed = 124.6; INIZIALIZZAZIONE DI VARIABILI - ESEMPI

Una variabile è un particolare tipo di espressione VARIABILI & ESPRESSIONI

Quindi, una variabile può comparire in una espressione denota un valore pari al suo R-value double speed = 124.6; double time = 71.6; double km = speed * time; VARIABILI & ESPRESSIONI

campo d’azione (scope): è la parte di programma in cui la variabile è nota e può essere manipolata  in C, Pascal: determinabile staticamente  in LISP: determinabile dinamicamente  tipo: specifica la classe di valori che la variabile può assumere (e quindi gli operatori applicabili) CARATTERISTICHE DELLE VARIABILI

tempo di vita: è l’intervallo di tempo in cui rimane valida l’associazione simbolo/indirizzo fisico (L-VALUE)  in FORTRAN: allocazione statica  in C, Pascal: allocazione dinamica  valore: è rappresentato (secondo la codifica adottata) nell’area di memoria associata alla variabile CARATTERISTICHE DELLE VARIABILI

UN ESEMPIO Problema: “Data una temperatura espressa in gradi Celsius, calcolare il corrispondente valore espresso in gradi Fahrenheit” Approccio: si parte dal problema e dalle proprietà note sul dominio dei dati

UN ESEMPIO Specifica della soluzione: Relazioni tra grandezze esistenti nello specifico dominio applicativo: c * 9/5 = f - 32 oppure c = (f - 32) * 5/9 f = 32 + c * 9/5

UN ESEMPIO L’Algoritmo corrispondente: Dato c calcolare f sfruttando la relazione f = 32 + c * 9/5 solo a questo punto si codifica l’algoritmo nel linguaggio scelto.

UN PRIMO PROGRAMMA C main(){ float c = 18; /* Celsius */ float f = 32 + c * 9/5; }

UN ALTRO ESEMPIO Problema: “Dati tre valori interi positivi a, b, c, con a  b  c, dire se essi possono rappre- sentare i lati di un triangolo e, in tal caso, di che triangolo si tratta” Approccio: si parte dal problema e dalle proprietà note sul dominio dei dati

UN ALTRO ESEMPIO si ha un triangolo se e solo se vale la relazione a + b > c Nel caso questa relazione sia vera, il triangolo è –equilatero, se a=b e b=c –isoscele, se a=b (o b=c) ma a  c –scaleno, se a  b  c.

UN ALTRO ESEMPIO triangolo se e solo se a + b > c –equilatero, se a=b e b=c –isoscele, se a=b (o b=c) ma a  c –scaleno, se a  b  c. espressione C che riassume il tutto: (a+b)<=c ? 'n' : (a==b)&&(b==c) ? 'e' : (a==b)||(b==c) ? 'i' : 's';

UN POSSIBILE PROGRAMMA C main(){ char ris = (a+b)<=c ? 'n' : (a==b)&&(b==c) ? 'e' : (a==b)||(b==c) ? 'i' : 's'; }