Sviluppo di programmi. E ora, finalmente. Si comincia! 1. Analizzare il problema. 2. Progettare una soluzione (1) E necessario capire:

Documenti analoghi
Corso di Fondamenti di Programmazione canale E-O. Sviluppo di programmi. 1. Analizzare il problema (2) 1. Analizzare il problema (1)

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

Corso di Fondamenti di Programmazione canale E-O ... Un esempio per iniziare. printf) Altri cenni su printf() Esercizi 8. (printf(

Introduzione alla programmazione

PROGRAMMAZIONE STRUTTURATA

Corso di Informatica. Problemi ed algoritmi. Ing Pasquale Rota

Programmazione strutturata

Algoritmi e soluzione di problemi

Matlab. Istruzioni condizionali, cicli for e cicli while.

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

Introduzione alla programmazione Algoritmi e diagrammi di flusso. Sviluppo del software

Rappresentazione con i diagrammi di flusso (Flow - chart)

LABORATORIO DI INFORMATICA

Appunti del corso di Informatica 1 (IN110 Fondamenti) 2 Algoritmi e diagrammi di flusso

Laboratorio di Programmazione Laurea in Bioinformatica

in termini informali: un algoritmo è una sequenza ordinata di operazioni che risolve un problema specifico

Algoritmi e basi del C Struttura di un programma

Programmazione a blocchi. Algobuild Prof. Sergio Roselli

Diagrammi a blocchi 1

Istruzioni condizionali di diramazione in Fortran 90

Diagramma a blocchi per la selezione, in un mazzo di chiavi, di quella che apre un lucchetto

Corso di Fondamenti di Programmazione canale E-O. Un esempio. Funzioni ricorsive. La ricorsione

Corso di Informatica di Base

INFORMATICA. Strutture iterative

Diagrammi a blocchi 1

LA METAFORA DELL UFFICIO

Strutture di Controllo

Il linguaggio di programmazione Python

Informatica/ Ing. Meccanica/ Prof. Verdicchio/ 14/02/2012 / Foglio delle domande / VERSIONE 1

LA METAFORA DELL UFFICIO

Formalismi per la descrizione di algoritmi

PROGRAMMAZIONE: Le strutture di controllo

Laboratorio Progettazione Web Il linguaggio PHP Le Istruzioni. Andrea Marchetti IIT-CNR AA 2014/2015

Come ragiona il computer. Problemi e algoritmi

Algoritmi e loro proprietà. Che cos è un algoritmo? Un esempio di algoritmo

RAPPRESENTAZIONE GLI ALGORITMI NOTAZIONE PER LA RAPPRESENTAZIONE DI UN ALGORITMO

ALGORITMI. Obiettivo: risolvere problemi mediante l uso di un elaboratore elettronico. Elaboratore elettronico

Diagrammi di flusso. Un metodo per rappresentare graficamente gli algoritmi. sotto programma. Input/ Output. Start. predicato Elaborazione Stop

Esercitazione 3. Espressioni booleane I comandi if-else e while

Dispensa di Informatica II.1

Istruzioni Condizionali

Tipo carattere. Campo di variabilità. Intervallo finito. Tipo. Dimensione (byte) char

MODULO 07. La soluzione dei problemi mediante gli algoritmi

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Laboratorio di Programmazione

Algoritmi e Programmi

3. Indicare cosa sta a significare la figura geometrica del rombo in un diagramma a blocchi

DISPENSE DI PROGRAMMAZIONE

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

Elaboratore Elettronico

Unità di apprendimento 6. Dal problema al programma

Algoritmi e basi del C

1 Esercizi in pseudocodice

Rappresentazione degli algoritmi

Problemi e algoritmi. Il che cosa ed il come. Il che cosa ed il come. Il che cosa e il come

Corso di Fondamenti di Informatica

Corso di Fondamenti di Informatica Classi di istruzioni 2

Programmazione Strutturata. Programmazione Strutturata. Istruzione composta { } Istruzioni strutturate in C

Compitino di Laboratorio di Informatica CdL in Matematica 13/11/2007 Teoria Compito A

LA METAFORA DELL UFFICIO LAVAGNA DI PROGRAMMA SPORTELLO UTENTE LAVAGNA DI LAVORO

Il computer. Il case e l'unità di elaborazione. Il computer, una macchina aggiornabile.

Laboratorio Progettazione Web Il linguaggio PHP Le Istruzioni. Andrea Marchetti IIT-CNR AA 2015/2016

Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati Termine algoritmo da:

Corso di Matematica per la Chimica. Dott.ssa Maria Carmela De Bonis a.a

Errori frequenti Cicli iterativi Array. Cicli e array. Laboratorio di Programmazione I. Corso di Laurea in Informatica A.A.

ALGORITMI E PROGRAMMAZIONE STRUTTURATA. Prof R. Bresolin a.s

Esercitazioni di Fondamenti Informatica - Modulo A 1

Algoritmi e diagrammi di flusso versione biennio

Fondamenti di Informatica

Laboratorio Progettazione Web Il linguaggio PHP Lezione 6. Andrea Marchetti IIT-CNR 2011/2012

Altrimenti, il M.C.D. di a e b è anche divisore di r (e.g. a=15,b=6,r=3 che è il M.C.D.)

<istruzione> ::= <istruzione-semplice> <istruzione> ::= <istruzione-di-controllo> <istruzione-semplice> ::= <espressione> ;

IL PRIMO PROGRAMMA IN C

Elaborazione dell informazione

Problemi, algoritmi, calcolatore

Unità Didattica 2 Linguaggio C. Espressioni, Operatori e Strutture linguistiche per il controllo del flusso

Concetti Introduttivi. Il Computer

Lezione 8. Soluzione di un problema Problema. Soluzione di un problema. Comprensione del Problema. Analisi. Introduzione agli algoritmi

1.1 Concetti base dell Informatica: Algoritmi

Algoritmi e basi del C

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

La codifica digitale

DAL PROBLEMA ALL'ALGORITMO AL PROGRAMMA SCRITTO IN Come. Scopo principale dell informatica è risolvere problemi con i calcolatori.

Università degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso

print((math.floor(1345/10)%10); print (Math.floor(1345/100)%10); Le funzioni in JavaScript

Politecnico di Torino Sede di Alessandria Corso di informatica Programmazione in c: introduzione. e mail: sito: users.iol.

= < < < < < Matematica 1

Indice. Prefazione. 3 Oggetti e Java 53

Sistemi Web per il turismo - lezione 3 -

2. Algoritmi e Programmi

Laboratorio di informatica Ingegneria Clinica. Esercitazione 2 10 Ottobre 2011

JavaScript Core Language. Prof. Francesco Accarino IIS Atiero Spinelli Sesto San Giovanni via leopardi 132

Le strutture di controllo

Università degli Studi di Verona. Algoritmie Diagrammidiflusso. Gennaio Sergio Marin Vargas. Dipartimento di Biotecnologie

Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro

Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe.

ISTRUZIONI ISTRUZIONI

Algoritmi e diagrammi di flusso

Efficienza: esempi. Fondamenti di Informatica. Ferdinando Cicalese. Nella lezione precedente. Pseudocodice per descrivere algoritmi

Transcript:

Sviluppo di programmi Per scrivere un programma C corretto bisogna: E ora, finalmente Si comincia! DD Cap. pp.4974 Analizzare il problema (input, output, casi estremali) 2. Progettare una soluzione (algoritmo) tramite pseudocodice o diagramma di flusso (a blocchi). Accertarsi della correttezza del progetto 4. Perseguire l efficienza. Scrivere il codice C (spezzando in blocchi ed usando i principi della buona programmazione ) 6. Accertarsi della correttezza dell esecuzione N.B. I primi 4 punti si eseguono senza il calcolatore!!! 1. Analizzare il problema E necessario capire: Quale sia l input Cosa deve essere fornito dall utente? In quale formato? Cosa è supposto essere noto? Quale sia l output Cosa ci si fa con i dati in input? Che problema dobbiamo risolvere? Cosa accade nei casi estremali Spesso i casi estremali vanno trattati a parte Esempio: soluz. di un equaz. di 1 grado ax+b=0 2. Progettare una soluzione (1) Pseudocodice p.0 Linguaggio informale che aiuta a sviluppare algoritmi; fornisce una sequenza di azioni: Sufficientemente ad alto livello da non entrare in dettagli implementativi Sufficientemente dettagliata da non generare ambiguità Esempio: ricetta della frittata (problema del livello di dettaglio) Ci aiuta a pensare prima di scrivere il programma, ma è facile da convertire in C Attenzione: l ordine delle operazioni è fondamentale!

Parentesi: flusso di controllo (1) Parentesi: flusso di controllo (2) che differenza c è tra questi due frammenti di pseudocodice? a= somma=a+b b= b= somma=a+b a= Quando eseguiamo un programma le sue istruzioni vengono eseguite sequenzialmente a partire dalla prima. Quindi a= somma=a+b!! b= b=!! somma=a+b a= a= b= s=a+b a b s 8 s=a+b b= a= a b s 2. Progettare una soluzione (2) Diagrammi di flusso p.1 Rappresentazione grafica disegnata usando simboli con significati speciali connessi tra loro da frecce, dette linee di flusso; fornisce una sequenza di azioni: Sufficientemente ad alto livello da non entrare in dettagli implementativi Sufficientemente dettagliata da non generare ambiguità Attenzione: l ordine delle operazioni è fondamentale! I diagrammi di flusso obbligano ad utilizzare la programmazione strutturata Programmazione strutturata p.1 Esecuzione sequenziale istruzioni eseguite una dopo l altra nell ordine Trasferimento di controllo l istruzione successiva da eseguire non è la successiva nella sequanza eccessivo uso > problemi Teorema di Bohm e Jacopini tutti i programmi si possono scrivere in termini di strutture di controllo struttura di sequenza (in C di default) struttura di selezione (if, if, e switch) struttura di iterazione (while, do while and for)

Il diagramma di flusso Ovale: inizio/fine (solo uscita/entrata) Rettangolo: simbolo di azione (una entrata ed una uscita) Rombo: simbolo di decisione (una entrata e due uscite) Esempio: calcolare la media di e Assegna ad x1 il valore Assegna ad x2 il valore Calcola il valore di (x1+x2)/2 Assegna tale valore a media Stampa il valore di media. Accertarsi della correttezza(1) Problema: Si leggano due interi a e b, e si risolva l equazione ax+b=0. Sia b!0. Corretto? Se a=0? Caso estremale da trattare a parte Introduciamo il concetto di selezione. Accertarsi della correttezza (2) Leggi a Leggi b Se (a=0) allora stampa: non esiste soluzione x=b/a stampa x Ora il progetto è corretto! N.B. l indentazione!!! Problema: Si legga un intero a, e si dica se esso è minore di 100. Un altro esempio Leggi a Se (a<100) allora stampa: valore <100 Se (a>100) allora stampa: valore >100 stampa: valore=100 Problema: Si legga un intero a, e si dica se esso è minore, maggiore o uguale a 100.

Esercizi (selezione) La selezione in C p. Pseudocodice e diagramma a blocchi per la soluzione dei seguenti problemi: Si legga un intero e si stampi 1 se questo è dispari, e 0 se è pari. Dati in input 2 interi, si scriva se il primo sia <, = o > del secondo. Si simuli il seguente gioco tra 2 giocatori: ogni giocatore sceglie un colore tra bianco, rosso, nero. Il bianco batte il rosso, il rosso batte il nero, il nero batte il bianco. In C la selezione tra diverse scelte si codifica tramite il comando if: Se il voto non è inferiore a 18 allora visualizza: Promosso si scrive in C: if (voto >=18) printf( promosso ); Se c è un alternativa si usa if : if (voto >=18) printf( promosso ); printf( bocciato ); Alternativamente: (voto >=18)?printf( promosso ):printf( bocciato ); e si parla di operatore condizionale. If nidificati I comandi if possono essere messi in cascata: if (voto>=27) printf( ottimo ); if (voto>=2) printf( discreto ); if (voto>=18) printf( sufficiente ); printf( insufficiente ); Attenzione all indentazione! Esempio Problema: Si leggano due interi a e b, e si risolva l equazione ax+b=0. Attenzione a tutte le possibilità ( sta volta b può essere 0): a!0: x=b/a a=0 ma b!0: non esistono sol. a=0 e b=0: infinite sol. Leggi a; Leggi b; se (a=0) allora se (b!0) allora stampa: non esiste soluzione stampa: infinite soluzioni x=b/a stampa x

Esercizi (selezione) Scrivere un frammento di codice C per ciascun esercizio dato precedentemente Esempio: caccia al tesoro Problema: dato un primo indovinello, trova i successivi finché non raggiungi il tesoro Non sappiamo quanti siano gli indovinelli, ma quando avremo trovato il tesoro sapremo che avremo finito Introduciamo il concetto di ciclo Esempio: somma dei primi interi E se ne dobbiamo sommare 0? Somma=0; cont=0; Finché cont non è 0 Somma=Somma+cont cont=cont+1 (Eseguite le istr. con cont=0) Stampa Somma 4. Perseguire l efficienza 1 + 2 + + 4 + + 6 + 7 + 8 + 9 + 10 = In generale: 1+2+ +n=(n+1)n/2. Leggi n Somma=(n+1)*n/2 Stampa n Correttezza ok. Efficienza?

Esempio: contare col pallottoliere Esempio: sommare col pallottoliere Un altro esempio di ciclo! cont=0 Finché ci sono palline a sx cont=cont+1 sposta una pallina da sx a dx (non ci sono più palline a sx) stampa cont Cicli concatenati Esercizi (cicli) Pseudocodice e diagramma di flusso: Si prenda in input un intero n e si dia in output il valore di n! Si prenda in input un intero n e si stampino in output i primi n interi all indietro (da n ad 1) Si calcoli la somma di 0 numeri interi inseriti dall utente Si prenda in input un intero n e si calcoli la somma di n numeri interi inseriti dall utente I cicli in C p.8 I cicli in C si possono codificare in diversi modi. Uno di essi è il comando while: Finché cont non supera 0 aggiungi cont a somma si esprime in C come: while (cont <=0) somma=somma+cont; In C le istruzioni multiple sono racchiuse tra {} Finché ci sono palline a sx cont=cont+1 sposta una pallina da sx a dx si esprime in C come: while (sx>0) { cont=cont+1; sx=sx1; dx=dx+1; }

Esercizi (cicli) Scrivere un frammento di codice C per ciascun esercizio dato precedentemente