Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Introduzione all'informatica: Bit, architettura hardware, problem solving e algoritmi, Slide di Informatica

Una panoramica introduttiva sull'informatica, spiegando il concetto di bit, l'unità di misura dell'informazione in informatica, e la sua relazione con il sistema binario dei computer. Inoltre, viene esplorata l'architettura hardware di un calcolatore reale, la sua complessità e la sua evoluzione generazione per generazione. Vengono inoltre presentati i concetti di problem solving, algoritmi e la loro importanza per risolvere problemi complessi. Una panoramica del processo mentale che sta alla base della formulazione dei problemi e delle soluzioni, e delle strategie per risolvere problemi complessi. Inoltre, viene spiegato come definire e trovare le soluzioni a problemi complessi utilizzando metodi formali come l'analogia, il procedimento vs soluzione e la descrizione di algoritmi.

Tipologia: Slide

2023/2024

Caricato il 13/02/2024

gertrude-3
gertrude-3 🇮🇹

4

(2)

102 documenti

1 / 15

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
LEZIONE 8
24/10/2023
Il computer
Un computer è un dispositivo elettronico in grado
elaborare informazioni ad alta velocità e
di ricevere, trasmettere, immagazzinare ed
con precisione.
Evoluzione Hardware
I primi computer funzionavano a valvole
Alla fine degli anni 40: Invenzione dei transistor (Bell Laboratories)
Legge di Moore: la complessità dei microcircuiti (per es., misurata dal numero di transistor
per chip o per area unitaria) raddoppia periodicamente, con un periodo originariamente
previsto in 12 mesi, allungato a 2 anni verso la fine degli anni Settanta e dall’inizio degli anni
Ottanta assestatosi sui 18 mesi.
Con la miniaturizzazione delle componenti si verifica la
produzione ed il successo commerciale dei Personal Computer
Il bit
In informatica il bit (binary digit) è una unità di misura
dell'informazione
Un bit può contenere i due simboli del sistema binario: zero (0) e uno (1)
Il sistema binario è la “lingua” dei computer, perché?
Vi è stretta correlazione tra i valori 1 e 0 ed il concetto di circuito acceso e spento
Unità di misura
L’unità di misura della memoria è il Byte 1
Byte è formato da 8 bit
2 Byte (16 bit) = word*
4 Byte (32 bit) = double word* 8
Byte (64 bit) = quad word*
*i valori riportati sono indicativi e fanno riferimento ad una architettura in cui una word è
uguale a 2 Byte (storicamente: è così definita in ambiente Windows).
Hardware
Termine utilizzato per definire la parte fisica di un
computer, ovvero l’insieme delle componenti che ne
permettono il funzionamento
Letteralmente “ferramenta”
...perché!?
Hardware
L’architettura hardware di un calcolatore reale è
molto complessa, varia da prodotto a prodotto e
di generazione tecnologica in generazione
tecnologica
Abbiamo utilizzato l’architettura di Von Neumann come
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff

Anteprima parziale del testo

Scarica Introduzione all'informatica: Bit, architettura hardware, problem solving e algoritmi e più Slide in PDF di Informatica solo su Docsity!

LEZIONE 8

Il computer Un computer è un dispositivo elettronico in grado elaborare informazioni ad alta velocità e di ricevere, trasmettere, immagazzinare ed con precisione. Evoluzione Hardware I primi computer funzionavano a valvole Alla fine degli anni 40: Invenzione dei transistor (Bell Laboratories) Legge di Moore: la complessità dei microcircuiti (per es., misurata dal numero di transistor per chip o per area unitaria) raddoppia periodicamente, con un periodo originariamente previsto in 12 mesi, allungato a 2 anni verso la fine degli anni Settanta e dall’inizio degli anni Ottanta assestatosi sui 18 mesi. Con la miniaturizzazione delle componenti si verifica la produzione ed il successo commerciale dei Personal Computer Il bit In informatica il bit (binary digit) è una unità di misura dell'informazione ● Un bit può contenere i due simboli del sistema binario: zero (0) e uno (1) Il sistema binario è la “lingua” dei computer, perché? ● Vi è stretta correlazione tra i valori 1 e 0 ed il concetto di circuito acceso e spento Unità di misura L’unità di misura della memoria è il Byte 1 Byte è formato da 8 bit 2 Byte (16 bit) = word* 4 Byte (32 bit) = double word* 8 Byte (64 bit) = quad word* *i valori riportati sono indicativi e fanno riferimento ad una architettura in cui una word è uguale a 2 Byte (storicamente: è così definita in ambiente Windows). Hardware Termine utilizzato per definire la parte fisica di un computer, ovvero l’insieme delle componenti che ne permettono il funzionamento Letteralmente “ferramenta” ...perché!? Hardware L’architettura hardware di un calcolatore reale è molto complessa, varia da prodotto a prodotto e di generazione tecnologica in generazione tecnologica Abbiamo utilizzato l’architettura di Von Neumann come

