Corso di Algoritmi e Strutture Dati APPUNTI SUL LINGUAGGIO C

Slides:



Advertisements
Presentazioni simili
C C++ &.
Advertisements

IL LINGUAGGIO ”C” Per l’eleganza della sintassi e la compattezza dei costrutti, il C è una sfida permanente alle capacità intellettuali del programmatore.
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità F1 Primi programmi.
Introduzione al linguaggio C++
INFORMATICA Altre Istruzioni di I/O
LINGUAGGIO DI PROGRAMMAZIONE C
Funzioni e procedure Ogni linguaggio di programmazione ad alto livello mette a disposizione del programmatore questi strumenti, ed il C non è da meno!
Corso di Algoritmi e Strutture Dati APPUNTI SUL LINGUAGGIO C
INFORMATICA Strutture condizionali
Introduzione al linguaggio C
© 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
LE FUNZIONI IN C Sommario 1 Introduzione 2 Moduli di programma in C
PHP.
MATLAB. Scopo della lezione Programmare in Matlab Funzioni Cicli Operatori relazionali Esercizi vari.
Algoritmi e Programmazione
Introduzione al linguaggio C
INFORMATICA Strutture iterative
Programmazione Procedurale in Linguaggio C++
FUNZIONI DI BIBLIOTECA
Caratteri e stringhe di caratteri
Tipi di dato e controllo del flusso Dott. Ing. Leonardo Rigutini Dipartimento Ingegneria dellInformazione Università di Siena Via Roma 56 – – SIENA.
Algoritmi Politecnico di Milano C Primi programmi Politecnico di Milano.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – Ver. aggiornata al 3 Ottobre 2013.
Introduzione alla programmazione
Informatica 2. Concetti fondamentali di programmazione Programmare vuol dire scrivere un algoritmo in un linguaggio che faccia funzionare un calcolatore.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Introduzione a JAVA Anno Accademico 2009/2010.
Programmazione Un programma descrive al computer, in estremo dettaglio, la sequenza di passi necessari a svolgere un particolare compito L’attività di.
Introduzione alla programmazione lll
Lezione 4: Costrutti Condizionali Prof. Raffaele Montella.
Fondamenti di Informatica I a.a Il linguaggio C Il controllo di flusso La selezione condizionale Listruzione switch I cicli Le istruzioni break,
Fondamentidi Programmazione Corso: Fondamenti di Programmazione Classe: PARI-DISPARI Docente: Prof. Luisa Gargano Testo: Aho, Ulman, Foundations of Computer.
INFORMATICA Altre Istruzioni di I/O. © Piero Demichelis 2 Funzioni di I/O Per la lettura e la scrittura da videoterminale il C prevede numerose istruzioni.
Strutture di controllo nel C
Strutture di controllo in C -- Flow Chart --
Dichiarazioni e tipi predefiniti nel linguaggio C
Il Linguaggio C.
Espressioni condizionali
Algoritmi e Programmazione (in C) Stefano Cagnoni e Monica Mordonini
Java base I: Sintassi e tipi di dati
Corso di PHP.
Programmazione in Java
Programmazione in Java Claudia Raibulet
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.
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.
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA INTERMEDIA DEL 12 MARZO 2007 NOME: COGNOME: ________________________________________________________________________________.
Appunti di Java (J2SDK 1.4.2, JDK 1.6.0) prof. Antonella Schiavon settembre 2009.
Anno accademico Le istruzioni di controllo in C.
Introduzione a Javascript
Parte 3 Lo stato: variabili, espressioni ed assegnazioni
Informatica B Allievi Elettrici - AA Fondamenti della programmazione in linguaggio C (II) Istruzioni e strutture di controllo.
Arduino: introduzione alla programmazione
Algoritmi e basi del C Struttura di un programma
1 Fabio Scotti – Università degli Studi di Milano Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza Valentina Ciriani ( )
13 ottobre Decisioni F. Bombi 13 ottobre 2002.
Algoritmi e basi del C Struttura di un programma
1 Il linguaggio C Precisazioni sull’esperienza in laboratorio.
Operatori di incremento e decremento
Concetti Fondamentali sulla Programmazione
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 
Copyright © Istituto Italiano Edizioni Atlas
Fabio Scotti – Università degli Studi di Milano 1 Lezione 1 e 2 Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza Valentina Ciriani.
Informatica B Allievi Elettrici - AA Fondamenti della programmazione in linguaggio C (III)
Il C `e un linguaggio di programmazione di uso generale, originariamente sviluppato per la scrittura del sistema operativo Unix, ed oggi disponibile su.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – Ver. aggiornata al 24 Agosto 2015.
Un semplice programma C /* Programma che stampa un saluto */ #include main() { printf(“Hello World!\n”); }
Transcript della presentazione:

Corso di Algoritmi e Strutture Dati APPUNTI SUL LINGUAGGIO C Introduzione al C Lezione I ESERCITAZIONE 1 SUI CICLI IN LABORATORIO #include <stdio.h> /* direttiva che permette di usare le funzioni printf e scanf */ #include <stdlib.h> /* direttiva che permette di usare la funzione system() */ int main() /* La parola main( ) identifica il programma principale e rappresenta il punto di ingresso del programma all’inizio della sua esecuzione */ { /* dichiarazione delle variabili usate */ int num,contp,n,i; /* num: + il numero corrente da legger contp: è il contatore di numeri positivi n: è la dimensione scelta dall'utente dei numeri da leggere i: è il contatore del ciclo For */ printf("CALCOLO DEI POSITIVI DI N NUMERI INSERITI\n"); /* lettura dti di ingresso del programma */ printf("\nN = "); scanf("%d",&n); /* azzeriamo il contatore contp dei positivi*/ contp=0; /* inizio corpo de programma */ for(i=0;i<n;i++) printf("\nNum = "); scanf("%d",&num); if(num>=0) contp++; } /* incremento del contatore i del ciclo for*/ } /* chiusura del ciclo For */ /* chiuso il ciclo for inizia la stampa dei risultati*/ printf("I numeri positivi inseriti sono = %d\n",contp); system ("PAUSE"); /* essa permette di mantenere aperta la finestra Dos */ } /*chiusura del programma principale main */

Prof. Massimo Simone e-mail: a042simone@hotmail.com sito Web: http://www.ascuoladi.eu

Perché scriviamo programmi Abbiamo un problema da risolvere Dobbiamo progettare una soluzione: progettiamo un algoritmo Vogliamo far eseguire tale algoritmo dal nostro elaboratore: scriviamo un programma

Linguaggi macchina, assembley e di alto livello Linguaggi macchina: lingua naturale di un particolare computer, esso consiste di sequenze di numeri (1 o 0) e dipende dalla macchina 0000111101 1111110001 0011001111 Linguaggi assembly: abbreviazioni simili all’inglese, per rappresentare le operazioni elementari del computer LOAD N ADD X Linguaggi ad alto livello: singole istruzioni contenenti notazioni matematiche utilizzate comunemente x = n + 2;

Linguaggio imperativo? Il linguaggio C Il C fu progettato ed implementato da Dennis Ritchie ed è un linguaggio imperativo ad alto livello, sviluppato nei laboratori della AT&T Bell Laboratories, adatto per lo sviluppo dei sistemi operativi. Benché implementato su un sistema operativo UNIX, questo linguaggio non fu scritto per un particolare sistema operativo ma può essere utilizzato sotto sistemi operativi diversi come UNIX, DOS/WINDOWS, OS, POWER PC, ecc Sistema operativo? Linguaggio imperativo?

Paradigmi di programmazione Esistono diversi approcci alla programmazione, chiamati paradigmi di programmazione: Programmazione imperativa: un programma specifica le azioni che devono essere eseguite in sequenza per calcolare i risultati a partire dai dati in ingresso. Programmazione orientata agli oggetti : un programma modella una realtà di interesse come una collezione di oggetti software che cooperano

imperativo Il linguaggio C Il C è un linguaggio di programmazione di tipo imperativo un programma è una lista di istruzioni che il calcolatore deve eseguire. Versione standard del C: ANSI/ISO 9899

Le librerie in C I programmi scritti in C consistono in moduli chiamati funzioni; esiste una ricca collezione di funzioni già esistenti chiamata libreria standard del C. Obiettivo riusabilità del software: approccio di costruzione a blocchi per creare programmi; inutile ricostruire funzioni già esistenti, ma riusare ciò che già esiste fondendolo con ciò che viene costruito ex-novo. Obiettivo efficienza: utilizzare le funzioni della libreria ANSI potrà migliorare l’efficienza del programma. Obiettivo portabilità: utilizzare le funzioni ANSI invece di scrivere le proprie versioni.

Il linguaggio C Il C è un tipico linguaggio di programmazione strutturata: scrittura di programmi chiari, dalla correttezza dimostrabile e semplici da modificare. Il linguaggio C permette di scrivere programmi molto compatti Il linguaggio C permette di accedere e gestire direttamente le risorse hardware dell’elaboratore (in maniera indipendente dall’architettura)

L’ambiente C Editor Disk Disk Disk Linker Disk Loader CPU Fase 1 Programma creato con l’editor Fase 1 Editor Disk Preprocessore Fase 2 Disk Il Preprocessore esegue il codice Compilatore Fase 3 Disk Compilatore crea il codice oggetto Linker Fase 4 Disk Collega il codice oggetto alle librerie Loader Memoria Primaria Fase 5 Carica in memoria il programma CPU Fase 6 Memoria Primaria Esegue una istruzione alla volta

Un semplice programma C /* Programma che stampa un saluto */ #include <stdio.h> main() { printf(“Hello World!\n”); }

Un semplice programma C /* Programma che stampa un saluto */ #include <stdio.h> main() { printf(“Hello World!\n”); } L’istruzione è chiamata “direttiva di compilazione” e serve ad includere informazioni relative a una libreria predefinita del C che contiene le funzioni di input/output.

Un semplice programma C /* Programma che stampa un saluto */ #include <stdio.h> #include <stdlib.h> main() { printf(“Hello World!\n”); /* si usa la funzione system ("PAUSE"); per bloccare aperta la finestra dos e quindi la libreria stdlib.h che la contiene */ system ("PAUSE"); } Anche l’istruzione stdlib.h è chiamata “direttiva di compilazione” e serve ad includere informazioni relative a una libreria predefinita del C che contiene in tal caso la funzione system( )

Un semplice programma C /* Programma che stampa un saluto */ #include <stdio.h> main() { printf(“Hello World!\n”); } La parola main( ) identifica il programma principale e rappresenta il punto di ingresso del programma all’inizio della sua esecuzione

Un semplice programma C /* Programma che stampa un saluto */ #include <stdio.h> main() { printf(“Hello World!\n”); } Si possono specificare commenti racchiudendoli tra i simboli /* e */ Ogni istruzione è conclusa dal simbolo punto e virgola << ; >> Le parentesi graffe delimitano un blocco

Un semplice programma C /* Programma che stampa un saluto */ #include <stdio.h> main() { printf(“Hello World!\n”); } Per la stampa su video printf e tra doppi apici la stringa costante Esistono sequenze nelle stringhe che indicano caratteri speciali: per esempio \n indica il carattere di new line che quando viene incontrato sposta il carattere successivo alla riga seguente

Caratteri speciali Tipo di opzione Descrizione \n Ritorno a capo \t   Tipo di opzione Descrizione \n Ritorno a capo \t Tabulazione orizzontale \b Tabulazione verticale \a Torna indietro di uno spazio \f Salto pagina  

Variabili in C /* Programma per il calcolo del fattoriale */ #include <stdio.h> main() { int n,fat; printf(“Calcolo del fattoriale di:”); scanf(“%d”,&n); fat = 1; Una variabile viene dichiarata scrivendo il tipo seguito dal nome della variabile. Una variabile può essere inizializzata all’atto della sua dichiarazione (int a=1).

Tipi di dato elementari Tipi di dichiarazione Rappresentazione Char Carattere (es. 'à) Int Numero intero (es. 3) Short Numero intero corto Long Numero intero lungo Float Numero reale "corto" (es 14.4) Double Numero reale "lungo" In C non esiste il tipo boolean: Si usa la convenzione che lo zero rappresenta il valore falso e l’uno il valore vero (tutti i valori diversi da zero rappresentano il vero)

Input/Output /* Programma per il calcolo del fattoriale */ #include <stdio.h> main() { int n,fat; printf(“Calcolo del fattoriale di:”); scanf(“%d”,&n); fat = 1; La lettura e la stampa di variabili richiede spesso la specifica del loro formato: le istruzioni printf, scanf hanno in genere più argomenti.

Argomenti di printf e scanf printf ( "<stringa>" , <elenco argomenti> ); scanf ( "<stringa>" , <elenco argomenti> );

Input/Output La lettura e la stampa di variabili richiede spesso la specifica del loro formato: le istruzioni printf, scanf hanno in genere più argomenti. /* Programma per il calcolo del fattoriale */ #include <stdio.h> main() { int n,fat; printf(“Calcolo del fattoriale di:”); scanf(“%d”,&n); fat = 1; ---- printf(“Risultato = %d\n”,fat);

Argomenti di printf e scanf Il primo è una stringa di caratteri (da stampare per la printf) nella quale ogni % indica il punto in cui vanno sostituiti, nell’ordine, gli argomenti che seguono; Il carattere che segue il simbolo % indica il tipo dell’argomento (d indica un valore intero); Gli altri argomenti specificano le variabili di input/output (quelle di input sono precedute dal simbolo speciale &).

scanf ( “ %d ” , &n ); printf ( “ Risultato = %d \n ” , fat ); Assegna alla variabile n l’argomento inserito Tipo di argomento da inserire Stampa nel punto indicato il valore contenuto dalla variabile fat Tipo di argomento da stampare printf ( “ Risultato = %d \n ” , fat );

Argomenti di printf e scanf Sintassi da utilizzare Descrizione %d Dati di tipo int %lf %l %f Dati di tipo double Dati di tipo long Dati di tipo float %c Dati di tipo char %s Dati di tipo stringhe

L’istruzione di assegnazione si indica con il simbolo = Assegnazione in C /* Programma per il calcolo del fattoriale */ #include <stdio.h> main() { int n,fat; printf(“Calcolo del fattoriale di:”); scanf(“%d”,&n); fat = 1; L’istruzione di assegnazione si indica con il simbolo =

Blocchi di istruzioni in C if (n1>n2) { max=n1; else max=n2; } Un’istruzione composta o blocco è quella delimitata da una coppia { }

Operatori ed espressioni in C Operazioni con gli int (interi) Descrizione delle operazioni * moltiplicazione 4*5=20. Moltiplica i numeri inseriti + addizione 2+10=12 Somma i numeri inseriti - sottrazione 3-2=1 Sottrae i numeri inseriti / divisione 5/4=1 Divide e il risultato è senza resto % divisione con modulo 10%7=3 Divide e come risultato abbiamo il resto

Operatori ed espressioni in C Operazioni con i double (reali) Descrizione delle operazioni * moltiplicazione 4.5*2.0=9.0 Moltiplica i numeri inseriti + addizione 2.0+10.2=12.2 Somma i numeri inseriti - sottrazione 3.0-2.1=0.9 Sottrae i numeri inseriti / divisione 3.0/2.0=1.5 Tipo di espressione Descrizione x++ Incremento della variabile x di 1 y-- Decremento della variabile y di 1 a+=b e a*=b a=a+b e a=a*b

Operatori ed espressioni in C Operatori relazionali Descrizione x == y Testa se il valore di x è uguale a y x > y Testa se x è maggiore di y x >= y Testa se x è maggiore uguale di y x < y Testa se x è minore di y x <= y Testa se x è minore uguale di y x != y Testa se x è diverso da y

Operatori ed espressioni in C Operatori logici Descrizione && AND || OR ! NOT Operatore condizionale Descrizione <op1>?<op2>:<op3> Vale <op2> se <op1> è vero altrimenti <op3> Es. (a>b)?a:b calcola il massimo tra a e b

Istruzioni di controllo condizionali Istruzione condizionale if if ( <espr> ) <istr1> else <istr2> Se <espr> è vera viene eseguito <istr1> altrimenti verrà eseguito <istr2> Es. if (a>b) printf(“il maggiore è %d”, a); else printf(“il maggiore è %d”, b);

Istruzioni di controllo condizionali Istruzione condizionale switch switch ( <espr> ) { case <costante1> : <istr1> [break;] case <costante2> : <istr2> [break;] …. default : <istr>; } Se <espr> vale <costante n> vera viene eseguito <istr n>; in tutti gli altri casi (caso di default) verrà eseguito <istr>. Per convenzione dopo l’istruzione che si vuole eseguire si usa il comando break per uscire dall’istruzione condizionale.

Istruzioni di controllo condizionali Es. Vogliamo impostare il numero di giorni n di cui è fatto ogni mese: switch ( mese ) { case 2: n=28; break; case 4 : case 6: case 9 : case 11: n=30; break; default : n=31; }

Istruzioni di controllo iterative Istruzione while while ( <espr> ) <istr> oppure do <istr> Fino a che <espr> è vera viene eseguito <istr>. Prima valuta espr e poi esegue istr Prima esegue istr poi valuta espr

Istruzioni di controllo iterative: while e Do While Es. Calcoliamo la somma di 10 numeri i=0; while ( i<=9) { scanf(“%d”,&num); som += num; i++; } do { while ( i<=9);

Istruzioni di controllo iterative Istruzione for for ( <espr_init>; <espr_test>; <espr_incr> ) <istr> corrisponde a: <espr_init> while ( <espr_test> ) { <espr_incr>; } Es. for ( i=n; i>1; i-- ) fat *= i;

Costanti simboliche in C #define <nome> <valore> Si definiscono facendo uso della direttiva define che va messa nell’intestazione del programma. Es. #define PIGRECO 3.14 #define N 100 #define TRUE 1 #define FALSE 0 main() { …. }

Esempio di programma C Lettura ed analisi del problema: deduzione dei dati di input Costruzione di un procedimento risolutivo: algoritmo Traduzione delle istruzioni dell’algoritmo in linguaggio C

Esempio di programma C Lettura ed analisi del problema: deduzione dei dati di input “Scrivere un programma C che calcoli le quattro operazioni sui numeri interi.” Input: a op b , in cui a e b sono due interi e op è una delle quattro operazioni [+,-,*,/] Oss. La divisione sui numeri interi emette anche il resto