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: Algoritmi, Programmazione e Linguaggi - Prof. Fogli, Appunti di Elementi di Informatica

Un'introduzione chiara e concisa all'informatica, esplorando concetti fondamentali come algoritmi, programmazione e linguaggi di programmazione. Vengono presentate definizioni chiave, esempi pratici e una panoramica delle applicazioni dell'informatica in vari settori, dalla gestione aziendale alla medicina e alla vita quotidiana. Il documento include anche esercizi e spiegazioni sui tipi di dati, le istruzioni e i paradigmi di programmazione, offrendo una solida base per chi si avvicina per la prima volta a questa disciplina. Inoltre, vengono trattati i linguaggi per il web e i traduttori, fornendo una visione completa del mondo dell'informatica.

Tipologia: Appunti

2024/2025

In vendita dal 09/09/2025

Gaia..04
Gaia..04 🇮🇹

19 documenti

1 / 75

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
Introduzione al corso di informatica
“L’Informatica è lo studio sistematico degli algoritmi che descrivono e trasformano l’informazione:
la loro teoria, analisi, progetto, efficienza, realizzazione, applicazione”
Informazione: entità immateriale che può essere memorizzata, elaborata e comunicata
Algoritmo: specifica come produrre una “soluzione ad un problema” mediante una sequenza di
istruzioni che elaborano informazioni e che sono comprensibili ed eseguibili da un esecutore
Programmazione: rappresentazione di un algoritmo attraverso un linguaggio di programmazione
1° programmatrice Ada Lovelace
L’informatica oggi è pervasiva:
-Nelle aziende: gestione dati processi aziendali
-Nelle fabbriche: automazione di fabbrica, progettazione meccanica
-In medicina: controllo di apparati medicali, elaborazione dati epidemiologici, ricerca nuovi
farmaci
-Nella vita quotidiana: per la condivisione e comunicazione di informazione; nel controllo di
oggetti come automobili, elettrodomestici, …
Algoritmo e calcolatore
Un’altra definizione: Informatica come scienza della rappresentazione e dell’elaborazione
dell’informazione.
L’informatica è dunque una scienza: l’elaborazione dell’informazione avviene in modo sistematico
e rigoroso. L’elaborazione dell’informazione può essere automatizzata.
Algoritmo: una sequenza di operazioni che riguardano l’elaborazione di informazione e che sono
comprensibili ed eseguibili da un esecutore. Un esempio di esecutore: il calcolatore. Gli algoritmi
di fatto “risolvono problemi”, nel nostro caso “problemi di elaborazione dell’informazione”.
Problema: classe di domande omogenee alle quali è possibile dare risposta mediante una procedura
uniforme.
Istanza del problema: ogni specifica domanda della classe.
Variabili di ingresso: termini variabili che caratterizzano la formulazione di un problema
(permettono di generare le istanze).
Variabili di uscita: termini variabili che caratterizzano le soluzioni attese (delle istanze) di un
problema.
Dati: valori che possono assumere le variabili di ingresso.
Risultati: valori che possono assumere le variabili di uscita.
Soluzione di un’istanza di un problema: risposta alla specifica domanda che l’istanza rappresenta.
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41
pf42
pf43
pf44
pf45
pf46
pf47
pf48
pf49
pf4a
pf4b

Anteprima parziale del testo

Scarica Introduzione all'Informatica: Algoritmi, Programmazione e Linguaggi - Prof. Fogli e più Appunti in PDF di Elementi di Informatica solo su Docsity!

Introduzione al corso di informatica

“L’Informatica è lo studio sistematico degli algoritmi che descrivono e trasformano l’informazione: la loro teoria, analisi, progetto, efficienza, realizzazione, applicazione” Informazione : entità immateriale che può essere memorizzata, elaborata e comunicata Algoritmo : specifica come produrre una “soluzione ad un problema” mediante una sequenza di istruzioni che elaborano informazioni e che sono comprensibili ed eseguibili da un esecutore Programmazione : rappresentazione di un algoritmo attraverso un linguaggio di programmazione 1° programmatrice→ Ada Lovelace L’informatica oggi è pervasiva:

  • Nelle aziende : gestione dati processi aziendali
  • Nelle fabbriche : automazione di fabbrica, progettazione meccanica
  • In medicina : controllo di apparati medicali, elaborazione dati epidemiologici, ricerca nuovi farmaci
  • Nella vita quotidiana : per la condivisione e comunicazione di informazione; nel controllo di oggetti come automobili, elettrodomestici, …

Algoritmo e calcolatore

