SlideShare a Scribd company logo
1 of 20
Download to read offline
Abilità Informatiche
 Ingegneria Chimica

  Lezione 27/02/2012




Prof. Antonino Stelitano
Docente        Antonino Stelitano          antonino.stelitano@uniroma1.it
                                           stelitano.a@libero.it
Tutor          Da definire                 …

Lezioni        Lunedì                      14:00 – 17:30    aula 16
               Mercoledì                   15:45 – 19:00    aula 17


Ricevimento:   Per appuntamento


Sito web:      Sarà attivo al più presto
Lezioni ed esami

   Secondo ciclo
    dal 27 Febbraio 2012 a fine Maggio 2012

• Esami:
   due appelli
    Dal 10 Giugno al 15 Luglio 2012
   due appelli di recupero
     da definire previa verifica
Materiale didattico

• Harvey M. Deitel, Paul J. Deitel. C. Corso completo di
  programmazione. Apogeo, 2007 (4° edizione o precedenti)

• Materiale integrativo (dal sito web)
  Dispensa per l’uso del compilatore IDE DevC++

• Compilatori
   IDE Dev C++ (v. 5 beta) http://www.bloodshed.net
   lcc-win32 http://www.cs.virginia.edu/~lcc-win32/
• Altro materiale sarà messo a disposizione sul sito predisposto per
  il corso
C Corso completo di programmazione 4a edizione
DevCpp
Lcc-win32
Obiettivi




   •Imparare il concetto di algoritmo e programma

  •Imparare a risolvere problemi in modo algoritmico

    •Imparare a tradurre l’algoritmo in programma

  •Imparare a scrivere il programma in linguaggio C

        •Imparare alcuni algoritmi fondamentali

                •Teoria dell’immagine
Cosa è un calcolatore

• Un calcolatore è una macchina che esegue gli
  ordini dati
• Gli ordini sono espressi sotto forma di istruzioni
  in un linguaggio di programmazione
• Le istruzioni vengono sintetizzate in un
  programma
• Il programma permette l’elaborazione di dati in
  ingresso per produrre dei dati in uscita
Calcolatore

              • HAL 9000 è il nome del
              computer di bordo della nave
              spaziale del film 2001: Odissea
              nello spazio di Stanley Kubrick.

              • L'origine del nome pare che sia
              attribuibile ad un gioco di parole
              con il nome della IBM, nota
              azienda costruttrice di hardware.
              Infatti applicando il cifrario di
              Cesare con uno spostamento di
              una lettera alle tre lettere H-A-L
              risultano le lettere I-B-M.
Risoluzione di un problema

                       Problema


                    Algoritmo
       (sequenza ordinata di passi risolutivi)


                     Programma
 Dati in        (sequenza ordinata di
                      istruzioni)            Dati in
ingresso                                     uscita


  Il programma è la traduzione in un linguaggio di
    programmazione del procedimento risolutivo
              (ossia dell’algoritmo)
Definizione formale di algoritmo




   « Insieme di istruzioni elementari (univocamente
    interpretabili) che, eseguite in un ordine stabilito,
  permettono la soluzione di un problema in un numero
                      finito di passi »
Algoritmo


• In informatica, con il termine algoritmo si intende
  un metodo per la soluzione di un problema adatto a
  essere implementato sotto forma di programma.
• Un algoritmo si può definire come un procedimento
  che consente di ottenere un risultato atteso eseguendo,
  in un determinato ordine, un insieme di passi semplici
  corrispondenti ad azioni scelte solitamente da un
  insieme finito
Algoritmo (2)

• Il termine deriva dal nome del matematico persiano
  Muhammad ibn Mūsa'l-Khwārizmī, che si ritiene
  essere uno dei primi autori ad aver fatto riferimento
  esplicitamente a questo concetto, nel libro Kitāb al-
  djabr wa'l-muqābala (Libro sulla ricomposizione e sulla
  riduzione),
• Dallo stesso libro prende anche le origini la parola
  algebra.
• Tuttavia gli algoritmi erano presenti anche nelle
  antiche tradizioni matematiche, ad esempio la
  matematica babilonese, quella cinese o del Kerala
Algoritmo (3)


