Esercizio: dispari-pari

Documenti analoghi
Esercizio: numero primo

Individuazione di sottoproblemi

Problema: conteggio occorrenze

Problema: calcolare il massimo tra K numeri

Formalismi per la descrizione di algoritmi

Argomenti della lezione. Criteri di divisibilità fattorizzazione m.c.m. e M.C.D. frazioni ed espressioni

Sviluppo di programmi

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Reti di Calcolatori

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

Esercizi sugli Algoritmi numerici

ARITMETICA. Gli insiemi UNITA 1. Programma svolto di aritmetica e geometria classe 1 ^ D A.S

A lezione sono stati presentati i seguenti passi per risolvere un problema:

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

OPERAZIONI CON LE FRAZIONI

= < < < < < Matematica 1

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1

Ampliamento di N: le frazioni

Esercizio 1: Problema. Risoluzione Esercizi. Esercizio 1: Flow Chart

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

Richiami di aritmetica (1)

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Richiami di aritmetica

A1. Calcolo in Q. A1.1 Tabelline e potenze. A1.2 Scomposizione in fattori di numeri interi MCD e mcm

CURRICOLO DI MATEMATICA CLASSE PRIMA

PROGRAMMA A.S. 2014/2015

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

Parte Seconda. Prova di selezione culturale

RADICE È L OPERAZIONE INVERSA DELLA POTENZA RADICE: 6 RADICANDO: 36 RADICALE: INDICE: 2 ESEMPIO 36 E UN QUADRATO PERFETTO:

Creare una funzione float square(float x). La funzione deve restituire il quadrato del parametro x.

a.a Codice corso: 21012, HOMEWORKS

SCIENZE MATEMATICHE. Finalità educative Area scientifico-tecnologica

ESERCIZI DI PROGRAMMAZIONE DA SVOLGERE INDIVIDUALMENTE - parte 1 -

SCUOLA PRIMARIA MATEMATICA (Classe 1ª)

<HTML> <HEAD>Massimo di una sequenza di K numeri e stampa in ordine inverso </TITLE> </HEAD> <BODY>

PROGRAMMAZIONE DI MATEMATICA 2016/2017

Fondamenti di Informatica T-1 Modulo 2

Fondamenti di Informatica T-1 Modulo 2

REGOLA DELLA SEMPLIFICAZIONE DELLE AREE

L1 L2 L3 L4. Esercizio. Infatti, osserviamo che p non può essere un multiplo di 3 perché è primo. Pertanto, abbiamo solo due casi

Nucleo Fondante Competenze-Conoscenze-Abilità Contenuti Metodi Materiali - Strumenti Raccordi disciplinari

CURRICULO VERTICALE COMPETENZE IN AMBITO LOGICO MATEMATICO. SCUOLA secondaria di secondaria di primo grado

DECLINAZIONE COMPETENZE SCUOLA SECONDARIA DI PRIMO GRADO: MATEMATICA COMPETENZE CONOSCENZE ABILITA

Rappresentazione con i diagrammi di flusso (Flow - chart)

- Conoscere il concetto di insieme. - Sapere rappresentare un insieme. - Riconoscere insiemi uguali, inclusi, vuoti.

Esercitazione 5. Procedure e Funzioni Il comando condizionale: switch

6. Soluzione degli esercizi su: massimo comun divisore e minimo comune multiplo.

HOMEWORKS. in modo che il programma stampi N ripetizioni della stringa HelloWorld (su righe diverse), con N inserito dall utente.

Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro

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

Chi non risolve esercizi non impara la matematica.

Programma di matematica classe I sez. E a.s

1 Multipli di un numero

CORSO ZERO DI MATEMATICA

Programma di Matematica Classe 1^ C/L Anno scolastico 2014/2015

Laboratorio di Programmazione I Compitino (Vers. C)

MONOMI. Donatella Candelo 13/11/2004 1

PROGRAMMA DI SCIENZE E TECNOLOGIE APPLICATE 2015/2016 Classe 2ª Sez. C Tecnologico

ISTITUTO STATALE DI ISTRUZIONE SUPERIORE VITTORIO FOSSOMBRONI Via Sicilia, GROSSETO

Istruzioni Condizionali

Stage di preparazione olimpica - Lucca

Anno 1. Frazioni algebriche: definizione e operazioni fondamentali

RIPASSO DI MATEMATICA FRAZIONI

Università degli Studi di Cassino e del Lazio Meridionale Corso di Fondamenti di Informatica Algoritmi ed esecutori

Primo modulo: Aritmetica

PROGRAMMA DI MATEMATICA Anno scolastico

1 Multipli e sottomultipli. Divisibilità

ESERCIZI DI PROBLEM SOLVING E COMPOSIZIONE DEI DIAGRAMMI DI FLUSSO per le classi seconde

