Introduzione alla programmazione

Slides:



Advertisements
Presentazioni simili
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità F1 Primi programmi.
Advertisements

Introduzione al linguaggio C++
INFORMATICA Altre Istruzioni di I/O
LINGUAGGIO DI PROGRAMMAZIONE C
INFORMATICA Strutture condizionali
Modulo 4 – Seconda Parte Foglio Elettronico
Introduzione al linguaggio C
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità F2 Selezione.
Linguaggi algoritmici
Introduzione alla programmazione A. Ferrari. Il linguaggio C Nel 1972 Dennis Ritchie nei Bell Laboratories progettò il linguaggio C Il linguaggio possiede.
I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI
Algoritmi e Programmazione
Informatica Generale Marzia Buscemi
Informatica Generale Susanna Pelagatti
5. Codifica degli algoritmi in un linguaggio di alto livello
Programmazione Procedurale in Linguaggio C++
1 Istruzioni, algoritmi, linguaggi. 2 Algoritmo per il calcolo delle radici reali di unequazione di 2 o grado Data lequazione ax 2 +bx+c=0, quali sono.
FUNZIONI DI BIBLIOTECA
Caratteri e stringhe di caratteri
Algoritmi Politecnico di Milano
Algebra di Boole ed elementi di logica
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – Ver. aggiornata al 3 Ottobre 2013.
Informatica 2. Concetti fondamentali di programmazione Programmare vuol dire scrivere un algoritmo in un linguaggio che faccia funzionare un calcolatore.
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 ll
Introduzione alla programmazione lll
DAL PROBLEMA ALL'ALGORITMO Problemi e Programmi Paolo Amico
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 in C -- Flow Chart --
Introduzione alla programmazione con linguaggi di alto livello -- Introduzione al C -- Vito Perrone.
Dichiarazioni e tipi predefiniti nel linguaggio C
Fondamenti di Informatica Algoritmi
I File.
Il Linguaggio C.
Espressioni condizionali
Elementi di Informatica
Dall’algoritmo al programma.
PROGRAMMAZIONE: linguaggi
CODIFICA Da flow-chart a C++.
Lezione 6 Strutture di controllo Il condizionale
In molti casi è utile assegnare a degli identificatori dei valori che restino costanti durante tutto il programma e che non possano essere cambiati nemmeno.
INFORMATICA MATTEO CRISTANI. INDICE CICLO DELLE LEZIONI LEZ. 1 INTRODUZIONE AL CORSO LEZ. 2 I CALCOLATORI ELETTRONICI LEZ. 3 ELEMENTI DI TEORIA DELL INFORMAZIONE.
Massimo Comun Divisore
Lo sviluppo del software e i linguaggi di programmazione
CONCETTI DI BASE 1.0 FONDAMENTI 1.1 HARDWARE 1.2 SOFTWARE 1.3 RETI
BIOINFO3 - Lezione 201 Come in ogni corso di introduzione ad un linguaggio di programmazione, proviamo a scrivere lormai celebre primo programma di prova.
BIOINFO3 - Lezione 211 INPUT La lettura di un input dallo standard input (tastiera) si effettua utilizzando lespressione. Quando il programma incontra.
ECDL Patente europea del computer
Congiunzione Disgiunzione Negazione Natalia Visalli.
Algebra di Boole.
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
Corso di Algoritmi e Strutture Dati APPUNTI SUL LINGUAGGIO C
Informatica Lezione 5 Scienze e tecniche psicologiche dello sviluppo e dell'educazione (laurea triennale) Anno accademico:
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 ( )
Algoritmi e basi del C Struttura di un programma
Ancora sulla shell. Shell e comandi La shell e' un programma che interpreta i comandi dell'utente. I comandi possono essere dati da terminale, oppure.
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 
Algoritmi e Programmazione (in C) Stefano Cagnoni e Monica Mordonini
Informatica e Informatica di Base
Problemi, algoritmi e programmazione
ALGORITMI Dal problema al programma Definizione di algoritmo
La logica degli enunciati interamente realizzata da GIANNUZZI SILVIA
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – Ver. aggiornata al 24 Agosto 2015.
Istruzioni e algoritmi. Istruzioni Operative I passi elementari che compongono l’algoritmo sono le istruzioni. Distinguiamo: Istruzioni di input Istruzioni.
Transcript della presentazione:

Introduzione alla programmazione

Scrivere programmi Per risolvere un problema, occorre specificare un algoritmo Un algoritmo può essere scritto in diversi linguaggi, compreso il linguaggio naturale usato per la comunicazione tra persone Un algoritmo deve essere scritto in un linguaggio comprensibile all’esecutore Se vogliamo che sia il computer ad eseguire un algoritmo, esso deve essere scritto in un linguaggio di programmazione Un algoritmo scritto in un linguaggio di programmazione si chiama programma

Scelta di un opportuno linguaggio di programmazione Nello scrivere un programma, incontriamo esigenze contrastanti: usare un linguaggio facilmente comprensibile dal calcolatore, quindi dettagliato e preciso usare un linguaggio facilmente comprensibile dal programmatore, quindi sintetico, simile al linguaggio naturale

La scelta del calcolatore: 0100 00000000 0010 00100000 0001 00000000 0010 00100001 0000 00100000 1100 00001101 0110 00100001 0010 00100001 0011 00000001 1000 00000100 0000 00100001 0101 00000000 1111 00000000

La scelta del programmatore: Se il numero più piccolo dei due divide esattamente (cioè con resto 0) il più grande allora stop, quello è il MCD. altrimenti, calcola il resto della divisione dei due numeri, e ripeti dal passo 2 usando come numeri il resto ed il minore dei numeri di partenza

I linguaggi di programmazione ad alto livello Sono linguaggi che cercano un compromesso tra i due estremi Ogni calcolatore è caratterizzato da un linguaggio di programmazione di basso livello o linguaggio macchina, il cui testo è una sequenza di bit (0 e 1) che il calcolatore interpreta, eseguendo una sequenza di azioni I linguaggi di programmazione ad alto livello sono più vicini al linguaggio umano scritto e quindi facilitano la descrizione di algoritmi da parte dei programmatori Tali linguaggi hanno la proprietà di poter essere ricondotti, in maniera non ambigua, al linguaggio macchina. Questa riconducibilità è la base per la interpretazione o compilazione del linguaggio stesso

La macchina astratta C

Componenti della macchina C Un’ unità di memoria Un’unità di ingresso, Standard Input dalla quale leggo dati Un’unità di uscita, Standard Output sulla quale scrivo dati La memoria (e anche Standard Input e Standard Output) è divisa in celle elementari, contenenti ciascuna un dato Le celle di memoria sono i “contenitori” (le variabili) che avevamo introdotto parlando di algoritmi le chiamiamo “variabili” perchè il loro contenuto può cambiare durante l'esecuzione del programma

Variabili e identificatori I dati che posso mettere in una variabile (o che posso leggere/scrivere da/a Standard Input ed Output) possono essere di vari tipi: numeri caratteri stringhe (successioni finite di caratteri, immagazzinati in celle consecutive) Facciamo le seguenti semplificazioni / idealizzazioni per la macchina C: non c'è nessun limite al numero delle celle non c'è nessun limite al valore numerico contenuto Indichiamo le variabili (e facciamo loro riferimento) mediante dei “nomi”, o, meglio detto, mediante identificatori simbolici (x, a, alfa, pippo…come in figura)

Identificatori simbolici Un identificatore simbolico è una successione di lettere e cifre e segno con al primo posto una lettera per esempio: a, x, alfa, pippo, a1, xy23, Giuseppe, DopoDomani... non sono identificatori invece:2abc, 4x, 7 Le lettere maiuscole sono distinte dalle corrispondenti lettere minuscole Var1, var1 e VAR1 sono tre diversi identificatori Per evitare ambiguità non è possibile usare lo stesso identificatore per indicare diversi elementi né usare diversi identificatori per lo stesso elemento

Parole chiave Alcuni identificatori sono predefiniti e riservati, sono predefiniti perché sono associati a priori a qualche elemento del linguaggio sono riservati perché non possono essere usati dal programmatore con significati differenti da quello predefinito Esempi di identificatori riservati: scanf e printf: indicano operazioni elementari di ingresso/uscita e non possono essere impiegate in un programma C per indicare, per esempio, una variabile Parola chiave: parola predefinita del linguaggio di programmazione; anch’essa riservata non può fungere da normale identificatore Per facilitarne l’identificazione, le parole chiave saranno scritte in neretto