• Nel senso più ampio della parola, "algoritmo" è
  anche una ricetta di cucina, o la sezione del libretto
  delle istruzioni di una lavatrice che spiega come
  programmare un lavaggio.
• Di norma, comunque, la parola viene usata in
  contesti matematici (fin dalle origini) e soprattutto
  informatici (più recentemente).
• Un esempio più appropriato di algoritmo potrebbe
  essere, quindi, il procedimento per il calcolo del
  massimo comune divisore o del minimo comune
  multiplo.
Esempio di Algoritmo: l’MCD


• In matematica, il massimo comun divisore (M.C.D.) di due
  numeri interi, che non siano entrambi uguali a zero, è il
  numero naturale più grande per il quale possono entrambi
  essere divisi.
   Ad esempio:
      MCD(12, 18) = 6
      MCD(−4, 14) = 2
      MCD(5, 0) = 5

• Il calcolo dell’MCD si svolge con l’Algoritmo di Euclide
Algoritmo di Euclide in linguaggio naturale


• Obiettivo: calcolare MCD(a,b)
• Dati due numeri naturali a e b, si controlla se b è zero.
  Se lo è, a è il MCD.
  Se non lo è
      si divide a / b e si assegna ad r il resto della divisione
        (operazione indicata con "a modulo b" più sotto).
      Se r = 0 allora si può terminare affermando che b è il
        MCD cercato
      altrimenti occorre assegnare a = b e b = r e si ripete
        nuovamente la divisione.
Algoritmo di Euclide in linguaggio del calcolatore


function MCD(a, b)
  while a ≠ b
     if a > b a := a – b
     else b := b – a
return a
Esercizi
• Provate ad esprimere alcune attività quotidiane sotto forma
  di algoritmi in linguaggio naturale
   Ricercare l’oggetto x (biancheria, …) in un armadio di n
     cassetti
   Fare una lavatrice
   Usare un’automobile
   …
• Come implementereste una sorta di Cifrario di Cesare?
   Es: data una parola P in ingresso di n caratteri ottenere la
     parola C (cifrata) in uscita in cui ogni lettera sia spostata
     in avanti di x caratteri
Semplice Cifrario di cesare


• Ci sono ancora lettere da leggere in P?
   Leggo lettera l
   Sposto lettera in avanti di x: l1 = l + x
   Scrivo l1 in C
   Mi sposto alla lettera successiva di P
• Stampo C

More Related Content

What's hot

Lezione 21 (2 maggio 2012)
Lezione 21 (2 maggio 2012)Lezione 21 (2 maggio 2012)
Lezione 21 (2 maggio 2012)STELITANO
 
Soluzione esame b del 13 giugno 2012
Soluzione esame b del 13 giugno 2012Soluzione esame b del 13 giugno 2012
Soluzione esame b del 13 giugno 2012STELITANO
 
Espressività di linguaggi concorrenti linda like
Espressività di linguaggi concorrenti linda likeEspressività di linguaggi concorrenti linda like
Espressività di linguaggi concorrenti linda likePaolo Diomede
 
Puntatori e Riferimenti
Puntatori e RiferimentiPuntatori e Riferimenti
Puntatori e RiferimentiIlio Catallo
 
Lezioni di programmazione in c le stringhe By Cristian Randieri - www.intelli...
Lezioni di programmazione in c le stringhe By Cristian Randieri - www.intelli...Lezioni di programmazione in c le stringhe By Cristian Randieri - www.intelli...
Lezioni di programmazione in c le stringhe By Cristian Randieri - www.intelli...Cristian Randieri PhD
 
Presentazione corretta algoritmi
Presentazione corretta algoritmiPresentazione corretta algoritmi
Presentazione corretta algoritmimattuzzi
 
Vogliamo programmatori stupidi e pigri!
Vogliamo programmatori stupidi e pigri!Vogliamo programmatori stupidi e pigri!
Vogliamo programmatori stupidi e pigri!Marcello Missiroli
 
Algoritmi e Calcolo Parallelo 2012/2013 - Analisi degli Algoritmi
Algoritmi e Calcolo Parallelo 2012/2013 - Analisi degli AlgoritmiAlgoritmi e Calcolo Parallelo 2012/2013 - Analisi degli Algoritmi
Algoritmi e Calcolo Parallelo 2012/2013 - Analisi degli AlgoritmiPier Luca Lanzi
 
