Free YouTube Transcribe

Video transcript

Lezione 1 Fondamenti di Informatica

Unicas - Ingegneria · 10,524 words · 48 min read

Want to search this transcript, jump the video from any line, or download it as TXT, SRT, or VTT?

Open in the transcript tool

Full transcript

0:03Cominciamo questo corso di Fondamenti di

0:05informatica Io mi chiamo C De Stefano e

0:08sarò il vostro docente in questo

0:11semestre come vedete quest'anno

0:14registreremo il il corso così l'avrete

0:17disponibile su su iTunes Quindi vi

0:20chiedo la cortesia di non fare molto

0:22rumore altrimenti è difficile sentire in

0:26maniera precisa l'audio allora

0:31cerchiamo di capire esattamente cosa

0:33faremo nell'ambito di questo corso e

0:36quali sono gli obiettivi che ci

0:40proponiamo di

0:42conseguire nell'ambito di questo di

0:46questo corso allora In generale quello

0:49che noi vorremmo ottenere in questo

0:51corso come obiettivi è lo studio delle

0:54strutture dati fondamentali e lo studio

0:59degli strumenti e metodi per lo sviluppo

1:01di programmi di tipo tecnico-scientifico

1:05su piccola media scala Allora cerchiamo

1:08di capire questi obiettivi perché sono

1:11così importanti nel in un corso di

1:14laurea di ingegneria industriale quale

1:16quello che voi state frequentando Allora

1:20innanzitutto ci tengo a dire che una

1:23delle attività proprio più

1:25specificamente ingegneristiche e quella

1:28legata alla modella

1:31voi nell'ambito di tutto il vostro corso

1:33di studi userete dei modelli a cosa ci

1:36servono questi modelli ci servono a dare

1:39una rappresentazione della realtà

1:42semplificata e sulla base di questa

1:45rappresentazione noi

1:47possiamo provare a simulare la la la

1:51realtà

1:52e a provare a gestire gli eventi che

1:57caratterizzano questa questa realtà e e

2:00provare appunto a definire delle

2:03soluzioni e a risolvere dei problemi in

2:06maniera più semplice rispetto a quello

2:09che accade nel mondo reale Questo non

2:11perché le nostre soluzioni debbano

2:13essere meno efficienti Ma perché per

2:16poter arrivare esattamente al punto

2:18Dobbiamo eliminare tutti quegli aspetti

2:20che non sono essenziali alla risoluzione

2:23dei problemi che vogliamo affrontare

2:25quindi semplificare e attraverso un

2:27modello semplificato proporre delle

2:30soluzioni oggi nell'ambito di queste

2:33attività si utilizzano tipicamente gli

2:35strumenti informatici ed è quelli che

2:37voi userete tipicamente nella vostra

2:40attività di ingegneri industriali quindi

2:44dobbiamo capire innanzitutto Come fare

2:46a

2:48rappresentare la realtà in un sistema

2:51informatico quindi dobbiamo creare

2:54quello che si chiama una corrispondenza

2:56tra mondo reale e mondo simulato e nel

3:00creare questa corrispondenza dovremo

3:03rappresentare in un sistema informatico

3:06quelli che sono gli elementi

3:08fondamentali del mondo reale e Quindi

3:12dovremo studiare Quali sono le strutture

3:15dati all'interno delle quali memorizzare

3:19queste informazioni Quindi quando si

3:21parla di modello e quindi si parla di

3:24rappresentare la realtà in un sistema di

3:27calcolo si tratta di individuare Quali

3:30sono le grandezze fondamentali che

3:32caratterizzano i problemi e

3:34rappresentarle opportunamente

3:36all'interno di questo sistema mediante

3:39le strutture dati che andremo a definire

3:43poi una volta che abbiamo creato questo

3:46modello Dobbiamo capire come interagire

3:49con questo modello quindi dobbiamo

3:51capire come definire delle soluzioni ai

3:55problemi che abbiamo rappresentato

3:56mediante questo modello e quindi

4:00definire delle soluzioni significa

4:03essenzialmente definire Quali sono le

4:05sequenze di azioni che dobbiamo compiere

4:08per arrivare alla soluzione di un

4:11problema queste azioni le definiremo

4:15mediante degli strumenti e dei

4:19metodi per rappresentare le soluzioni

4:24Sul modello che rappresenta la nostra

4:27realtà chiaramente qua po

4:30utilizzare tecniche molto diverse ora

4:33poiché voi non siete informatici e

4:36quindi lavorerete essenzialmente come

4:38utenti di questi strumenti

4:41progett quando il

4:44caso i vostri algoritmi specifici per

4:47risolvere alcuni problemi però il mio

4:50obiettivo non è fare di voi dei

4:52programmatori che devono lavorare su

4:55larga scala Ma fare di voi degli utenti

4:58intelligenti dei sistemi di calcolo che

5:01quindi proget che progetteranno le loro

5:03specifiche soluzioni Ecco perché abbiamo

5:07scelto come modello modello di programmi

5:11tecnico-scientifici su piccola media

5:14scala non non immagino che voi lavoriate

5:18un domani in un'azienda grande che

5:20sviluppa software per cui diventate

5:22programmatori per grossi sistemi di

5:25calcolo vi immagino come dei

5:27professionisti che lavorano nell'ambito

5:29di ingegneria industriale e che quando è

5:31il caso sviluppano i loro progetti le

5:34loro applicazioni ma con un taglio

5:37strettamente personale quindi ecco

5:39perché ci riferiamo su programmi su

5:42piccola e media scala chiaramente se

5:45facessi una progettazione su larga scala

5:47dovremmo utilizzare delle metodologie

5:50che vanno al di là degli scopi di di

5:53questo di questo

5:58corso allora che cosa faremo nell'ambito

6:01di questo corso allora vi darò

6:04Innanzitutto delle nozioni di carattere

6:07introduttivo per capire che cos'è questo

6:10strumento informatico e come interagire

6:13poi abbiamo detto studieremo i tipi e le

6:15strutture dati vale a dire il modo in

6:17cui memorizzeremo le informazioni in un

6:20sistema di calcolo Poi appunto strumenti

6:24e metodi per la progettazione di

6:26programmi quando dico strumenti e metodi

6:28dovremmo capire In che modo Creiamo un

6:32modello per rappresentare la realtà

6:34all'interno del nostro sistema di

6:37calcolo e quali strumenti abbiamo per

6:39sviluppare dei programmi in questo

6:42ambito

6:44ovviamente scrivere un programma

6:47significa vedremo tra un attimo

6:49individuare Qual è la sequenza corretta

6:52di azioni che devono essere svolte per

6:54risolvere un problema quando si parla di

6:57sequenza di azioni si parla ente di

7:02individuare attraverso un linguaggio

7:05Quali sono le azioni Quali sono le

7:07azioni che devono essere eseguite e

7:10questo linguaggio deve essere

7:13opportunamente interpretato dal nostro

7:15esecutore quindi capiremo in primo luogo

7:18chi è l'esecutore e poi definito

7:21l'esecutore capiremo Qual è il

7:23linguaggio con il quale noi interagiamo

7:26con questo esecutore bene nell'ambito di

7:29questo corso utilizzeremo il linguaggio

7:32c+ Plus che è un linguaggio largamente

7:36utilizzato nel nelle applicazioni è

7:39basato sul linguaggio C che ormai da più

7:43di 30 anni è linguaggio di riferimento

7:46per tutte le applicazioni di tipo

7:49industriale e studieremo degli

7:52cosiddetti algoritmi fondamentali Qual è

7:56la mia idea Vi comincio a anticipare

7:58queste cose ma tutto quello che poi

8:00vedremo in

8:02itinere l'idea di utilizzare di darvi io

8:05degli algoritmi fondamentali nasce

8:07proprio dalla figura professionale che

8:10io vorrei tirar fuori da questo corso

8:12poiché voi non sarete dei programmatori

8:14quindi io non immagino che

8:17voi dobbiate sviluppare nuovi algoritmi

8:21e per risolvere i vostri problemi ma

8:24immagino Più che altro che voi come

8:26utenti utilizzerete eh blocchi di

8:30funzioni che qualcun altro ha scritto

8:32per voi Quindi la vostra abilità devee

8:35essere quella di capire come queste

8:38funzioni che qualcun altro ha già

8:40scritto possono essere opportunamente

8:42utilizzate per risolvere il vostro

8:45problema Quindi quando utilizzerete i

8:48tool che poi farete negli altri negli

8:50altri corsi nei corsi di automazione

8:53utilizzerete tipicamente matlab lì

8:55utilizzerete delle funzioni già belle e

8:58fatte per costruirvi la vostra

9:00applicazione

9:01quindi prenderete dei pezzi che qualcun

9:04altro ha già scritto e li metterete

9:07insieme così che so quando utilizzerete

9:10i tool per lo sviluppo di lo studio di

9:13strutture con meto gli elementi finiti o

9:16quel che sia utilizzerete comunque dei

9:19blocchetti che qualcun altro ha scritto

9:21per voi con un meccanismo che più o meno

9:23sempre lo stesso allora se noi ci

9:26abituiamo ad utilizzare gli algoritmi

9:28fond come mattoncini per costruire

9:32applicazioni più complesse saremo già

9:35pronti ad

9:36affrontare questo tipo di problematica è

9:39quello che farete per esempio quando

9:41utilizzerete dei dei PLC

9:46per diciamo interfacciarvi con

9:50apparecchiature che vengono messe

9:52tipicamente sulle linee di produzione

9:54Quindi queste cose le farete

9:56specificamente nei corsi di ingegneria

9:59industriale allora Dato che questo è

10:02l'unico momento nel quale abbiamo

10:04l'opportunità di esaminare Questi

10:06strumenti da un punto di vista teorico e

10:09capire come funzionano È

10:11importante che già utilizziamo questo

10:14approccio cioè quello che poi

10:16utilizzerete nell'ambito del degli altri

10:18corsi Quindi io vi darò degli algoritmi

10:21fondamentali come mattoncini e

10:25l'esperienza che faremo anche dal punto

10:27di vista esercitativa è costruire

10:29applicazioni più complesse utilizzando

10:32come mattoncini fondamentali questi

10:36algoritmi quindi ragazzi Questo è un

