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


Linguaggio C, Algoritmi, Dispense di Informatica

algoritmi, linguaggi compilati, linguaggio c, variabili, la selezioni, le costanti, switch case.

Tipologia: Dispense

2019/2020

In vendita dal 29/11/2020

manuel-tentori
manuel-tentori 🇮🇹

4.4

(10)

23 documenti

1 / 5

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
Informatica
Algoritmi
Le ipotesi più accreditate sulle definizione di algoritmo sono due:
La prima ipotesi deriva dalla deformazione del vocabolo algorismo, esso indicava il
processo di calcolo con i numeri arabi.
La seconda ipotesi, richiama la deformazione di Al-Khwarizmi, dove nel sue citazioni
spesso semplificava il difficile nome del matematico arabo chiamandolo “algortimo”.
Il termine algoritmo è utilizzato come sinonimo di:
Procedura effettiva.
Procedimento di calcolo.
Metodo di risoluzione di un problema.
Insieme di regole eseguite per eseguire una data operazione-
Gli elementi fondamentali di un algoritmo sono:
Dati iniziali e dati finali: sono gli elementi che vengono elaborati dall’algoritmo e i
risultati prodotti dall’algoritmo.
Sequenza di azioni: un’azione è un’operazione elementare, che compone un passo
della serie di operazioni che devono essere eseguite sui dati di ingresso per ottenere il
risultato.
Esecutore: è il soggetto che “compie” le azioni.
L’algoritmo, quindi, è un insieme di istruzioni elementari che consentono di risolvere un
problema trasformando i dati iniziali del problema stesso nel risultato, cioè nell’insieme dei
dati finali che rappresentano la soluzione.
Per problema intendiamo “una questione da risolvere mediante il ragionamento
partendo da elementi noti”, quindi l’algoritmo e problema sono indiscindibili.
Le caratteristiche di un algoritmo sono:
Finitezza: l’algoritmo deve essere composto da un numero finito di passi elementari
che vengono eseguiti un numero finito di volte.
1
pf3
pf4
pf5

Anteprima parziale del testo

Scarica Linguaggio C, Algoritmi e più Dispense in PDF di Informatica solo su Docsity!

Informatica

Algoritmi

Le ipotesi più accreditate sulle definizione di algoritmo sono due:

  • La prima ipotesi deriva dalla deformazione del vocabolo algorismo, esso indicava il processo di calcolo con i numeri arabi.
  • La seconda ipotesi, richiama la deformazione di Al-Khwarizmi, dove nel sue citazioni spesso semplificava il difficile nome del matematico arabo chiamandolo “algortimo”. Il termine algoritmo è utilizzato come sinonimo di:
  • Procedura effettiva.
  • Procedimento di calcolo.
  • Metodo di risoluzione di un problema.
  • Insieme di regole eseguite per eseguire una data operazione- Gli elementi fondamentali di un algoritmo sono:
  • Dati iniziali e dati^ finali: sono gli elementi che vengono elaborati dall’algoritmo e i risultati prodotti dall’algoritmo.
  • Sequenza di azioni: un’azione è un’operazione elementare, che compone un passo della serie di operazioni che devono essere eseguite sui dati di ingresso per ottenere il risultato.
  • Esecutore: è il soggetto che “compie” le azioni. L’algoritmo, quindi, è un insieme di istruzioni elementari che consentono di risolvere un problema trasformando i dati iniziali del problema stesso nel risultato, cioè nell’insieme dei dati finali che rappresentano la soluzione. Per problema intendiamo “una questione da risolvere mediante il ragionamento partendo da elementi noti”, quindi l’algoritmo e problema sono indiscindibili. Le caratteristiche di un algoritmo sono:
  • Finitezza: l’algoritmo deve essere composto da un numero^ finito di passi elementari che vengono eseguiti un numero finito di volte.
  • Determinatezza: le istruzioni vengono definite senza ambiguità in modo tale da garantire sempre gli stessi risultati indifferentemente dall’esecutore. Un’istruzione ambigua o più istruzioni combinate in modo ambiguo generano un risultato casuale.
  • Realizzabilità: le istruzioni devono essere effettivamente realizzabili e conosciute all’esecutore. È necessario che esista un esecutore in grado di eseguire effettivamente ogni istruzione dell’algoritmo, in modo che si abbia la garanzia che algoritmo si eseguito in un tempo finito. Un algoritmo deve essere quindi:
  • Finito : le istruzioni elementari devono presentare complessità limitata.
  • Deterministico : i tipi di istruzioni eseguibili devono possedere un limite^ finito.
  • Realizzabile : l’esecutore deve essere in grado di comprendere la singola istruzione e di operare per passi discreti.
  • Generale : le istruzioni non devono essere ambigue, cioè devono essere compresi da tutti gli esecutori.
  • Non ambiguo : L’algoritmo non deve risolvere un problema, ma una famiglia di problemi. L’informatica è una scienza che studia i metodi, gli strumenti e i linguaggi utilizzati per automatizzare le procedure di trattamento delle informazioni. Il calcolatore elettronico è un automa.

