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

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

Struttura dei programmi C

Linguaggio C: introduzione

Le direttive del Preprocessore

Primi passi col linguaggio C

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

IL PRIMO PROGRAMMA IN C

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

Algoritmi e basi del C Struttura di un programma

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

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

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

Linguaggio C Struttura dei programmi

Introduzione al C. Introduzione. Linguaggio ad alto livello. Struttura di un programma C

Input/Output di numeri

Costanti e Variabili

Linguaggio C - sezione dichiarativa: costanti e variabili

Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007

La programmazione nel linguaggio C

Espressione di chiamata di funzione

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

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

Fondamenti di Informatica e Laboratorio T-AB Ingengeria dell Automazione a.a. 2008/2009. Lab 04 Input/Output

Introduzione a. Funzioni di Ingresso e Uscita. Compilazione

Funzioni, Stack e Visibilità delle Variabili in C

La programmazione in linguaggio C

Scrittura formattata - printf

Preprocessore, linker e libreria standard

prova.c #include <stdio.h> char funzione(char); codice oggetto del main()

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

Variabili e Istruzioni

ELEMENTI DI INFORMATICA L-B. Ing. Claudia Chiusoli

LIBRERIE STANDARD in C. LIBRERIE STANDARD in C

Un esempio per iniziare. Il controllo del programma in C. Altri cenni su printf() Esercizi (printf) printf( 8!=%d, fatt);

Elementi di informatica

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

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

Esercitazione 4. Comandi iterativi for, while, do-while

Laboratorio 1. 2) All interno della directory c:\temp\cognome\codici creare il file sorgente hello.c contenente il seguente codice:

Introduzione al linguaggio C

Lezione 8 Struct e qsort

Programmazione I - Laboratorio

6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

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

Corso di Calcolatori Elettronici Un computer è un dispositivo in grado di eseguire dei calcoli e di prendere delle decisioni logiche.

Le funzioni, e le istruzioni di input/output

Il linguaggio C Il linguaggio C. Caratteristiche del C. Caratteristiche del C. Linguaggi di Programmazione I. Ferdinando Cicalese

Codifica degli algoritmi in linguaggio di alto livello

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

Linguaggio C - le strutture di controllo: sequenza, selezione, iterazione

Corso sul linguaggio C Modulo Tipi di dato

Esercizio n.1 FONDAMENTI DI INFORMATICA 1. Esercizio n.2. Soluzione. LINGUAGGIO C Funzioni e gestione file: esercitazione

Linguaggio C. strutture di controllo: strutture iterative. Università degli Studi di Brescia. Docente: Massimiliano Giacomin

Tempo di vita e scope delle variabili

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

Caratteristiche di un linguaggio ad alto livello

Il linguaggio C - Introduzione

Files in C++ Fondamenti di Informatica. R. Basili. a.a

Dati aggregati. Violetta Lonati

Informatica! Appunti dal laboratorio 1!

Approfondimento : printf

Perché il linguaggio C?

Primo passo: il preprocessor. Il preprocessore. Esempi di direttive al preprocessore: #include. Esempi di direttive al preprocessore: #define

Definizione Allocazione e deallocazione di variabili Allocazione e deallocazione di vettori

Cenni sul preprocessore e il suo utilizzo

Il linguaggio C. Notate che...

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

Realizzare un programma che legga da input tre numeri interi e stampi a video la loro somma e la media.

Programmazione Procedurale in Linguaggio C++

Variabili. Tipi di dati di base. Variabili. Variabili

I vettori in C. Vettori. Definizione di vettori in C. int dato[10] ; int. Numero di elementi. Tipo di dato base. Nome del vettore.

$QDOLVLGHOSURJUDPPDTXDGUDWR

Caratteri e stringhe

Le Strutture di controllo Del Linguaggio C. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

Introduzione al Linguaggio C Corso di Informatica Laurea in Fisica

Il Linguaggio C. Caratteristiche. Caratteristiche. Esempio di programma in C. Tipi di dato primitivi in C. Dati

Laboratorio di informatica Ingegneria meccanica