10:38corso molto applicativo noi faremo degli

10:41strumenti teorici Ma poi voi vi dovete

10:44vi dovrete misurare

10:46con un sistema di calcolo con un sistema

10:49di sviluppo dovrete fare delle

10:51applicazioni farli seguire e verificare

10:54che funzionino correttamente Quindi da

10:57una parte abbiamo tutti questi strumenti

10:59teorici Ma poi fondamentale è la parte

11:03applicativa sia perché mi serve proprio

11:06come livello di manualità di praticità

11:10che dovete acquisire a fine di questo

11:12corso perché è quello che mi chiedono il

11:15gli altri colleghi che lavorano nel

11:17corso di ingegneria industriale sia

11:21perché anche proprio ai Fi dell'esame

11:23l'esame è una prova una parte l'esame è

11:26una prova pratica dove voi vi siederete

11:29davanti al calcolatore dovrete

11:31sviluppare in maniera autonoma un

11:32algoritmo verificare che funzioni

11:34metterci de dati di inresso produrre dei

11:37risultati in uscita quindi tutto quello

11:39che faremo da un punto di vista teorico

11:42poi ce lo sperimenteremo piano piano

11:44nelle esercitazioni e io prevedo due

11:48tipi di

11:51esercitazioni esercitazioni guidate

11:53realizzazione di programmi sul

11:55calcolatore

11:56Quindi vorrei utilizzare le ore che

12:00abbiamo di esercitazione tra un attimo

12:02vedremo come è strutturato il corso per

12:06programmare insieme a voi all'inizio

12:09quando ci si imbatte con questo

12:12strumento c'è proprio la difficoltà di

12:14dire Va bene molte delle cose che vi

12:17racconterò vi sembreranno estremamente

12:19semplici e comprensibili però vi

12:21assicuro C'è un momento nel quale Poi

12:23siamo noi Il Calcolatore e il linguaggio

12:26e il programma e deve are quel

12:30meccanismo che ci fa

12:32entrare diciamo più a fondo nelle

12:34tecniche di programmazione Allora le

12:37esercitazioni guidate le faremo insieme

12:40prendiamo un problema cominciamo a

12:42progettarlo io avrò Il Calcolatore con

12:44il compilatore davanti scriverò i

12:46programmi quindi programmer insieme a

12:48voi poi vi assegnerò degli homework Cioè

12:52vi darò dei compiti da sviluppare

12:54autonomamente a casa e vorrei utilizzare

12:58una parte D ore di esercitazione per

13:01discutere con voi e sentire le vostre

13:04proposte

13:05risoluzione qualcuna Ce la vediamo

13:07insieme qualcuna me la potete mandare e

13:10la guardiamo insieme direttamente sul

13:12calcolatore Cioè dobbiamo fare entrambe

13:14le cose da una parte dovete essere un

13:16po' guidati all'inizio ma poi dovrete

13:19Imparare a camminare con con le gambe

13:22vostre ragazzi Tenete conto che a

13:25differenza di altre materie Qui non c'è

13:28un te problema che ci dice io mi studio

13:31questa cosa applico questa formula e ta

13:33ho la soluzione e la programmazione è un

13:37po' a che fare con un'abilità personale

13:41che bisogna tirar fuori esercitandosi è

13:45un po' come dire io quando studio i

13:47corsi di analisi non c'ho un teorema che

13:49mi dice guarda quale che sia l'integrale

13:52che devo risolvere applica questo questo

13:54e questo passaggio e è la soluzione

13:56quando voi Risolvete questo tipo di di

14:00problemi Beh Guardate la funzione

14:02integranda Allora capite se volete fare

14:05una sostituzione di variabili integrate

14:07per parti applicate più tecniche che

14:11conoscete per portare la funzione integr

14:14in una forma nota per la quale siete

14:16capaci di risolvere l'integrale Beh qui

14:19è un po' la stessa cosa Noi abbiamo un

14:21problema ma non esiste ununica Soluzione

14:23ne esiste un unico teorema che ci dice

14:25fai questo questo e quest'altro e arrivi

14:27alla soluzione quindi dobbiamo essere un

14:31po' bravi noi e capaci noi di tirarla

14:33fuori e

14:34di provare a ottenere una soluzione

14:39Tenete conto che dato un problema non

14:42esiste una e e un'unica soluzione ma

14:45possiamo trovare delle strade

14:48alternative e quindi nell'ambito di

14:50questo corso faremo anche delle

14:52valutazioni su quanto è buona una

14:55soluzione Cioè in qualche maniera

14:57proverò a introdurre di una forma

15:00matematica anche molto leggera Come si

15:03fa a valutare la bontà di un programma

15:06mediante quello che si chiama una

15:08valutazione del costo computazionale

15:10cioè la soluzione che ho pensato quanto

15:13è onerosa per il mio esecutore quindi

15:17capiremo Come si fa a definire questo

15:20concetto di costo computazionale E come

15:23faremo a misurarlo Ma questo ce lo

15:26vediamo piano piano nelle prossime

15:28lezioni

15:31il testo consigliato è il testo di

15:34Shield della macro guida al c+ Plus

15:38questo non lo acquistate lo teniamo come

15:41riferimento se servirà R integrò io un

15:44po' di

15:45materiale Questo è un testo di c+ Plus

15:49un buon testo devo dire fatto bene

15:52chiaro semplice e e poi vi darò io

15:55dispense e appunti quando sarà il caso

15:58nella ambito del

16:00corso tenete conto questo testo che

16:03cos'è questo è un testo del linguaggio

16:06Cioè ci racconta Quali sono i tipi di

16:09dati le strutture d d della

16:13programmazione in c+ plus quindi non è

16:17un testo nel quale voi

16:21trovate esercizi soluzioni tecniche di

16:26programmazione purtroppo diciamo un

16:29testo che includa tutti questi

16:32aspetti diciamo un un testo semplice non

16:35non non ho ancora trovato quindi ci sono

16:39alcuni test che sono più di

16:40programmazione che nel senso che

16:42insegnano le metodologie però utilizzano

16:46linguaggi Generali i cosiddetti PDL i

16:49program design language e quindi uno

16:52dovrebbe usare un testo di questo tipo

16:55per analizzare le tecniche di

16:58programmazione poi un altro testo per

17:01capire Queste tecniche Come si

17:03realizzano nel linguaggio c+ tenendo

17:06conto del taglio del di questo corso io

17:09ho preferito darvi il manuale di

17:12riferimento in modo che Voi capite

17:14quando programmate se il compilatore vi

17:16dà un errore che cosa succede e perché E

17:19poi vi darò io nelle lezioni la parte

17:24progettuale Cioè vi spiegherò come si

17:26progettano le soluzioni Lo faremo

17:28insieme Quindi questa parte verrà un po'

17:31da dispensi appunti ma molto verrà dal

17:35quello che ci Costruiamo insieme in aula

17:37per capire come si arriva a progettare

17:40un algoritmo risolutivo per un dato

17:44problema come è organizzato il corso

17:47abbiamo 7 ore settimanali ci sono 4 ore

17:52di teoria e 3 ore di esercitazione

17:55guidata Questi sono i miei Rifer Se

17:59avete bisogno di parlare con me vorrei

18:02definire essenzialmente con

18:05voi qual è l'orario di ricevimento Cioè

18:08In quali orari vi fa più piacere poter

18:11poi parlare con me al di fuori delle

18:13delle lezioni tenete conto avendo

18:16lezione lunedì martedì e mercoledì

18:19preferirei In uno di questi tre giorni

18:22definire il nostro orario di

18:25ricevimento Se non siete troppo stanchi

18:28potremmo anche farlo per esempio il

18:30lunedì a Valle della d delle Miore

18:34questo potete anche pensarci un attimo e

18:36poi lo definiamo

18:39insieme quindi dicevamo 7 ore 4 di

18:43teoria e tre di esercitazione

18:45chiaramente prima di cominciare la parte

18:48esercitativa dobbiamo aere maturato un

18:51po' di argomenti teorici Quindi almeno

18:54per le prime 2 tre settimane queste ore

18:57di esercitazione

18:59non le non le useremo magari le possiamo

19:03utilizzare non la settimana prossima

19:05perché ci sono gli esami di stato ma li

19:07posso utilizzare per recuperare questa

19:10prima settimana che non abbiamo fatto

19:12lezione

19:13perché come presidente della commissione

19:16per gli esami di stato sono stato

19:17impegnato su quest'altra attività quindi

19:20le le utilizzerò per recuperare però non

19:24vorrei darvi un carico di 7 ore di

19:26teoria alla settimana perché che ci

19:29voglia un po' di tempo per maturare

19:31anche questi concetti quindi per le

19:34prime du tre settimane non faremo

19:36direttamente esercitazioni ma useremo al

19:40momento e poi ve lo dirò io quando ci

19:43vedremo anche il lunedì per fare

19:46l'esercitazione la teoria la faremo

19:49ovviamente nelle nelle lezioni del

19:51martedì e del

19:55mercoledì allora un poco di consig

20:00per

20:01attraversare in maniera efficace questo

20:04corso allora ragazzi Dato che questo è

20:07un corso che ha una forte componente

20:11applicativa c'è una parte di

20:13progettazione che ci Costruiamo insieme

20:15in aula Ah secondo me seguire il corso è

20:19importante perché

20:22altrimenti vi dovreste prendere voi dei

20:25testi per capire come si fa la parte di

20:28progettazione e chiaramente per chi

20:31dovesse saltare qualche lezione o non

20:33potesse seguire io vi darò delle

20:35indicazioni in questo senso però se ci

20:38riuscite seguire il corso è la cosa che

20:40secondo me vi alleggerisce molto questa

20:43parte e vi fa risparmiare del

20:46tempo molto importanti sono le

20:49esercitazioni molto importante è provare

20:52da soli i programmi Ragazzi io vi potrò

20:55far vedere 100 programmi fatti da me poi

20:59ci sarà sempre il c1o che dovrete fare

21:01da soli quindi se non acquisite questa

21:04esperienza c'è poco da fare è difficile

21:07superare l'esame perché c'è questo

21:10Scoglio della parte esercitativa

21:13Ovviamente se mi segnalate per tempo

21:17problemi cose che non vanno aggiustiamo