Un’altra definizione: Informatica come scienza della rappresentazione e dell’elaborazione dell’informazione. L’informatica è dunque una scienza : l’elaborazione dell’informazione avviene in modo sistematico e rigoroso. L’elaborazione dell’informazione può essere automatizzata. Algoritmo : una sequenza di operazioni che riguardano l’elaborazione di informazione e che sono comprensibili ed eseguibili da un esecutore. Un esempio di esecutore: il calcolatore. Gli algoritmi di fatto “risolvono problemi”, nel nostro caso “problemi di elaborazione dell’informazione”. Problema : classe di domande omogenee alle quali è possibile dare risposta mediante una procedura uniforme. Istanza del problema: ogni specifica domanda della classe. Variabili di ingresso : termini variabili che caratterizzano la formulazione di un problema (permettono di generare le istanze). Variabili di uscita : termini variabili che caratterizzano le soluzioni attese (delle istanze) di un problema. Dati : valori che possono assumere le variabili di ingresso. Risultati : valori che possono assumere le variabili di uscita. Soluzione di un’istanza di un problema: risposta alla specifica domanda che l’istanza rappresenta.

Computazione : esecuzione di un algoritmo in corrispondenza di certi dati. Passo di computazione : ogni singolo passo elementare che un esecutore compie durante l’esecuzione di un algoritmo. Sequenza di computazione: sequenza di passi elementari che un esecutore compie in corrispondenza di certi dati iniziali durante l’esecuzione di un algoritmo.

Un algoritmo risolve 1 problema. Viceversa, per ogni problema risolubile (ovvero, se esiste un algoritmo che lo risolve), esistono infiniti algoritmi che lo risolvono, infatti:

  • un algoritmo è descritto da una sequenza di istruzioni
  • è sufficiente pensare che possiamo sempre aggiungere sequenze di istruzioni che non hanno effetto sul risultato
  • e possiamo farlo in infiniti modi (es. sommare e sottrarre 1 a/da una variabile, sommare e sottrarre 2, ecc. ecc.) Per essere comprensibili da un calcolatore, gli algoritmi devono essere espressi in un linguaggio di programmazione. Un programma è la descrizione formale di un algoritmo attraverso un linguaggio di programmazione, ovvero una sequenza di istruzioni scritte in un opportuno linguaggio comprensibile dal calcolatore. Il calcolatore è dunque un esecutore di programmi. Il compito di un esperto informatico consiste nel produrre algoritmi e codificarli in programmi.

Oggi si parla infatti di ICT (Information and Communication Technology). La diffusione delle reti di calcolatori (in particolare Internet) e il successo del World Wide Web sono la manifestazione più evidente dell’importanza dell’ICT. Problematiche applicative dell’ICT

  • Ciclo a-f : human-computer interaction, l’utente opera con un calcolatore.
  • Ciclo a-b-e-f : l’utente interagisce con calcolatore remoto mediante un calcolatore in rete con esso.
  • Ciclo a-b-c-d-e-f : interazione fra utenti mediata da calcolatori, per la soluzione distribuita e collaborativa di un problema o lo scambio di documentazione.

Il progetto degli algoritmi