Struttura di un programma C Un programma C è fatto di una intestazione una sequenza di istruzioni (racchiusa tra parentesi graffe { }) Intestazione: identificatore predefinito main, seguito da parentesi rotonde () Istruzioni: i “comandi” che noi diamo al computer, scritti nel linguaggio C

Scheletro di programma C main() { ... }

Tipi di istruzioni in C Vogliamo poter mettere dei valori nelle variabili (nei “contenitori”) istruzione di assegnamento Vogliamo poter “comunicare” con il mondo esterno (chiedere all'utente di immettere dei valori, fargli vedere dei risultati) istruzioni di ingresso/uscita Vogliamo poter fare delle scelte su che cosa fare (quali passi eseguire) in base a certe condizioni(se ... allora ... altrimenti ...) istruzione condizionale Vogliamo poter ripetere delle operazioni (fino a che non si verfica una qualche condizione) istruzione iterativa

Istruzioni di assegnamento Assegna a una variabile il valore di un’espressione Consiste nel simbolo = preceduto dall’identificatore di una cella di memoria e seguito da un’espressione che definisce un valore, e terminato da un ';': identificatore = espressione; NB: Il simbolo di '=' indica l'assegnamento, non l'uguaglianza L’espressione può essere costituita da: valori costanti identificatori di variabili una loro combinazione ottenuta mediante i normali operatori aritmetici (+,-, *, /) e parentesi, come nelle consuete espressioni aritmetiche

Esempi di assegnamento x = 23; w = 'a'; y = z; r3 = (alfa*43–xgg)*(delta–32*ijj); x = x+1; Esecuzione di istruzione di assegnamento: valutazione dell’espressione memorizzazione del risultato nella variabile a sinistra di '='

Istruzioni di ingresso/uscita L’istruzione scanf permette all’utente di immettere un dato attraverso lo standard input scanf(x); Il valore immesso dall’utente viene inserito nella variabile x L’istruzione printf permette al calcolatore di inviare allo standard output (tipicamente: il monitor) il valore di una variabile o di un’espressione printf(x); Il valore della variabile x viene inviato allo standard output printf((x+y)/10); Il valore dell’espressione (x+y)/10 viene inviato allo standard output

scanf(a); scanf(b); printf(y); sì no r = 0? x  y y  r y è l’MCD a,b x  a y  b q  x/y r  x-q*y r = 0? sì no x  y y  r y è l’MCD printf(y);

Casi particolari di espressioni carattere: per evitare ambiguità con gli identificatori, i caratteri vengono racchiusi tra apici: printf('a'); le stringhe, similmente vengono racchiuse tra doppi apici: printf("alfa"); questa è un'abbreviazione per la sequenza printf('a'); printf('l'); printf('f'); printf('a');

Esempi di programma Un programma che stampa a video “Buongiorno a tutti”: main(){ printf(“Buongiorno a tutti”); } Un programma che legge da tastiera due numeri (che vengono memorizzati nelle variabili a e b), e ne stampa la somma a video: main(){ scanf(a); scanf(b); printf(a+b); }

Istruzioni semplici e complesse Le istruzioni di assegnamento e di ingresso/uscita eseguono un’operazione elementare Esistono istruzioni complesse la cui esecuzione consta del compimento di più operazioni in sequenza: le istruzioni condizionate e quelle iterative Istruzioni condizionali: controllo di condizione + eventuale esecuzione di istruzioni Istruzioni iterative: controllo di condizione + eventuale esecuzione ripetuta di istruzioni

Istruzioni condizionali Le istruzioni condizionali consentono di eseguire due diverse sequenze di istruzioni in alternativa, in base al verificarsi o meno di una condizione sequenza di istruzioni 1 sequenza di istruzioni 2 condizione? sì no

Istruzioni condizionali in C La parola chiave è if: if (condizione) { sequenza di istruzioni } Se la condizione è vera, la sequenza di istruzioni viene eseguita, altrimenti no. Altra parola chiave: else (altrimenti) else introduce le istruzioni che devono essere eseguite se la condizione è falsa

Esempio if(y > 100) { x = 2; y = y+1; } else { y = 150; } Il ramo else può essere assente; se il ramo else non c'è, se la condizione è falsa non viene eseguita la sequenza di istruzioni 1, e si va avanti con il resto del programma. Per brevità, se le sequenze sono fatte di una sola istruzione, le graffe si possono omettere y>100? x=2; y = y+1; y = 150; sì no (else)

Specifica delle condizioni in C Solitamente le condizioni riguardano il valore di certe variabili == uguaglianza (simbolo diverso da quello dell’assegnamento) < (minore), > (maggiore), <= (minore o uguale) , >= (maggiore o uguale), != (diverso) if (x==0) x = x+1; if (y > 100) { x = x*y; z = 4; }

Condizioni composte Una condizione può essere semplice, come gli esempi precedenti, oppure composta da diverse sottocondizioni, unite tra loro tramite operatori logici ! negazione (non), && congiunzione (e), || disgiunzione (oppure) !(x==4) x NON è uguale a 4 (x<10)&&(y>=100) x minore di 10 e y maggiore o uguale a 100 (y==1)||(z!=2) y è uguale a 1 o z è diverso da 2

Operatori logici Data una condizione C, !C ha il valore di verità opposto Date due condizioni C1 e C2, C1&&C2 è vera solo quando sia C1 sia C2 sono vere, ed è falsa in tutti gli altri casi Date due condizioni C1 e C2, C1||C2 è falsa solo quando sia C1 sia C2 sono false, ed è vera in tutti gli altri casi

Tabelle di verità C !C V F C1 C2 C1&&C2 V F C1 C2 C1||C2 V F operatore NOT C1 C2 C1||C2 V F operatore AND operatore OR

Precedenza tra gli operatori Data la condizione C1 && !C2 || C3, conoscendo i valori di verità di C1, C2, e C3, come si procede per il controllo? ! precede && && precede || Quindi le condizione composta equivale a (C1 && (!C2))||C3 Usare le parentesi aiuta a eliminare i dubbi e anche a modificare le precedenze !( (C4||C5) && C6 )

Esempi if semplice if (x==0)&&(y<10) x=y; x=x+1; if...else else I risultati che otteniamo sono diversi

If semplice (x==0)&&(y<10) sì no ? x=y x=x+1 if (x==0)&&(y<10)

If … else (x==0)&&(y<10) ? sì no (else) x=y x=x+1 if (x==0)&&(y<10) x=y; else x=x+1;

Uso delle parentesi graffe Le parentesi graffe { } delimitano un blocco di istruzioni: un insieme di istruzioni che vengono considerate come un’unica istruzione Il loro uso può modificare la sequenza di istruzioni eseguita in un’istruzione condizionale

Esempio if semplice con istruzioni semplici if (x==0)&&(y<10) x=y; x=x+1; if semplice con blocco di istruzioni if (x==0)&&(y<10) { x=x+1; }

If semplice (x==0)&&(y<10) sì no ? x=y x=x+1 if (x==0)&&(y<10)

If semplice con blocco di istruzioni (x==0)&&(y<10) ? sì no x=y; x=x+1; if (x==0)&&(y<10) { x=y; x=x+1; }

Esempio errato Il seguente esempio invece è scorretto, perché all’interno del blocco avremmo un else non associato ad alcun if if (x==0)&&(y<10) { x=y; else x=x+1; }

If innestati Le istruzioni che vengono eseguite all’interno di un costrutto if possono a loro volta essere istruzioni condizionali if (x==0)&&(y<10) if (x != y) x=x+1;

Nota sull’istruzione if…else if (C1) if (C2) S1; else S2; significa: if (C1) if (C2) S1; else S2; oppure else S2; ??? Convenzione: l’else viene attribuito all’ultimo if. Altrimenti, scriviamo esplicitamente: if (C1) {if (C2) S1;} else S2;

Istruzioni iterative in C La parola chiave è while: while (condizione) { sequenza di istruzioni }

Esecuzione dell’istruzione iterativa viene valutata la condizione se la condizione è falsa, non viene eseguito il corpo del ciclo (la sequenza di istruzioni), e si passa all’istruzione successiva al while altrimenti viene eseguito una volta il corpo del ciclo, quindi si ricomincia (viene valutata la condizione etc.) sequenza di istruzioni si no condizione?

While (x<0)? sì no x=x+1 x=y while (x<0) x=x+1; x=y;