Informatica Applicata - Concetti Introduttivi

Pagina creata da Mirko Stefani
 
CONTINUA A LEGGERE
Informatica Applicata
         Ing. Irina Trubitsyna

          Concetti Introduttivi

                 Informatica Applicata
Programma del corso
                         Obiettivi:
                          „   Il corso di Informatica Applicata illustra i principi fondamentali della
                              programmazione con riferimento al linguaggio C. In particolare
                              privilegia gli aspetti relativi alla rappresentazione dei dati e alla
                              realizzazione di strutture dati elementari, alla definizione e all'utilizzo di
                              funzioni e di librerie. Il corso intende porre l'enfasi più sulle tecniche di
                              programmazione e tratterà alcuni algoritmi fondamentali. Al termine del
                              modulo lo studente sarà in grado di sviluppare e verificare programmi
Informatica Applicata

                              C di media complessita'.
                         Il linguaggio C
                          „   Tipi di dato, operatori ed espressioni
                          „   Flussi del controllo
                          „   Funzioni e struttura dei programmi
                          „   Vettori, Puntatori, Aritmetica dei Puntatori
                          „   Strutture
                          „   Input e Output

                                                                                                           2
Materiale Didattico

                         Libri di testo:
                            Brian W. Kernighan, Dennis M. Ritchie,
                            “Il Linguaggio C”,seconda edizione,
                            Pearson Education, 2004.
Informatica Applicata

                         Lucidi ed altro materiale:

                         http://wwwinfo.deis.unical.it/~irina/
                         Oppure sul sito di iCampus:
                            http://icampus.deis.unical.it/
                                                                     3
Altre informazioni

                        Docente:
                        „   Irina Trubitsyna, DEIS, cubo 41C, V° piano
                              e-mail: irina@deis.unical.it
                              riceve venerdì, dalle 15:00 alle 17:00
Informatica Applicata

                        Tutor:
                        „   Antonella Dimasi
                             e-mail: dimasi@exeura.it

                                                                         4
Orario
                                                gruppo 1 :   Arenare Giuseppe - Marchese Fanny
                                                gruppo 2 :   Martino Gabriele - Viola Leonardo

                                  LUNEDI'        MARTEDI'     MERCOLEDI'    GIOVEDI'     VENERDI'

                         8.30                                              Lab gruppo1

                         9.30   Esercitazione                              Lab gruppo2

                        10.30    (Aula DS4)

                        11.30                                                Lezione
Informatica Applicata

                        12.30                                               (Aula M1 )

                        14.30

                        15.30

                        16.30

                        17.30

                        18.30

                                                                                                    5
Prerequisiti

                         Obiettivo
                          „   lo studio della programmazione dei calcolatori
                              elettronici. In particolare, scrivere programmi
                              in C per risolvere problemi di calcolo
Informatica Applicata

                         Prerequisiti
                          „   architettura del calcolatore
                          „   rappresentazione delle informazioni
                          „   D. Sciuto, G. Buonanno, L. Mari, “Introduzione ai sistemi
                              informatici”, terza edizione, McGraw-Hill, 2005.

                                                                                          6
Lezione 1-Sommario
                          Architettura del Calcolatore
                          „   Architettura di Von Neumann

                          Rappresentazione delle Informazioni
Informatica Applicata

                          „   Rappresentazione dei numeri
                          „   Rappresentazione dei caratteri

                          Programmazione dei calcolatori
                          „   Linguaggi di programmazione
                          „   Ciclo di vita di un programma

                                                                7
Prerequisiti - Introduzione

                         In questo corso ci occuperemo di
                          „   “software”, ovvero applicazioni

                         E’ necessario però avere un’idea dell’
Informatica Applicata

                          „   “hardware”, ovvero dei dispositivi fisici che
                              compongono il calcolatore

                         Infatti
                          „   il software specifica operazioni che vengono
                              eseguiti dall’hardware

                                                                              8
