linguaggio di programmazione e programma



Documenti analoghi
PROGRAMMA = ALGORITMO

PROGRAMMAZIONE STRUTTURATA

Qualsiasi programma in C++ segue lo schema:

Lezione 6 Introduzione al C++ Mauro Piccolo

Introduzione alla programmazione in linguaggio C

Elementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I

Le basi del linguaggio Java

Linguaggi di Programmazione

Unità Didattica 2 I Linguaggi di Programmazione

Il Linguaggio C. Caratteristiche. Caratteristiche. Esempio di programma in C. Tipi di dato primitivi in C. Dati

Prof. Pagani Corrado INTRODUZIONE AL LINGUAGGIO C

Introduzione alla programmazione Algoritmi e diagrammi di flusso. Sviluppo del software

Programmazione strutturata

IL TEOREMA DI BOEHM-JACOPINI

Sommario PREFAZIONE...XI CAPITOLO 1: INTRODUZIONE AI COMPUTER, A INTERNET E AL WEB... 1 CAPITOLO 2: INTRODUZIONE ALLA PROGRAMMAZIONE IN C...

Le Strutture di controllo Del Linguaggio C. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

Università degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso

Introduzione alla programmazione

Indice PARTE A. Prefazione Gli Autori Ringraziamenti dell Editore La storia del C. Capitolo 1 Computer 1. Capitolo 2 Sistemi operativi 21 XVII XXIX

Primo programma in C

INTRODUZIONE ALLA PROGRAMMAZIONE

STRUTTURE DI CONTROLLO DEL C++

Introduzione alla programmazione strutturata

Algoritmi e basi del C Struttura di un programma

Esercitazione 4. Comandi iterativi for, while, do-while

Programmazione strutturata

Informatica (A-K) 10. Linguaggio C - 2

La sintassi del C APPENDICE H

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - Programma

IL PRIMO PROGRAMMA IN C

Cos è un algoritmo. Si dice algoritmo la descrizione di un metodo di soluzione di un problema che sia

ITI M. FARADAY. Programmazione a. s

I Linguaggi di Programmazione

Informatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica

Algoritmi e soluzione di problemi

INFORMATICA. Strutture iterative

- Dispensa III - PROGRAMMAZIONE C (Parte I)

Introduzione alla programmazione. Alice Pavarani

PROGRAMMAZIONE: Le strutture di controllo

6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Transcript:

I/O bus CPU memoria elementi di Sistemi Informatici il segnale digitale: conversione analogico-numerica esempi di supporti di memorizzazione dell informazione computer: definizione e struttura (modello Von Neumann) la programmazione: algoritmi linguaggi di programmazione: elementi di linguaggio C 1 INTERAZIONE UOMO-MACCHINA concetto formalizzazione algoritmo codifica programma 2