21:20il tiro e lo facciamo insieme in corso

21:25d'opera Allora entriamo un pochino più

21:30nel nei concetti che studieremo

21:33nell'ambito di questo corso come dicevo

21:37l'informatica è quella che si chiama la

21:40scienza dell'astrazione cioè noi

21:42dobbiamo creare il giusto modello per un

21:45problema e individuare le tecniche

21:48appropriate per risolverlo in modo

21:51automatico Ragazzi ho sottolineato

21:53modello i ho sottolineato automatico

21:58è chiaro che voi siete Avete appena

22:01finito di fare 3 ore di

22:05fisica è chiarissimo

22:07che per chi studia fisica il concetto di

22:11modello è un concetto

22:13fondamentale no mi sapreste dire per voi

22:16Che cos'è un modello anche pensando a

22:19quello che avete fatto fino adesso n

22:21corso corso di fisica avete cominciato

22:23adesso però già a Valle di questo primo

22:26semestre se qualcuno vi dicesse ma per

22:29voi un modello che cos'è Perché è così

22:40importante un riferimento sicuramente

22:44Però anche proprio pensando che so avete

22:48sentito parlare sono stati definiti

22:51tanti modelli per esempio il modello

22:53dell'atomo e sono stati proposti nel

22:56corso degli anni tante formulazioni

22:59Allora perché si arriva a formulare un

23:04modello Perché come per esempio nel caso

23:07dell'atomo un modello è una

23:09rappresentazione più semplice della

23:12realtà però questa rappresentazione deve

23:16essere in grado di spiegare i fenomeni

23:19fisici che noi osserviamo quindi il il

23:22primo modello dell'atomo riusciva a

23:24spiegare certe proprietà della materia

23:27Poi a un certo punto

23:29si sono verificati dei fenomeni che quel

23:32modello non era più capace di spiegare e

23:35allora qualcuno ha pensato a un modello

23:38più complicato questo modello più

23:40complesso è stato capace di spiegare

23:42anche questi ulteriori fenomeni e così

23:44via sia andata avanti nel corso della

23:46storia quindi il modello Ci è servito

23:49per dare una rappresentazione più

23:51semplice e attraverso questa

23:54rappresentazione riuscire a spiegare

23:57quei fenomeni fisici che che noi

23:58osserviamo bene quindi questo è un

24:02Concetto generale uno delle dei primi

24:05compiti di un ingegnere è quello di

24:08modellare la realtà e poter modellare le

24:12soluzioni dei problemi quindi il proprio

24:16l'idea del modello è centrale in tutto

24:19il corso che voi farete di ingegneria

24:21sarà centrale in tutto il corso di

24:24Fondamenti di informatica che faremo in

24:26questo semestre eh

24:29perché Sottolineo la parola automatico

24:33perché noi non vogliamo ogni volta che

24:36si presenta un problema dover partire da

24:40zero

24:41e riprogettare una soluzione vogliamo

24:46dare una definizione della della nostra

24:49soluzione che sia del tutto generale e

24:52che poi in maniera automatica si possa

24:55adattare ai dati diversi che cambiano di

24:58volta in

24:59volta se voi dovete progettare il

25:04controllo di una linea di produzione per

25:07garantire che il prodotto finito abbia

25:09certe caratteristiche di qualità

25:13Allora progettate questo sistema

25:16collegate dei sensori alla linea di

25:18produzione per acquisire informazioni il

25:21nostro sistema verifica che la la la

25:25linea funzioni in maniera corretta bene

25:29tutto questo avviene in maniera

25:31automatica Cioè anche al variare dei

25:34dati che arrivano al sistema Il sistema

25:37è ancora in grado di fornire delle

25:40risposte coerenti al al problema che

25:44dobbiamo risolvere in questo

25:47caso ho considerato un problema di

25:50controllo di una linea di produzione

25:52Questa è una cosa che ormai è

25:55fondamentale quando un si produce un

25:58manufatto bisogna associare quello che

26:01si chiama un cartellino di qualità cioè

26:03garantire che questo prodotto soddisfi i

26:06requisiti richiesti senza un sistema di

26:09controllo questa cosa non è fattibile

26:11quindi una volta che noi abbiamo

26:14progettato la soluzione per un problema

26:17noi vogliamo che questa nostra soluzione

26:19si adatti in maniera automatica a tutti

26:23i dati reali che poi verranno tirati

26:26fuori e verranno forniti in ingresso al

26:30nostro

26:31sistema Quindi l'obiettivo che ci

26:34poniamo è quello di sostituire una

26:36situazione del mondo reale complessa e

26:40particolar regata con un modello

26:43comprensibile e privo di dettagli

26:45inessenziali all'interno dei quali si

26:49possa risolvere il problema quindi

26:51ragazzi la realtà

26:54appare generalmente molto complessa con

26:57tante informazioni che non sono

27:00essenziali alla risoluzione Allora il

27:03modello

27:04semplificato serve a toglier fuori

27:07questi dati inessenziali e a farci

27:10concentrare unicamente sulle

27:12informazioni che sono invece

27:13fondamentali per la risoluzione del

27:16nostro problema Facciamo un esempio così

27:21smettiamo di parlare in astratto e

27:23facciamo una cosa concreta Allora

27:26immaginate qui siamo in una zona dove si

27:29produce marbo e quindi immaginate che eh

27:33abbiamo estratto tagliato del Marmo

27:37abbiamo ottenuto una una lastra

27:40rettangolare di dimensioni A * B e

27:44vogliamo tagliarla in tanti quadrati

27:47uguali cioè vogliamo tirar fuori delle

27:49mattonelle eh avente il lato della

27:53maggiore lunghezza possibile senza

27:56generare sfrido Allora capite qui come

28:01nella maggior parte dei problemi abbiamo

28:04tipicamente una o più soluzioni

28:07contrastanti perché se qui il problema

28:09fosse tirar fuori quante più

28:12mattonelline possiamo e non ce ne

28:14importasse nulla di farle grandi e noi

28:17le faremmo piccole piccole e ne tireremo

28:19fuori un sacco Però il problema è

28:23Innanzitutto tagliare a dei rischi di

28:26rottura del materiale che stiamo che

28:29stiamo tagliando due da un punto di

28:31vista commerciale una mattonella di

28:34marmo ha più valore se è più grande

28:37Allora io vorrei e quindi da una parte

28:40sembrerebbe che mi convenga farle quanto

28:42più grande possibile tenendo conto delle

28:45dimensioni tipiche del mercato che

28:47possono essere 40 x 40 50 x 50 e così

28:51via però chiaramente se io c'ho una

28:53lastra di mmo e faccio queste mattonelle

28:55molto grandi una volta che ho queste

28:58mattonelle grandi mi può rimanere molto

29:00marbo residuo e quindi ho sfrido e

29:05riesco

29:06a guadagnare meno dalla produzione di

29:09questa last quindi qui il problema è un

29:12problema contrastante da una parte

29:15voglio limitare lo sfido dall'altra

29:17parte Voglio massimizzare la quantità di

29:21mattonelle prodotte e per aumentare il

29:23guadagno le voglio produrre della

29:26Dimensione più grande

29:28possibile allora mi chiedo come posso

29:32risolvere questo problema Quindi questo

29:34è il problema della mia

29:36realtà ho la mattonella ho i lati di

29:41questa lastra di marbo che devo tagliare

29:45e mi

29:46chiedo come posso fare un programma di

29:50calcolo che quale che sia la lastra di

29:53marno chiaramente dalla cava quando

29:55vengono tagliate queste lastre mica

29:58quelle quando si spaccano vanno certe

30:00dimensioni quindi non è che dalla dalla

30:03cava escono tutte l'astre identiche per

30:05cui è sempre lo stesso problema escono

30:08lastre di dimensioni diverse il mio

30:10sistema deve di volta in volta adattarsi

30:12per ricevere i nuovi dati in ingresso e

30:16dare una risposta a questo problema

30:18questa è la realtà come faccio a

30:22modellarla cioè Qual è il modello che

30:25tiro fuori per rappresentare questa

30:28realtà se qualcuno ve lo chiedesse oggi

30:31con le vostre conoscenze voi che cosa

30:33rispondereste

30:37c'è qualcuno che ha un'idea come

30:40potremmo provare a modellare questa

30:43cosa

30:45Oh E innanzitutto che cosa diamo al

30:48sistema impasto come dati perché questo

30:52è quello che c'è nel mondo reale c'è una

30:55lasta di marmo con delle dimensioni che

30:57sono state misurate Mo questa roba deve

30:59entrare nel mio sistema di calcolo che

31:01deve fare i

31:06conti allora Vi propongo

31:11un'idea ma un'idea potrebbe essere

31:14quella di dire ma in fondo questo

31:17problema

31:18e lo posso rappresentare in maniera più

31:22semplice in questa forma dati i due

31:25numeri A e B calcolare il massimo com un

31:29divisore è verificare se è uguale a

31:321 Questa può essere una soluzione del

31:35nostro problema perché in fondo io ho le

31:38dimensioni di questa

31:40lastra dato che voglio tirar fuori delle

31:43mattonelle quadrate della Dimensione più

31:47grande possibile allora un modo

31:50alternativo di formulare questo problema

31:54ma se io mi calcolo il massimo come un

31:56divisore Questo è quello che mi

31:59garantirebbe di

32:02avere il numero massimo di mattonelle

32:05possibili che taglio della Dimensione

32:06più grande avente avendo sfrido zero

32:10perché se ho trovato se prendo proprio

32:13come dimensione della marmetta

32:15il un valore pari al massimo come un

32:18divisore tra le

32:21dimensioni orizzontali e verticali

32:25del del del mio del mio Allora ho

32:28trovato la la la soluzione migliore

32:31possibile È chiaro che se i due numeri

32:35sono primi tra loro se volessi avere

32:38sprito Zero dovrei far la marmetta di

32:41dimensione

32:43unitaria Beh

32:46allora che cosa abbiamo fatto abbiamo

32:49preso un problema

32:51reale l'abbiamo modellato attraverso

32:55questa quest'idea di calcolare il

32:58massimo con un divisore Quindi quali

33:00sono le informazioni fondamentali che

33:03devo conservare bene A questo punto me

33:06ne frego di tutto il resto mi basta che