Gestione della memoria in C++
Gestione della memoria in C++Gestione della memoria in C++
Gestione della memoria in C++Ilio Catallo
 

What's hot (18)

Lezione 21 (2 maggio 2012)
Lezione 21 (2 maggio 2012)Lezione 21 (2 maggio 2012)
Lezione 21 (2 maggio 2012)
 
Soluzione esame b del 13 giugno 2012
Soluzione esame b del 13 giugno 2012Soluzione esame b del 13 giugno 2012
Soluzione esame b del 13 giugno 2012
 
Espressività di linguaggi concorrenti linda like
Espressività di linguaggi concorrenti linda likeEspressività di linguaggi concorrenti linda like
Espressività di linguaggi concorrenti linda like
 
Puntatori e Riferimenti
Puntatori e RiferimentiPuntatori e Riferimenti
Puntatori e Riferimenti
 
Lezioni di programmazione in c le stringhe By Cristian Randieri - www.intelli...
Lezioni di programmazione in c le stringhe By Cristian Randieri - www.intelli...Lezioni di programmazione in c le stringhe By Cristian Randieri - www.intelli...
Lezioni di programmazione in c le stringhe By Cristian Randieri - www.intelli...
 
Array in C++
Array in C++Array in C++
Array in C++
 
Presentazione corretta algoritmi
Presentazione corretta algoritmiPresentazione corretta algoritmi
Presentazione corretta algoritmi
 
Vogliamo programmatori stupidi e pigri!
Vogliamo programmatori stupidi e pigri!Vogliamo programmatori stupidi e pigri!
Vogliamo programmatori stupidi e pigri!
 
come costruire un algoritmo
come costruire un algoritmocome costruire un algoritmo
come costruire un algoritmo
 
Riepilogo Java C/C++
Riepilogo Java C/C++Riepilogo Java C/C++
Riepilogo Java C/C++
 
Pyscuola
PyscuolaPyscuola
Pyscuola
 
Video python3 n2
Video python3 n2Video python3 n2
Video python3 n2
 
Java Lezione 1
Java Lezione 1Java Lezione 1
Java Lezione 1
 
Crittografia
CrittografiaCrittografia
Crittografia
 
Flow chart
Flow chartFlow chart
Flow chart
 
I cicli in Python 3
I cicli in Python 3I cicli in Python 3
I cicli in Python 3
 
Algoritmi e Calcolo Parallelo 2012/2013 - Analisi degli Algoritmi
Algoritmi e Calcolo Parallelo 2012/2013 - Analisi degli AlgoritmiAlgoritmi e Calcolo Parallelo 2012/2013 - Analisi degli Algoritmi
Algoritmi e Calcolo Parallelo 2012/2013 - Analisi degli Algoritmi
 
Gestione della memoria in C++
Gestione della memoria in C++Gestione della memoria in C++
Gestione della memoria in C++
 

Viewers also liked

Viewers also liked (9)

06 3 struct
06 3 struct06 3 struct
06 3 struct
 
Creazione blog
Creazione blogCreazione blog
Creazione blog
 
03 2 arit_bin
03 2 arit_bin03 2 arit_bin
03 2 arit_bin
 
Risultati
RisultatiRisultati
Risultati
 
Puntatori C++
Puntatori C++Puntatori C++
Puntatori C++
 
02 algo programmi
02 algo programmi02 algo programmi
02 algo programmi
 
Scambio di variabili con le reference
Scambio di variabili con le referenceScambio di variabili con le reference
Scambio di variabili con le reference
 
05 2 integrali-conversioni-costanti-preproc-inclusione
05 2 integrali-conversioni-costanti-preproc-inclusione05 2 integrali-conversioni-costanti-preproc-inclusione
05 2 integrali-conversioni-costanti-preproc-inclusione
 
Guida C++
Guida C++Guida C++
Guida C++
 

Similar to Lezione 1 (27 febbraio 2012)

Similar to Lezione 1 (27 febbraio 2012) (20)

Lezione 3 (29 febbraio 2012)
Lezione 3 (29 febbraio 2012)Lezione 3 (29 febbraio 2012)
Lezione 3 (29 febbraio 2012)
 