linguaggio di programmazione e programma in informatica, un linguaggio di programmazione è un linguaggio formale, dotato (al pari di un qualsiasi linguaggio naturale) di lessico (complesso delle parole che costituiscono una lingua) sintassi (regole o relazioni modulari che stabiliscono il posto che le parole occupano all'interno di una frase) semantica (significato delle parole e delle frasi) è intermedio fra il linguaggio naturale e il linguaggio macchina descrive gli algoritmi in modo rigoroso e li traduce in programmi eseguibili da una macchina quale il computer un programma è pertanto la formulazione di un algoritmo nei termini di un linguaggio di programmazione. 3 programmazione strutturata la programmazione strutturata nasce come proposta per regolamentare e standardizzare le metodologie di programmazione ha l obiettivo di rendere piu facile la lettura dei programmi (e quindi la loro modifica e manutenzione) è basata sull idea che ogni programma viene visto come un comando (complesso, o strutturato) ottenuto componendo altri comandi mediante alcune regole di composizione chiamate strutture di controllo le strutture di controllo sono 3 concatenazione (o composizione, blocco); alternativa (o istruzione condizionale) ripetizione (o iterazione) 4

programmazione strutturata nell ambito della programmazione strutturata ogni ogni programma viene visto visto come un un comando (complesso, o strutturato) ottenuto componendo altri altri comandi soltanto mediante le le 3 strutture di di controllo: concatenazione, alternativa e ripetizione importante: altre strutture non possono essere utilizzate ciò che implica l abolizione dei salti incondizionati (goto) nel flusso di controllo si puo` inoltre dimostrare (teorema Böhm-Jacopini) che queste strutture sono sufficienti per esprimere qualunque algoritmo 5 teorema di Böhm - Jacopini il teorema afferma che le le strutture di di concatenazione, alternativa e ripetizione costituiscono un un insieme completo in in grado di di esprimere tutte tutte le le funzioni calcolabili. e questo significa che un linguaggio composto dalle istruzioni: lettura, scrittura: (scanf, printf ) semplici assegnamento : var = a istruzione di concatenazione (o composta) : istruzione alternativa (o condizionale): if else istruzione di ripetizione (o iterazione): while Istruzioni è un linguaggio completo in grado cioè di esprimere tutte le funzioni calcolabili e tale da non limitare il potere espressivo 6

istruzioni strutturate in C il linguaggio C è un linguaggio strutturato che si articola su 3 categorie di istruzioni strutturate istruzione composta (blocco) istruzioni alternative if, switch istruzioni ripetitive (o (o iterative) while, do, do, for for ed è anche tale che ogni istruzione strutturata è sintatticamente equivalente ad una singola istruzione (strutturata) 7 istruzioni alternative espr-log istruzione 1 struttura dell operatore if if (espr_log) istruzione 1; espr_log istruzione 1 istruzione 2 struttura dell operatore if-else if (espr_log) istruzione 1; else Istruzione 2; 8

istruzioni iterative i=i+1 sequenza istruzioni i=0 i<n for (i=0; espr_log; i =i+1) sequenza istruzioni sequenza istruzioni espr_log while (espr_log) sequenza istruzioni sequenza istruzioni espr_log do sequenza istruzioni while (espr_log); struttura dell operatore for struttura dell operatore while struttura dell operatore do-while 9 struttura di un programma la struttura di un programma è l insieme di operazioni da applicarsi secondo una certa sequenza su un certo insieme di dati per scrivere un programma occorre definire: la caratteristiche dei dati la modalità di accesso ai dati il tipo di operazioni sui dati l ordine di esecuzione delle operazioni ogni dato deve essere descritto rispetto al tipo e alla struttura: tipo: definisce l insieme delle operazioni ammissibili struttura: relazioni esistenti tra i valori che rappresentano il dato (matrici, vettori, strutture (record)) un programma è composto di: commenti frasi dichiarative (direttive al traduttore, ad esse non corrispondono istruzioni di macchina, e/o dichiarazione di variabili e funzioni) frasi esecutive (azioni da applicare ai dati, corrispondono ad una o più istruzioni di macchina) 10

fasi della programmazione EDITOR FILE SORGENTE (.c o.c++) COMPILATORE FILE OGGETTO (.obj) LINKER l editor è un programma che opera la traduzione del programma e il suo salvataggio in un file detto file sorgente o codice sorgente prova.c (se il file è e scritto in linguaggio C) prova.cpp (se il file è e scritto in linguaggio C++) il compilatore è un programma che opera la traduzione da file sorgente a file oggetto prova.c prova.obj il linker è un programma che opera la traduzione traduzione da file oggetto a file eseguibile prova.obj prova.exe FILE ESEGUIBILE (.exe) 11 il codice sorgente il codice sorgente è l insieme di istruzioni appartenenti ad un determinato linguaggio di programmazione, utilizzato per realizzare un programma o un qualunque software per computer esempio di codice sorgente in C # include <stdio.h> int main(void) printf ( HelloWorld!\n"); system ("pause"); esempio di codice sorgente in Pascal program prova; uses crt; begin writeln ( HelloWorld ); end 12

Esempio 1 struttura di un programma C #include <stdio.h> int main (void) printf ( HelloWorld!\n ); system ("pause"); questo semplice programma visualizza sul monitor la frase HelloWorld! esaminando il programma, questo è costituito da da una direttiva per il compilatore #include <stdio.h> dal programma principale int main (void) printf ( HelloWorld!\n ); system ("pause"); che costituisce la parte operativa vera e propria l insieme di istruzioni del programma principale così come di qualsiasi altro sottoprogramma deve essere sempre compreso fra due parentesi graffe istruzioni 13 Esempio struttura di un programma C: la direttiva per il compilatore #include <stdio.h> int main (void) printf ( HelloWorld!\n ); system ("pause"); la direttiva per il compilatore #include <stdio.h> specifica che il programma fa uso di librerie di input/output. Per l utilizzo di tali librerie è necessario che il compilatore sia a conoscenza delle informazioni contenute in questo file la maggior parte dei programmi in C contiene una riga di istruzioni di questo tipo in quanto quasi tutti i programmi eseguono operazioni di input/output atri tipi di direttive sono ad esempio: #include <math.h> #include<stdlib.h> #include<iostream> 14

struttura di un programma C: il programma principale Esempio #include<stdio.h> #include<iostream> int main (void) int a=0,b=0,c=0; scanf("%d",&a); scanf("%d",&b); c=a*b; printf("\na*b=%d\n\n",c); system ("pause"); // direttive per il compilatore // intestazione programma principale // inizio programma // corpo del programma // fine del programma il programma principale è sostanzialmente costituito da una intestazione una parte operativa o corpo del programma l intestazione definisce le modalità di utilizzo del programma dall esterno dichiarandone il nome (main) il corpo comprende le istruzioni che l elaboratore deve eseguire all atto dell esecuzione del programma 15 dati un dato è un oggetto o entità codificabile e gestibile da un computer i tipi di dati nel linguaggio C sono testo (carattere) char numeri interi int e long int numeri in virgola mobile float numeri in virgola mobile a doppia precisione double non valori void puntatori una variabile è un oggetto a cui può essere associato un dato mediante l operazione di assegnazione per assegnazione si intende l attribuzione di un valore ad una variabile 16

variabili una variabile è un oggetto a cui può essere associato un dato mediante l operazione di assegnazione per assegnazione si intende l attribuzione di un valore ad una variabile Ex: int float età età=20 peso peso = 7,3 tipo di dato variabile assegnazione di un valore alla variabile tipo di dato variabile assegnazione di un valore alla variabile tipo di dato char color variabile assegnazione di un valore alla variabile color = B 17 operatori gli operatori sono degli strumenti che mettono in relazione variabili e costanti. Essi sono di 4 tipi di assegnamento aritmetici relazionali logici operatori di assegnamento l operatore di assegnamento è il segno di = e serve ad assegnare un valore ad una variabile ma anche per assegnare il valore di una variabile ad un altra variabile; es: operatori aritmetici a=3 a=b simbolo descrizione spiegazione esempio + somma N1+N2 33+7=40 - sottrazione N1-N2 33-7=26 * moltiplicazione N1*N2 33*7=231 / divisione risultato della divisione N1/N2 9/4=2,25 % resto resto della divisione N1/N2 9%4=1 perché 9/4=2 con resto di 1 18

operatori operatori relazionali operatori logici simbolo descrizione spiegazione > maggiore N1 maggiore di N2 < minore N1 minore di N2 >= maggiore o uguale N1 maggiore o uguale a N2 <= minore o uguale N1 minore o uguale a N2 == uguale N1 uguale a N2!= diverso N1 diverso da N3 simbolo descrizione spiegazione! NOT (espressione logica E) se E è vera, NOT E è falsa se E è falsa, NOT E è vera && (espressione logica E1) AND (espressione logica E2) E1 AND E2 è vera se e solo se sono entrambe vere (espressione logica E1) OR (espressione logica E2) E1 OR E2 è vera se almeno una delle due è vera 19 istruzioni di lettura e scrittura le istruzioni di lettura trasferiscono i dati dall esterno attraverso il dispositivo di input che di default è la tastiera; l istruzione di lettura è scanf le istruzioni di scrittura trasferiscono i dati dal computer all esterno attraverso il dispositivo di output che di default è la schermo il formato delle istruzioni è il seguente scanf ( formato variabile,&variabile); esempio scanf ( %d,&numero); scanf ( %c,&carattere); l istruzione di scrittura è printf legge un numero decimale legge un carattere formato variabile tipo di variabile %c carattere %d intero decimale printf ( testo + formato variabile, variabile); esempio printf ( N=%d, num); visualizza N= num printf ( Hello World ); visualizza Hello World valore del numero se non ci sono variabili l istruzione printf può essere utilizzata solo per visualizzare un testo, quello cioè compreso fra le virgolette %u unsigned %f float %s string 20

strutture condizionali e iterative le strutture condizionali sono quelle che consentono percorsi alternativi di esecuzione del programma in funzione delle condizioni di tipo o che si verificano. Tali strutture sono definite dai seguenti operatori if if-else switch le strutture iterative sono quelle che consentono di ripetere ciclicamente sequenze di istruzioni in funzione del verificarsi di condizioni di tipo. Tali strutture sono definite dai seguenti operatori chiamati cicli ciclo for ciclo while ciclo do-while 21 operatori condizionali if e if-else le istruzioni condizionali consentono di eseguire in modo selettivo una singola istruzione o un blocco di istruzioni l istruzione if consente di eseguire un segmento di codice in modo condizionale in funzione del valore o se viene eseguita l azione indicata se, si salta l azione e si continua il programma l istruzione if-else consente al programma di prendere due strade diverse in base alla condizione di o istruzione 1 espr-log if (espr_log) istruzione 1; istruzione 1 espr_log istruzione 2 if (espr_log) istruzione 1; else Istruzione 2; struttura dell operatore if struttura dell operatore if-else 22

operatore condizionale switch l operatore switch viene utilizzato quando le condizioni da verificare sono numerose in questo caso utilizzare l operatore switch diventa una soluzione più lineare e formalmente corretta rispetto all adozione di diversi if in cascata che possono compromettere la leggibilità del programma la struttura dell operatore è la seguente: 1 - se variabile= valore 1 viene eseguito il blocco di istruzioni caso 1 2 - se variabile= valore 2 viene eseguito il blocco di istruzioni caso 2 N - se variabile= valore N viene eseguito il blocco di istruzioni caso n blocco istruzioni caso 1 valore della variabile valore 1 valore 2 valore N blocco istruzioni caso 2. blocco istruzioni caso N switch(variabile) case 1: istruzioni caso 1; break; case 2: istruzioni caso 2; break;. case N: istruzioni caso N; break; default: altre istruzioni; ogni blocco di istruzioni va terminato con l operatore break il blocco default viene eseguito se nessuna delle verifiche ha dato esito positivo struttura dell operatore switch listing file sorgente 23 operatori ciclici gli operatori ciclici o iterativi sono 3 for while do while i=i+1 sequenza istruzioni i=0 i<n il blocco di istruzioni è ripetuto N volte in accordo con quanto indicato da un numero noto a priori N la condizione sulla espressione logica viene eseguita prima del blocco delle istruzioni la condizione sulla espressione logica viene eseguita dopo l esecuzione del blocco delle istruzioni sequenza istruzioni espr_log sequenza istruzioni espr_log for (i=0; espr_log; i =i+1) sequenza istruzioni while (espr_log) sequenza istruzioni do sequenza istruzioni while (espr_log); struttura dell operatore for struttura dell operatore while struttura dell operatore do-while 24

Esempio di codifica da algoritmo a programma 25 algoritmo per il calcolo dei termini della successione di Fibonacci flow chart file sorgente in C START // PROGRAMMA PER IL CALCOLO DEI NUMERI DELLA SUCCESSIONE DI FIBONACCI// #include <stdio.h> #include<iostream> input numeri successione K i < K-1? f2f1 f1f0 NO SI END int main (void) int f2=0,f1=0,f0=1,k=0,i=1; printf("programma PER IL CALCOLO DEI NUMERI DELLA SUCCESSIONE DI FIBONACCI\n\n"); printf("quanti numeri della serie di Fibonacci vuoi calcolare? \n\nn="); scanf("\n%d",&k); printf("%d - %d\n", 1,f0); i=i+1; while(i<k+1) f2=f1; f0f1+f2 f1=f0; f0=f1+f2; printf("%d - %d\n", i,f0); print f0 i=i+1; system ("pause"); ii+1 26

output del programma file sorgente in C display //PROGRAMMA PER IL CALCOLO DEI NUMERI DELLA SUCCESSIONE DI FIBONACCI// #include <stdio.h> #include<iostream> int main (void) int f2=0,f1=0,f0=1,k=0,i=1; printf("programma PER IL CALCOLO DEI NUMERI DELLA SUCCESSIONE DI FIBONACCI\n\n"); printf("quanti numeri della serie di Fibonacci vuoi calcolare? \n\nn="); scanf("\n%d",&k); printf("%d - %d\n", 1,f0); i=i+1; while(i<k+1) f2=f1; f1=f0; f0=f1+f2; printf("%d - %d\n", i,f0); i=i+1; system ("pause"); 27