Il primo programma C. Un programma utile. Compilazione & linking con il compilatore GNU. Introduzione alla programmazione in linguaggio C

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

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

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

Struttura dei programmi C

Lezione 6 Introduzione al C++ Mauro Piccolo

Primi passi col linguaggio C

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

Tipi di dato. Il concetto di tipo di dato viene introdotto per raggiungere due obiettivi:

Il linguaggio C - Introduzione

Input/Output di numeri

Tipi di dato, Alessandra Giordani Lunedì 7 maggio 2011

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

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

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

Linguaggio C - sezione dichiarativa: costanti e variabili

Tipi di dato semplici

Tipi di dato primitivi

1 PANORAMICA SUL LINGUAGGIO C

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

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

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

Capitolo 2 Introduzione alla programmazione in C

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

Sintassi: Per la dichiarazione di variabili dei tipi fondamentali:

Programmazione in Java (I modulo)

La sintassi del C APPENDICE H

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

Laboratorio di programmazione

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

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

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

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

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

Linguaggio C Informatica Grafica

Laboratorio di Algoritmi e Strutture Dati

Alfabeto ed elementi lessicali del linguaggio C

Sommario PREFAZIONE...XI CAPITOLO 1: INTRODUZIONE AI COMPUTER, A INTERNET E AL WEB... 1 CAPITOLO 2: INTRODUZIONE ALLA PROGRAMMAZIONE IN C...

Caratteri e stringhe

I CARATTERI E LE STRINGHE

Espressione di chiamata di funzione

Laboratorio di informatica Ingegneria meccanica

Le basi del linguaggio Java

Il potere espressivo di un linguaggio è caratterizzato da: PROGRAMMA = DATI + CONTROLLO

Scrittura formattata - printf

Perché il linguaggio C?

LINGUAGGI DI PROGRAMMAZIONE!

Linguaggio C Variabili e tipi di dato

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

Linguaggio C: introduzione

I/O INTERATTIVO. scanf: quello che è indispensabile sapere printf: quello che è utile sapere

Tipi interi lo standard (1)

Tipi di dati fondamentali. Tipi di dati fondamentali. Utilità dei tipi di dati nelle dichiarazioni. Il tipo di dati char. Codice ASCII.

Il linguaggio C. Notate che...

Lab 02 Tipi semplici in C

Costanti e Variabili

Caratteristiche di un linguaggio ad alto livello

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

Tipi elementari, costanti. Tipi di dati. VALORI: un insieme dei valori del tipo OPERAZIONI: per operare su tali valori. Tipi. intero reale carattere

Corso sul linguaggio C Modulo Tipi di dato

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

ELEMENTI DI INFORMATICA L-B. Ing. Claudia Chiusoli

Variabili e Istruzioni

Programmazione I - Laboratorio

Gli Operatori. Linguaggio C. Gli Operatori. Esempi sull uso dell Operatore di Assegnamento. L Operatore di Assegnamento

Introduzione a Matlab

LIBRERIE STANDARD in C. LIBRERIE STANDARD in C

IL LINGUAGGIO C TIPI DI DATO

Introduzione al linguaggio C Puntatori

La programmazione nel linguaggio C

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

C: panoramica. Violetta Lonati

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

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

LA CODIFICA DELL INFORMAZIONE. Introduzione ai sistemi informatici D. Sciuto, G. Buonanno, L. Mari, McGraw-Hill Cap.2

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

Tipi elementari, costanti. Tipi di dati. VALORI: un insieme dei valori del tipo OPERAZIONI: per operare su tali valori. Tipi. intero reale carattere

Le parole chiave char, int, float, double, ed enum descrivono i. che modificano i tipi base

Programmazione Procedurale in Linguaggio C++

IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale

direttive del preprocessore simboli speciali parole chiave identificatori costanti

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

Appunti del corso di Informatica 1 (IN110 Fondamenti) 5 Rappresentazione delle informazioni

Introduzione al Linguaggio C

Un elaboratore è un manipolatore di simboli (segni) intrinsecamente capace di trattare vari. caratteri char caratteri ASCII unsigned char

Introduzione alla programmazione in C++

Linguaggio C: Espressioni

Le funzioni, e le istruzioni di input/output

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

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

Introduzione al linguaggio C

Corso di Fondamenti di Programmazione canale E-O. Tipi di dato. Un esempio

Fondamenti di Informatica

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

Introduzione a. Funzioni di Ingresso e Uscita. Compilazione

