Vai alla Home Page About me Courseware Federica Living Library Federica Federica Podstudio Virtual Campus 3D Le Miniguide all'orientamento Gli eBook di Federica La Corte in Rete
 
 
Il Corso Le lezioni del Corso La Cattedra
 
Materiali di approfondimento Risorse Web Il Podcast di questa lezione

Salvatore Cuomo » 1.Prolusione


Padronanza delle tecniche di Programmazione

Conoscenze di base relative al calcolatore dal punto di vista del Hardware e Software;
Nozioni di base sui principali Sistemi Operativi;
Conoscenza dei paradigmi di programmazione;
Conoscenza di alcuni linguaggi di programmazione ( Ansi C / C++ ) con particolare riferimento a:

  • principali tipi di dato
  • costrutti di controllo
  • implementazione di algoritmi
  • strutture dati
  • funzioni e metodi

Al termine del corso si richiede di:

Essere in grado di realizzare programmi in un linguaggio di programmazione imperativo.

Prolusione

In questa prolusione richiamiamo brevemente alcune nozioni preliminari che riguardano il concetto di Algoritmo e di Esecutore per poi accennare brevemente alla architettura di un elaboratore.

SOMMARIO

  • Concetto di Algoritmo;
  • Il concetto di esecutore di Algoritmi;
  • Brevi cenni sulla architettura di un calcolatore:
  • La memoria
  • Unità logico aritmetica
  • Unità di Input/Output

    Programmare

    Le attività sperimentali della programmazione sono rivolte allo sviluppo di idee di base, alla organizzazione logica di metodi risolutivi orientati allo sviluppo di codici automatici che più sinteticamente indicheremo come programmi (e più in generale software) per la risoluzione di problemi del mondo reale.
    In altre parole siamo interessati allo studio, lo sviluppo, e l’analisi dei metodi computazionali e di tecniche implementative per la risoluzione dei problemi della scienza e della tecnica.

    Figura 1: esempio di codice automatico.

    Figura 1: esempio di codice automatico.


    Il concetto di Algoritmo

    L’organizzazione logica di metodi risolutivi di problemi della scienza e della tecnica si basa sul concetto di Algoritmo di cui diamo la seguente definizione:

    L’algoritmo è sequenza logica di direttive elementari, univocamente interpretabili, che eseguite in un ordine prestabilito, consentono la soluzione di un dato problema in un numero finito di passi.

    La definizione si basa sui seguenti punti fondamentali:

    • la sequenza di direttive deve essere finita;
    • essa deve portare ad un risultato;
    • le istruzioni devono essere possibili ovvero eseguibili materialmente;
    • le istruzioni devono essere espresse in modo non ambiguo.

    Dall’Algoritmo al linguaggio

    Il concetto di Algoritmo si basa sulla possibilità che le direttive vengano descritte da una serie di frasi non ambigue che costituiscono il programma.

    Le frasi con cui vengono scritte le direttive appartengono ad un linguaggio comprensibile a chi le deve eseguire, ovvero il linguaggio di programmazione.

    Generalmente l’algoritmo viene descritto secondo uno pseudocodice che è un linguaggio artificiale e non formalizzato per esprimere le (macro)azioni che costituiscono l’algoritmo.

    I programmi scritti in pseudocodice scritti ed implementati dai programmatori.

    Essi risultano:

    • un valido strumento o per mettere nero su bianco gli algoritmi;
    • un linguaggio semplice di rapida traduzione in un “vero” linguaggio di programmazione (Linguaggio C/C++, Java, Phyton, …).

    Dall’Algoritmo all’esecutore

    Il concetto di Algoritmo si basa sulla possibilità che le direttive utilizzate per risolvere un fissato problema siano possibili ovvero eseguibili materialmente.
    Questo fa nascere naturalmente la necessità di un esecutore di tali direttive.

    Un esecutore di algoritmi deve essere quindi in grado di:

    • Registrare i dati di ingresso, intermedi e di uscita;
    • Registrare le istruzioni;
    • effettuare operazioni aritmetiche e logiche su tali dati;
    • controllare il flusso delle operazioni.

    La definizione si basa sui seguenti punti fondamentali:

    • la sequenza di direttive deve essere finita;
    • essa deve portare ad un risultato;
    • le istruzioni devono essere possibili ovvero eseguibili materialmente;
    • le istruzioni devono essere espresse in modo non ambiguo.

    Esecutore di Algoritmi

    Abbiamo accennato alle specifiche fondamentali di un esecutore di Algoritmi.
    Da quanto detto, la macchina esecutrice può essere realizzata mediante uno schema di progettazione di calcolatori elettronici che prende nome dal matematico John von Neumann e che fu sviluppato per il sistema IAS machine e dell’Institute for Advanced Study a Princeton, New Jersey, U.S.A..

    In figura sono riportati due schemi di esecutore: l’uomo e l’importante schema dalle Macchina di Von Neumann.

    Figura 2:  Esecutore Schema Uomo.

    Figura 2: Esecutore Schema Uomo.

    Figura 3: La macchina di Von Neumann. Fonte: Wikipedia.

    Figura 3: La macchina di Von Neumann. Fonte: Wikipedia.


    Il calcolatore

    La macchina di Von Neumann è lo schema alla base dei moderni calcolatori elettronici (vedi figura 4).

    I componenti fondamentali di un calcolatore sono:

    Memoria: è il supporto fisico che permette di immagazzinare informazioni sotto forma di istruzioni e dati.
    In figura 5 viene mostrata una rappresentazione dalla memoria gerarchica di un calcolatore.

    Figura 4: Un calcolatore elettronico.

    Figura 4: Un calcolatore elettronico.

    Figura 5: Livelli di memoria di un calcolatore elettronico.

    Figura 5: Livelli di memoria di un calcolatore elettronico.


    Il calcolatore (segue)

    Unità di controllo: è il coordinatore di tutte le attività del calcolatore (preleva dalla memoria le istruzioni, trasferisce i dati dalla memoria, determina la successiva istruzione da eseguire). Un esempio di unità di controllo è mostrato nella figura 6.

    Unità logico-aritmetica: l’esecutore delle operazioni sui dati, sia aritmetiche, sia di confronto. Una schematizzazione di ALU è mostrata nella figura 7.

    Figura 6: Unità di controllo. Fonte: Wikipedia.

    Figura 6: Unità di controllo. Fonte: Wikipedia.

    Figura 7: Schema componenti base di una ALU. Fonte: Wikipedia.

    Figura 7: Schema componenti base di una ALU. Fonte: Wikipedia.


    Il calcolatore (segue)

    Unità di input e output: l’interfaccia del calcolatore con il mondo esterno.

    Essi sono generalmente il video, le stampanti, le tastiere, la scheda di rete, lo scanner e molti altri dispositivi.

    Figura 8:  Dispositivi di I/O.

    Figura 8: Dispositivi di I/O.


    I materiali di supporto della lezione

    Alcuni contenuti della lezione sono tratti da:

    A. Murli, Lezioni di Laboratorio di Programmazione, Ed. Liguori.

    Testi consigliati:

    A. Murli, G. Giunta, G. Laccetti, M. Rizzardi, Laboratorio di Programmazione I – Ed. Liguori.

    G. Criscuolo, F.P. Tramontano – Introduzione alla Programmazione, Parte Prima: Algoritmi Imperativi in C++ - Ed. Manna

    A. Murli – Lezioni di Laboratorio di Programmazione – Ed. Liguori

    G. Dromey, Algoritmi fondamentali, Ed. Jackson.

    B. Kernighan, D.Ritchie, Linguaggio C, Ed. Jackson.

    H.M. Deitel, P. J. Deitel, C Corso completo di programmazione, Ed. Apogeo.

    H. Hahn, Guida a Unix seconda ed.– McGraw-Hill.

    • Contenuti protetti da Creative Commons
    • Feed RSS
    • Condividi su FriendFeed
    • Condividi su Facebook
    • Segnala su Twitter
    • Condividi su LinkedIn
    Progetto "Campus Virtuale" dell'Università degli Studi di Napoli Federico II, realizzato con il cofinanziamento dell'Unione europea. Asse V - Società dell'informazione - Obiettivo Operativo 5.1 e-Government ed e-Inclusion