Ecdl modulo 1 -Fondamenti
Ecdl modulo 1 -FondamentiEcdl modulo 1 -Fondamenti
Ecdl modulo 1 -Fondamenti
 
Lezione 2 (29 febbraio 2012)
Lezione 2 (29 febbraio 2012)Lezione 2 (29 febbraio 2012)
Lezione 2 (29 febbraio 2012)
 
Introduzione all’informatica
Introduzione all’informaticaIntroduzione all’informatica
Introduzione all’informatica
 
Algoritmi
Algoritmi Algoritmi
Algoritmi
 
Modulo 1 - Lezione 1
Modulo 1 - Lezione 1Modulo 1 - Lezione 1
Modulo 1 - Lezione 1
 
1 Programmazione
1   Programmazione1   Programmazione
1 Programmazione
 
Cosa sono gli algoritmi?
Cosa sono gli algoritmi?Cosa sono gli algoritmi?
Cosa sono gli algoritmi?
 
Algoritmi
AlgoritmiAlgoritmi
Algoritmi
 
Ruby in 25 minuti
Ruby in 25 minutiRuby in 25 minuti
Ruby in 25 minuti
 
Introduzione al’informatica
Introduzione al’informaticaIntroduzione al’informatica
Introduzione al’informatica
 
Introduzione al’informatica
Introduzione al’informaticaIntroduzione al’informatica
Introduzione al’informatica
 
Complessita computazionalee
Complessita computazionaleeComplessita computazionalee
Complessita computazionalee
 
Presentazione Oz - Mozart
Presentazione Oz - MozartPresentazione Oz - Mozart
Presentazione Oz - Mozart
 
1.01 Algoritmi
1.01 Algoritmi1.01 Algoritmi
1.01 Algoritmi
 
05 1 intro-struttura
05 1 intro-struttura05 1 intro-struttura
05 1 intro-struttura
 
La metodologia Top - Down - applicazione al C++
La metodologia Top - Down - applicazione al C++La metodologia Top - Down - applicazione al C++
La metodologia Top - Down - applicazione al C++
 
Coding class da scratch a python
Coding class  da scratch a pythonCoding class  da scratch a python
Coding class da scratch a python
 
Esercitazione 1 (27 febbraio 2012)
Esercitazione 1 (27 febbraio 2012)Esercitazione 1 (27 febbraio 2012)
Esercitazione 1 (27 febbraio 2012)
 
Thesis M. Redaelli Slides EN
Thesis M. Redaelli Slides ENThesis M. Redaelli Slides EN
Thesis M. Redaelli Slides EN
 

More from STELITANO

Soluzione esame a del 13 giugno 2012
Soluzione esame a del 13 giugno 2012Soluzione esame a del 13 giugno 2012
Soluzione esame a del 13 giugno 2012STELITANO
 
Dispenza aloisi
Dispenza aloisiDispenza aloisi
Dispenza aloisiSTELITANO
 
Lezione 23 (9 maggio 2012)
Lezione 23 (9 maggio 2012)Lezione 23 (9 maggio 2012)
Lezione 23 (9 maggio 2012)STELITANO
 
Lezione 22 (7 maggio 2012)
Lezione 22 (7 maggio 2012)Lezione 22 (7 maggio 2012)
Lezione 22 (7 maggio 2012)STELITANO
 
Lezione 20 (2 maggio 2012) seconda parte
Lezione 20 (2 maggio 2012) seconda parteLezione 20 (2 maggio 2012) seconda parte
Lezione 20 (2 maggio 2012) seconda parteSTELITANO
 
Lezione 20 (2 maggio 2012) prima parte
Lezione 20 (2 maggio 2012) prima parteLezione 20 (2 maggio 2012) prima parte
Lezione 20 (2 maggio 2012) prima parteSTELITANO
 
Lezione 19 (18 aprile 2012) ricerca
Lezione 19 (18 aprile 2012)   ricercaLezione 19 (18 aprile 2012)   ricerca
Lezione 19 (18 aprile 2012) ricercaSTELITANO
 
Lezione 18 (18 aprile 2012) ordinamenti
Lezione 18 (18 aprile 2012)   ordinamentiLezione 18 (18 aprile 2012)   ordinamenti
Lezione 18 (18 aprile 2012) ordinamentiSTELITANO
 