33:08io prendo i due valori che rappresentano

33:11i lati della lasta di marmo e li metto

33:14all'interno del mio sistema di calcolo

33:16quindi è come

33:18dire questo sistema deve ricevere in

33:22ingresso due numeri reali che sono i

33:25lati D della di Malmo deve produrre in

33:30uscita un'informazione che è guarda Si

33:35può fare o non si può fare se i due

33:37numeri sono primi tra loro non si può

33:39fare questa cosa se i due numeri non

33:42sono primi tra loro Qual è la dimensione

33:45massima della marmetta che posso trarre

33:49che posso estrarre per avere sfido pari

33:52a z0 quindi

33:55Eh ci serve un procedimento

33:59sistematico costituito da un insieme

34:02finito di di operazioni ognuna delle

34:05quali sia precisa ed eseguibile da

34:09applicare ai dati di ingresso perché si

34:12possano fornire dei dati in

34:15uscita In altre parole è necessario un

34:18algoritmo Beh allora ripetiamo Questo

34:23ragionamento dato un problema Abbiamo

34:26individuato quali sono i dati essenziali

34:29di questo problema questi dati

34:32essenziali in questo caso sono due

34:34numeri questi numeri devono essere

34:37opportunamente rappresentati all'interno

34:39del nostro sistema di calcolo

34:42Dopodiché una volta che io ho definito

34:45Qual è la mia idea debbo trovare ora un

34:50procedimento sistematico Che vuol dire

34:53che deve essere eseguibile ogni volta

34:58e questo procedimento deve essere

35:02composto da un insieme finito di

35:04operazioni che applicate ai dati in

35:08ingresso mi producano i dati in uscita

35:11Ragazzi questi operazioni devono essere

35:16precise Cioè non ambigue e devono essere

35:21eseguibili cioè quando do un'istruzione

35:23al mio esecutore il mio esecutore deve

35:28essere in grado di

35:31eseguirle prima di entrare nella in

35:35questa seconda definizione mi voglio

35:37soffermare un attimo su questo aspetto

35:40allora Poiché noi faremo riferimento

35:42sempre a un

35:44esecutore dobbiamo chiederci Ma quanto è

35:49intelligente il nostro

35:52esecutore Secondo voi un sistema di

35:55calcolo un computer come questo che ha

35:59una potenza di calcolo ragazzi

36:03spaventosa cioè rispetto a un essere

36:05umano un oggetto di questo tipo ha una

36:08capacità di calcolo che si misura

36:11nell'ordine dei

36:13mefop cioè delle

36:16delle dei milioni di

36:21operazioni sui numeri reali che questo è

36:25in grado di eseguire nell'unità di tempo

36:28Quindi questo è un oggetto che riesce a

36:31fare dell'ordine o un numero di

36:34operazioni dell'Ordine dei milioni di

36:37operazioni sui numeri reali nell'unità

36:39di tempo in un secondo quindi ha una

36:43potenza di calcolo spaventosa rispetto a

36:46un essere umano ma ci chiediamo ma

36:49quanto è

36:51intelligente cioè da solo è in grado di

36:54prendere decisioni autonome

36:57la risposta è no cioè questo sistema Se

37:01gli diciamo quello che deve fare lo fa

37:03in maniera velocissima Ma dobbiamo

37:06dirglielo noi allora sarebbe un po' come

37:10dire se io mi rivolgo a uno di voi e gli

37:15dico guarda questi sono i coefficienti

37:19dell equazione di secondo grado Mi trovi

37:22le

37:23radici do una risposta del genere a uno

37:26di voi

37:282 minuti Il tempo di mettere penna su

37:32carta e mi dite le radici delle dellee

37:34coioni perché Perché io ho fatto una

37:38domanda a un esecutore umano studente

37:42del corso di laurea in ingegneria

37:45industriale a Cassino gliel'ho formulata

37:49in un linguaggio che lui è in grado di

37:51capire gli l'ho formulata in italiano è

37:55in grado di capire quello che io gli sto

37:58chiedendo nelle sue competenze ci sono

38:02le conoscenze per risolvere un'equazione

38:04di secondo

38:05grado Allora se io questa stessa domanda

38:08la faccio uno studente delle scuole

38:11della quinta elementare Secondo voi

38:14questo studente che cosa mi

38:18risponde Io non so di che parlo perché è

38:22vero che io glielo dico in italiano e

38:24lui in italiano capisce quello che gli

38:26sto dicendo ma

38:29l'esecutore studente delle scuole

38:31elementari non ha la competenza per

38:35capire come si risolve un'equazione di

38:38secondo

38:39grado

38:41Allora quando io parlo di dare

38:45un'istruzione in maniera precisa e non

38:49ambigua che sia

38:51eseguibile cio vuol dire vogliono queste

38:54due affermazioni vogliono dire due cose

38:56che devo dirgliela in modo che lui

38:59capisca esattamente che cosa sto

39:01cercando ma deve essere eseguibile cioè

39:05la cosa che gli sto chiedendo deve

39:08essere

39:11eh eseguibile cioè devi avere la

39:14conoscenza e la capacità di eseguire

39:17quel comando Allora io non potrei

39:21chiedere a un a uno studente delle

39:24scuole della quinta elementare di

39:27risolvere un'equazione di secondo grado

39:29glielo potrei

39:32chiedere sì o

39:36no Beh se gli spiego come fare il conto

39:39glielo posso

39:44chiedere se Dato che

39:48lui Supponiamo non quinta elementare ma

39:53Supponiamo scuole medie ha imparato a

39:56fare le

39:58qu Allora se io ho uno studente che non

40:02conosce il concetto di equazione ma

40:05conosce il concetto di radice quadrata

40:08io non gli chiedo risolvimi Calcolami le

40:11radici delle equazioni di secondo grado

40:13Ma gli dico guarda tu fai questo questo

40:17questo questo e questo passo e alla fine

40:19fai questi conti e mi dai due numeretti

40:22che tu non lo sai ma io so che

40:25rappresentano le radici dell'equazione

40:27di secondo grado allora io gli ho dato

40:32in maniera precisa le istruzioni che

40:35devo fare ma eseguibile Cioè ho scalato

40:39la difficoltà e gli ho detto guarda tu

40:41le equazioni non sai cosa sono però

40:43poiché le quattro operazioni le sai fare

40:46e Sai farmi anche le radici quadrate

40:49Allora ti spiego io come tu sei in grado

40:54di risolvere le il leva del calcolo

40:58delle radici delle equazione di secondo

41:01grado ragazzi Quello che vi voglio dire

41:03è che il concetto di eseguibile è

41:07strettamente legato al concetto di

41:10esecutore se io ho a che fare con un

41:12matematico gli dico mi Risolvi questo

41:15sistema di equazioni differenziali per

41:17lui quella è un'operazione elementare

41:20perché nelle sue conoscenze ci sono le

41:23tecniche di risoluzione delle equazioni

41:25differenziali se lo dico a voi che state

41:28studiando adesso questa cosa mi

41:30rispondete Non lo so fare quando le

41:32studierò Saro in grado di farlo quindi

41:34il concetto di eseguibile è legato alle

41:39competenze

41:40dell'esecutore Quindi

41:43quando proporremo le soluzioni per i

41:47problemi Dobbiamo capire che l'algoritmo

41:50è un concetto del tutto generale e la

41:53sequenza di passi elementari per un

41:57certo esecutore per arrivare a risolvere

42:01il problema quindi dobbiamo essere

42:05sicuri di dire le cose in maniera

42:08precisa e non ambigua dobbiamo dirle in

42:12modo che rispettino le competenze

42:16dell'esecutore per cui lui sia in grado

42:18di

42:19farlo ragazzi Questo vi fa anche capire

42:22perché noi non programmiamo in

42:25italiano perché

42:27dobbiamo usare un linguaggio di

42:29programmazione perché non ci basta in

42:31generale il linguaggio

42:34naturale ragazzi perché il linguaggio

42:36naturale è un

42:38linguaggio molto potente molto ricco

42:42però è un

42:45linguaggio Che per sua natura non è un

42:48linguaggio formale Ma si presta a delle

42:53ambiguità quando noi scriviamo una frase

42:56anche ben concepita nella lingua

43:00italiana questa frase potrebbe essere

43:03soggetta a implementazioni a

43:06interpretazioni

43:08diverse gli esempi più lampanti noi

43:11siamo una facoltà di ingegneria Ma se ci

43:15riferiamo per esempio all Al linguaggio

43:19nel quale vengono formulate le leggi e

43:23molto spesso uno legge il testo di

43:26quella legge DOP che escono le

43:29interpretazioni Cioè ci sono i tribunali

43:32che dicono Come è stata comunemente

43:35interpretata dalla giurisprudenza quella

43:37norma Allora Che vuol dire che quella

43:40norma di per sé si presta a

43:42interpretazione diverse ma se il nostro

43:46esecutore

43:48informatico si trovasse davanti a un

43:51dubbio saprebbe

43:54risolverlo si ferma va in alto

43:59quando c'è una sequenza di operazioni

44:02che non rispetta il flusso naturale

44:05delle operazioni il il processore va in

44:09alta si blocca e dice non sono più in

44:12grado di fare nulla quindi il

44:16nostro la nostra soluzione del problema

44:19dovrà essere formulata in un linguaggio

44:22che sia assolutamente non ambiguo

44:25l'interpretazione

44:27può essere una e una sola altrimenti

44:30questo non è un

44:32algoritmo quindi ci siamo dovuti

44:35inventare dei linguaggi di

44:37programmazione che tipicamente hanno la

44:41sintassi della lingua inglese con delle

44:43frasi in inglese ma che siano concepite

44:46in modo tale da essere assolutamente non

44:49ambigue da poter avere una e una sola

44:54interpretazione Ecco perché parliamo di

44:57operazione precisa non ambigua ma

45:00eseguibile vale a dire che quando io do

45:04un comando nel mio linguaggio questo

45:07comando deve essere nelle capacità del

45:12mio esecutore se il mio esecutore sa fa

45:15solo le quattro operazioni non ci stanno

45:17Santi tutto quello che dico dovrà essere

45:20fatto utilizzando le quattro operazioni

45:24Ok allora base di queste considerazioni

45:29proviamo a capire che cos'è un

