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


Algoritmi: Definizione, Differenza, Iterazioni, Linguaggi di Programmazione, Appunti di Elementi di Informatica

Una introduzione a strutture e caratteristiche degli algoritmi, inclusa la definizione, la differenza tra algoritmo e sua rappresentazione, strutture iterative come ricerca sequenziale e ordinamento per inserimento, e linguaggi di programmazione come prima, seconda e terza generazione. Il testo illustra concetti fondamentali per comprendere l'esecuzione di algoritmi e la loro implementazione in vari contesti.

Tipologia: Appunti

2019/2020

Caricato il 17/11/2020

Nizar
Nizar 🇮🇹

4

(46)

47 documenti

1 / 11

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
IB18 - ALGORITMI
UN ALGORITMO insieme dei passi che specificano come eseguire un dato compito. Sono
alla base di qualsiasi attività comune.
«Un algoritmo è un insieme ordinato di passi eseguibili e non ambigui che giunge certamente
a
destinazione»
1. Primo requisito: insieme ordinato di passi
Deve esistere una struttura ben definita dell’ordine di esecuzione dei passi di un algoritmo
Non è richiesto che la sequenza di esecuzione dei passi sia lineare
Esempio 1: Algoritmi paralleli composti da più sequenze di passi affidate, per l’esecuzione, a
differenti processori. Esempio 2: Circuiti flip-flop che eseguono, in ogni porta logica, singoli
passi dell’algoritmo, secondo una relazione di causa ed effetto
2. Secondo requisito: passi eseguibili
Deve consistere di passi effettivamente eseguibili (ovvero, di passi effettivi)
Esempio: Si elenchino tutti i numeri interi positivi. Non è un algoritmo. L’esecuzione di tale
istruzione non è possibile perché i numeri interi positivi sono infiniti
3. Terzo requisito: non ambigui
L’esecuzione di ogni passo dell’algoritmo richiede la mera esecuzione delle istruzioni ivi
contenute (non servono capacità creative) «Durante l’esecuzione di un algoritmo le
informazioni presente nello stato del processo devono essere sufficienti a stabilire
univocamente e completare le azioni da svolgere»
4. Quarto requisito: giungere certamente a terminazione
L’algoritmo deve avere termine. Il processo da questi disegnato deve concludersi restituendo
un risultato e non ripetersi all’infinito
Talvolta si utilizza il termine ALGORITMO IN MODO IMPROPRIO per riferirsi a
sequenze di passi che potrebbero non giungere a terminazione (Es: algoritmo della divisione
(1/3); es2: monitoraggio dei segni vitali di un paziente ospedalizzato: la sequenza dei passi è
ripetuta indefinitamente)
Differenza tra L’ALGORITMO E LA SUA RAPPRESENTAZIONE:
Un algoritmo è astratto e distinto dalla sua rappresentazione
Algoritmo: entità astratta o concettuale
RAPPRESENTAZIONE DELL’ALGORITMO: rappresentazione fisica
La distinzione può determinare ambiguità nella comunicazione dell’algoritmo a terzi (Es:
converti il numero decimale dato, nella sua equivalenza in esadecimale. Per gli specialisti
quest’istruzione sarà chiara, per i profani risulterà ambigua e poco dettagliata). L’ambiguità è
nella rappresentazione dell’algoritmo e non nell’algoritmo stesso.
Differenze tra:
PROGRAMMA rappresentazione formale di un algoritmo che è stata progettata per essere
eseguita da un computer.
pf3
pf4
pf5
pf8
pf9
pfa

Anteprima parziale del testo

Scarica Algoritmi: Definizione, Differenza, Iterazioni, Linguaggi di Programmazione e più Appunti in PDF di Elementi di Informatica solo su Docsity!

IB18 - ALGORITMI

UN ALGORITMO insieme dei passi che specificano come eseguire un dato compito. Sono alla base di qualsiasi attività comune. «Un algoritmo è un insieme ordinato di passi eseguibili e non ambigui che giunge certamente a destinazione»