Lezione 15 (2 aprile 2012)
Lezione 15 (2 aprile 2012)Lezione 15 (2 aprile 2012)
Lezione 15 (2 aprile 2012)STELITANO
 
Lezione 14 (2 aprile 2012)
Lezione 14 (2 aprile 2012)Lezione 14 (2 aprile 2012)
Lezione 14 (2 aprile 2012)STELITANO
 
Lezione 13 (2 aprile 2012)
Lezione 13 (2 aprile 2012)Lezione 13 (2 aprile 2012)
Lezione 13 (2 aprile 2012)STELITANO
 
Lezione 16 (2 aprile 2012)
Lezione 16 (2 aprile 2012)Lezione 16 (2 aprile 2012)
Lezione 16 (2 aprile 2012)STELITANO
 
Lezione 13 (2 aprile 2012)
Lezione 13 (2 aprile 2012)Lezione 13 (2 aprile 2012)
Lezione 13 (2 aprile 2012)STELITANO
 
Lezione 12 (28 marzo 2012) puntatori vettori
Lezione 12 (28 marzo 2012) puntatori   vettoriLezione 12 (28 marzo 2012) puntatori   vettori
Lezione 12 (28 marzo 2012) puntatori vettoriSTELITANO
 
Lezione 12 (28 marzo 2012) funzioni memoria - puntatori
Lezione 12 (28 marzo 2012) funzioni   memoria - puntatoriLezione 12 (28 marzo 2012) funzioni   memoria - puntatori
Lezione 12 (28 marzo 2012) funzioni memoria - puntatoriSTELITANO
 
Lezione 12 (28 marzo 2012)
Lezione 12 (28 marzo 2012)Lezione 12 (28 marzo 2012)
Lezione 12 (28 marzo 2012)STELITANO
 
Soluzione esonero del 4 aprile 2012
Soluzione esonero del 4 aprile 2012Soluzione esonero del 4 aprile 2012
Soluzione esonero del 4 aprile 2012STELITANO
 
Lezione 12 (28 marzo 2012)
Lezione 12 (28 marzo 2012)Lezione 12 (28 marzo 2012)
Lezione 12 (28 marzo 2012)STELITANO
 
Lezione 11 (26 marzo 2012)
Lezione 11 (26 marzo 2012)Lezione 11 (26 marzo 2012)
Lezione 11 (26 marzo 2012)STELITANO
 
Eserc v del 26 marzo 2012
 Eserc v del 26 marzo 2012 Eserc v del 26 marzo 2012
Eserc v del 26 marzo 2012STELITANO
 

More from STELITANO (20)

Soluzione esame a del 13 giugno 2012
Soluzione esame a del 13 giugno 2012Soluzione esame a del 13 giugno 2012
Soluzione esame a del 13 giugno 2012
 
Dispenza aloisi
Dispenza aloisiDispenza aloisi
Dispenza aloisi
 
Lezione 23 (9 maggio 2012)
Lezione 23 (9 maggio 2012)Lezione 23 (9 maggio 2012)
Lezione 23 (9 maggio 2012)
 
Lezione 22 (7 maggio 2012)
Lezione 22 (7 maggio 2012)Lezione 22 (7 maggio 2012)
Lezione 22 (7 maggio 2012)
 
Lezione 20 (2 maggio 2012) seconda parte
Lezione 20 (2 maggio 2012) seconda parteLezione 20 (2 maggio 2012) seconda parte
Lezione 20 (2 maggio 2012) seconda parte
 
Lezione 20 (2 maggio 2012) prima parte
Lezione 20 (2 maggio 2012) prima parteLezione 20 (2 maggio 2012) prima parte
Lezione 20 (2 maggio 2012) prima parte
 
Lezione 19 (18 aprile 2012) ricerca
Lezione 19 (18 aprile 2012)   ricercaLezione 19 (18 aprile 2012)   ricerca
Lezione 19 (18 aprile 2012) ricerca
 
Lezione 18 (18 aprile 2012) ordinamenti
Lezione 18 (18 aprile 2012)   ordinamentiLezione 18 (18 aprile 2012)   ordinamenti
Lezione 18 (18 aprile 2012) ordinamenti
 