Utilizza i tipi di dati comuni a tutto il framework.net Accesso nativo ai tipi.net (C# è nato con.net) Concetti fondamentali:

La programmazione in linguaggio C

- Dispensa III - PROGRAMMAZIONE C (Parte I)

Fondamenti di Informatica T-1 Modulo 2

$QDOLVLGHOSURJUDPPDTXDGUDWR

Formattazione avanzata. I/O Avanzato e File. Formattazione dell output. Formattazione avanzata. Forma completa degli specificatori

Transcript:

Introduzione alla programmazione in linguaggio C Il primo programma C /* Hello world: il mio primo programma C */ Commento su più righe; il compilatore ignorerà tutto quanto compreso fra /* e */. Il primo programma C Tipi semplici in C Operatori principali Funzioni di I/O //inizio del programma printf( Hello world \n ); //fine del programma Direttiva al preprocessore per includere le definizioni delle funzioni standard di I/O Commento su una riga; il compilatore ignorerà i caratteri fra // e la fine del rigo. Simbolo di fine istruzione F. Ambrosino/E. Vardaci Corso di Informatica A.A. 2004-2005 1 F. Ambrosino/E. Vardaci Corso di Informatica A.A. 2004-2005 2 Compilazione & linking con il compilatore GNU $>cc [ lnomelib] [-o file.exe] file.c Cerca le librerie di nome: libnomelib.a Nome del file sorgente C in una sequenza di directories di default ed effettua il linking. Esempio: -lm effettua il link con la libreria di funzioni matematiche /usr/lib/libm.a Genera in output un eseguibile chiamato file.exe invece del default, che è a.out Nome del compilatore: include anche il linker F. Ambrosino/E. Vardaci Corso di Informatica A.A. 2004-2005 3 Dichiarazione delle variabili. Legge dallo standard Input un tipo float e lo mette nella variabile cifra_in_lire Un programma utile /* Euroconvertitore */ Questo valore non può essere cambiato float cifra_in_lire, cifra_in_euro; const float conv_fact = 1936.27; printf( Inserisci la cifra in lire \n ); scanf( %f,&cifra_in_lire); cifra_in_euro = cifra_in_lire/conv_fact; printf( Il controvalore euro è %f \n, cifra_in_euro); Scrive sullo standard Output un messaggio contenente un tipo float che è il contenuto della variabile cifra_in_euro F. Ambrosino/E. Vardaci Corso di Informatica A.A. 2004-2005 4

Variabili e tipi Tipi semplici predefiniti in C (I) Come ampiamente discusso la rappresentazione interna di un numero intero con segno è diversa da quella di un intero senza segno. Ci sono poi almeno tre possibili rappresentazioni dei numeri in virgola mobile secondo lo standard IEEE754: singola doppia e quadrupla precisione rispettivamente con 32, 64 e 128 bit. I caratteri vengono rappresentati tramite il codice ASCII e necessitano di un byte (8 bit). int short long unsigned int unsigned short unsigned long Tipi interi: = intero con segno, 32 bit = intero con segno, 16 bit = intero con segno, 64 bit = come int ma senza segno = come short ma senza segno = come long ma senza segno Il tipo di una variabile deve essere sempre dichiarato char I tipi character sono in realtà interi di 8 bit: = intero di 1 byte F. Ambrosino/E. Vardaci Corso di Informatica A.A. 2004-2005 5 F. Ambrosino/E. Vardaci Corso di Informatica A.A. 2004-2005 6 Tipi semplici predefiniti in C (II) float double long double Tipi float: = virgola mobile, 32 bit = virgola mobile, 64 bit = virgola mobile, 128 bit Il tipo più usato è il double, float è conveniente talvolta per risparmiare memoria in vettori di grandi dimensioni. In aggiunta a questi tipi c è il tipo speciale void che rappresenta l assenza di valore (valore vuoto). Vedremo meglio il suo utilizzo in seguito. Il qualificatore const Il qualificatore const può essere premesso a qualsiasi tipo, indicando che la variabile così definita non verrà modificata nel corso del programma. In tal caso bisogna assegnare il valore iniziale alla variabile in fase di definizione: const int max_iterazioni = 100; const char no = n ; const float pigreco = 3.141592; F. Ambrosino/E. Vardaci Corso di Informatica A.A. 2004-2005 7 F. Ambrosino/E. Vardaci Corso di Informatica A.A. 2004-2005 8

Sommare patate con cipolle Nelle operazioni con tipi diversi, di norma un tipo inferiore viene promosso al tipo superiore secondo la scala: Char, short => int =>long => float =>double =>long double Operatori aritmetici, relazionali e logici Operatori aritmetici: + - * / % Operatore modulo: x%y è il resto della divisione di x per y e quindi vale zero se x è multiplo di y Esempio: Se i è un int e f è un float i viene promosso a float e il risultato dell operazione i + f è a sua volta un float Bisogna ovviamente fare molta attenzione alle conversioni in cui si perde informazione, dove può avvenire un troncamento, come nel caso i=x con i int e x float. AND logico Operatori relazionali: > >= < <= ==!= Operatori logici: && Operatori di uguaglianza e disuguaglianza: x = = y è vera se x è uguale a y x!= y è vera se x è diverso da y OR logico F. Ambrosino/E. Vardaci Corso di Informatica A.A. 2004-2005 9 F. Ambrosino/E. Vardaci Corso di Informatica A.A. 2004-2005 10 Operatori di incremento e decremento Spesso in un programma occorre incrementare o decrementare di uno una variabile. Il C dispone di particolari operatori dedicati a ciò, che sono: Esempi n++; Da ora in poi n è uguale a 6 ++n; ++ -- k = n++; Da ora in poi k è uguale a 5 ed n è uguale a 6 Se usati rispettivamente prima o dopo di una variabile ne determinano il preincremento (variabile prima incrementata e poi utilizzata) o il postincremento (variabile prima utilizzata e poi incrementata). k = ++n; Da ora in poi k è uguale a 6 ed n è uguale a 6 F. Ambrosino/E. Vardaci Corso di Informatica A.A. 2004-2005 11 F. Ambrosino/E. Vardaci Corso di Informatica A.A. 2004-2005 12

Operatori di assegnamento Un altra particolare classe di operatori del C permette di scrivere in forma compatta le operazioni in cui una variabile viene modificata a partire da sé stessa. Ad esempio: x += 2 è equivalente a x = x + 2 x -=3 è equivalente a x = x - 3 y *= x è equivalente a y = y*x y *= x + 1 è equivalente a y = y*(x + 1) z %= x è equivalente a z = z%x F. Ambrosino/E. Vardaci Corso di Informatica A.A. 2004-2005 13 Funzione printf (I) printf e una funzione della libreria stdio che permette ad un programma di passare informazioni allo standard output, il cui dispositivo associato e tipicamente il terminale grafico. Il formato con cui sono presentati i numeri e le stringhe di caratteri e definito da un insieme di regole e simboli di formattazione. printf(formato, arg1, arg2.); formato : stringa di caratteri che contiene le informazioni per la formattazione, i descrittori del formato arg1,arg2..: nomi di variabili di cui si vuole stampare il contenuto F. Ambrosino/E. Vardaci Corso di Informatica A.A. 2004-2005 14 Funzione printf (II) La stringa di controllo e costituita da caratteri ordinari e da direttive per il controllo del formato. Il descrittore del formato ha la seguente forma: %[-][ampiezza][.precisione]tipo precisione Funzione printf (III) il numero max di caratteri da stampare per una stringa; il minimo numero di cifre da stampare per un intero il numero di cifre decimali per un numero floating point ampiezza - allineamento del campo a sinistra (default a destra) il numero totale di campi di carattere che il dato occupera ; F. Ambrosino/E. Vardaci Corso di Informatica A.A. 2004-2005 15 tipo d per dati di tipo int; f per dati di tipo float; lf per dati di tipo double; c per dati di tipo char; s per le stringhe e,e,g per dati di tipo double con notazione scientifica; F. Ambrosino/E. Vardaci Corso di Informatica A.A. 2004-2005 16

Funzione printf (III) Esempi: printf( %f %f %f %f, x, y, x*y, x/y); printf( %f %f %f %f, x, y, x/y, x*y); printf( \n Index = %d Value = %f, i, item); printf( Client%s owns %d points\n, Name,PN); p.s.: Usare man 3 printf per ulteriori dettagli F. Ambrosino/E. Vardaci Corso di Informatica A.A. 2004-2005 17 Sequenze di Escape Sono delle combinazioni di caratteri composte da \ (backslash) seguita da uno o piu caratteri. Sono di solito usate per specificare alcune particolari funzioni di terminali e stampanti Escape Sequence Character ASCII Value \a Alert/bell 7 \b Backspace 8 \f Formfeed 12 \n Newline 10 \r Carriage return 13 \t Horizontal tab 9 \v Double quotation 11 \ 34 Single quotation \\ 92 Backslash F. Ambrosino/E. Vardaci Corso di Informatica A.A. 2004-2005 18 Input e Output di Caratteri La libreria standard per l I/O fornisce diverse funzioni per leggere e scrivere un carattere alla volta. int c; c = getchar(); putchar(c); la funzione getchar legge il successivo carattere disponibile nello standard input (es. tastiera) stampa nello standard output (es., terminale) il contenuto della variabile intera come carattere. text stream: una sequenza di caratteri divisi in linee; ogni linea consiste di zero o piu caratteri seguiti dal carattere di newline (\n). F. Ambrosino/E. Vardaci Corso di Informatica A.A. 2004-2005 19 Esempio di getchar e putchar (I) /* copia input nell output */ int c; c = getchar(); while(c!= EOF) putchar(c); c = getchar(); Il valore della costante EOF (definita in stdio.h) permettere di distinguere tra un input valido e la fine dell input. F. Ambrosino/E. Vardaci Corso di Informatica A.A. 2004-2005 20

Esempio di getchar e putchar (II) Nota: in C, ogni assegnazione e una espressione. Ogni espressione ha un valore che corrisponde a quello della variabile a sinistra dell espressione dopo l assegnazione. /* copia input nell output */ int c; while((c = getchar())!= EOF) putchar(c); Le parentesi intorno all assegnazione sono importanti: in assenza di parentesi, c assumerebbe il valore 0 nel caso dell EOF, e 1 altrimenti: c = getchar()!= EOF c = (getchar()!= EOF) F. Ambrosino/E. Vardaci Corso di Informatica A.A. 2004-2005 21 Line Counting /* count the number of lines in input */ int c, nl = 0; while((c = getchar())!= EOF) if(c == \n ) nl++; printf( Number of Lines = %d, nl); E possibile con questo programma contare il numero di linee di un file di testo? F. Ambrosino/E. Vardaci Corso di Informatica A.A. 2004-2005 22