Fondamenti di Informatica

Slides:



Advertisements
Presentazioni simili
INFORMATICA Altre Istruzioni di I/O
Advertisements

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 Laurea Triennale in Ingegneria Gestionale Corso di Fondamenti di informatica A. A A.Pinto Algoritmi di ricerca 1.
Process synchronization
Uso avanzato di C.
Esercizio Usate il ciclo repeat until (controllo post condizionale) per simulare il prodotto N x M con M somme di N. Esempio: 5 x 3 equivale a fare 5 +5.
Fondamenti di Informatica1 Gestione della memoria I sistemi di memoria possono essere suddivisi in: –memoria interna al processore –memoria principale.
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità F2 Selezione.
Iterazione A. Ferrari.
Stringhe di caratteri In linguaggio C.
Procedure e funzioni ricorsive
1 Informatica Generale Susanna Pelagatti Ricevimento: Mercoledì ore presso Dipartimento di Informatica, Via Buonarroti,
ESERCITAZIONE N. 5 ESERCIZIO N. 1 Autore: Biagio Brattoli S I Corso.
INFORMATICA Strutture iterative
Introduzione agli algoritmi. Definizione Sistema di regole e procedure di calcolo ben definite che portano alla soluzione di un problema con un numero.
PROGRAMMI DI RICERCA E ORDINAMENTO
Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2007/2008 Corso di Programmazione 1 a.a.2007/2008 Prof.ssa Chiara Petrioli Corso di Laurea.
Algoritmi Politecnico di Milano C Primi programmi Politecnico di Milano.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – Ver. aggiornata al 20 Marzo 2013.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – Ver. aggiornata al 9 Agosto 2013.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 2 – Info B Marco D. Santambrogio – Riccardo Cattaneo –
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.
IFTS2002 Acq. Dati Remoti: INFORMATICA
INTRODUZIONE ALLA PROGRAMMAZIONE STRUTTURATA
APPUNTI SUL LINGUAGGIO C
ITERAZIONE e RICORSIONE (eseguire uno stesso calcolo ripetutamente) ITERAZIONE: ripetere piu volte una sequenza di operazioni istruzioni: for, while, do.
Esercizi su alberi binari
Esercizio: Copiare un file in un nuovo file mediante le funzioni read e write.
Microsoft Word Nozioni Avanzate Corso di Introduzione allInformatica Esercitatore: Agostino Forestiero.
Strutture di controllo in C -- Flow Chart --
Esercizi C sui tipi definiti dall’utente
Politecnico di Milano Esercizi Preparazione alla prima prova intermedia.
Le liste dinamiche La ricorsione
Fondamenti di Informatica1 Ripetizioni di segmenti di codice Spesso è necessario ripetere più volte uno stesso segmento dell'algoritmo (e.g. I/O, elaborazioni.
Fondamenti di Informatica1 Software di base Tra il linguaggio macchina (basso livello) e i linguaggi evoluti (alto livello) esiste uno strato di software.
Fondamenti di Informatica1 Realizzazione software Due fasi: 1. Specifica dell'algoritmo 1.a Definizione dei dati 1.b Definizione della modalità della loro.
Fondamenti di Informatica
Calcolo del Massimo Comun Divisore
Programmazione di Calcolatori
Massimo Comun Divisore
Parte 5 Laboratorio di Informatica Dott.ssa Elisa Tiezzi
Laboratorio di Informatica1 Parte 4 Laboratorio di Informatica Dott.ssa Elisa Tiezzi Dott.ssa Elisa Mori.
Problema: come dividere due numeri
Esercizi su File.
Università degli Studi di BresciaA.A. 2012/2013 Fondamenti di Programmazione Docente: Alessandro SaettiA.A. 2012/2013 Università degli Studi di Brescia.
Università degli Studi di BresciaA.A. 2012/2013 Fondamenti di Programmazione Docente: Alessandro SaettiA.A. 2012/2013 Università degli Studi di Brescia.
1Piero Scotto - C14. Finalità del corso Programma Materiale Requisiti Spendibilità 2Piero Scotto - C14.
C14 #5 I cicli FOR e WHILE Piero Scotto - C14.
Conversione da base 10 a base X (Utilizzo della pila)
Corso di Programmazione in Java – Esercizio n° 001
11/10/2004Introduzione all'Informatica1 Che cose lInformatica Computer ScienceLInformatica (Computer Science) non è soltanto La scienza e la tecnologia.
09/10/01Introduzione all'Informatica1 Hardware e Software Il termine Hardware (HW) indica la struttura fisica del computer costituita dai componenti elettronici.
Definizione di un algoritmo
ALGORITMI Un algoritmo è un insieme di istruzioni: -ordinate -non ambigue -effettivamente computabili.
Ripetizione La vera potenza dei programmi per computer risiede nella capacità di ripetere lo stesso calcolo o sequenza di istruzioni più volte, ogni volta.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – Ver. aggiornata al 20 Ottobre 2014.
Rappresentazione degli algoritmi
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – Ver. aggiornata al 26 Marzo 2014.
Corso di Algoritmi e Strutture Dati APPUNTI SUL LINGUAGGIO C
Informatica B Allievi Elettrici - AA Fondamenti della programmazione in linguaggio C (II) Istruzioni e strutture di controllo.
Algoritmi e basi del C Struttura di un programma
Algoritmi e basi del C Struttura di un programma
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
Rappresentazione degli interi
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – Ver. aggiornata al 24 Agosto 2015.
Iterazioni con controllo in testa:
Dal PROBLEMA all’ALGORITMO
Transcript della presentazione:

Fondamenti di Informatica Esercitazioni su: Algoritmi Diagrammi di flusso Notazione lineare strutturata (pseudo-codice) Codifica in C (di problemi semplici) Ing.Tomarchio,Ing.Testa Fondamenti di Informatica

Fondamenti di Informatica Esercizio 1: Dati due numeri interi non negativi, calcolarne il prodotto (supponendo che l’esecutore non abbia a disposizione l’operatore di moltiplicazione) Dati di Input: M, N con M, N >= 0 Dati di Output: P (il prodotto tra M ed N) Note: bisogna effettuare delle somme successive, cioè sommare M a se stesso per N volte. Ing.Tomarchio,Ing.Testa Fondamenti di Informatica

Fondamenti di Informatica Esempio 1 Ing.Tomarchio,Ing.Testa Fondamenti di Informatica

Esempio 1: pseudocodice leggi M, N P = 0 WHILE (N <> 0) { P = P + M N = N – 1 } scrivi P Ing.Tomarchio,Ing.Testa Fondamenti di Informatica

Fondamenti di Informatica Esempio 1: codifica in C #include <stdio.h> main () { int M, N, P; printf(“Inserisci due valori interi positivi: ”); scanf(“%d%d”, &M,&N); P = 0; while (N != 0) { P = P + M; N = N – 1; } printf(“\n Il prodotto vale %d\n”,P); Ing.Tomarchio,Ing.Testa Fondamenti di Informatica

Fondamenti di Informatica Esercizio 2: Trovare quoziente e resto di una divisione intera per differenze successive (supponendo cioè di non disporre dell’operatore di divisione) Dati di Input: D, D1 (supponiamo D1>0) Dati di Output: Q, R (quoziente e resto) Ing.Tomarchio,Ing.Testa Fondamenti di Informatica

Fondamenti di Informatica Esempio 2 Ing.Tomarchio,Ing.Testa Fondamenti di Informatica

Esempio 2: pseudocodice leggi D, D1 R = D Q = 0 WHILE (R >= D1) { R = R – D1 Q = Q + 1 } scrivi Q, R Ing.Tomarchio,Ing.Testa Fondamenti di Informatica

Fondamenti di Informatica Esempio 2: codifica in C #include <stdio.h> main () { int D, D1, R, Q; printf(“Inserisci due valori interi positivi: ”); scanf(“%d%d”, &D, &D1); R = D; Q = 0; while (R >= D1) { R = R – D1; Q = Q + 1; } printf(“Quoziente = %d, Resto = %d \n”, Q, R); Ing.Tomarchio,Ing.Testa Fondamenti di Informatica

Fondamenti di Informatica Esercizio 3: Sommare i primi N numeri interi positivi e scrivere il risultato Dati di Input: N (con N >= 0) Dati di Output: S (somma dei primi N numeri) Ing.Tomarchio,Ing.Testa Fondamenti di Informatica

Fondamenti di Informatica Esempio 3 Ing.Tomarchio,Ing.Testa Fondamenti di Informatica

Esempio 3: pseudocodice leggi N I = 0 S = 0 DO { S = S + I I = I + 1 } WHILE (I <= N) scrivi S Ing.Tomarchio,Ing.Testa Fondamenti di Informatica

Fondamenti di Informatica Esempio 3: codifica in C #include <stdio.h> main () { int N, S, i; printf(“Somma dei primi N interi positivi\n\n”); printf(“Inserisci N: “); scanf(“%d”, &N); i = 0; S = 0; do { S = S + i; i++; } while (i <= N) printf(“La somma dei primi %d numeri e’ %d\n”, N, S); } Ing.Tomarchio,Ing.Testa Fondamenti di Informatica

Esempio 3: codifica in C (uso di for) #include <stdio.h> main () { int N, S, i; printf(“Somma dei primi N interi positivi\n\n”); printf(“Inserisci N: “); scanf(“%d”, &N); for(i = 1, S = 0; i <= N; i++) S = S + i; printf(“La somma dei primi %d numeri e’ %d\n”, N, S); } Ing.Tomarchio,Ing.Testa Fondamenti di Informatica

Esercizio 4: Leggere N numeri e scrivere la loro somma Dati di Input: N, ed N numeri Dati di Output: S (somma di questi N numeri) Ing.Tomarchio,Ing.Testa Fondamenti di Informatica

Fondamenti di Informatica Esempio 4 Ing.Tomarchio,Ing.Testa Fondamenti di Informatica

Esempio 4: pseudocodice leggi N I = 1 S = 0 WHILE (I <= N) { leggi NUM S = S + NUM I = I + 1 } scrivi S Ing.Tomarchio,Ing.Testa Fondamenti di Informatica