Architettura del Calcolatore

                           Hardware

                        Dispositivi di
                        Uscita                    Unità Centrale
Informatica Applicata

                        -Schermo                  -Processore
                        -Audio                    -Memoria di lavoro
                        -Stampanti                 (memoria RAM)

                        Dispositivi di
                        Ingresso                  Memorie di Massa
                        -Tastiera                 -Disco Rigido
                        -Mouse                    -Dischi Floppy
                                                  -CD/DVD

                                                                  9
Macchina di Von Neumann
                        La macchina di Von Neumann è un modello semplificato dei calcolatori moderni
                           ed è composta da 4 tipi di componenti funzionali:

                           unità centrale di elaborazione
                           (CPU – Central Processing Unit)
                            „    esegue istruzioni per l’elaborazione
                                 dei dati
                            „    svolge anche funzioni di controllo
Informatica Applicata

                           memoria centrale
                            „    memorizza e fornisce l’accesso a
                                 dati e programmi in esecuzione
                           interfacce di ingresso e uscita
                            „    componenti di collegamento con
                                 le periferiche del calcolatore
                           bus
                            „    svolge funzioni di trasferimento
                                 di dati e di informazioni di controllo
                                 tra le varie componenti funzionali

                                                                                                 10
Processore

                         CPU (“Central Processing Unit”)
                         „   è il circuito integrato che effettua i calcoli
                         „   responsabile di tutte le operazioni
                         „   es: Pentium IV (a 1.8 GigaHertz)
Informatica Applicata

                         In sostanza
                         „   legge e scrive dati dalla memoria RAM
                         „   effettua operazioni aritmetiche
                         „   è in grado di pilotare le periferiche

                                                                              11
Memoria RAM

                         “Random Access Memory”
                         „   memoria di lavoro per la CPU
                         „   circuito elettronico capace di mantenere uno stato in
                             presenza di alimentazione
Informatica Applicata

                         „   memorizza lo stato di segnali elettrici
                         „   volatile: perde lo stato in assenza di tensione

                         Attenzione
                         „   le elaborazioni del processore avvengono
                             esclusivamente su dati nella RAM

                                                                                     12
Architettura di Von Neumann
                         Schema di funzionamento
                          „   il processore acquisisce dati dalle periferiche di ingresso o da una
                              memoria di massa
                          „   li memorizza nella memoria RAM
                          „   accede alla RAM ed effettua operazioni
                          „   scrive i risultati nella RAM
Informatica Applicata

                          „   invia i risultati alle periferiche di uscita
                          „   trasferisce i dati permanentemente sulle memorie di massa

                         Esempio: elaborazione di un documento
                         „    il documento è salvato su disco
                         „    viene “aperto” e caricato nella RAM
                         „    vengono effettuate modifiche
                         „    il contenuto della RAM e quello del disco sono disallineati
                         „    al termine delle modifiche è necessario “salvare” la nuova versione
                              sul disco
                                                                                                     13
Memoria RAM
                                                                      V
                                                                     3V
                        Organizzazione della RAM                            1       0
                                                                   0.2V
                        „   composta di numerosi circuiti (celle)
                        „   ciascuno capaci di memorizzare un bit di informazione            t
Informatica Applicata

                        Bit (“Binary Digit”)
                        „   unità di memorizzazione per il calcolatore
                        „   può valere 1 oppure 0
                        „   facilmente rappresentabile con un segnale elettrico

                                                                                        14
Rappresentare Informazione con i Bit

                         Con un bit
                          „   due numeri (0 e 1)
                         Con due bit
                          „   quattro numeri (00, 01, 10, 11)
Informatica Applicata

                         Con tre bit
                          „   otto numeri (000, 001, 010, ..., 110, 111)
                         Per rappresentare 1.000.000 di numeri
                          „   servono 20 bit

                                                                           15
Unità di Misura della Memoria

                         Bit: 0/1
                         Byte: 8 bit unità convenzionale di riferim.
                         KiloByte: 210 byte (1024 byte)