45:34algoritmo Allora in generale possiamo

45:38dire che un algoritmo è un procedimento

45:42che risolve un determinato problema

45:46attraverso un numero finito di passi

45:49elementari Questa è la prima definizione

45:53che trovate Se mettete la parola

45:56algoritm su

45:57Wikipedia l'enciclopedia Wikipedia vi dà

46:01questa

46:04definizione ve L'ho riportata perché è

46:07fatta abbastanza bene e quindi può

46:10essere un buon punto di partenza

46:14allora un procedimento che risolve un

46:17problema attraverso un numero finito di

46:22passi

46:24elementari i passi enti devono essere

46:28elementari ovvero non ulteriormente

46:33scomponibili Allora se io dico Calcolami

46:37la radice quadrata di questo numero

46:40questa operazione è elementare o

46:50no su qu di avere una macchinetta da

46:54tavolo voglio fare una radice quadrata è

46:57un'operazione elementare o

47:03no Beh se sulla mia macchinetta da

47:07tavola ci sta il simbolo radice quadrata

47:09quella è un'operazione elementale metto

47:12il numeretto Schiaccio il bottone e mi

47:14eso la radice

47:15quadrata se la mia calcolatrice da

47:19tavolo alla radice quadrata non ce l'ha

47:21Non si può fare la radice quadrata

47:27è un po' lontano nella vostra memoria ma

47:29alle scuole medie Avete studiato Come si

47:32calcolano le radici quadrate c'è un

47:36procedimento che voi applicate dato un

47:38numero calcolate la radice quadrata

47:41attraverso quali operazioni le quattro

47:43operazioni elementari Allora

47:46L'operazione è atomica se il mio

47:49esecutore ce l'ha quindi quando si parla

47:53di operazione atomica Allora per un

47:56oggetto di questo tipo Qual è

47:58l'operazione atomica questo oggetto sa

48:01fare bene le quattro

48:03operazioni poi quando studieremo

48:05l'architettura vi farò capire che in

48:07realtà

48:10lui fa un sottoinsieme di operazioni fa

48:14solo le addizioni e attraverso le

48:17addizioni riesce a fare tutte e quattro

48:19le operazioni riesce a fare Rad quadr e

48:21così via Ma possiamo pensare a livello

48:25generale che per questo per questo

48:29oggetto l'operazione di Somma è per

48:32esempio un'operazione elementare cioè io

48:35gli posso dare un'istruzione Fammi la

48:37somma di questi due numeri per lui

48:39elementare lui ha al suo interno la

48:42circuiteria hardware per fare

48:44l'operazione mi produce il risultato

48:47questa operazione la intendiamo

48:50veramente elementare Cioè non è

48:52ulteriormente scomponibile in altre

48:55operazioni

48:57i passi costituenti devono essere

49:01interpretabili in modo diretto e univoco

49:05dall'esecutore sia Esso umano o

49:08artificiale quindi una volta che ho

49:11capito Quali sono le azioni elementari

49:13che lui sa fare allora i passi per

49:17arrivare a questa soluzione devono

49:22essere interpretabili in maniera diretta

49:26e un

49:27Cioè ci vuole un linguaggio che sia per

49:30sua natura formale e non

49:34ambiguo l'algoritmo deve essere composto

49:37da un numero finito di passi e

49:41richiedere una quantità finita di dati

49:44di

49:44ingresso

49:46ragazzi Questo è un altro concetto

49:49fondamentale è vero che i puristi della

49:54della

49:55teoria e dei

49:59linguaggi storcono un po' il naso e

50:01dicono il fatto che sia un numero finit

50:03di passi non è

50:04strettamente essenziale al concetto di

50:07algoritmo Ma noi siamo ingegneri e

50:10quindi diciamo che se una cosa ci mette

50:12un tempo in finito Per noi non va bene

50:14quindi un algoritmo è una sequenza

50:17finita di passi che prende un numero

50:20finito di dati di ingresso m li

50:22trasforma nei dati

50:24di uscita

50:27Ovviamente questa esecuzione deve avere

50:31termine dopo un tempo finito e deve

50:35produrre come risultato un risultato

50:37univoco che sia la soluzione del nostro

50:41problema

50:42ragazzi molto spesso quando fate i

50:45programmi questa condizione non me la

50:49verificate il programma parte non

50:53termina E allora io devo

50:57intervenire per bloccare il programma

50:59che altrimenti non finirebbe più si dice

51:02che il vostro programma è entrato in un

51:04loop infinito e devo usare un meccanismo

51:09esterno per

51:12interromperlo vi farò vedere come

51:15facendo degli errori queste cose possono

51:18succedere

51:19Quindi quando svilupperemo i nostri

51:23algoritmi Dovremo avere ben presenti

51:25questi passi

51:29garantire che la il il nostro problema

51:33sia scomposto in azioni veramente

51:36elementari che siano sempre

51:40interpretabili ragazzi non pensate che

51:43questo sistema da solo abbia capacità

51:46autonome molto spesso mi dite No ma io

51:49l'ho fatto bene ma quello è il

51:50calcolatore che non l'ha eseguito bene

51:53calcolatore da solo non fa niente se non

51:55quello che gli dite voi se non l'hai

51:58seguito bene perché voi non gliel'avete

52:01detto bene lui da solo fa soltanto

52:03quelle cose che gli dite se le cose che

52:06gli dite dopo un tempo finito ci portano

52:08un risultato sballato non è lui che non

52:10l'ha saputo fare Siete voi che non

52:12l'avete saputo programmare Allora

52:16Prendetevi un attimo per buona questa

52:19definizione di algoritmo poi piano piano

52:21ce la

52:24Raffini allora

52:26Proviamo

52:27a vedere come risolvere il problema di

52:31partenza Vi ricordo che avevamo detto

52:34che per tagliare questa malvetta

52:36dovevamo trovare il massimo com un

52:40divisore ora se io vi dicessi

52:45Vabbè c'è un bambino delle scuole

52:49elementari gli dite come calcolare il

52:52massimo com un divisore tra due

52:54numeri voi che cosa gli rispondete lui

52:58quattro operazioni

53:04saltate come gli dite di calcolare il

53:09massimo comun di misure tra due

53:15numeri Beh noi sappiamo che possiamo

53:18fare la scomposizione in fattori

53:21prendere i fattori

53:23comuni con il min esponente e facciamo

53:28questa cosa Però se D'altro canto il

53:31bambino non sa che significa la

53:34scomposizione in fattori non ha ancora

53:37il concetto di potenza e quindi non sa

53:39che cosa significa i fattori comuni col

53:42minimo esponente lui questa cosa non la

53:45capisce allora domanda ma c'è un modo

53:50semplice per spiegare a un esecutore che

53:52questi concetti non ce li ha come

53:54calcolare il massimo comun di divisore

53:57perché questo sistema questi concetti

53:59non ce li

54:00ha Allora avete voglia di fare le

54:05vostre considerazioni dovete parlare la

54:08lingua che capisce lui allora come

54:11potremmo calcolare il massimo com un

54:14divisore

54:15do Beh questo è un algoritmo che è stato

54:20proposto da guide per 300 aan Crist

54:23circa e a tutti quegli ingredienti che

54:28abbiamo detto prima per poter essere

54:31considerato un

54:33algoritmo

54:34Allora consideriamo due numeri qualsiasi

54:38X e Y con X Mag

54:42Y Ragazzi qua dobbiamo fare un minimo di

54:45attenzione perché

54:48Eh io sto scrivendo una questo algoritmo

54:53risolutivo utilizzando il modello carta

54:55e penna

54:57e sto facendo riferimento a questi

54:59simboli chi sono X e

55:05Y numeri

55:07reali Sì ma come le

55:10chiamate delle variabili Ma che cos'è

55:13una

55:21variabile come definireste una variabile

55:29provate dopo tanta matematica che fatto

55:32fino ad arrivare al primo anno di

55:34università dovreste essere in grado Che

55:37cos'è per voi una

55:46variabile non abbiate

55:50timore Allora nella forma più semplice

55:53posso immaginare che questo è un

55:55letterato che può indicare un qualunque

55:58numero

55:59reale ma nel modello carta e penna

56:03questo concetto di variabile si deve

56:06arricchire di qualcosina in

56:10più nel modello cara e penna X e

56:14Y rappresentano lo spazio del foglio di

56:19carta dove io andrò a scrivere i valori

56:24veri sui quali questo algoritmo devi

56:27operare Allora immaginate che come se io

56:30stessi dicendo vabbè ma io devo fare

56:33questa cosa Allora mi metto carta e

56:36penna e

56:39dico qua scrivo i valori che assumerà la

56:46variabile X qua scrivo il valore che

56:50assumerà la variabile Y Quindi per me in

56:55questo momento X e Y rappresenta la

56:59parte del foglio di carta dove io nel

57:02modello carta e penna andrò a scrivere

57:04questo

57:06valore

57:09allora in questo primo blocco c'è

57:12scritto considera due numeri X e Y con X

57:17Mag Y Allora il mio

57:21esecutore per poter eseguire

57:24correttamente Quest

57:26quali capacità devi

57:46avere Allora ragazzi

57:50deve avere il concetto di

57:52numero ma non solo

57:57mio nipote che sta in prima elementare

57:59dopo aver avuto il concetto di numero ha

58:02avuto un ulteriore

58:04concetto il concetto di confronto tra

58:09numeri cioè devo essere in grado di

58:12definire una relazione

58:14d'ordine questo simbolo significa che il

58:18mio esecutore deve essere in grado di

58:22confrontare due numeri reali due numeri

58:26interi pensate Come volete In questo

58:29momento proviamo a lavorare sugli interi

58:32due numeri interi e stabilire tra questi

58:36due numeri interi qual è quello più

58:39grande cioè deve avere il concetto di

58:43relazione d'ordine su questo insieme di

58:47numeri

58:49interi questo concetto elementare il

58:52sistema di calcolo Ce

58:54l'ha nella la sua circuiter di hardware

58:57è in grado di confrontare i due numeri e

59:00dire chi è più grande e chi è più

59:02piccolo allora questa per me è

59:05un'operazione

59:06elementare quindi questo sistema è in

59:09grado di guardare questi due numeri e