Esercitazione 3. Oggi sono stati effettuati semplici esercizi in C utilizzando le seguenti istruzioni: if...else, while, printf, scanf

Obiettivi di questa esercitazione

PREPARAZIONE ALLE GARE DI MATEMATICA - CORSO BASE

Fondamenti di Informatica T-1 Modulo 2

Scuola Secondaria di primo grado di Legnaro e Polverara CURRICOLO di MATEMATICA. CLASSE PRIMA Obiettivi di apprendimento disciplinari NUMERI

Fondamenti di Informatica T-1 Modulo 2

I quadrati sono 5. Esercizio pagina 198 numero 119 Calcola la misura del perimetro dell'area del trapezio in figura

Matematica. Disciplina

BREVE RIEPILOGO SULLE FRAZIONI

Obiettivi di questa esercitazione

Esercizi di programmazione in linguaggio C - Costrutto iterazione

VII GARA DI MATEMATICA CON LE TECNOLOGIE SELEZIONE 25 NOVEMBRE 2010 DURATA ORE 2:00

CURRICOLO DI ISTITUTO

Introduzione alla programmazione Esercizi risolti

Insiemistica. Capitolo 1. Prerequisiti. Obiettivi. Gli insiemi numerici di base Divisibilità e fattorizzazione nei numeri interi

ALGORITMI 1. GLI ALGORITMI 2. IL LINGUAGGIO DI PROGETTO

Precorso CLEF-CLEI, esercizi di preparazione al test finale con soluzioni

2) Stabilisci se ognuna delle seguenti affermazioni è vera ( V ) o falsa ( F )

DEFINIZIONE. L unità frazionaria 1n (con n 0) rappresenta una sola delle n parti uguali in cui è stato diviso l intero.

CURRICOLO DELLA SCUOLA SECONDARIA DI PRIMO GRADO DISCIPLINA: MATEMATICA CLASSE 1^

5 numeratore 7 denominatore

Introduzione a Visual Basic Lezione 1 Concetti base e istruzioni condizionali

LICEO SCIENTIFICO STATALE L. da VINCI Reggio Calabria. PROGRAMMA DI MATEMATICA svolto nella classe 1^ E Anno Scolastico 2013/2014

Laboratorio 1. 2) All interno della directory c:\temp\cognome\codici creare il file sorgente hello.c contenente il seguente codice:

Anno 1. M.C.D. e m.c.m. fra monomi

Richiami di aritmetica(2)

ESERCITAZIONE N.8. Il calcolatore ad orologio di Gauss. L aritmetica dell orologio di Gauss. Operazioni e calcoli in Z n

Strutture di iterazione

MATEMATICA CLASSE QUARTA

Gli insiemi e le relazioni. Elementi di logica

SCUOLA SECONDARIA DI PRIMO GRADO PROGETTAZIONE DI UNITA' DI APPRENDIMENTO DI MATEMATICA PER UNA CLASSE PRIMA

Parte 2. Ricorsione. [M.C.Escher Drawing hands, 1948] - AA. 2012/13 2.1

Anno 4 Superficie e volume dei solidi

Transcript:

Esercizio: dispari-pari Dato un numero, verificare se è pari o dispari e stampare il relativo messaggio N := N - 2 write "pari" read N N > 1 N = 0 write "dispari" read N while (N > 1) N := N 2 while if (N = 0) then else write pari write dispari if

Esercizio: dispari-pari (controllo input) Dato un numero stampare se è pari o dispari N := N - 2 read N N > 1 write "pari" N < 0 N := -N N = 0 write "dispari" read N if (N < 0) then N := -N if while (N > 1) N := N 2 while if (N = 0) then write pari else write dispari if

Esercizio: minimo di una sequenza di K numeri Si supponga di fornire in input ad un programma un numero K e K interi positivi. Il programma deve restituire il valore minimo tra quelli introdotti.

Esercizio: minimo di una sequenza di K numeri min := numero read numero K min := numero inseriti := 1 inseriti < K read numero numero < min inseriti := inseriti + 1 write min read K read numero min := numero inseriti := 1 while (inseriti < K) read numero if (numero < min) then min := numero if inseriti := inseriti + 1 while write min

Esercizio: minimo di una sequenza di K numeri (controllo input) min := numero read numero K K <= 0 min := numero inseriti := 1 inseriti < K read numero numero < min inseriti := inseriti + 1 write "K deve essere positivo!" write min read K if ( K <= 0) then write K deve essere positivo! else read numero min := numero inseriti := 1 while (inseriti < K) read numero if (numero < min) then min := numero if inseriti := inseriti + 1 while write min if

Esercizio: elevamento a potenza Data la base e l esponente calcolare l elevamento a potenza potenza:= 1 read B,E E > 0 write potenza potenza:= potenza * B E := E -1 potenza := 1 read B,E while (E > 0) potenza := potenza * B E := E - 1 while write potenza