Informatica Applicata

                         „   1024x8 bit = 8192 bit

                         MegaByte: 220 byte (1 milione di byte ca.)
                         „   circa 8 milioni di bit

                         GigaByte: 230 byte (1 miliardo di byte ca.)
                         „   circa 8 miliardi di bit

                                                                       16
Memoria RAM
                         Struttura della RAM
                         „   bit organizzati in registri           bit 0 bit 1         bit 31
                         Registro
                                                                                 ...
                         „   16, 32 o 64 bit                  #0
                                                                                 ...
                                                              #1
Informatica Applicata

                         „   ogni registro ha un suo                             ...
                             indirizzo                        #2
                                                                                 ...
                                                              #3
                         Es: 64MByte di RAM                                      ...

                         „   ca. 64 milioni di byte
                         „   ca.16 milioni di registri da                        ...

                             32 bit (224 registri)

                                                            #224-1               ...

                                                                                       17
Rappresentazione delle Informazioni

                        Tutte le informazioni sono rappresentate attraverso sequenze di bit
                        Esempio:
                         „       numero -57 su 16 bit
                                 1111111111000111
                         „       carattere ‘A’ su 8 bit
Informatica Applicata

                                 10000001
                         Codifica (o Codice)
                             „    insieme di regole per rappresentare oggetti con altri oggetti
                             „    in questo caso: lettere, numeri, immagini ecc. attraverso sequenze
                                  di bit
                         Interazione con il calcolatore
                             „    l’utente ha l’impressione di lavorare con oggetti familiari (parole,
                                  cifre, ecc.)
                             „    rappresentazione interna in forma di bit

                                                                                                         18
Rappresentazione dei Numeri
                         Rappresentazione dei num. naturali
                         „    rappresentazione posizionale in base 2
                         „    semplice (simile a quella dei numeri decimali): ogni bit è una cifra
                         Rappresentazione dei num. interi
                         „    codifica in “complemento a 2”
Informatica Applicata

                         „    regole complesse
                         Rappresentazione dei num.reali:
                          „   Fixed point (virgola fissa): un numero razionale è rappresentato come
                              una coppia di numeri interi: la parte intera e la parte decimale
                                „   12,52 → 
                          „   Floating point (virgola mobile): un numero razionale e’ rappresentato
                              come un intero moltiplicato per una opportuna potenza di10, cioè con
                              una coppia 
                                „   12,52 = 1252/100 = 1252 * 10-2   → 

                                                                                                     19
Alcune Interessanti Considerazioni
                         I Considerazione
                          „   numeri di tipo diverso vengono rappresentati in modo completamente
                              diverso
                         II Considerazione
                          „   la rappresentazione in virgola mobile è esponenziale (i valori crescono
                              rapidamente)
                         III Considerazione
Informatica Applicata

                          „   alcuni numeri reali non possono essere rappresentati in modo esatto
                          „   In particolare:
                               „   la rappresentazione in virgola mobile consente di rappresentare
                                   solo un numero fissato di cifre decimali
                               „   alcuni numeri (es: 1/3) devono essere approssimati “troncando”
                                   le cifre decimali
                               „   questo introduce errori nella rappresentazione e quindi nei
                                   calcoli

                                                                                                    20
Rappresentazione dei Caratteri

                         Codice ASCII a 7 bit
                         „   al carattere è associato un num. tra 0 e 127
                         „   la rappr. del carattere coincide con quella del
                             numero
Informatica Applicata

                         „   nota: vale anche per le cifre (0-9) ed i caratteri
                             speciali (es: +)

                             ‘A’               65                 1000001
                             ‘0’               48                 0011000

                                                                               21
Rappresentazione dei Caratteri

                         Limiti del codice ASCII a 7 bit
                         „   numero di caratteri rappresentabili molto
                             basso (non include lettere accentate)

                         Codice ASCII a 8 bit (“Extended ASCII”)