modello semplificato di un moderno calcolatore Architettura di von Neumann 2 CPU Central Processing Unit – CU Control Unit: controllo del flusso di istruzioni

  • ALU Arithmetic/Logic Unit: Esecuzione delle istruzioni aritmetiche e logiche
  • Registri: memoria locale
  • Trasferimento delle funzioni da un componente all’altro Memory Unit
  • Conserva i dati ed i programmi codificati Dispositivi di input
  • I calcolatori hanno tipicamente il compito di rispondere ad un domanda, la domanda arriva dall’input... Dispositivi di output
  • … l a r i s p o s t a v i e n e p r e s e n t a t a n e l l ’ o u t p u t E le freccette nello schema?
  • Si chiamano BUS: sono i componenti dedicati al trasferimento dei dati e delle informazioni di controllo tra le varie componenti dell’elaboratore Clock La sincronizzazione delle operazioni svolte dai vari elementi è affidata ad un “orologio” comune chiamato Clock La frequenza del clock è misurata in Hertz (Hz) e determina il numero di attività elementari che la CPU è in grado di eseguire nell’unità di tempo Pertanto affermare che un’unità di elaborazione è di 1,3 Ghz significa affermare che il processore è in grado di eseguire 1.300.000.000 operazioni elementari (cicli) al secondo Parliamo di memorie In un calcolatore esistono diverse memorie: Registri del processore (qualche KB) Cache (da 32 a 1024 KB) Memoria principale o RAM (Random Access Memory) (diversi GB) Dischi Fissi (da centinaia di GB a qualche TB) ...perché? Memorie 2 Il tempo di accesso è in relazione con la dimensione della memoria: Si stima, con forte approssimazione, che la velocità di accesso alla memoria vada circa come la radice quadrata della dimensione. Affinché il processore venga approvvigionato con sufficiente velocità deve avvalersi dei registri, residenti nella cpu stessa, con capacità di memorizzazione molto piccola e con velocità di accesso molto alta. Nota: Cache memory In informatica è una memoria veloce relativamente piccola che memorizza i dati più recentemente usati, ovvero viene utilizzata per recuperare velocemente dati e programmi che si prevede debbano essere utilizzati nel breve termine.

Architettura Software Un computer è un dispositivo in grado di dare risposte rapide e corrette? NO , di conseguenza un computer è un dispositivo POTENZIALMENTE in grado di dare risposte rapide e corrette Potenzialmente? Affinché un computer possa garantire una risposta rapida e precisa ad un problema è necessario che: ● stia eseguendo un programma scritto da un bravo programmatore ● il programma sia eseguito da un bravo utente DAL PROBLEM SOLVING AGLI ALGORITMI Problemi e Calcolatori 1 Abbiamo visto come i calcolatori sono stati sviluppati per svolgere calcoli al fine di risolvere Abbiamo visto che il vantaggio nell’utilizzo di un calcolatore risiede nella sua capacità di eseguire operazioni elementari molto velocemente Ogni calcolatore è in grado di comprendere ed eseguire un limitato e specifico insieme di istruzioni In sintesi (Elaborazione) Con i COMPUTER, le macchine diventano strumenti per risolvere problemi basati sulle informazioni

  1. Abbiamo bisogno di codificare e memorizzare opportunamente dati e informazioni 2. Abbiamo bisogno di impartire le giuste istruzioni (programmi o software) per risolvere correttamente i problemi
  2. Abbiamo bisogno di dotare queste macchine di una logica di funzionamento in grado di interpretare le nostre istruzioni ed eseguirle sui dati forniti

Cos'è il pensiero computazionale? “Il processo mentale che sta alla base della formulazione dei problemi e delle soluzioni così che le soluzioni siano rappresentate in una forma che può essere implementata in maniera efficace da un elaboratore di informazioni sia esso umano o artificiale.” [Dott.ssa Jeannette Wing ] Il problem solving Il problem solving (soluzione di problemi) è l’insieme dei metodi formali per definire e trovare le soluzioni a problemi più o meno complessi, in diversi ambiti e situazioni. Il problem solving non è soltanto un metodo usato dall’uomo per risolvere tutti i tipi di problemi (economici, statistici, giuridici, etc.) ma anche una tecnica utilizzata per sviluppare il software. Tecniche di problem solving Divide and Conquer (divide et impera)

  • Scompongo il problema iniziale in sotto problemi più semplici, continuo la suddivisione dei sotto-problemi fino a che non arrivo a problemi elementari Analogia
  • Scompongo il problema iniziale in sotto problemi più semplici, continuo la suddivisione dei sotto-problemi fino a che non arrivo a problemi elementari Divide et impera Come si calcola l’area di una campana? Scompongo il problema iniziale in sotto problemi più semplici, continuo la suddivisione dei sotto- problemi fino a che non arrivo a problemi elementari ovvero di cui riesco trovare facilmente la soluzione Analogia Si basa sull’idea che soluzioni già apprese possono essere applicate a problemi nuovi E’ necessario che: ● le soluzioni già apprese possano essere oggettivamente applicabili alla nuova situazione ● l’analogia debba essere riconosciuta come rilevante per il problema che si sta considerando ● la soluzione nota venga modificata per il problema attuale Procedimento vs soluzione Nel problem solving, dato un problema generico, l’obiettivo è quello di identificare un procedimento applicabile per trovare una soluzione e non quello di ottenere la soluzione di una particolare istanza di quel problema La soluzione non è il risultato prodotto dall’esecuzione di un procedimento (programma) ma è il procedimento (programma) stesso