Esercizio 1 - cicli. Esercizio 1 cicli - Soluzione

I puntatori. Un puntatore è una variabile che contiene l indirizzo di un altra variabile. puntatore

Linguaggio C. Tipi predefiniti e operatori. Università degli Studi di Brescia. Docente: Massimiliano Giacomin

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

Lezione 10. L arte della programmazione

ingresso/uscita da file

Laboratorio di Algoritmi e Strutture Dati

Esercizio 1: calcolo del massimo di una sequenza (versione 1)

ESAME DI FONDAMENTI DI INFORMATICA I ESAME DI ELEMENTI DI INFORMATICA. 21 Gennaio 1998

file fisico file logico

Gestione dei file. Stefano Ferrari. Università degli Studi di Milano Programmazione. anno accademico

Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di

Istruzioni iterative. Istruzioni iterative

Linguaggio C Variabili e tipi di dato

Fondamenti di Informatica T-1 Modulo 2

Definizione di metodi in Java

Tipi e Valori. Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna

Linguaggio C. Appunti per il corso di Laboratorio di Algoritmi e Strutture Dati. Stefano Aguzzoli

Laboratorio di Programmazione Laurea in Bioinformatica

Lezione 8. Sottoprogrammi

acquisizione numero elementi del primo insieme e del secondo insieme, finché elprimoinsieme oppure elsecondoinsieme > EL_INS

TUTORATO di LINGUAGGI I

Le basi del linguaggio Java

Transcript:

Università degli Studi di Cagliari Corso di Laurea Specialistica in Ingegneria per l Ambiente ed il Territorio Corso di Laurea Specialistica in Ingegneria Civile - Strutture FONDAMENTI DI INFORMATICA 2 http://www.diee.unica.it/giacinto/fi2 ESECUZIONE DI PROGRAMMI C SU MACCHINE REALI Docente: Giorgio Giacinto AA 2008/2009 Introduzione! Nella sezione precedente ci siamo concentrati sulla formalizzazione degli algoritmi in linguaggio C! Sono state introdotte solo alcune istruzioni fondamentali! In questa sezione introduciamo gli ulteriori elementi essenziali per la scrittura di un programma in C Giorgio Giacinto 2008 Fondamenti di Informatica 2 2

Struttura dei programmi C /* Somma sequenze di numeri */ #include <stdio.h> main() { int numero, somma; somma = 0; scanf( %d,&numero); while(numero!=0) { somma = somma+ numero; scanf( %d,&numero); } printf( La somma è: %d\n,somma); } Direttive al pre-processore C Dichiarazioni di costanti e di variabili Formato corretto delle istruzioni di I/O printf e scanf Giorgio Giacinto 2008 Fondamenti di Informatica 2 3 La parte dichiarativa dei programmi! Il linguaggio C chiede che tutte gli identificatori usati all interno del programma vengano dichiarati:! Facilita l individuazione di errori (ad esempio si scrive alba anziché alfa, dove alfa è stata dichiarata, mentre alba no)! Notifica al C che tipo di valori dovrà memorizzare (caratteri, numeri interi, numeri in virgola mobile, ecc.)! La parte dichiarativa precede la parte esecutiva che contiene le istruzioni. Giorgio Giacinto 2008 Fondamenti di Informatica 2 4

Dichiarazione di variabili! Sintassi: <identificatore_di_tipo> <lista_dichiarazione> <identificatore_di_tipo>::=int float char <lista_dichiarazioni>::= <dichiarazione>[{,<dichiarazione>}]; <dichiarazione>::= <identificatore> <identificatore> = <valore_iniziale> tipo: l insieme dei valori che la variabile può assumere int: interi; float: virgola mobile; char: carattere, ecc. Giorgio Giacinto 2008 Fondamenti di Informatica 2 5 Dichiarazione di variabili (cont.) float int char x,y; i,j; simb; Significato: Nel programma si useranno le variabili x e y come numeri in virgola mobile, i e j come interi e simb come carattere Ne consegue che, ad es., j non potrà mai assumere il valore 3.14 (qual è il risultato di j=3.14;?) Giorgio Giacinto 2008 Fondamenti di Informatica 2 6