I linguaggi di programmazione

Il linguaggio che il processore può eseguire si chiama linguaggio macchina ed è composto da soli 0 e 1: ogni istruzione è composta da tre parti (indirizzo, codice operativo, dato). Per aiutare i programmatori venne introdotto il linguaggio assembly dove ogni istruzione viene indicata con etichette comprensibili dall’uomo che vengono tradotte nel codice binario corrispondente da un apposito programma chiamato assemblatore o traduttore.

La versione tradotta è specifica della macchina sulla quale il programma deve essere eseguito.

  • Interpretazione (Basic, Perl, Javascript): Traduzione ed esecuzione avvengono contemporaneamente. Al termine dell’interpretazione non vi è alcuna versione tradotta del programma originale. LINGUAGGI COMPILATI La trasformazione del codice sorgente al codice macchina mediante compilazione avviene attraverso un programma (compilatore) che leggendo il codice sorgente effettua la conversione in codice macchina mediante una sequenza di attività:
  • Preprocessing : esegue molteplici operazioni automatiche di editing e di inclusione di file.
  • Analisi lessicale (scanning) : riconosce i lessemi del linguaggi sorgente legati allo specifico linguaggio di programmazione.
  • Analisi sintattica (parsing) : in base alle regole grammaticali del linguaggio organizza le frasi e segnala le sottosequenze errate.
  • Anali semantica : esegui la verifica della consistenza del “significato” di quanto scritto, effettuando i controlli di coerenza tra i tipi di dati.
  • Generazione del codice : esegue la traduzione vera e propria in linguaggio assemblato generando il programma che poi sarà eseguito dalla macchina.
  • Ottimizzazione del codice : prima di generare il codice, lo riesamina per migliorare i tempi di esecuzione. Durante queste fasi possono essere rilevati errori di tipo statico (lessicali, sintattici o semantici):
  • Fatal errors : errori gravi che non consentono di proseguire la compilazione del sorgente.
  • Warnings : segnalazione di errori lievi che non compromettono la traduzione del codice.

LINGUAGGI INTERPRETATI

La trasformazione dal codice sorgente al codice eseguibile mediante l’interprete avviene riga per riga, istruzione per istruzione. Il vantaggio dell’interpretazione rispetto alla compilazione sta nella fase di debug in quanto vengono immediatamente individuati sia li errori stati che di rum-time. Inoltre i linguaggi interpretati sono maggiormente portabili di quelle compilati ma richiedono un interpreto specifico per ogni diversa piattaforma dove devono essere eseguiti. Hanno come difetto, la lentezza, in quanto in un programma compilato la fase di traduzione avviene una volta, perciò a ogni esecuzione deve essere rifatta tutta la traduzione. LINGUAGGI PSEUDOCODIFICATI Nei linguaggi pseudocodificati il programma sorgente viene dapprima compilato in codice intermedio simile all’assemblea e successivamente eseguire da un interprete. Un esempio è Java. I linguaggi di programmazione vengono classificati a seconda del modello computazionale che adottano, definito paradigma. I principali paradigmi possono essere raggruppati in:

  • Modello procedurale: in questo paradigma rientrano i linguaggi di tipo algoritmo, dove il programmatore deve concertassi sulla individuazione e sulla definizione delle procedere risolutive. Rientrano in questo paradigma: La programmazione imperativa; La programmazione object-oriented (OOP);
  • Modello dichiarativo: in esso non ci si preoccupa di trovare a soluzione mediante l’ideazione dell’algoritmo, ma si procede affrontando il problema dal punto di vista descrittivo individuando le specifiche e gli obiettivi che devono essere raggiunti. Rientrano in questo paradigma: La programmazione funzionale; La programmazione logica.