Concetti Fondamentali sulla Programmazione by 2Y3w2q

VIEWS: 0 PAGES: 17

									     Concetti Fondamentali sulla
     Programmazione

   Cosa Significa Programmare
   Linguaggi di Programmazione
   Lo sviluppo dei programmi: tecniche di programmazione
   L’esecuzione dei programmi
     L’interpretazione
     La compilazione
 Le Librerie
 Le Fasi di Compilazione e Link
 Esempio in C



                                                            1
      La Programmazione
Dato un problema INFORMATICO, programmare
  significa:
 Definire l’algoritmo risolutivo, che deve essere finito e
  realizzabile con le risorse disponibili
 Tradurre l’algoritmo nel linguaggio di programmazione
  scelto,    attraverso     la    particolare tecnica    di
  programmazione scelta, rispettando le regole sintattiche
  del linguaggio




                                                              2
     Linguaggi di programmazione:
     Linguaggio Macchina

 I primi linguaggi di programmazione coincidevano con
  l'insieme delle istruzioni eseguibili dall'hardware.
 Le istruzioni hardware sono codificate in codice binario:
  ogni informazione è rappresentata, all'interno della
  macchina, come una sequenza di bit.
 LOAD 8 potrà essere rappresentata in una macchina reale
  come 00110010, dove 0011 è la rappresentazione interna del
  codice operativo LOAD
 Enorme sforzo richiesto per codificare algoritmi semplici.

                                                               3
     Linguaggi di programmazione:
     Assembly
 Dalla nascita dei primi calcolatori, si è cercato di diminuire lo
  sforzo e aumentare la produttività dell'utente, anche a costo di
  caricare la macchina di maggiori compiti.
 E’ meglio risparmiare il tempo dell'uomo anche a costo di
  sprecare tempo-macchina (traduzione di programmi e scarsa
  efficienza del programma).
 La prima evoluzione dei linguaggi di programmazione ha portato
  ad una codifica di tipo simbolico, anziché binaria, dei
  programmi.
 Tali versioni simboliche dei linguaggi hardware sono note come
  linguaggi assembly

                                                                      4
       Linguaggi di programmazione:
       Evoluzione

 Il passo successivo nell’evoluzione dei linguaggi     Alto Livello
  di programmazione tese a rendere la codifica
  degli algoritmi il più possibile “vicina” al           Assembly
  problema da risolvere anziché all'architettura
  della macchina destinata all'esecuzione del
                                                      Macchina/binario
  programma.
 Non a caso i primi due linguaggi di alto livello,   MicroProgrammi
  FORTRAN e COBOL, hanno costrutti
  fortemente ispirati alla notazione usata per           Hardware
  descrivere i problemi di maggior rilievo per il
  calcolo automatico degli anni '50, cioè
  l'elaborazione numerica e quella gestionale.

                                                                       5
   Linguaggi di programmazione:
   Evoluzione

 Gli anni '70 vedono il fiorire dei linguaggi
  Strutturati:
    il SIMULA 67, l’ALGOL 68, ma soprattutto il
     PASCAL e il C

 Negli anni '80 si ha l'affermarsi dei linguaggi
  Object-Oriented (OO):
    C++, Visual BASIC, Java, C#


                                                    6
     La Tecnica di Programmazione
 Non è legata ad un linguaggio, anche se alcuni
  linguaggi sono ideali per essere abbinati ad una
  specifica tecnica di programmazione
 Esistono tre tecniche:
  a) Programmazione NON Strutturata, che produce lo
     Spaghetti Code
  b) Programmazione Strutturata: Sequenza, Selezione,
     Ripetizione
  c) Programmazione ad Oggetti: Classe, Oggetto,
     Metodo
                                                  7
    L’Esecuzione dei Programmi

  Il programma scritto in un qualunque
   linguaggio deve essere tradotto in linguaggio
   binario
  Esistono due soluzioni:
   Interpretazione
   Compilazione




                                                   8
    L’Interpretazione
 Funzionamento di un interprete:
   Preleva un’istruzione I del programma P
    scritto nel linguaggio L
   Decodifica I
   Traduce I in una serie di istruzioni in
    linguaggio macchina M1, M2, … , Mn
   Esegue M1, M2, … , Mn
   Passa all’istruzione successiva di P fino a
    quando non si sia raggiunta una istruzione
    di terminazione
                                                  9
        Lo sviluppo dei programmi
        basato sulla Compilazione
             File sorgente   File sorgente          File sorgente   File sorgente


            Compilazione     Compilazione           Compilazione    Compilazione


             File oggetto    File oggetto           File oggetto    File oggetto




                                             Link                                   Libreria/e




                                        File eseguibile



 I codici sorgente ed oggetto possono essere suddivisi in più file,
  il codice eseguibile di un programma risiede in un unico file                                  10
     Le Funzioni di Libreria

 In molti linguaggi (quali il C), molte operazioni vengono
  delegate a delle librerie
 Le funzioni sono divise in gruppi, quali I/O, gestione della
  memoria, operazioni matematiche e manipolazione di
  stringhe
 Per ogni gruppo di funzioni esiste un file sorgente,
  chiamato file header, contenente le informazioni necessarie
  per utilizzare le funzioni (Dichiarazione costanti, funzioni,
  parametri delle funzioni, etc.)
 I nomi dei file header terminano, per convenzione, con
  l’estensione “.h” (ad es., stdio.h è il file header dello
  standard I/O nel linguaggio C)


                                                              11
       La compilazione dei file sorgente
 Un file sorgente contiene un main e un insieme di routine,
  chiamate funzioni, ognuna delle quali risolve una piccola
  parte del problema di programmazione
 Un file sorgente può contenere chiamate a funzioni di
  libreria e chiamate a funzioni contenute in altri file sorgenti
 Il compilatore è esso stesso un programma (o un gruppo di
  programmi) che deve essere eseguito
 Durante la compilazione avviene:
      Controllo del codice sorgente da parte di un preprocessore: interpretare
       speciali direttive di precompilazione,
      Controllo di eventuali errori sintattici (NON LOGICI),
      Produzione di un file in codice Assembly,
      Trasformazione del file in codice Assembly in un altro file in codice
       OGGETTO (Macchina): estensione .obj
                                                                           12
      Il link
 Il linker è generalmente un programma distinto dal
  compilatore: in alcuni ambienti il programma di link deve
  essere lanciato separatamente
 Il Linker fa in modo che:
    i riferimenti tra diversi file oggetto e con le librerie
      vengano risolti
    i file oggetto creati dal compilatore vengano trasformati in
      un unico file eseguibile, al quale vengano associate le
      librerie necessarie all’esecuzione
 Il risultato prodotto dal Linker è un programma
  eseguibile, che può essere caricato in memoria



                                                                13
       La Fase di Caricamento

 Il Caricamento di un programma in memoria, avviene nel
  momento in cui l’utente richiede la sua esecuzione

 Durante la fase di caricamento (o loading ), il programma
  eseguibile viene caricato nella memoria del calcolatore;

 Le Fasi di Compilazione, Linker e Loading sono separate
  (anche temporalmente)
      Attenzione: l’uso dei compilatori crea false impressioni !




                                                                    14
      Esempio – Linguaggio C

 Molte idee basilari del C derivano dal linguaggio BCDL e
  linguaggio B
 Nel 1978 Kernighan e Ritchie pubblicano “The C
  Programming Language”
 Nel 1983 l’American National Standards Institute (ANSI)
  ha iniziato i lavori per la definizione dell’ANSI C
 Nel 1988 nasce l’ANSI C




                                                             15
      Esempio – Linguaggio C

 Per includere un file header in un programma in
  linguaggio C, occorre inserire nel codice sorgente:
                      include <nomefile.h>
 La direttiva include è rivolta al preprocessore
 Si chiama: Direttiva di Precompilazione
 Esempio: Per utilizzare printf(), che permette di
  visualizzare dati su terminale, è necessario inserire nel
  sorgente la direttiva di precompilazione:
                       include <stdio.h>

                                                              16
      Esempio – Linguaggio C


                                Include la libreria standard di I/O
include<stdio.h>
main()                          Definisce una funzione main che non
                                riceve alcun valore come argomento
{
                                main richiama la funzione di libreria
    printf(“Salve, mondo\n”);   printf per stampare la sequenza di
                                caratteri specificata; \n indica il new
}                               line




                                                                          17

								
To top