59:12dire qual è più grande e più piccolo ma

59:16se mi fossero arrivati in ingresso

59:27questi due numeri

59:29Allora questo primo blocco avrebbe avuto

59:32questo significato considera due numeri

59:36X e Y con X Mag

59:39y se questa condizione è così che debbo

59:45fare Allora è come dire poiché li so

59:48confrontare e sto nel modello carta e

59:51penna Allora io dico vabbè allora X me

59:55lo chiamo

59:56360 y me lo chiamo

1:00:00220 Allora ho eseguito il primo blocco

1:00:04dove ho considerato due numeri quindi

1:00:06per considerarli vuol dire che nel mio

1:00:08modello carta e penna ho trovato un po'

1:00:11di spazio sulla carta e c'ho messo

1:00:13questi numeretti qui

1:00:15dentro Ho eseguito questo blocco ora la

1:00:19freccia mi dice fai quest'altra

1:00:23operazione dividi X * Y e ottieni il

1:00:27resto

1:00:29R Allora devo fare la divisione tra

1:00:34questi due

1:00:35numeri divisione intera e devo prendere

1:00:40il

1:00:41resto il mio sistema questa cosa la sa

1:00:44fare elementar gentee

1:00:57se la sa fare la fa e ottiene

1:01:00direttamente il resto se lui conosce

1:01:03solo la divisione ma non ha il concetto

1:01:07di resto gli devo spiegare come

1:01:10calcolare il resto di una divisione il

1:01:14resto di una divisione intera facciamo

1:01:16l'ipotesi che lui per ora Questo lo

1:01:18sappia

1:01:19fare allora fa questa operazione nel

1:01:23modello carta e penna si significa che

1:01:26lui si mette e

1:01:28fa

1:01:30360 /

1:01:32220 fa quest'operazione

1:01:35gli viene 1 e il resto gli

1:01:40viene

1:01:42140 Allora vuol dire che nel modello

1:01:45carta e penna lui ha definito

1:01:48quest'altra variabile R che nella nostra

1:01:52accezione significa Trova un po' di Su

1:01:56questo foglio e su questo foglio ci

1:01:58scrivi il conticino che hai

1:02:01fatto quindi il mio esecutore è in grado

1:02:05di fare queste operazioni nel modello

1:02:07carta e penna ha associato una parte del

1:02:10foglio alla variabile r e qui dentro

1:02:14c'ha scritto questo valore Ho eseguito

1:02:17questa istruzione poi Qua c'è un rombo

1:02:21il rombo rappresenta una domanda il

1:02:24resto è uguale a z0

1:02:26Allora il mio

1:02:28esecutore deve essere in grado di

1:02:31rispondere a questa domanda Questo

1:02:34numero è uguale a 0 o no cioè devi avere

1:02:38il concetto di

1:02:40comparazione deve essere in grado di

1:02:43confrontare due numeri e di dare una

1:02:47risposta in questo caso la risposta

1:02:50com'è No perché non è uguale a Zer

1:02:53allora prendo questo ramo e qui è

1:02:56scritto Sostituisci X con y Che

1:03:02significa significa

1:03:04che se questo è lo spazio associato alla

1:03:08variabile X sostituire significa che

1:03:12prendo quello che c'era qua e lo vado a

1:03:14mettere qua dentro l'operazione di

1:03:17sostituzione distrugge quello che c'era

1:03:20prima e ci scrive qualche cosa di nuovo

1:03:24quindi qua ora io ci

1:03:28scrivo

1:03:31220 Questo è il

1:03:33risultato che c'è nel mio sistema dopo

1:03:37aver eseguito questa

1:03:41istruzione poi Eseguo quest'altra

1:03:44istruzione Sostituisci Y con r faccio la

1:03:49stessa cosa vado qui e in questo spazio

1:03:53vado a scrivere quello che c'era nello

1:03:57spazio corrispondente alla variabile R

1:04:00ho scritto

1:04:03140 Dopodiché ritorno qui e ripeto

1:04:07questa stessa

1:04:09operazione dividi X * Y ragazzi è la

1:04:14stessa istruzione ma sto facendo la

1:04:17stessa cosa di

1:04:18prima perché

1:04:21no sono cambi valori perché è cambiata

1:04:25la la memoria Cioè è cambiato quello che

1:04:29ci sta scritto nel modello carta e penna

1:04:32quindi è vero che io sto facendo la

1:04:34stessa istruzione però questa stessa

1:04:38istruzione non ha gli effetti di prima

1:04:41perché sono cambiati i dati sui quali

1:04:45questa operazione viene fatta allora io

1:04:49la rifaccio questa cosa Supponendo di

1:04:52essere in grado di calcolare il resto

1:04:55faccio la stessa cosa e quindi scrivo

1:04:58220 /

1:05:01140 il risultato mi viene ancora 1 e ci

1:05:07devo

1:05:08mettere

1:05:10180 come come

1:05:12valore quindi il resto mi viene

1:05:17180

1:05:1980 mi viene 80

1:05:21Scusate allora Questo è il nuovo resto

1:05:25che ottenuto Allora una volta che ho

1:05:27calcolato il resto il resto R che devo

1:05:31fare questo

1:05:33risultato me lo vado a scrivere di nuovo

1:05:36nella variabile

1:05:39r e mi chiedo di nuovo R = 0 se no

1:05:45ripeto questo blocco ragazzi ma non sto

1:05:48facendo la stessa operazione Sto

1:05:51eseguendo la stessa istruzione su dati

1:05:55diversi

1:05:56Quindi qua adesso è come se stessi

1:05:59dicendo ci scrivo

1:06:01140 qua ci scrivo

1:06:0580 e torno qui e ripeto la stessa

1:06:10operazione ragazzi girate qua dentro

1:06:14alla fine vi trovate vedete in questo

1:06:17caso io faccio

1:06:19140 / 80 verrà

1:06:2360 Poi faccio e quindi ottengo 60 e

1:06:28scusate il resto verrà 60 qua avrò 80 e

1:06:3560 Ripeto la la la mia operazione e

1:06:41quando arrivo ad avere il resto Zero

1:06:45Nella variabile Y avrò proprio il

1:06:50massimo comun divisore della mia

1:06:53operazione quindi questo giochetto qua

1:06:57ci ha permesso di far calcolare ad un

1:07:02esecutore che non sa proprio che

1:07:05significa Non ha il concetto di massimo

1:07:07comun divisore ma applicando

1:07:11ripetutamente le istruzioni che io gli

1:07:14ho dato e che comportano la sola

1:07:19esecuzione di queste istruzioni

1:07:22elementari lui è arrivato a produrre con

1:07:25come risultato il massimo comun

1:07:30divisore

1:07:32all esempi è inutile che ci stiamo a

1:07:34perdere tempo faccio un po' di

1:07:36operazioni quando arrivo che resto è

1:07:38zero ho ottenuto il massimo come un

1:07:41divisore Beh

1:07:43allora facciamo alcune

1:07:47considerazioni l'algoritmo è del tutto

1:07:49generale cioè io qua mi posso divertire

1:07:53a metterci le coppie di numeri che

1:07:56voglio lo faccio eseguire in base alla

1:08:00grandezza dei numeri lo eseguirò più e

1:08:03più volte ma alla fine produrrò lo

1:08:07stesso

1:08:09risultato quindi è generale ma in

1:08:13qualsiasi caso specifico questo

1:08:16algoritmo termina e fornirà una risposta

1:08:20precisa in un numero finito di passi eh

1:08:25ragazzi siamo sicuri di questa

1:08:28affermazione Cioè posso dire che questo

1:08:32algoritmo sicuramente

1:08:34termina questo non è l'esecutore che

1:08:37deve stabilirlo lo stabilisce il

1:08:40progettista Eh Come faccio a essere

1:08:43sicuro che questo algoritmo

1:08:52termina poiché a ogni passo io faccio

1:08:56questa sostituzione e quindi prendo un

1:09:00numero sempre più

1:09:02piccolo alla fine andando a diminuire

1:09:06questo numero arriverò Certamente al al

1:09:10risultato che

1:09:13reiterando questo percorso il resto mi

1:09:16verrà zero Quindi io sono sicuro che

1:09:18questo algoritmo in un numero finito di

1:09:21passi

1:09:23converge quanti passi Non lo so a priori

1:09:26perché perché dipende da quanto sono

1:09:29grandi i numeri metto numeri dell'ordine

1:09:32de milioni faccio centinaia di questi

1:09:34giri ma alla fine arrivo alla alla

1:09:39terminazione quindi l'algoritmo è

1:09:42generale so che avrà termine in un

1:09:45numero finito anche molto grande Ragazzi

1:09:49questo ci fa capire che se il mio

1:09:52sistema mi deve dare una risposta in un

1:09:54certo tempo e l'algoritmo che ho scelto

1:09:58è giusto converge ma ci mette centinaia

1:10:02di migliaia di di passi e io non posso

1:10:06aspettare questo tempo devo pensare ad

1:10:08un algoritmo più efficiente quindi Uno

1:10:12dei metodi che valuteremo per capire

1:10:14quanto è buono un algoritmo è il tempo

1:10:17in cui converge ma per definizione

1:10:21converge altrimenti non sarebbe un

1:10:23algoritmo

1:10:25a Ogni passo è perfettamente chiaro

1:10:28quale operazione si deve compiere e

1:10:31anche la

1:10:33decisione circa il momento in cui il

1:10:37procedimento si debba ritenere

1:10:41concluso quando questa è zero il

1:10:45procedimento è concluso a ogni passo so

1:10:49quello che devo fare e l'azione che

1:10:52Eseguo ha effetto su la mia memoria

1:10:56ragazzi nel modello carta e penna Questa

1:10:59è la mia

1:11:00memoria perché contiene i valori che io

1:11:05associo alle mie

1:11:12variabili la descrizione dell'intero

1:11:15procedimento è presentata in termini

1:11:18finiti anche se può essere applicata a

1:11:22numeri naturali di dimensioni illim

1:11:27qui Qual è l'unico limite fisico Secondo

1:11:32voi allora Uno potrebbe dire l'insieme

1:11:36dei numeri interi è

1:11:38infinito Allora io posso far crescere

1:11:41questi numeri interi fino all'infinito