I processi mentali coinvolti nella formulazione di problemi e delle loro soluzioni così che le soluzioni siano rappresentate in una forma che possa essere efficacemente eseguita da un agente di elaborazione dell’informazione. Concetti del pensiero computazionale :

  • Pensare in modo algoritmico →Capacità di strutturare un processo di risoluzione in una sequenza ordinata di passi.
  • Pensare in termini di scomposizione dei problemi →Pensare ai problemi in termini delle loro componenti. Pensare ai problemi in termini delle loro componenti. Questo rende più facile affrontare e risolvere problemi complessi.
  • Pensare a generalizzazioni e identificare e sfruttare schemi ricorrenti →Saper identificare schemi ricorrenti, somiglianze, connessioni, e sfruttare queste caratteristiche. È un modo di risolvere rapidamente problemi nuovi sulla base delle soluzioni di problemi già affrontati.
  • Pensare astraendo scegliendo le rappresentazioni più giuste→Rendere un problema più comprensibile attraverso la rimozione di dettagli superflui della sua descrizione. L'abilità sta nello scegliere il dettaglio da nascondere in modo che il problema diventi più facile, senza perdere niente di ciò che è importante.
  • Pensare in termini di valutazione →Processo per garantire che una soluzione sia adatta allo scopo. Processo per garantire che una soluzione sia adatta allo scopo.ù
  • Ricerca di una procedura di soluzione : scomponendo il problema e individuando una sequenza di “passi” per risolverlo. Risolvere un problema = risolvere un’opportuna successione di problemi più semplici è SCOMPOSIZIONE IN SOTTO-PROBLEMI. I sotto-problemi potrebbero dover essere a loro volta scomposti in sotto-sotto-problemi, e così via. La scomposizione deve giungere fino ai problemi elementari (o primitivi). Ad ogni problema elementare si farà corrispondere una istruzione elementare che l’esecutore comprende e sa come eseguire. Dal problema a un programma comprensibile dal calcolatore :
  • Analisi del problema e identificazione procedura di risoluzione.
  • Specifica dell’algoritmo risolutivo.
  • Programmazione in linguaggio di alto livello.
  • Traduzione del programma in linguaggio macchina.
  • Esecuzione del programma. Algoritmo = Dati + Istruzioni Dati:
  • Numeri (naturali, interi, reali, …)
  • Caratteri alfanumerici (a, b, c, …)
  • Stringhe alfanumeriche (“Via Branze 38”)
  • Dati logici (vero, falso)
  • Vettori di elementi, matrici, … ([1,2,3], [[1,1],[1,2],…])
  • Immagini, suoni, … Istruzioni:
  • Istruzioni di ingresso/uscita (es. leggi, visualizza,…)
  • Istruzioni aritmetico-logiche (es. c = a * b)
  • Istruzioni di controllo (es. se … allora, ripeti…) Come posso classificare i dati?
  • In base alla visibilità da parte dell’utente: --Visibile (di ingresso o uscita) --Trasparente (dati temporanei di supporto).
  • In base alla variabilità nel tempo: --Costanti --Variabili (acquisizione dall’esterno o assegnazione).
  • In base alla struttura : --Elementari (interi, alfanumerici, logici, …) --Strutturati (vettori, matrici, …). Variabile : “contenitore” di dati. Ha un nome (es. x)… nel calcolatore i nomi delle variabili identificano una ben precisa locazione di memoria. A una variabile può essere assegnato un valore: es. x 10 nel calcolatore il valore (10) diventa il contenuto della locazione di memoria identificata dal nome della variabile (x). Le variabili possono comparire in espressioni aritmetiche (es. x-y ) o logiche, e in predicati logici. Le espressioni possono essere assegnate ad altre variabili: ad es. scriveremo dx-y per indicare che d conterrà il risultato dell’espressione. Si potrebbe anche usare x o y al posto di d, in questo modo si sovrascrive il precedente valore. Posso anche scrivere x x + 1 Espressioni aritmetiche → sono formate da:
  • Operandi : variabili e costanti (si ipotizza per il momento di considerare solo numeri interi).
  • Operatori : addizione (+), sottrazione (-), moltiplicazione (*), divisione intera (/), modulo (mod).
  • Semantica : quella usuale dell’aritmetica. È possibile assegnare queste espressioni a variabili numeriche Espressioni logiche → sono formate da:
  • Operandi : espressioni aritmetiche.
  • Operatori : operatori relazionali di uguaglianza (=), minoranza () fra numeri.
  • Semantica : quella delle disequazioni fra numeri. Hanno un valore logico (vero o falso). Predicati logici → sono formati da:
  • Operandi : espressioni logiche e/o predicati.
  • Operatori : operatori logici di congiunzione (AND), disgiunzione (OR) e negazione (NOT).
  • Semantica : quella dell’Algebra di Boole. Hanno un valore logico (vero o falso)

Le costanti 0 e 1 e le variabili (simboli a cui possono essere associati i valori 0 e 1) sono formule booleane. Se E, E1 ed E2 sono formule booleane lo sono anche ( E1+E2), (E1·E2) e (E). Non esistono altre formule, oltre a quelle che possono essere generate da un numero finito di applicazioni delle regole 1 e 2. Valgono le regole classiche di semplificazione delle parentesi e di priorità degli operatori: ((x1·x2)+(x3·(x4+x5)))→x1·x2+x3·(x4+x5) … e il simbolo “·” di solito si omette. Tautologia : formula booleana che risulta sempre vera. Contraddizione : formula booleana che risulta sempre falsa. Data la formula booleana (not(x or y) and z) la sua tabella di verità è

Esercizio 1 ((A and B) or not(A)) and not(B) Esercizio 2 (A and C) or (B or not(C)) and B Equivalenze booleane Equivalenza di formule booleane: per ogni combinazione di valori delle variabili, le formule restituiscono lo stesso valore (stessa tabella di verità).

Esercizi algebra di boole

Il Progetto degli algoritmi

Rappresentazione degli algoritmi:

  1. Linguaggio naturale/pseudo-codice