Lezione 15 (2 aprile 2012)
Lezione 15 (2 aprile 2012)Lezione 15 (2 aprile 2012)
Lezione 15 (2 aprile 2012)
 
Lezione 14 (2 aprile 2012)
Lezione 14 (2 aprile 2012)Lezione 14 (2 aprile 2012)
Lezione 14 (2 aprile 2012)
 
Lezione 13 (2 aprile 2012)
Lezione 13 (2 aprile 2012)Lezione 13 (2 aprile 2012)
Lezione 13 (2 aprile 2012)
 
Lezione 16 (2 aprile 2012)
Lezione 16 (2 aprile 2012)Lezione 16 (2 aprile 2012)
Lezione 16 (2 aprile 2012)
 
Lezione 13 (2 aprile 2012)
Lezione 13 (2 aprile 2012)Lezione 13 (2 aprile 2012)
Lezione 13 (2 aprile 2012)
 
Lezione 12 (28 marzo 2012) puntatori vettori
Lezione 12 (28 marzo 2012) puntatori   vettoriLezione 12 (28 marzo 2012) puntatori   vettori
Lezione 12 (28 marzo 2012) puntatori vettori
 
Lezione 12 (28 marzo 2012) funzioni memoria - puntatori
Lezione 12 (28 marzo 2012) funzioni   memoria - puntatoriLezione 12 (28 marzo 2012) funzioni   memoria - puntatori
Lezione 12 (28 marzo 2012) funzioni memoria - puntatori
 
Lezione 12 (28 marzo 2012)
Lezione 12 (28 marzo 2012)Lezione 12 (28 marzo 2012)
Lezione 12 (28 marzo 2012)
 
Soluzione esonero del 4 aprile 2012
Soluzione esonero del 4 aprile 2012Soluzione esonero del 4 aprile 2012
Soluzione esonero del 4 aprile 2012
 
Lezione 12 (28 marzo 2012)
Lezione 12 (28 marzo 2012)Lezione 12 (28 marzo 2012)
Lezione 12 (28 marzo 2012)
 
Lezione 11 (26 marzo 2012)
Lezione 11 (26 marzo 2012)Lezione 11 (26 marzo 2012)
Lezione 11 (26 marzo 2012)
 
Eserc v del 26 marzo 2012
 Eserc v del 26 marzo 2012 Eserc v del 26 marzo 2012
Eserc v del 26 marzo 2012
 