Informatica Applicata

                         „   al carattere è associato un num. tra 0 e 255
                         „   maggior numero di caratteri rappresentabili

                         Al giorno d’oggi
                         „   codice UNICODE (16 bit o superiore)

                                                                            22
Informatica Applicata   Tabella dei Codici ASCII Estesi

                                                          23
Linguaggi di Programmazione

                         Linguaggi per impartire istruzioni al
                         processore
                         Programma
                         „ sequenza di istruzioni
Informatica Applicata

                         „ normalmente pensato per risolvere un
                           problema di calcolo
                         „ al programma vengono forniti dei dati
                         „ il programma calcola eseguendo le istruzioni
                         „ il programma restituisce i risultati

                                                                          24
Evoluzione dei Linguaggi

                           Esistono numerosi linguaggi
                            „   differenti per funzionalità e tecnologia
Informatica Applicata

                            anni ‘60 metà anni ’60   1974         1991     1994
                            COBOL      BASIC          C             VB     Java

                        metà anni ’50        1968                1990            2000
                         FORTRAN            Pascal               C++       C#, VB.NET

                             Linguaggi di                     Linguaggi       Linguaggi
                             Programmazione                      Ibridi        Orientati
                             Procedurale                                     agli Oggetti
                                                                                    25
Linguaggi di Programmazione

                        programmazione           C
                        procedurale
                                                                “clean C”
Informatica Applicata

                                                                  C++
                        programmazione   linguaggio di questo
                                                                            Java,
                        orientata agli           corso -                     C#
                        oggetti             sostanzialmente
                                            equivalente ma
                                           più semplice del C

                                                                                26
Linguaggi di Programmazione

                         Attenzione
                         „   i linguaggi della stessa famiglia sono
                             normalmente basati sugli stessi concetti

                         Differenze
Informatica Applicata

                         „   alcuni linguaggi forniscono funzionalità che
                             altri non hanno
                         „   “sintassi”
                         „   “semantica”

                                                                            27
Sintassi e Semantica
                         Sintassi
                         „   “grammatica” del linguaggio
                         „   insieme delle regole che stabiliscono quali frasi (programmi)
                             sono corretti
                              „   Esempio: in Italiano: “maiuscola dopo il punto”
                                            in C++: “le istruzioni si concludono con ;”
Informatica Applicata

                         Semantica
                         „   “significato” del linguaggio
                         „   insieme delle regole che stabiliscono come il calcolatore
                             esegue i programmi corretti
                              „   Esempio: in italiano: “andrò è un’azione nel futuro”
                                            in C++: cout
Sintassi e Semantica
                         Attenzione: ci sono due diverse nozioni di correttezza
                         Correttezza Sintattica
                          „   assenza di errori sintattici
                          „   il programma è eseguibile
                         Correttezza Semantica (o Logica)
                          „   implica la correttezza sintattica
Informatica Applicata

                          „   il prog. risolve correttamente il problema
                         Verifica della correttezza sintattica
                          „   viene verificata dal compilatore
                          „   consente di eliminare gli errori sintattici
                         Verifica della correttezza semantica
                          „   esecuzione e “test” del programma
                          „   prove di funzionamento per controllare che il programma si
                              comporti correttamente
                          „   processo più complesso e delicato
                                                                                           29
Ciclo di Vita di un Programma

                         Per programmare
                         „   è necessario conoscere almeno un linguaggio
                             (sintassi e semantica)
                         Ma questo non basta
Informatica Applicata

                         „ il processo di sviluppo del software è
                           complesso
                         „ è necessario un metodo (ovvero una
                           “metodologia”) per affrontare questa
                           complessità

                                                                       30
Ciclo di Vita di un Programma

                         Il punto di partenza
                         „ la descrizione del problema, normalmente
                           fornita in linguaggio naturale
                         „ è opportuno analizzarla accuratamente
Informatica Applicata

                         Il punto di arrivo
                         „   l’applicazione correttamente funzionante
                         Un passo intermedio fondamentale
                         „   concepire una strategia per la soluzione del
                             problema

                                                                            31