1:11:44Allora mi potrei arrivare potrei fare il

1:11:47limite per per N che tende

1:11:50all'infinito dei numeri che ci

1:11:52rappresentano

1:11:58se i numeri interi sono infiniti e io

1:12:01posso prendere un numero infinitamente

1:12:03grande lo metto qua

1:12:06dentro però c'è un limite questo limite

1:12:10chi ce lo

1:12:21dà ragazzi ce lo dà il fatto che Noi

1:12:25stiamo utilizzando un

1:12:28modello mentre i numeri interi sono

1:12:31infiniti i numeri interi che

1:12:34rappresentiamo qua dentro sono infiniti

1:12:36No E perché non sono infiniti non sono

1:12:40infiniti perché la memoria che noi

1:12:42utilizziamo qui dentro è una memoria

1:12:45finita

1:12:48Allora io la posso fare grande quanto

1:12:52voglio dato che un programma per essere

1:12:55eseguito deve stare in memoria centrale

1:12:57Allora uno dice va bene io prendo e

1:13:00metto i registri mi prendo un computer

1:13:03che c'ha 32 GB di memoria RAM io ne

1:13:07prendo un altro che ce ne 64 ma per

1:13:11quanto lo faccio grande a un certo punto

1:13:13il numero di registro finisce e quindi

1:13:17la memoria a disposizione finisce allora

1:13:20vi farò vedere Come si rappresentano i

1:13:24numeri interi nei registri e capirete

1:13:27che vi do uno spazio di una certa

1:13:31dimensione per memorizzare i numeri

1:13:35interi bene allora vuol dire che

1:13:39l'insieme

1:13:41astratto l'insieme matematico dei numeri

1:13:44interi è infinito ma l'insieme dei

1:13:47numeri interi che può essere

1:13:49rappresentato su questo calcolatore va

1:13:52da - X a + y

1:13:56ora se io applico questo algoritmo

1:14:00all'insieme dei numeri interi positivi

1:14:03che posso rappresentare è limitato da

1:14:05che dal numero intero più grande che

1:14:08posso mettere qua dentro Allora allora

1:14:11per quanto grande l'algoritmo converge

1:14:15perché in un numero finito di passi

1:14:18arrivo a a convergenza quanti passi

1:14:22tantissimi se il numero intero che posso

1:14:24rappresentare qua dentro è molto grande

1:14:26ma comunque

1:14:30finiti il procedimento descritto assume

1:14:33che sia noto come eseguire particolari

1:14:37operazioni quali il calcolo del resto

1:14:40della divisione interra tra due numeri

1:14:42naturali e se così non

1:14:47fosse cambia qualcosa in quello che ho

1:14:50scritto qua diventa meno vero supponete

1:14:54che io questa questa cosa non la so fare

1:14:56quello che ho scritto è tutto

1:15:00sbagliato Questo non è più un

1:15:10programma ragazzi se non lo so fare Vuol

1:15:14dire che questo blocchetto non è

1:15:17un'operazione

1:15:19elementare Allora questo che sta scritto

1:15:23qua deve diventare a sua volta un

1:15:32programma sto scrivendo l'algoritmo per

1:15:36calcolare il resto intero della

1:15:39divisione tra due

1:15:42numeri Come faccio considera due numeri

1:15:45m e n m è magiore di N m è min di n no

1:15:51allora Sostituisci m con N - m

1:15:55ora n è sempre Tale e quale ma m di

1:15:58volta in volta cambia Gira gira gira a

1:16:01un certo punto non è più vero che m è di

1:16:05n nella variabile m mi compare il resto

1:16:09intero di questa divisione per esempio

1:16:1267 20 faccio 67 - 20 47 e lo metto carta

1:16:19e penna nell'area di memoria associata

1:16:21alla variabile m m più grande m è più

1:16:25piccolo di n no allora faccio ancora 27

1:16:28e più piccolo no 7 che cosa mi rimane mi

1:16:33rimane 7 che il resto intero della

1:16:36divisione Infatti se io faccio 3 * 20 Fa

1:16:4060 a 67 vi ripare 7 Allora se il mio

1:16:44esecutore questa cosa non la sa fare io

1:16:48gli dico io come

1:16:50farla ma quello che voglio dire è che la

1:16:55validità di quello che ho scritto prima

1:16:58rimane esattamente

1:17:01identica e

1:17:04quindi abbiamo messo i pezzi tutti

1:17:08insieme

1:17:11allora adesso questo rappresenta

1:17:15l'algoritmo completo per fare questa

1:17:19operazione che c'era richiesta del

1:17:22taglio della barnetta cioè

1:17:25ho acquisito i valori di A e B Le

1:17:28dimensioni della mia marmetta ho

1:17:31calcolato il massimo comun divisore di a

1:17:35e di B e l'ho scritto nella variabile C

1:17:38ragazzi guardate a questo livello se il

1:17:41mio esecutore sa fare il massimo come un

1:17:44divisore Il programma è finito

1:17:47qui C è = a 1 Sì allora non puoi fare il

1:17:51taglio Perché i numeri sono primi tra

1:17:53loro no comunica che il taglio devi fare

1:17:56con la grandezza C Il programma è finito

1:18:00qua Ma se il mio esecutore il massimo

1:18:03comun divisore non lo sa fare allora

1:18:05questo blocchetto si esplode e qua ti

1:18:08sto dando l'algoritmo per calcolare il

1:18:12massimo comun divisore vedete in questo

1:18:15algoritmo il ruolo della variabile a è

1:18:18svolto dalla variabile X il ruolo della

1:18:21variabile B è svolto dalla variabile Y

1:18:25il massimo com un divisore è Y che sarà

1:18:29memorizzato nella variabile

1:18:31C carta e penna quando ho fatto questa

1:18:34operazione il dato che mi viene

1:18:36restituito lo vado a scrivere nella

1:18:38variabile c e vado avanti nel mio

1:18:43algoritmo nello scrivere questo

1:18:46algoritmo io so calcolare il Rest intero

1:18:49Se è un'operazione elementare mi fermo

1:18:52qua se non è elementare Stivo

1:18:55l'algoritmo per fare questo il programma

1:18:58completo è quello che al posto di questo

1:19:01blocco sta tutta questa parte qua e al

1:19:04posto di questo blocco c'ho tutta questa

1:19:06parte

1:19:08qui

1:19:12allora questo schema si presta anche ad

1:19:15un'ulteriore

1:19:18interpretazione in pratica quello che io

1:19:20sto dicendo è

1:19:22questo guarda che ha un livello molto

1:19:27semplice Questa è la sequenza di

1:19:29operazioni che devi

1:19:31fare cioè ho diviso in macro blocchi e

1:19:37ho indicato in ciascun blocco Che cosa

1:19:39devo

1:19:40fare in pratica per risolvere un

1:19:43problema complesso l'ho decomposto in

1:19:48sottoproblemi più

1:19:51semplici ciascun sottopra

1:19:55può essere elementar eseguito come in

1:19:59questo caso qua o come in questo caso

1:20:02qua acquisisci valori è un'operazione

1:20:05elementare significa Vai carta e penna e

1:20:09scrivi le dimensioni nell'area del

1:20:12foglio di carta Associata a quella

1:20:16variabile questa operazione qua è

1:20:19un'operazione non elemente

1:20:23eseguibile ora nella mia decomposizione

1:20:27questo problema che per quanto è più

1:20:31semplice del problema di partenza perché

1:20:33il problema di partenza è Dimmi se posso

1:20:36tagliare o no queste marmette ora il

1:20:39problema di partenza l'ho decomposto in

1:20:42sottoproblemi più semplici Questo è uno

1:20:45di questi sottoproblemi Ma questo

1:20:48sottopra se non è elementare lo vado a

1:20:52sua volta a decomporre in sotto problemi

1:20:55più semplici Prendi i numeri dividi

1:20:59Ottieni il resto intero della divisione

1:21:01eccetera

1:21:03Questo

1:21:05problema quindi questo problema qui l'ho

1:21:09decomposto in sottoproblemi più semplici

1:21:11a sua volta questo sottopra qua lo so

1:21:15eseguire Se sì lo Eseguo se no lo

1:21:19decompongono

1:21:22più semplici

1:21:25questo approccio si dice un approccio

1:21:28top down stepwise refinement cioè

1:21:33dall'alto verso il basso per

1:21:36raffinamenti

1:21:38successivi l'idea è dec compongo il

1:21:42problema in tanti sottoproblemi più

1:21:45semplici Ognuno di questi in altri

1:21:47sottoproblemi ancora più semplici fin

1:21:50quando non arriva ad avere tutti i

1:21:52problemi elementar

1:21:55eseguibili Cioè che il mio esecutore è

1:21:58in grado di

1:22:00eseguire a questo punto gli dico Esegui

1:22:05e trovami la soluzione del mio problema

1:22:10quindi in questo esempio avete un'idea

1:22:14più generale di quello che noi faremo

1:22:16per ogni

1:22:18problema proveremo a decomporre un

1:22:21problema complesso in sotto problemi più

1:22:23semp

1:22:25Ognuno di questi sarà ulteriormente

1:22:27decomposto finché non arriviamo ad avere

1:22:30tutte operazioni elementar gentee

1:22:34eseguibili a quel punto il nostro lavoro

1:22:37di progettista è finito e passiamo a

1:22:42Codificare Cioè a esprimere tutto quello

1:22:47che sta scritto qua in un linguaggio che

1:22:51il nostro processore che è ore materiale

1:22:55sia in grado di

1:22:58capire e poi vedremo piano piano

1:23:01come fare queste cose come utilizzare

1:23:04questo

1:23:07linguaggio Allora una volta che siamo

1:23:10arrivati a scrivere quel blocco di

1:23:13operazioni che abbiamo visto

1:23:15prima dicevamo chi esegue queste

1:23:19operazioni le

1:23:21operazioni devono essere eseguite da un

1:23:25esecutore che deve essere in grado di

1:23:28interpretare la sequenza di comandi

1:23:31eseguire ognuno dei comandi

1:23:34forniti memorizzare le

1:23:37informazioni su opportuni supporti che

1:23:41permettono di accedere alle informazioni

1:23:44memorizzate e

1:23:46modificarle Ragazzi quando abbiamo