1. Primo requisito: insieme ordinato di passi Deve esistere una struttura ben definita dell’ordine di esecuzione dei passi di un algoritmo Non è richiesto che la sequenza di esecuzione dei passi sia lineare Esempio 1: Algoritmi paralleli composti da più sequenze di passi affidate, per l’esecuzione, a differenti processori. Esempio 2: Circuiti flip-flop che eseguono, in ogni porta logica, singoli passi dell’algoritmo, secondo una relazione di causa ed effetto 2. Secondo requisito: passi eseguibili Deve consistere di passi effettivamente eseguibili (ovvero, di passi effettivi) Esempio : Si elenchino tutti i numeri interi positivi. Non è un algoritmo. L’esecuzione di tale istruzione non è possibile perché i numeri interi positivi sono infiniti 3. Terzo requisito: non ambigui L’esecuzione di ogni passo dell’algoritmo richiede la mera esecuzione delle istruzioni ivi contenute (non servono capacità creative) «Durante l’esecuzione di un algoritmo le informazioni presente nello stato del processo devono essere sufficienti a stabilire univocamente e completare le azioni da svolgere» 4. Quarto requisito: giungere certamente a terminazione L’algoritmo deve avere termine. Il processo da questi disegnato deve concludersi restituendo un risultato e non ripetersi all’infinito Talvolta si utilizza il termine ALGORITMO IN MODO IMPROPRIO per riferirsi a sequenze di passi che potrebbero non giungere a terminazione (Es: algoritmo della divisione (1/3); es2: monitoraggio dei segni vitali di un paziente ospedalizzato: la sequenza dei passi è ripetuta indefinitamente) Differenza tra L’ALGORITMO E LA SUA RAPPRESENTAZIONE : Un algoritmo è astratto e distinto dalla sua rappresentazione Algoritmo: entità astratta o concettuale RAPPRESENTAZIONE DELL’ALGORITMO : rappresentazione fisica La distinzione può determinare ambiguità nella comunicazione dell’algoritmo a terzi (Es: converti il numero decimale dato, nella sua equivalenza in esadecimale. Per gli specialisti quest’istruzione sarà chiara, per i profani risulterà ambigua e poco dettagliata). L’ambiguità è nella rappresentazione dell’algoritmo e non nell’algoritmo stesso. Differenze tra : PROGRAMMA rappresentazione formale di un algoritmo che è stata progettata per essere eseguita da un computer.

PROCESSO l’attività di esecuzione di un programma, ovvero dell’algoritmo rappresentato dal programma, ovvero dell’algoritmo.

Programma, processo, algoritmo: sono dei concetti distinti ma legati tra di loro PSEUDOCODICE: notazione utilizzabile per esprimere informalmente le idee durante il processo di sviluppo di un algoritmo. Si realizza rilassando le regole (struttura semantico-sintattica) del linguaggio formale di programmazione con cui l’algoritmo sarà espresso.

FUNZIONI : È possibile esprimere delle porzioni di codice di un programma all’interno di funzioni (o sottoprogramma, subroutine, procedura o metodo). Una porzione descrive delle attività che sono utilizzabili come strumenti astratti da altre applicazioni

È possibile utilizzare differenti approcci , come:

  • provare ad affrontare il problema al contrario
  • identificare un problema simile già risolto o più semplice da risolvere , quindi provare ad applicare la soluzione al problema corrente (difficoltà nell’individuazione di un algoritmo generico utilizzabile per risolvere ogni istanza del problema)
  • applicare il raffinamento a più passi : Prevede la scomposizione di un problema complesso in più sottoproblemi. Si procede operando progressivamente su sottoproblemi via via più semplici da risolvere.

METODOLOGIE FONDAMENTALI :

Top-down , si procede dal generale allo specifico (es: scomposizione di un problema mediante la metodologia di raffinamento per passi) Bottom-up , si procede dallo specifico al generale (es: costruzione di un grande sistema software combinando componenti precostituiti) In sintesi: «La scoperta di nuovi algoritmi resta un’arte, più che una scienza. […] Istruire un potenziale risolutore di problemi ad applicare alla lettera certi approcci vuol dire annullare proprio le competenze tecniche creative che dovrebbero invece essere educate»

LE STRUTTURE ITERATIVE

Sono strutture di controllo in cui una serie di istruzioni viene ripetuta in modo ciclico (es: Ricerca sequenziale; Ordinamento per inserimento) L’ALGORITMO DI RICERCA SEQUENZIALE: Si occupa di verificare se è presente un valore in un elenco (lista). La ricerca ha successo se il valore si trova nella lista; altrimenti fallisce. Si ipotizza che l’elenco sia ordinato secondo una certa regola di organizzazione delle voci Ricerca sequenziale : come funziona? Si esamina la lista dall’inizio confrontando ogni voce con quella d’interesse. Le condizioni di fallimento sono le seguenti:

  • Se si arriva alla fine dell’elenco senza trovare la voce
  • Poiché l’elenco è ordinato , se si raggiunge una voce successiva a quella d’interesse senza averla trovata, allora di sicuro non la si troverà più. Nel caso di analisi di liste lunghe, la ricerca sequenziale non è efficiente.

I CICLI : Struttura iterativa utilizzata per ripetere un’istruzione o una sequenza di istruzioni. La serie di istruzioni viene detta corpo del ciclo. Il corpo del ciclo viene eseguito in modo ripetitivo secondo quanto specificato da una condizione logica di controllo. L’esecuzione della struttura segue il pattern ciclico , fino a quando la condizione logica di controllo (parte più esposta a errori) non è più vera. L’esecuzione di un ciclo prevede 3 attività:

  • Inizializzazione : Stabilisce uno stato iniziale, poi modificato nella condizione di terminazione, e concorre ad assicurare che alla fine la condizione di terminazione si verifichi
  • Testo : Confronta lo stato corrente con la condizione di terminazione, e se questi sono uguali (condizione di terminazione del ciclo), deve determinare la terminazione del ciclo
  • Modifica : Modifica lo stato corrente in modo da spostarlo verso la condizione di terminazione, inoltre concorre ad assicurare che alla fine si verifichi la condizione di terminazione.