Dichiarazione di costanti Sintassi: const <identificatore_di_tipo> <lista_dichiarazione> <identificatore_di_tipo>::=int float char <lista_dichiarazioni>::= <dichiarazione>[{,<dichiarazione>}]; <dichiarazione>::= <identificatore> = <valore_iniziale> Una dichiarazione di costante associa in maniera permanente un valore ad un identificatore per la durata dell esecuzione del programma Giorgio Giacinto 2008 Fondamenti di Informatica 2 7 Dichiarazione di costanti (cont.) const float PiGreco = 3.14; const float PiGreco = 3.1415, e = 2.718; const int N = 100, M = 1000; const char Car1 = G, Car2 = R ; La definizione di costanti è utile:! Per utilizzare un identificatore simbolico nel corpo del programma (ad es. PiGreco al posto di 3.14) che ne migliora la comprensibilità! Per poter parametrizzare il programma. Se si desidera cambiare il valore di una costante non è necessario rintracciarne tutte le occorrenze nel programma, ma è sufficiente modificare la dichiarazione iniziale. Giorgio Giacinto 2008 Fondamenti di Informatica 2 8

Il preprocessore C! Costituisce la prima fase della compilazione di un programma in linguaggio C! La direttiva #include viene usata per includere nel programma corrente il contenuto del file specificato.! La direttiva #define viene usata per sostituire ad un identificatore una stringa arbitraria di caratteri! Ad es. #define DIMENSIONE 100 ad ogni occorrenza di DIMENSIONE il preprocessore sostituisce il valore 100! A differenza di una costante, non è una variabile in memoria, ma la sostituzione viene effettuata dal compilatore prima della compilazione vera e propria Giorgio Giacinto 2008 Fondamenti di Informatica 2 9 #include! E comodo disporre di un certo insieme di funzioni e definizioni di libreria.! Sono funzioni e definizioni che estendono le funzionalità di base del linguaggio C! Le funzioni di libreria possono essere definite dall utente oppure appartenere a un insieme definito dallo standard ANSI C! Le funzioni della libreria standard sono disponibili in qualunque ambiente di programmazione e hanno sempre la stessa sintassi Giorgio Giacinto 2008 Fondamenti di Informatica 2 10

#include <stdio.h>! Il linguaggio C in senso stretto non possiede istruzioni per realizzare I/O! In ciascun ambiente di programmazione sono sempre disponibili le funzioni scanf e printf! Le funzioni per l I/O sono sempre definite nel file stdio.h! #include <stdio.h> produce come effetto l inclusione nel programma corrente del file stdio.h. ed è necessario per usare le funzioni di I/O (come ad es. printf e scanf) Le parentesi angolate <> indicano che il file si trova nella directory predefinita dal compilatore che contiene le libreria standard. Giorgio Giacinto 2008 Fondamenti di Informatica 2 11 Sintassi di printf! E la funzione che consente di generare un output formattato sul dispositivo di uscita standard! printf(stringa_di_controllo, elementi_da_stampare)! La stringa_di_controllo è una stringa (racchiusa fra ) che viene stampata in uscita e che può contenere caratteri di conversione o di formato preceduti dal simbolo % e altri simboli (ad es., \n provoca un salto a nuova riga)! %d per stampare un intero! %c per stampare un carattere! %f per stampare un numero reale (floating point)! %s per stampare una stringa di caratteri Giorgio Giacinto 2008 Fondamenti di Informatica 2 12