Esercizio: elevamento a potenza (controllo input) Data la base e l esponente calcolare l elevamento a potenza read B,E E >= 0 potenza := 1 E > 0 potenza:= potenza * B E := E -1 write"esponente negativo!" write potenza read B,E if (E >= 0) then potenza := 1 while (E > 0) potenza := potenza * B E := E - 1 while write potenza else write esponente negativo! if

Esercizio: fattoriale Dato un numero calcolare il suo fattoriale fattoriale:= 1 read N N > 0 write fattoriale fattoriale:= fattoriale * N N:= N -1 fattoriale := 1 read N while (N > 0) fattoriale := fattoriale * N N := N - 1 while write fattoriale

Esercizio: fattoriale (controllo input) Dato un numero calcolare il suo fattoriale read N N >= 0 fattoriale:= 1 N > 0 fattoriale:= fattoriale * N N := N -1 write"numero negativo!" write fattoriale read N if (N >= 0) then fattoriale := 1 while (N > 0) fattoriale := fattoriale * N N := N - 1 while write fattoriale else write numero negativo! if

Esercizio: numero primo Dato un numero N scrivere un algoritmo che verifichi se N è un numero primo e stampi un relativo messaggio Il numero N è un numero primo se è divisibile solo per 1 e per N Quindi, per verificare se un numero N è primo è sufficiente provare a dividerlo per tutti gli interi minori di esso Se almeno uno di questi interi è un divisore di n allora n non è primo Altrimenti n è primo

primo := Esercizio: numero primo N divisibe per divisore divisore := divisore + 1 N divisore := 2 primo := divisore < N write "numero primo" primo = write "numero nonprimo" read N divisore := 2 primo := while (divisore < N) if (N divisibile per divisore) then primo := if divisore := divisore + 1 while if (primo = ) then write numero primo else write numero non primo if

primo := Esercizio: numero primo ottimizzazione I N divisibe per divisore divisore := divisore + 1 N divisore := 2 primo := divisore < N and primo = write "numero primo" primo = write "numero nonprimo" read N divisore := 2 primo := while (divisore < N and primo = ) if (N è divisibile per divisore) then primo := if divisore := divisore + 1 while if (primo = ) then write numero primo else write numero non primo if

primo := divisore := N Esercizio: numero primo ottimizzazione II N divisibe per divisore divisore := divisore + 1 N divisore := 2 primo := divisore < N write "numero primo" primo = write "numero nonprimo" read N divisore := 2 primo := while (divisore < N) if (N è divisibile per divisore) then primo := divisore := N if divisore := divisore + 1 while if (primo = ) then write numero primo else write numero non primo if

Esercizi Produrre un algoritmo che controlla la correttezza dell input Produrre un algoritmo più efficiente di quello di base (più efficiente vuol dire che compie meno operazioni)

Esercizio: divisibilità Dati un divido ed un divisore scrivere un algoritmo che verifichi la divisibilità read DD,DS DD := DD - DS DD >= DS DD = 0 write "divisibile" write "non divisibile" read DD,DS while (DD >= DS) DD := DD DS while if (DD = 0) then write divisibile else write non divisibile if

Esercizi Produrre un algoritmo che sia corretto per ogni tipologia di dati in ingresso Come risolvereste il problema del pari o dispari adesso?

Esercizio: triangoli Scrivere un algoritmo che, date le coordinate di tre punti corrispondenti ai vertici di un triangolo, riconosca se si tratta di un triangolo degenere o no, e nel caso di triangolo non degenere calcoli il suo perimetro A B C

Esercizio: triangoli soluzione preliminare leggi coordinate dei vertici A,B,C del triangolo triangolo degenere calcola la lunghezza dei lati calcola il perimetro del triangolo write "triangolo degenere" write perimetro

Esercizio: triangoli - raffinamento leggi coordinate dei vertici A,B,C del triangolo (A coincide con B) OR (B coincide con C) OR (C coincide con A) OR (A,B,C sono allineati) LAB := distanza(a,b) LBC := distanza(b,c) LCA := distanza(c,a) perimetro:=lab+lbc+lca write riangolo degenere" write perimetro

Esercizio: triangoli raffinamento ulteriore read AX,AY,BX,BY,CX,CY (AX=BX AND AY=BY) OR (BX=CX AND BY=CY) OR (CX=AX AND CY=AY) OR (A,B,C sono allineati) LAB := sqrt((ax-bx)*(ax-bx)+(ay-by)*(ay-by)) LBC := sqrt((bx-cx)*(bx-cx)+(by-cy)*(by-cy)) LCA := sqrt((cx-ax)*(cx-ax)+(cy-ay)*(cy-ay)) perimetro:=lab+lbc+lca write "triangolo degenere" write perimetro