Esempio 4: codifica in C (uso del while) #include <stdio.h> main () { int N, S, i, num; printf(“Somma di N numeri interi\n\n”); printf(“Inserisci N: “); scanf(“%d”, &N); i = 1; S = 0; while (i <= N) { printf(“Inserisci il numero %d : “,i); scanf(“%d”, &num); S = S + num; i++; } printf(“La somma vale: %d”, S); Ing.Tomarchio,Ing.Testa Fondamenti di Informatica

Esempio 4: codifica in C (uso del for) #include <stdio.h> main () { int N, S, i, num; printf(“Somma di N numeri interi\n\n”); printf(“Inserisci N: “); scanf(“%d”, &N); for(i=1, S=0; i <= N; i++) { printf(“Inserisci il numero %d : “,i); scanf(“%d”, &num); S = S + num; } printf(“La somma vale: %d”, S); Ing.Tomarchio,Ing.Testa Fondamenti di Informatica

Fondamenti di Informatica Esercizio 5: Scrivere il valore massimo di una sequenza illimitata di interi positivi chiusa da uno zero Dati di Input: N1, N2, N3, ….., 0 Dati di Output: MAX (valore massimo dei precedenti numeri letti da input) Ing.Tomarchio,Ing.Testa Fondamenti di Informatica

Fondamenti di Informatica Esempio 5 Ing.Tomarchio,Ing.Testa Fondamenti di Informatica

Esempio 5: pseudocodice MAX = 0 DO { leggi N IF (N > MAX) MAX = N } WHILE (N <> 0) scrivi MAX Ing.Tomarchio,Ing.Testa Fondamenti di Informatica

Fondamenti di Informatica Esempio 5: codifica in C #include <stdio.h> main () { int N, MAX; MAX = 0; do { printf(“Inserisci un valore intero positivo (0 per finire)\n”); scanf(“%d”, &N); if (N > MAX) MAX = N; } while (N != 0); printf(“Il massimo dei valori inseriti e’: %d \n”,MAX); } Ing.Tomarchio,Ing.Testa Fondamenti di Informatica

Fondamenti di Informatica Esercizio 6: Dato un intero N>1, scrivere una sola volta tutti i suoi fattori primi (supponendo di avere a disposizione l’operatore di divisione intera) Dati di Input: N Dati di Output: elenco dei fattori primi di N Note: l’espressione Q = (Q / D) * D se verificata mi indica che D è un divisore di Q Ing.Tomarchio,Ing.Testa Fondamenti di Informatica

Fondamenti di Informatica Esempio 6 Ing.Tomarchio,Ing.Testa Fondamenti di Informatica

Esempio 6: pseudocodice leggi N Q = N GIA_SCRITTO = 0 D = 2 WHILE (Q <> 1) { WHILE (Q <> (Q/D) * D ) { D = D + 1 } IF (GIA_SCRITTO <> 1) { scrivi D GIA_SCRITTO = 1 Q = Q/D Ing.Tomarchio,Ing.Testa Fondamenti di Informatica

Fondamenti di Informatica Esempio 6: codifica in C #include <stdio.h> main () { int N, Q, D, GIA_SCRITTO; printf(“Inserisci un numero intero positivo \n”); do scanf(“%d”, &N); while (N<=0); Q = N; GIA_SCRITTO = 0; D = 2; while (Q > 1) { while (Q != (Q/D) * D ) { D = D + 1; } if (GIA_SCRITTO == 0) { printf(“divisore trovato %d \n”, D); GIA_SCRITTO = 1; Q = Q/D; Ing.Tomarchio,Ing.Testa Fondamenti di Informatica

Fondamenti di Informatica Esercizio 7: Gioco dei fiammiferi: Da un insieme di N fiammiferi, ciascun giocatore ne toglie a turno un numero qualunque che vada da 1 a K; perde chi toglie l’ultimo fiammifero Spieghiamo la strategia e risolviamo il problema per N=21 e K=5. Ipotesi di base: vi sono due giocatori, A e B; il giocatore che effettua la prima mossa è sempre il calcolatore (A). Strategia: Isolo 1 fiammifero, e divido i rimanenti in gruppi da 6; Prima mossa: tolgo i 2 fiammiferi rimasti; Mosse successive:tolgo un numero di fiammiferi pari al complemento a 6 di quelli tolti dall’avversario (sempre possibile per le ipotesi fatte) Ing.Tomarchio,Ing.Testa Fondamenti di Informatica

Esempio 7 DFD di alto livello Ing.Tomarchio,Ing.Testa Fondamenti di Informatica

Esempio 7: pseudocodice (di alto livello) scrivi le regole del gioco DO { scrivi “Comincio io!” A toglie due fiammiferi WHILE (ci sono ancora fiammiferi?) { scrivi “Quanti fiammiferi vuoi togliere?” leggi NB; B toglie NB fiammiferi A toglie (6-NB) fiammiferi } scrivi “Ho vinto! Vuoi giocare ancora?” leggi RISP } WHILE (RISP = “sì”) Ing.Tomarchio,Ing.Testa Fondamenti di Informatica