Ciclo di Vita di un Programma
                             Algoritmo: sequenza finita di passi, elementari e non
                               ambigui, che risolve un problema in un tempo finito

                        PROBLEMA                         ALGORITMO                         PROGRAMMA
Informatica Applicata

                                             strategia                     linguaggio di
                                             risolutiva                   programmazione

                        Efficienza: algoritmo deve risolvere il problema utilizzando al meglio le risorse a disposizione

                                                                                                                   32
Ciclo di Vita di un Programma

                         Avendo concepito l’algoritmo
                         „   è possibile procedere alla scrittura del codice

                         Codice sorgente
Informatica Applicata

                         „   istruzioni del linguaggio di programmazione
                         „   non è direttamente eseguibile dal processore

                         Linguaggio macchina
                         „   linguaggio di comandi eseguibili dal
                             processore (molto semplici)

                                                                               33
Linguaggi ad alto livello

                        Conviene impostare la soluzione di un problema a partire
                        dalle “mosse elementari” del linguaggio macchina?
                        „   SI, per risolvere il problema con efficienza
                        „   NO, se la macchina di partenza ha mosse di livello troppo basso
                            (difficile progettare un algoritmo)
Informatica Applicata

                        Linguaggi di Programmazione ad Alto Livello
                        „   Alto livello di astrazione: le istruzioni corrispondono ad
                            operazioni più complesse
                        „   esempi: Pascal, Basic, C, C++, Java
                        „   E’ necessario tradurre il programma nel linguaggio macchina
                            mediante opportuni programmi (interprete o compilatore)

                                                                                          34
Compilatore

                         Processo di compilazione
                         „ verifica della correttezza sintattica
                         „ trasforma il codice sorgente in codice
                           “oggetto”
Informatica Applicata

                         Processo di collegamento
                         „ collega il codice oggetto a quello delle
                           “librerie” esterne (es: op. matematiche)
                         „ produce il codice eseguibile completo
                           dell’applicazione

                                                                      35
Ciclo di Vita di un Programma

                         A questo punto
                         „   l’applicazione è eseguibile
                         „   è necessario verificarne la correttezza logica
Informatica Applicata

                         Fase di test
                         „   esecuzione ripetuta dell’applicazione su dati di
                             test
                         „   per verificarne il funzionamento

                                                                              36
Ciclo di Vita di Un Programma

                          Analisi del     Scelta dell’        Scrittura del
                          Problema        Algoritmo           Programma

                                                         codice
Informatica Applicata

                                                         sorgente
                                                             Compilazione
                                        errori                     e      errori       errori
                                        nella                Collegamento sintattici   logici
                                        strategia
                                                         codice
                                                         eseguibile
                            ATTENZIONE
                           queste fasi non si                                         Uso e
                                                                Verifica
                                                                                   Manutenzione
                         svolgono “in cascata”

                                                                                           37
Compilazione e Collegamento

                        codice                               codice
                        sorgente       Compilazione          oggetto
                        es:primo.cpp                         (ling. macchina)
                                       Compilatore           es: primo.obj
Informatica Applicata

                                       librerie
                                                                                codice
                                       esterne
                                                      Collegamento              eseguibile
                                       precompilate
                                                                                es: primo.exe
                                       es: iostream
                                                      Collegatore
                                                      (“linker”)

                                                                                        38
Termini della licenza
                        Questo lavoro si basa sul lavoro di G. Mecca “Programmazione
                        Procedurale in Linguaggio C++”.
                        Questo lavoro viene concesso in uso secondo i termini della
                        licenza “Attribution-ShareAlike” di Creative Commons. Per
                        ottenere una copia della licenza, è possibile visitare
                        http://creativecommons.org/licenses/by-sa/1.0/ oppure inviare
Informatica Applicata

                        una lettera all’indirizzo Creative Commons, 559 Nathan Abbott
                        Way, Stanford, California 94305, USA

                                                                                        39
Puoi anche leggere