Lezione 1 (27 febbraio 2012)

  • 1. Abilità Informatiche Ingegneria Chimica Lezione 27/02/2012 Prof. Antonino Stelitano
  • 2. Docente Antonino Stelitano antonino.stelitano@uniroma1.it stelitano.a@libero.it Tutor Da definire … Lezioni Lunedì 14:00 – 17:30 aula 16 Mercoledì 15:45 – 19:00 aula 17 Ricevimento: Per appuntamento Sito web: Sarà attivo al più presto
  • 3. Lezioni ed esami  Secondo ciclo dal 27 Febbraio 2012 a fine Maggio 2012 • Esami:  due appelli Dal 10 Giugno al 15 Luglio 2012  due appelli di recupero  da definire previa verifica
  • 4. Materiale didattico • Harvey M. Deitel, Paul J. Deitel. C. Corso completo di programmazione. Apogeo, 2007 (4° edizione o precedenti) • Materiale integrativo (dal sito web) Dispensa per l’uso del compilatore IDE DevC++ • Compilatori IDE Dev C++ (v. 5 beta) http://www.bloodshed.net lcc-win32 http://www.cs.virginia.edu/~lcc-win32/ • Altro materiale sarà messo a disposizione sul sito predisposto per il corso
  • 5. C Corso completo di programmazione 4a edizione
  • 8. Obiettivi •Imparare il concetto di algoritmo e programma •Imparare a risolvere problemi in modo algoritmico •Imparare a tradurre l’algoritmo in programma •Imparare a scrivere il programma in linguaggio C •Imparare alcuni algoritmi fondamentali •Teoria dell’immagine
  • 9. Cosa è un calcolatore • Un calcolatore è una macchina che esegue gli ordini dati • Gli ordini sono espressi sotto forma di istruzioni in un linguaggio di programmazione • Le istruzioni vengono sintetizzate in un programma • Il programma permette l’elaborazione di dati in ingresso per produrre dei dati in uscita
  • 10. Calcolatore • HAL 9000 è il nome del computer di bordo della nave spaziale del film 2001: Odissea nello spazio di Stanley Kubrick. • L'origine del nome pare che sia attribuibile ad un gioco di parole con il nome della IBM, nota azienda costruttrice di hardware. Infatti applicando il cifrario di Cesare con uno spostamento di una lettera alle tre lettere H-A-L risultano le lettere I-B-M.
  • 11. Risoluzione di un problema Problema Algoritmo (sequenza ordinata di passi risolutivi) Programma Dati in (sequenza ordinata di istruzioni) Dati in ingresso uscita Il programma è la traduzione in un linguaggio di programmazione del procedimento risolutivo (ossia dell’algoritmo)
  • 12. Definizione formale di algoritmo « Insieme di istruzioni elementari (univocamente interpretabili) che, eseguite in un ordine stabilito, permettono la soluzione di un problema in un numero finito di passi »
  • 13. Algoritmo • In informatica, con il termine algoritmo si intende un metodo per la soluzione di un problema adatto a essere implementato sotto forma di programma. • Un algoritmo si può definire come un procedimento che consente di ottenere un risultato atteso eseguendo, in un determinato ordine, un insieme di passi semplici corrispondenti ad azioni scelte solitamente da un insieme finito
  • 14. Algoritmo (2) • Il termine deriva dal nome del matematico persiano Muhammad ibn Mūsa'l-Khwārizmī, che si ritiene essere uno dei primi autori ad aver fatto riferimento esplicitamente a questo concetto, nel libro Kitāb al- djabr wa'l-muqābala (Libro sulla ricomposizione e sulla riduzione), • Dallo stesso libro prende anche le origini la parola algebra. • Tuttavia gli algoritmi erano presenti anche nelle antiche tradizioni matematiche, ad esempio la matematica babilonese, quella cinese o del Kerala
  • 15. Algoritmo (3) • Nel senso più ampio della parola, "algoritmo" è anche una ricetta di cucina, o la sezione del libretto delle istruzioni di una lavatrice che spiega come programmare un lavaggio. • Di norma, comunque, la parola viene usata in contesti matematici (fin dalle origini) e soprattutto informatici (più recentemente). • Un esempio più appropriato di algoritmo potrebbe essere, quindi, il procedimento per il calcolo del massimo comune divisore o del minimo comune multiplo.
  • 16. Esempio di Algoritmo: l’MCD • In matematica, il massimo comun divisore (M.C.D.) di due numeri interi, che non siano entrambi uguali a zero, è il numero naturale più grande per il quale possono entrambi essere divisi. Ad esempio: MCD(12, 18) = 6 MCD(−4, 14) = 2 MCD(5, 0) = 5 • Il calcolo dell’MCD si svolge con l’Algoritmo di Euclide
  • 17. Algoritmo di Euclide in linguaggio naturale • Obiettivo: calcolare MCD(a,b) • Dati due numeri naturali a e b, si controlla se b è zero. Se lo è, a è il MCD. Se non lo è si divide a / b e si assegna ad r il resto della divisione (operazione indicata con "a modulo b" più sotto). Se r = 0 allora si può terminare affermando che b è il MCD cercato altrimenti occorre assegnare a = b e b = r e si ripete nuovamente la divisione.
  • 18. Algoritmo di Euclide in linguaggio del calcolatore function MCD(a, b) while a ≠ b if a > b a := a – b else b := b – a return a
  • 19. Esercizi • Provate ad esprimere alcune attività quotidiane sotto forma di algoritmi in linguaggio naturale Ricercare l’oggetto x (biancheria, …) in un armadio di n cassetti Fare una lavatrice Usare un’automobile … • Come implementereste una sorta di Cifrario di Cesare? Es: data una parola P in ingresso di n caratteri ottenere la parola C (cifrata) in uscita in cui ogni lettera sia spostata in avanti di x caratteri
  • 20. Semplice Cifrario di cesare • Ci sono ancora lettere da leggere in P? Leggo lettera l Sposto lettera in avanti di x: l1 = l + x Scrivo l1 in C Mi sposto alla lettera successiva di P • Stampo C