LA CONDIZIONE DI TERMINAZIONE: Un ciclo deve essere progettato in modo che le fasi d’inizializzazione di modifica portino alla condizione di terminazione appropriata. È un ciclo che non termina mai. STRUTTURA DEL CICLO WHILE: Il controllo della condizione di terminazione avviene prima dell’esecuzione del corpo del ciclo Se la condizione di terminazione è già soddisfatta la prima volta che viene esaminata, allora il ciclo non è mai eseguito.

Il corpo del ciclo viene eseguito prima di effettuare il controllo della condizione di terminazione Il corpo del ciclo è sempre eseguito almeno una volta.

Riassumendo: Ciclo con pre-test (struttura while)In cui il controllo della condizione di terminazione viene eseguito prima dell’esecuzione del corpo del ciclo

Ciclo con post-test (struttura repeat) In cui il controllo della condizione di terminazione è effettuato dopo l’esecuzione del corpo del ciclo.

IB19 – I LINGUAGGI DI PROGRAMMAZIONE

I LINGUAGGI DI PRIMA GENERAZIONE : Sono i linguaggi macchina, ovvero dei sistemi di codifica in cifre numeriche, sono composti da sequenze di istruzioni codificate sotto forma di cifre numeriche. La scrittura di questi programmi risulta laboriosa e facilmente soggetta a errori (bug) Negli anni ‘40 i ricercatori hanno semplificato il processo di programmazione, sviluppando nuovi sistemi notazionali in cui:

  • le istruzioni possono essere sviluppate in forma mnemonica,anziché numerica
  • le locazioni di memoria possono essere referenziate con nomi descrittivi (variabili del programma o identificatori). Tale forma mnemonica rappresenta in modo più intellegibile il significato della routine. GLI ASSEMBLER : programmi sviluppati per tradurre i programmi scritti in forma mnemonica, nella forma numerica compatibile con la macchina.

I LINGUAGGI DI SECONDA GENERAZIONE : sistemi di codici mnemonici per rappresentare i programmi (linguaggi assembly). Approccio rivoluzionario alla programmazione. Debolezze dei linguaggi assembly

Il programmatore dovrà: Trovare un algoritmo risolutore di un dato problema Esprimere tale algoritmo come sequenza di comandi Dichiarativo : Si occupa di descrivere un problema: Tale sistema di programmazione applica un algoritmo prestabilito per la risoluzione di problemi, che è di uso generale. Scoprire l’algoritmo generale per risolvere una vasta classe di problemi non è banale Il programmatore dovrà: Sviluppare una dichiarazione precisa del problema Funzionale Concepisce il programma come un’entità che accetta input e produce output ( funzioni). Prevede la costruzione del programma mediante connessione di unità di programma predefinite più piccole (funzioni predefinite) affinché si ottenga la relazione input-output desiderata, in cui l’output di ogni unità è usato come input dell’unità successiva. Il processo di programmazione consiste nella costruzione di funzioni che sono dei complessi nidificati di funzioni più semplici. Un programma funzionale è costituito da un’unica istruzione in cui senza bisogno di immagazzinare dei dati in variabili, il risultato di ogni elaborazione è passato immediatamente a quella successiva Orientato agli oggetti Considera un sistema software come una collezione di unità (gli oggetti) che possono: Eseguire azioni di immediato interesse per sé Inviare richieste di azione agli altri oggetti (Gli oggetti interagiscono per svolgere le elaborazioni richieste) Esempio: l’interfaccia utente grafica. Le icone dello schermo sono implementate come oggetti che comprendono delle funzioni (i metodi) che descrivono il modo in cui l’oggetto risponde ai diversi eventi (come la relazione con il click del mouse e trascinamento sullo schermo). La forma del sistema completo assume la forma di un insieme di oggetti in grado di rispondere a determinati eventi. CARATTERISTICHE DEGLI OGGETTI Un oggetto può essere composto di dati associati a una collezione, e di metodi per l’esecuzione di attività (Es: lista di nomi e inserimento di nuovi nomi nella lista). Si tratta di caratteristiche descritte da istruzioni nel programma scritto. La descrizione delle proprietà dell’oggetto è denominata classe. LA CLASSE Gli oggetti sono «costruiti» applicando la classe che possiede le caratteristiche richieste. Un oggetto basato su una determinata classe si definisce istanza della classe. Gli oggetti sono entità distinte, ma con le stesse caratteristiche della classe a partire dalla quale sono stati costruiti (la classe è il modello di partenza) Considerazioni finali su OOP : Il paradigma orientato agli oggetti fornisce un ambiente utile allo

sviluppo del software, che si basa sull’utilizzo di componenti riutilizzabili. Esistono librerie di classi predefinite che fungono da base per i nuovi sistemi software. Le funzioni all’interno di un oggetto, sono di fatto delle piccole unità di programma imperative.