Definizione di algoritmo L'algoritmo è una strategia che serve per risolvere un problema ed è costituito da una sequenza finita di operazioni (dette anche istruzioni ), consente di risolvere tutti i quesiti di una stessa classe. Esso deve essere:

  • finito , cioè quando è costituito da un numero finito di istruzioni e presenta una fine;
  • deterministico , cioè quando partendo dai dati di input, si ottengono i medesimi risultati;
  • non ambiguo , le operazioni devono poter essere interpretate nello stesso modo da tutti anche se l'esecutore è differente;
  • generale , cioè quando la soluzione è uguale per tutti i problemi della medesima classe. Una ricetta non è sempre un algoritmo Di solito fra gli ingredienti vi sono espressioni ambigue come “un pizzico di sale” o “quanto basta” quindi azioni lasciate alla soggettività. I procedimenti di risoluzione visti negli esempi precedenti, come quello delle ricette, hanno i seguenti inconvenienti ● Violazione del principio di determinismo : la descrizione delle azioni non sono rigorose e devono essere interpretate (“fare un impasto base per torte”, “temperare il cioccolato”), ● Violazione del principio di ripetitività : ripetendo più volte la stessa azione, dallo stesso esecutore, non è detto che si ottengo gli stessi risultati. Questo dipende dal fatto che le azioni elementari sono ambigue e non univocamente interpretabili. Noi siamo interessati a procedimenti risolutivi DETERMINISTICI ossia che producono lo stesso risultato a partire dagli stessi dati, tutte le volte che vengono eseguiti. Rappresentazione di Algoritmi Possiamo descrivere gli algoritmi in tre modi: Descrizione di alto livello: Descrivere un algoritmo ignorando i dettagli dell’implementazione Non dobbiamo preoccuparci di come funzionano le macchine Implementazione: Definisce come farebbe la macchina ad eseguire l’algoritmo, come leggere i dati e calcolare il risultato Descrizione formale: E’ la descrizione più dettagliata e vicina alla macchina Astrazione alta Nella rappresentazione di un algoritmo utilizzare un alto livello di astrazione significa scegliere una descrizione intuitiva per le persone, questo offre alcuni vantaggi e svantaggi: Pro: ● Intuitivo per le persone ● Ovvia correttezza dell’algoritmo ● Utile per schematizzare Contro: ● Non si affrontano problemi tecnici ● In generale non piace (si tendono a mascherare eccessivamente possibili problemi implementativi) ● Se è troppo astratto potrebbero esserci complicazioni

Bassa astrazione Scegliere un basso di livello di astrazione porta a problematiche invertite: vengono sacrificate intuitività e facilità di realizzazione per favorire la successiva traduzione in programma ELEMENTI BASE PER LA FORMALIZZAZIONE DI UN ALGORITMO Algoritmi: elementi base Possiamo pensare agli elementi base che consentono la rappresentazione di algoritmi come ai mattoncini di un set di costruzione Lego Ogni mattoncino ha una propria funzione specifica (porta, finestra) e vengono composti per ottenere la costruzione desiderata Le variabili 1/ Un elemento fondamentale sono le variabili Gli algoritmi operano principalmente su variabili che conterranno i dati sui quali si vuole svolgere una determinata elaborazione I valori da elaborare devono essere assegnati alle variabili prima di effettuare l’elaborazione Ogni variabile è identificata da un nome che permette di distinguerla dalle altre, indipendentemente dal valore contenuto Le variabili 2/ Sono contenitori Occorre stabilire che tipo di «contenuto» possono contenere Il tipo di contenuto è fisso Il loro contenuto può variare Le variabili contengono dati Il «senso» che le fa diventare informazioni si aggiunge con la programmazione... Le variabili 3/ Concettualmente, le variabili sono come pezzi di carta su cui si possono annotare/modificare i valori di un calcolo che si sta facendo Ogni variabile ha un nome mnemonico, che si usa nel programma per riferirsi alla var. stessa. Una variabile contiene un valore che può essere modificato a piacimento Durante l’esecuzione di un programma, il sistema operativo mantiene una associazione tra il nome di ogni var. e l’indirizzo della cella di memoria in cui è memorizzato il suo valore Quindi una variabile è semplicemente un'astrazione della cella di memoria fisica. Le variabili 4/ Lo stesso programma (o algoritmo), eseguito con variabili di valore diverso da risultati diversi. Lo stesso programma si adatta cioè alle esigenze del momento, senza dover essere riscritto