Esercizio: triangoli Se i tre vertici sono allineati allora otteniamo due triangoli rettangoli i cui cateti sono nella stessa proporzione C A B (AY-BY):(AX-BX)=(AY-CY):(AX-CX)

Esercizi: triangoli In una proporzione il prodotto dei medi è uguale al prodotto degli estremi per cui i tre vertici sono allineati se è vera la condizione logica (AX-BX)*(AY-CY)=(AY-BY)*(AX-CX)

Esercizi: triangoli - soluzione read AX,AY,BX,BY,CX,CY (AX=BX AND AY=BY) OR (BX=CX AND BY=CY) OR (CX=AX AND CY=AY) OR (AX-BX)*(AY-CY)=(AY-BY)*(AX-CX) LAB := sqrt((ax-bx)*(ax-bx)+(ay-by)*(ay-by)) LBC := sqrt((bx-cx)*(bx-cx)+(by-cy)*(by-cy)) LCA := sqrt((cx-ax)*(cx-ax)+(cy-ay)*(cy-ay)) perimetro:=lab+lbc+lca write "triangolo degenere" write perimetro

Individuazione di sottoproblemi Quando il problema è complesso conviene partire con una individuazione di sottoproblemi Scriviamo un algoritmo contenente azioni o condizioni complesse per l esecutore che dettaglieremo e raffineremo in passaggi successivi per ottenere un algoritmo direttamente eseguibile Ognuno dei sottoproblemi potrà essere risolto da un algoritmo a parte che potremo riutilizzare, quando sarà necessario, nella soluzione di ulteriori problemi complessi.

Individuazione di sottoproblemi: vantaggi I dettagli delle diverse soluzioni sono descritti negli algoritmi dei sottoproblemi In generale, uno stesso sottoproblema deve essere risolto più volte nella soluzione di un problema principale Dagli algoritmi derivano programmi, quindi si possono raccogliere librerie di software da riutilizzare in nuovi programmi

Esercizio: frazioni Scrivere un algoritmo che verifichi se una frazione è apparente o propria Sapreste risolverlo senza un analisi del problema? Vi ricordate la FASE 1: Dare un nome al problema parto dall analisi del problema e la FASE 2: Scrivere la specifica funzionale? apparenti: numeratore multiplo di denominatore proprie: numeratore minore di denominatore

Esercizio: MCD Scrivere un algoritmo che calcoli il massimo comune divisore di due numeri Sapreste risolverlo senza un analisi del problema? Vi ricordate la FASE 1: Dare un nome al problema parto dall analisi del problema e la FASE 2: Scrivere la specifica funzionale? Il massimo comune divisore di due numeri è il più grande numero, minore o uguale del più piccolo dei due, che divide entrambi

Esercizio: anno bisestile Scrivere un algoritmo che verifichi se un anno è bisestile produco un messaggio Sapreste risolverlo senza un analisi del problema? Vi ricordate la FASE 1: Dare un nome al problema parto dall analisi del problema e la FASE 2: Scrivere la specifica funzionale? Un anno è bisestile (ha 366 giorni) se è divisibile per quattro (come il 1980) e non è divisibile per 100 (ad es. il 1900 non è bisestile). Fanno eccezione gli anni divisibili per 400, che sono bisestili (ad es. il 2000 è bisestile). Questa regola non si applica prima del 1582, anno di introduzione del calario gregoriano.

Esercizio: busta paga Scrivete un algoritmo che calcoli l importo della busta paga settimanale di un lavoratore sapo il numero di ore che ha lavorato durante una settimana e la retribuzione oraria L algoritmo deve segnalare l opportunità di far recuperare al lavoratore delle ore di lavoro se non è stato rispettato l accordo sindacale che prevede un minimo di 35 ore settimanali L algoritmo deve altresì tenere in conto le ore di straordinario che sono, come da contratto, retribuite il doppio di quelle normali

Esercizio: poligoni Scrivere un algoritmo che, date le coordinate di quattro punti corrispondenti ai vertici di un poligono irregolare, riconosca se si tratta di un quadrato o di un rettangolo e nel caso calcoli la sua area

Problema: calcolare il massimo tra K numeri Scrivere un algoritmo che fornisca in input ad un programma un numero K e K interi positivi. L algoritmo deve restituire il valore massimo tra quelli introdotti e stampare in ordine inverso i numeri inseriti. Sembra un problema già visto: Si supponga di fornire in input ad un programma un numero K e K interi positivi. Il programma deve restituire il valore minimo tra quelli introdotti. ma non lo è!! Infatti dobbiamo memorizzare tutti i valori inseriti per stampare il primo inserito per ultimo Ma quante variabili usiamo?