Sintassi di printf (cont.)! printf(stringa_di_controllo, elementi_da_stampare)! Gli elementi_da_stampare sono costituiti da una lista di variabili, costanti, espressioni (gli elementi sono separati da virgola), nello stesso ordine in cui compaiono i corrispondenti caratteri di conversione nella stringa_di_controllo.! I caratteri preceduti da % vengono detti di conversione perché devono convertire il contenuto delle variabili, costanti ecc. in caratteri stampabili Giorgio Giacinto 2008 Fondamenti di Informatica 2 13 Esempio di utilizzo di printf printf( Lo stipendio annuo dei dipendenti di categoria %d è pari a %f Euro\n,cat,stip); dove cat è definita come variabile intera (int) e stip come variabile reale (float). Se cat contiene il valore 6 e stip il valore 1570.58, l istruzione stampa la stringa seguente Lo stipendio annuo dei dipendenti di categoria 6 è pari a 1570.5 Euro e il cursore viene spostato sulla riga seguente Giorgio Giacinto 2008 Fondamenti di Informatica 2 14

Esempio di utilizzo di printf (cont.) printf(%s\n%c%c\n\n%s\n, Questo programma è stato scritto da,iniz-nome,iniz-cognome, Buon lavoro! ); Se iniz-nome e iniz-cognome sono definite come variabile carattere (char) e contengono rispettivamente M e P l istruzione stampa la stringa seguente: Questo programma è stato scritto da MP Buon lavoro! e il cursore viene spostato sulla riga seguente Giorgio Giacinto 2008 Fondamenti di Informatica 2 15 Sintassi di scanf scanf(stringa_di_controllo, elementi_da_leggere);! La stringa_di_controllo contiene una lista di caratteri di conversione o di formato preceduti dal simbolo % (la lista è racchiusa fra ) In questo modo di specifica il formato con cui devono essere interpretati i caratteri letti da tastiera! La lista di elementi_da_leggere contiene i nomi preceduti da & delle variabili in cui devono essere memorizzati i dati letti da tastiera (gli elementi sono separati da virgole). Le variabili sono nello stesso ordine degli elementi da leggere specificati dalla stringa_di_controllo. Giorgio Giacinto 2008 Fondamenti di Informatica 2 16

Esempio di utilizzo di scanf scanf( %c%c%c%d%f,&c1,&c2,&c3,&i,&x); Se al momento dell esecuzione l utente inserisce ABC 3 7.345 c1 conterrà A (c1 deve essere definita di tipo char) c2 conterrà B (c2 deve essere definita di tipo char) c3 conterrà C (c3 deve essere definita di tipo char) i conterrà 3 (i deve essere definita di tipo int) x conterrà 7.345 (x deve essere definita di tipo float) N.B. Il significato di & sarà chiaro nella sezione successiva Giorgio Giacinto 2008 Fondamenti di Informatica 2 17 Esercizi 1. Scrivere un programma che legge un numero e ne stampa il valore assoluto o modulo. Usare un istruzione condizionale priva del ramo else. 2. Scrivere un programma che, letto un numero, stampi il valore 1 se questo è dispari, 0 se è pari. 3. Scrivere un programma che legga un numero n da stdin ed esegua la sommatoria dei successivi n numeri di posto pari e la sommatoria dei successivi n numeri di posto dispari. 4. Scrivere un programma per il calcolo del minimo comune multiplo tra due numeri. 5. Scrivere un programma che, dati un numero diverso da 0, e una sequenza di numeri terminata da uno 0, stampi in uscita 1 se il primo numero esiste nella sequenza, 0 in caso contrario. Giorgio Giacinto 2008 Fondamenti di Informatica 2 18

Esercizi (cont.) 6. Scrivere un programma C che realizzi la seguente operazione di taglia e incolla : viene fornito un testo costituito da una sequenza di parole separate fra loro da uno spazio e terminate da un %. Dopo il % vi sono tre numeri positivi n, m, p con n! m. Il testo in uscita deve essere ottenuto da quello di ingresso spostando la porzione compresa fra la n-esima e la m-esima posizione, estremi inclusi, in posizione p-esima. 7. Siano date in stdin due serie di numeri separate tra loro da un & e chiuse da un %. Scrivere un programma che stampa in uscita una serie contenente tutti e solo i numeri presenti in entrambe le serie. Anche se un numero fosse contenuto più di una volta in una serie, dovrebbe comunque essere presente una sola volta nella serie di uscita. Giorgio Giacinto 2008 Fondamenti di Informatica 2 19