1:23:48scritto questa cosa Io ho preso carta e

1:23:52penna a ogni ogni numeretto Ho associato

1:23:57Scusate a ogni variabile Ho associato un

1:24:00valore

1:24:02numerico sono stato in grado di

1:24:06ritrovarlo cioè quando c'era

1:24:09l'istruzione Sostituisci X con y Io sono

1:24:13stato capace di tornare sul foglio di

1:24:15carta di individuare qual era l'area di

1:24:19memoria associata alla variabile X di

1:24:22scriverci qualche cosa sopra

1:24:26quindi deve memorizzare le informazioni

1:24:30su supporti che permettono di accedere e

1:24:34di

1:24:35modificarle cioè torno qui

1:24:41sopra

1:24:43l'esecutore non è necessariamente

1:24:45consapevole di quello che sta facendo

1:24:48Cioè mentre Sto eseguendo questa roba

1:24:51qua io esecutore non non so affatto

1:24:55quello che sto facendo tu mi dici di

1:24:57sostituire e io sostituisco mi dici di

1:25:00confrontare e io confronto ma non ho

1:25:02proprio idea che tutto questo serva a

1:25:05calcolare il taglio cioè l'esecutore è

1:25:09uno ragazzi l'esecutore è per

1:25:13definizione

1:25:24È un comando lo fa punto e

1:25:27basta tant'è che questi linguaggi in

1:25:31questa forma vengono detti linguaggi di

1:25:34tipo

1:25:35imperativo cioè il linguaggio contiene

1:25:39istruzioni che sono comandi che il

1:25:42nostro esecutore esegue

1:25:46punto

1:25:48allora se l'esecutore fosse un esecutore

1:25:52umano

1:25:56tutto questo sistema di che cosa avrebbe

1:25:59bisogno

1:26:00allora abbiamo un bel foglio di

1:26:04carta dove ci stanno scritte le

1:26:06istruzioni ragazzi una volta che tutto

1:26:10questo è stato scritto ora lo vedete in

1:26:13forma esplosa Ma questo sarà un

1:26:16bell'elenco della spesa con tutte le

1:26:18istruzioni che l'esecutore deve fare

1:26:21Allora il nostro esecutore

1:26:25per eseguire il programma che fa

1:26:28comincia a eseguire le istruzioni

1:26:31esattamente Nell'ordine in cui stanno

1:26:34scritte qua

1:26:36sopra quindi

1:26:38lui nella parte di controllo che cosa fa

1:26:43va sul foglio di carta legge

1:26:46l'istruzione

1:26:47la

1:26:49interpreta e la esegue ma per seguire

1:26:54questa

1:26:55istruzione va sul foglio di

1:26:59carta Dove stanno scritte le

1:27:01informazioni accede in queste a queste

1:27:04informazioni e le esegue per esempio se

1:27:09qui ci fosse scritto Sostituisci X con y

1:27:14Allora il mio esecutore umano prima va

1:27:18sul foglio di carta e legge l'istruzione

1:27:20la interpreta se capisce che deve fare

1:27:24ma per

1:27:25eseguirla va in memoria cioè sul foglio

1:27:30di carta prende accede ai dati e esegue

1:27:36quello che è scritto in questa

1:27:38istruzione se l'istruzione

1:27:42fosse

1:27:45fai x è UG A a +

1:27:49B lui che farebbe supponete che ha

1:27:54trovato scritto questa istruzione

1:27:57qua x è uguale

1:28:02a y +

1:28:07z Allora per eseguire questa istruzione

1:28:11che dovrebbe

1:28:14fare Innanzitutto

1:28:17dovrebbe aver scritto sul foglio di

1:28:20carta

1:28:22Guarda qua ci metto il valore della

1:28:25variabile X qua ci metto il valore della

1:28:29variabile Y qua ci metto il valore della

1:28:32variabile

1:28:33Z e supponete che qua ci sta

1:28:37scritto 5 e qua ci sta scritto

1:28:418 allora lui quando deve eseguire questa

1:28:44operazione va in

1:28:47memoria dove c'è la variabile Y cioè sul

1:28:50foglio di carta e legge questo valore lo

1:28:54e lo

1:28:55scrive sulla calcolatrice da

1:28:59tavola poi sa che deve fare una somma va

1:29:03in memoria dove ci sta scritto la

1:29:05variabile Z prende questo numeretto e lo

1:29:08mette scrive più e qua C scrive il

1:29:11secondo numeretto scrive uguale E qua mi

1:29:15compare il

1:29:17risultato mi compare 13 poiché ci sta

1:29:20scritto questa roba qua vuol dire che

1:29:24la variabile X deve assumere il valore

1:29:28ottenuto sommando questa roba qua quindi

1:29:32lui va sul foglio di carta nello spazio

1:29:35che compete alla variabile x e ci scrive

1:29:4013 Ho eseguito questa operazione quando

1:29:45ho eseguito questa torno qui dentro

1:29:49prendo quella che viene dopo la Eseguo e

1:29:52ripeto così fino alla

1:29:55fine Allora ragazzi Questa roba è una

1:29:59roba che per voi ha senso anche da un

1:30:01punto di vista

1:30:02matematico questa la potreste

1:30:04interpretare come un'equazione

1:30:07e qua è

1:30:10scritto per esempio Calcola questa

1:30:14espressione E qual è il valore della

1:30:18variabile X che soddisfa questa

1:30:21espressione se qua è scritto C 8 il

1:30:25valore della variabile X che soddisfa

1:30:28questa questa equazione è il valore

1:30:3213

1:30:34perché

1:30:35nel nel calcolo aritmetico nel quale voi

1:30:40usate i letterali ed usate Le costanti

1:30:44simboliche o Le costanti numeriche il

1:30:47letterale ha il

1:30:49senso del valore reale che soddisfa Quel

1:30:55determinato

1:30:57vincolo E se io vi scrivo

1:31:07così questa roba

1:31:19senso questa roba che sta scritta qua x

1:31:23= x + Z ha senso dal punto di vista

1:31:29matematico Qual è l'unico valore che

1:31:31soddisfa questa

1:31:35equazione perché nel senso della da un

1:31:40punto di vista proprio

1:31:41algebrico qui è

1:31:44scritto trova il valore della variabile

1:31:48X che soddisfa questo ma chiaramente

1:31:54che sia il valore di Z qua C'è un'unica

1:31:57soluzione che soddisfa questa equazione

1:32:00e il valore x = 0 e dal punto di vista

1:32:03informatico questa roba ha

1:32:11senso allora qui che cosa è scritto qui

1:32:15c'è l'operatore uguale l'operatore

1:32:18uguale nella nel linguaggio che ci siamo

1:32:21definiti prima significa

1:32:25Sostituisci alla variabile X il valore

1:32:29di questa

1:32:30espressione Allora il mio esecutore che

1:32:33fa va in memoria dove c'è la variabile X

1:32:36che ci sta scritto 13 prende 13 e lo

1:32:39mette nella macchinetta

1:32:41calcolatrice deve fare una somma va in

1:32:44memoria alla variabile Z il foglio di

1:32:47carta della variabile Z Qua ci sta

1:32:49scritto 8 prendi 8 e mettilo qua dentro

1:32:53fai la somma ottieni 13 vai in

1:32:58memoria nella parte di memoria che

1:33:01corrisponde alla variabile x e ci scrivi

1:33:04questo valore

1:33:0613 Scusate Qua ho scritto 13 13 + 8 fa

1:33:1421 qua ci scrivi

1:33:1721 quindi questa operazione non ha senso

1:33:22dal punto di vista algeb

1:33:24ma ha senso dal punto di vista delle

1:33:28istruzioni date in un programma di

1:33:31calcolo perché questa istruzione ha il

1:33:34senso l'operatore di assegnazione che è

1:33:38l'uguale significa vai in memoria

1:33:43all'indirizzo di questa variabile e

1:33:47metti il valore che hai calcolato da

1:33:50questa parte qui allora ragazzi qual è

1:33:53il TR TR Il trucco è che in un

1:33:56linguaggio di programmazione a ogni

1:33:59letterale sono associate due

1:34:03informazioni un'informazione è

1:34:06l'indirizzo di memoria Dove si trova

1:34:09quel dato l'altra informazione è il

1:34:12valore che è scritto in memoria a

1:34:15quell'indirizzo

1:34:18quindi una variabile in un linguaggio di

1:34:22programmazione ha un senso duplice

1:34:26rappresenta sia l'indirizzo di

1:34:29memoria sia il valore che è contenuto In

1:34:33quella variabile Allora quando ci

1:34:36troviamo nella parte destra di un

1:34:39operatore di assegnazione della

1:34:41variabile ne andiamo a prendere il

1:34:44valore e lo usiamo per fare i conti

1:34:48quando una variabile si trova nella

1:34:50parte sinistra invece si interpreta come

1:34:54l'indirizzo di memoria dove andare a

1:34:57scrivere il valore che è stato

1:35:07calcolato ragazzi Questa Robba

1:35:22senso sta roba veramente è priva di

1:35:25significato perché qua C'è

1:35:27un'espressione che è un valore numerico

1:35:29che ho calcolato Ma questa espressione

1:35:32dovrei andarla a mettere a un indirizzo

1:35:34ma qua c'è un altro valore numerico

1:35:36questa roba Non ha senso allora Voi

1:35:39potrete sempre trovare questa è

1:35:42un'istruzione che si chiama di calcolo e

1:35:46assegnazione le variabili le potete

1:35:49sempre trovare da questa parte qui nella

1:35:52parte destra ma nel nella parte sinistra

1:35:55troverete sempre ed esclusivamente una e

1:35:58una sola variabile perché in questo caso

1:36:02della variabile mi interessa la parte

1:36:05che rappresenta l'indirizzo dove

1:36:08quell'informazione dovrà essere

1:36:11memorizzata bene allora questo è quello

1:36:16che fa un esecutore

1:36:19umano domani ci occuperemo di vedere

1:36:24quello che fa per eseguire questa nota

1:36:27un

1:36:28esecutore va bene ragazzi

Recently added transcripts

Browse the whole transcript library

This transcript was generated from the captions YouTube publishes for this video. Get the transcript of any YouTube video atfreeyoutubetranscribe.com, free, unlimited, no sign-up.