Esercizi Svolti di Programmazione
|
|
|
- Teodora Bartoli
- 9 anni fa
- Visualizzazioni
Transcript
1 Esercizi Svolti di Programmazione Walter Cazzola DICo - Dipartimento di Informatica e Comunicazione Università degli Studi di Milano [email protected] Introduzione Di seguito sono riportati alcuni esercizi svolti di programmazione, lo scopo è sia quello di darvi degli esercizi con soluzione, sia quello di farvi vedere cosa è necessario produrre per l esame. A lezione si è introdotto un processo di sviluppo del software composto di quattro passi: analisi del problema, specifica funzionale, outline dell algoritmo (contenitori dei dati e diagramma di flusso) e scrittura del programma. In questo foglio mi limiterò a riportare il diagramma di flusso ed il programma nel linguaggio LP, mentre per l esame dovrete produrre anche un analisi del problema e della soluzione proposta. Nota, siccome è stata presentata a lezione, includo anche il codice C della soluzione. Esercizio: Radici Calcolare le radici di un equazione di secondo grado.
2 Esercizi Svolti di Programmazione 2 Programma C. a, b, c, delta: int read(a); read(b); read(c); delta := b*b-4*a*c; if delta < 0 then write( Nessuna soluzione. ); else if delta = 0 then write( Radici coincidenti =,-b/(2*a)); else write( Radici distinte =, (-b+sqrt(delta))/(2*a), e, (-b-sqrt(delta))/(2*a)); #include <stdio.h> int main() { int a, b, c, delta; printf("a = "); scanf("%d", &a); printf("b = "); scanf("%d", &b); printf("c = "); scanf("%d", &c); delta = b*b-4*a*c; if (delta < 0) { printf("nessuna soluzione.\n"); } else { if (delta == 0) { printf("coincidenti = %lf\n", -b/(2*a)); } else { printf("radici distinte = %lf e %lf\n", (-b+sqrt((double)delta))/(2*a), (-b-sqrt((double)delta))/(2*a)); } } }
3 3 Walter Cazzola Esercizio: Ricerca del Minimo. Ricerca del minimo tra i K (1 K 50) numeri introdotti come input. K,i,min,x: int, read(k); i:=1; read(min); while i<=k do read(x); if x < min then min:=x; i :=i+1; write(min);
4 Esercizi Svolti di Programmazione 4 Esercizio: Conversioni Temperature Programma di conversione delle temperature date in input da gradi Celsius a gradi Fahrenheit (t F = 9 5 t C + 32). Il programma si ferma quando si introduce il numero zero. Alla fine stampiamo la somma delle temperature sia Celsius che Fahrenhait calcolate e la loro media. SC,SF,C,F: float, i: int; read(c); i:=0; SC:=C; SF:=0; while not(c=0) do F := 9/5*C+32; write(c, C =, F, F ); SC:= SC+C; SF:= SF+F; i:=i+1; read(c); write( Totale, SC, C =, SF, F ); write( Media, SC/i, C =, SF/i, F );
5 5 Walter Cazzola Esercizio: Moltiplicazione Calcolare la moltiplicazione di due numeri interi dati in input avendo a disposizione solo addizione e sottrazione. mul, a, b: int; read(a); read(b); write(a, x, b, = ); mul := 0; while b>0 do mul := mul + a; b := b - 1; write(mul);
6 Esercizi Svolti di Programmazione 6 Esercizio: Ordinamento di un Array Ordinare in ordine crescente e stampare un array di K interi con 1 K 50. Nota nel seguente diagramma sia la lettura che la scrittura di un array sono indicate in modo compatto con leggi A e scrivi A. A: array of int, K,i,j,l,min: int; read(k); i := 0; while i<k do read(a[i]); i := i+1; i := 0; while i<k do min := A[i]; l := i; j := i+1; while j<k do if A[j] < min then l:=j; min:=a[j]; j := j+1; A[l] := A[i]; A[i] := min; i := i +1; i := 0; while i<k do write(a[i]); i := i+1;
7 7 Walter Cazzola Esercizio: Agenda Telefonica. Implementare un agenda telefonica contenente esattamente 100 nominativi. Ogni nominativo è composto da: Nome, Cognome e numero di telefono. L agenda è ordinata lessicograficamente. Scrivere l algoritmo di ordinamento e l algoritmo per ritroe un numero dato il cognome ed il nome. Sono valide le stesse considerazioni fatte sul diagramma dell esercizio precedente. Diagramma di Flusso: Ordinamento Agenda Diagramma di Flusso: Ricerca in Agenda
8 Esercizi Svolti di Programmazione 8 const K=100; agenda: array 1..K of record nome: string; cognome: string; numero: int; end; i,j,l: int, tmp: record nome: string; cognome: string; numero: int; end; i := 0; while i<k do l:=i; j :=i+1; while j<k do if (agenda[j].cognome < agenda[l].cognome) or ((agenda[j].cognome = agenda[l].cognome) and (agenda[j].nome < agenda[l].nome)) then l:=j; j := j+1; tmp := agenda[l]; agenda[l] := agenda[i]; agenda[i] := tmp; i := i +1; elem: record nome: string; cognome: string; numero: int; end; min, max, med: int; read(elem.nome); read(elem.cognome); read(elem.numero); min := 1; max := K; med := (max-min)/2; while not ((elem.cognome=agenda[med].cognome) and (elem.nome=agenda[med].nome)) and not (med = min) do if (elem.cognome < agenda[med].cognome or ((elem.cognome=agenda[med].cognome) and (elem.nome < agenda[med].nome))) then max := med; else min := med; med := min + (max-min)/2; write(med);
9 9 Walter Cazzola Esercizio: Crittografia. Realizzare un sistema crittografico che translittera un testo secondo uno schema (carattere nel testo, carattere con cui sostituirlo) dato in input. Il testo da codificare sarà al più di 5000 caratteri. Nota: supponiamo l esistenza di una funzione ord() che passatogli un carattere restituisce la sua posizione nell alfabeto, es. ord( A ) ritorna 1 e ord( Z ) ritorna 26. const card_alfabeto = 26; schema : array 1..card_alfabeto of char; testo : array of char; i,n: int; i := 1; while i <= card_alfabeto do read(schema[i]); i := i+1; read(n); i := 1; while i <= n do read(testo[i]); testo[i] := schema[ord(testo[i])]; i := i +1; i := 1; while i <= n do write(testo[i]); i := i +1;
Esercizio. Pseudocodice
Esercizio 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:
Formalismi per la descrizione di algoritmi
Formalismi per la descrizione di algoritmi Per descrivere in passi di un algoritmo bisogna essere precisi e non ambigui Il linguaggio naturale degli esseri umani si presta a interpret non univoche Si usano
Informatica (A-K) 5. Algoritmi e pseudocodifica
Vettori e matrici #1 Informatica (A-K) 5. Algoritmi e pseudocodifica Corso di Laurea in Ingegneria Civile & Ambientale A.A. 2011-2012 2 Semestre Prof. Giovanni Pascoschi Le variabili definite come coppie
Fondamenti di Informatica 6. Algoritmi e pseudocodifica
Vettori e matrici #1 Fondamenti di Informatica 6. Algoritmi e pseudocodifica Corso di Laurea in Ingegneria Civile A.A. 2010-2011 1 Semestre Prof. Giovanni Pascoschi Le variabili definite come coppie
Fondamenti di Informatica
Vettori e matrici #1 Le variabili definite come coppie sono dette variabili scalari Fondamenti di Informatica 5. Algoritmi e pseudocodifica Una coppia è una variabile
Università degli Studi di Verona. Esercizi. Gennaio Sergio Marin Vargas. Dipartimento di Biotecnologie
Università degli Studi di Verona Dipartimento di Biotecnologie Laurea in Biotecnologie Corso di Informatica 2014/2015 Esercizi Gennaio 2015 - Sergio Marin Vargas Scrivere un programma Una volta che avete
Risoluzione di un problema
Algoritmi Risoluzione di un problema Descrizione di un problema! Individuazione di un ALGORITMO! Metodo risolutivo (progetto) Introduzione 2 Algoritmo Sequenza finita di mosse che risolve in un tempo finito
Cognome e Nome : Corso e Anno di Immatricolazione: Modalità di Laboratorio (Progetto/Prova) :
PROGRAMMAZIONE (Corsi B e C) Pre-appello di Gennaio 2004 (A.A. 2003/2004) PROGRAMMAZIONE (B e C) S. Straordinaria - Appello di Gennaio (A.A. 2002/2003) 22 Gennaio 2004 ore 11 Aula II di Facoltà (Durata:
Introduzione agli Algoritmi
Introduzione agli Algoritmi Informatica Sara Zuppiroli A.A. 2012-2013 Informatica () Introduzione agli Algoritmi A.A. 2012-2013 1 / 25 Risoluzione dei problemi Dalla descrizione del problema all individuazione
Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE. Francesco Tura. F. Tura
Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE Francesco Tura [email protected] 1 Lo strumento dell informatico: ELABORATORE ELETTRONICO [= calcolatore = computer] Macchina multifunzionale Macchina
Alcuni esercizi. 1. Valutazione in cortocircuito 2. If e if innestati 3. Switch 4. Cicli
Alcuni esercizi 1. Valutazione in cortocircuito 2. If e if innestati 3. Switch 4. Cicli Stampa di voti Esempio 1 (switch) Realizzare un programma che legge da input un voto (carattere tra A ed E ) e ne
Rappresentazione degli algoritmi
Rappresentazione degli algoritmi Universitá di Ferrara Ultima Modifica: 21 ottobre 2014 1 1 Diagramma di flusso Utilizzare il diagramma di flusso per rappresentare gli algoritmi che risolvono i seguenti
INFORMATICA. Strutture iterative
INFORMATICA Strutture iterative Strutture iterative Si dice ciclo (loop) una sequenza di istruzioni che deve essere ripetuta più volte consecutivamente. Si consideri ad esempio il calcolo del fattoriale
Nota: Si consideri il valore di pi greco.
ESERCIZIO 1 (Costrutti condizionali + Casting delle variabili) Realizzare un programma che, dato in ingresso un angolo specificato in gradi come un numero intero, fornisca la relativa conversione in radianti.
Scrittura formattata - printf
Esercizi su Input/Output con formato FormattedIO 1 Scrittura formattata - printf Funzione printf int printf ( , ) La funzione restituisce un valore intero uguale ai caratteri
Corso di Informatica 1 Esercitazione n. 4
Corso di Informatica 1 Esercitazione n. 4 Marco Liverani Esercizio n. 1 Letti in input due numeri interi n > 0 e k > 1 costruire un array A di n numeri interi casuali minori di 100 che non siano multipli
Fondamenti di Informatica T-1 Modulo 2
Fondamenti di Informatica T-1 Modulo 2 1 Obiettivi di questa esercitazione 1. Array 2 Esercizio 1 Creare un programma che legga da input un numero non noto a priori di interi (al più 10) terminati da 0.
Politecnico di Torino Sede di Alessandria Corso di informatica Programmazione in c: introduzione. e mail: sito: users.iol.
Politecnico di Torino Sede di Alessandria Corso di informatica Programmazione in c: introduzione prof. Lorenzo Porcelli e mail: [email protected] sito: users.iol.it/genna18 Risoluzione di un problema Dato
IL TEOREMA DI BOEHM-JACOPINI
IL TEOREMA DI BOEHM-JACOPINI Un qualunque algoritmo può essere descritto unicamente attraverso le tre strutture: Sequenza Diramazione Ciclo o iterazione Le tre strutture sono complete. Un qualunque linguaggio
Algoritmi, Strutture Dati e Programmi. UD 2.b: Programmazione in Pascal
Algoritmi, Strutture Dati e Programmi : Programmazione in Pascal Prof. Alberto Postiglione AA 2007-2008 Università degli Studi di Salerno Il Linguaggio di Programmazione Pascal Esistono molti linguaggi
Esercizi. Stringhe. Stringhe Ricerca binaria
Politecnico di Milano Esercizi Stringhe Stringhe Array di caratteri Funzioni: strcpy() strcmp() strlen() char stringaa[10], stringab[10]; strcpy(stringaa, stringab); Copia if (strcmp(stringaa, stringab)
Breve Manuale di Riferimento sulla Sintassi Linguaggi C++ e FORTRAN
Breve Manuale di Riferimento sulla Sintassi Linguaggi e versione aggiornata al 05/02/2004 Sommario Elementi di Base... 2 Dati, Tipi e Dichiarazioni... 2 Tipi di Dato di Base... 2 Tipi di Dato Strutturati...
I cicli. Iterazioni Calcolo della media Istruzioni break e continue
I cicli Iterazioni Calcolo della media Istruzioni break e continue Ciclo while p Vero A while() ; Falso Esegue una istruzione mentre una condizione è verificata Programmazione
Prova di Laboratorio del [ Corso A-B di Programmazione (A.A. 2004/05) Esempio: Media Modalità di consegna:
Prova di Laboratorio del 12.1.2005 [durata 90 min.] Corso A-B di Programmazione (A.A. 2004/05) 1. Leggere da tastiera un insieme di numeri interi ed inserirli in un vettore A 2. Calcolare tramite una funzione
Fasi di creazione di un programma
Fasi di creazione di un programma 1. Studio Preliminare 2. Analisi del Sistema 6. Manutenzione e Test 3. Progettazione 5. Implementazione 4. Sviluppo Sviluppo di programmi Per la costruzione di un programma
Un esempio per iniziare. Il controllo del programma in C. Altri cenni su printf() Esercizi (printf) printf( 8!=%d, fatt);
Un esempio per iniziare Il controllo del programma in C DD Cap.3 pp.91-130 /* calcolo di 8!*/ #include #define C 8 int main() int i=1; int fatt=1; while (i
Esercizi di programmazione in C
Esercizi di programmazione in C Esercizio 1 Scrivere un programma in linguaggio C che legga da tastiera una sequenza di lunghezza ignota a priori di numeri interi positivi. Il programma, a partire dal
ESERCIZIO: Analisi di un programma. Dato il seguente programma C:
: Analisi di un programma Dato il seguente programma C: #include #define D 4 float A(float V[], int k) {int i; float s=0.0; for(i=0;i
Rappresentazione degli algoritmi
Rappresentazione degli algoritmi Universitá di Ferrara Ultima Modifica: 21 ottobre 2014 1 1 Diagramma di flusso Utilizzare il diagramma di flusso per rappresentare gli algoritmi che risolvono i seguenti
Esercizi. Filtraggio
Politecnico di Milano Esercizi Preparazione alla prima prova intermedia Filtraggio L utente inserisce un array di numeri reali non negativi (un numero negativo indica la fine della fase di inserimento)
Lab 04 Istruzioni, cicli e array"
Fondamenti di Informatica e Laboratorio T-AB Ingegneria Elettronica e Telecomunicazioni e Ingegneria dell Automazione a.a. 2009/2010 Lab 04 Istruzioni, cicli e array" Lab04 1 Esercizio 1" Si scriva un
Informatica (CIV) Esercitazione su FORTRAN. Andrea Romanoni
Informatica (CIV) Esercitazione su FORTRAN Andrea Romanoni [email protected] Dipartimento di Elettronica, Informazione e Bioingegneria Politecnico di Milano 3 dicembre 2013 Esercizio istogrammi
Programmi in Assembly
Programmi in Assembly Prof. Alberto Borghese Dipartimento di Scienze dell Informazione [email protected] Università degli Studi di Milano 1/23 Esempio Numeri positivi # Programma che copia tramite