Scrivi “Non posso eseguire la divisione “ Fine Cosa fa questo algoritmo? E’ un semplice algoritmo per eseguire la divisione tra due numeri, ma includono anche la gestione di un caso particolare in cui il divisore è uguale a zero. Interpretazione dell'algoritmo Leggi il valore di Dividendo : In questa fase, il programma chiede all'utente di inserire un valore, che sarà il dividendo. Il dividendo è il numero da cui si desidera eseguire la divisione. Leggi il valore di Divisore : Il programma chiede all'utente di inserire un secondo valore, che sarà il divisore. Il divisore è il numero per il quale si desidera dividere il dividendo. Se il Divisore è maggiore di 0 allora : Questa è una dichiarazione condizionale che verifica se il divisore è maggiore di zero. Se questa condizione è vera (il divisore è positivo), il programma eseguirà le istruzioni all'interno di questo blocco. Assegna a Quoziente il valore Dividendo / Divisore : In questo passaggio, il programma calcola il quoziente, cioè il risultato della divisione tra il dividendo e il divisore. Il risultato viene memorizzato nella variabile "Quoziente". Scrivi Quoziente : Il programma mostra il valore del quoziente sullo schermo. Altrimenti : Questa parte della dichiarazione condizionale gestisce il caso in cui il divisore è uguale a zero. In tal caso, il programma eseguirà le istruzioni all'interno di questo blocco. Scrivi "Non posso eseguire la divisione": Se il divisore è zero, il programma mostra un messaggio che indica che non è possibile eseguire la divisione poiché la divisione per zero non è definita. Fine: Questa è una dichiarazione che indica la fine del programma o dell'algoritmo. Esempio: Iterazione Supponiamo (per esempio) di voler calcolare il quadrato di una serie di numeri positivi Leggi il valore di Numero Finché Numero > 0 Assegna a Quadrato il valore Numero * Numero Scrivi Quadrato Leggi il valore di Numero Fine Programmazione strutturata L’utilizzo di questi elementi nella rappresentazione di un algoritmo è detto programmazione strutturata La Programmazione strutturata fornisce, a partire dagli anni 60 le regole per la scrittura di algoritmi, ovvero le indicazioni appena viste Formalizzazione della soluzione La differenza tra una soluzione informale e una formale sta nel modo di rappresentare un algoritmo:

  • Informale: descrizione a parole
  • Formale: descrizione in termini di sequenza di operazioni elementari

Sono disponibili numerosi strumenti per rappresentare una soluzione in modo formale, i più utilizzati sono:

  • diagrammi di flusso (grafico)
  • pseudo-codice (testo) Formalizzazione della soluzione Pseudocodice
  • Vantaggi Immediato
  • Svantaggi Meno astratto Interpretazione più complicata Diagrammi di flusso
  • Vantaggi Più intuitivi perché grafici Più astratti
  • Svantaggi Richiedono apprendimento della funzione dei vari tipi di blocco **Diagrammi di flusso (flow-chart) Sono strumenti grafici che rappresentano l’evoluzione logica della risoluzione del problema Sono composti da:
  • blocchi elementari per descrivere azioni e decisioni (esclusivamente di tipo binario)
  • archi orientati per collegare i vari blocchi e per descrivere la sequenza di svolgimento delle azioni Diagrammi di flusso strutturati** Un diagramma di flusso è strutturato se contiene solo un insieme predefinito delle seguenti strutture elementari: uno ed uno solo blocco START uno ed uno solo blocco STOP blocchi di azione e/o di input-output blocchi di tipo IF - THEN - ( ELSE ) blocchi di tipo WHILE - DO blocchi di tipo REPEAT - UNTIL Teorema di Böhm - Jacopini Qualunque diagramma di flusso è sempre trasformabile in un diagramma di flusso strutturato equivalente a quello dato. In altre parole, qualunque flusso logico può essere realizzato utilizzando solamente le due strutture di controllo:
  • meccanismo di decisione binaria (if-then – else)
  • meccanismo di ripetizione (loop) (do while / repeat – until) insieme ai blocchi di azione e di input/output

Divisione

Calcola il quadrato del numero in input, termina inserendo un numero uguale o minore di zero