La Programmazione. Cos è la programmazione? Concetti preliminari

Documenti analoghi
Codifica degli algoritmi in linguaggio di alto livello

La Programmazione. Cos è la programmazione? Concetti preliminari. Programmazione e Laboratorio di Programmazione Luca Tesei 1

Sommario. La Programmazione. Programmare vs Usare un computer. Programmare vs Usare un computer. Programmi ognidove. Programmi ognidove

La Programmazione. Programmare Macchine Astratte Compilazione / Interpretazione Java. Laboratorio di Programmazione - Luca Tesei

ESECUZIONE DI PROGRAMMI C SU MACCHINE REALI. Docente: Giorgio Giacinto AA 2008/2009. formalizzazione degli algoritmi in linguaggio C

ESECUZIONE DI PROGRAMMI C SU MACCHINE REALI. Docente: Giorgio Giacinto AA 2009/2010

Codifica degli algoritmi in un linguaggio di alto livello

Linguaggi di Programmazione

Introduzione al C. Informatica Generale - Introduzione al C Versione 1.0, aa p.1/17

Ambiente di programmazione

Ambiente di programmazione

Informatica B allievi Ing.Energetica e Meccanica

Dati due punti sul piano calcolare la loro distanza

Struttura dei programmi C

Indice. Obiettivi della programmazione in linguaggi di alto livello (2) Obiettivi della programmazione in linguaggi di alto livello (1)

Struttura di un. Struttura dei programmi C

Corso sul linguaggio C

Struttura dei programmi e Variabili

Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 4 24/10/2013

Le basi del linguaggio Java

Introduzione al C. Lez. 1 Elementi. Rossano Venturini

Lezione 6 Introduzione al C++ Mauro Piccolo

Funzioni, Stack e Visibilità delle Variabili in C

Introduzione al linguaggio C

Livello 1 Livello 2 Livello 3

IL PRIMO PROGRAMMA IN C

Primi passi col linguaggio C

Dichiarazioni e tipi predefiniti nel linguaggio C

Introduzione alla programmazione C++ Argomenti. Macchina astratta C

Linguaggio C: introduzione

Introduzione alla programmazione in linguaggio C

LEZIONE 1 LE BASI DEL LINGUAGGIO C

Il linguaggio C. Prof. E. Occhiuto INFORMATICA 242AA a.a. 2010/11 pag. 1

#include <stdio.h> main() { - 1 -

Sunto della scorsa lezione Il linguaggio C. Un Programma con Errori. Il preprocessore. Linguaggi di Programmazione I.

1

C array. Problema: scrivere un programma che, ricevuto in input un intero n ed n interi positivi, li stampi in ordine inverso.

Il nostro primo vero programma C

PREFAZIONE... IX Lo scopo di questo libro... ix La metodologia di insegnamento... ix Panoramica sul libro... xiii

Algoritmi e basi del C Struttura di un programma

Linguaggi di alto livello, compilatori e interpreti

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore

Burocrazia: Primi passi con il linguaggio C. Diversi tipi di linguaggio. Un solo linguaggio

Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2007/2008

ASTRAZIONE. Sono indipendenti dalla macchina hardware sottostante ASTRAZIONE 1

ciclo di vita della soluzione (informatica) di un problema

Cosa serve per cominciare?

Corso di Calcolatori Elettronici Un computer è un dispositivo in grado di eseguire dei calcoli e di prendere delle decisioni logiche.

Algoritmi e basi del C Struttura di un programma

Fondamenti di Informatica. Ingegneria elettronica

Il linguaggio di programmazione Python

Algoritmi, Strutture Dati e Programmi. UD 2.b: Programmazione in Pascal

Unità F1. Obiettivi. Il linguaggio C. Il linguaggio C++ Linguaggio C. Pseudolinguaggio. Primi programmi

Introduzione al C. Lez. 1 Elementi. Rossano Venturini

Unità Didattica 1 Linguaggio C. Fondamenti. Struttura di un programma.

#include <stdio.h> /* l esecuzione comincia dalla funzione main */ int main()

Ingresso ed Uscita in C. Informatica 1 / 15

Introduzione e Fondamenti del Linguaggio C

Le istruzioni corrispondono univocamente a quelle macchina, ma vengono espresse tramite nomi simbolici i (parole chiave)

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

Introduzione al C. Lez. 1 Elementi

int main(){ int numero; /* numero di cui voglio calcolare il fattoriale */ int fatt; /* memorizzo il fattoriale di numero */ int somma=0;

Macchine Astratte. Definizione e tipi di implementazione

L assegnamento. Andrea Marin. a.a. 2011/2012. Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time

Pag. 1. La formalizzazione dell informazione: Dati e Diagrammi di Flusso. Codifica degli algoritmi

Informatica B a.a 2005/06 (Meccanici 4 squadra) PhD. Ing. Michele Folgheraiter

Sommario. Lessico, Sintassi e Semantica. Principi Fondamentali. Introduzione e Fondamenti del Linguaggio C

L AMBIENTE CODE BLOCKS E L IO

I/O da tastiera + Alessandra Giordani Lunedì 2 maggio

<programma> ::= {<unità-di-traduzione>} <main> {<unità-di-traduzione>}

Laboratorio di Programmazione

I Linguaggi di Programmazione

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

INPUT/OUTPUT INPUT/OUTPUT

Introduzione al C. Introduzione. Linguaggio ad alto livello. Struttura di un programma C

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

Input/Output di numeri

Linguaggio C Struttura dei programmi

ITI M. FARADAY. Programmazione a. s

LINGUAGGI DI PROGRAMMAZIONE

Prof. Pagani Corrado INTRODUZIONE AL LINGUAGGIO C

Struttura dei programmi C Nel semplice programma che abbiamo appena analizzato possiamo già vedere la struttura generale di un programma C.

Ingresso ed Uscita in C. Luca Abeni

Un esecutore di un linguaggio simbolico e costituito dalla coppia Compilatore, processore (o Interprete, processore)

STRUTTURA DI UN PROGRAMMA C

Variabili e input/ Alessandra Giordani Lunedì 18 marzo

Lo scopo. Il primo esperimento. Soluzione informale. Le variabili

Tipi derivati: Array

Fondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per l ambiente e il territorio

I Fondamenti del Linguaggio

Transcript:

La Programmazione Cos è la programmazione? Concetti preliminari 1

Sommario La programmazione, questa sconosciuta Programmiamo Macchine Astratte Linguaggi di basso e alto livello e loro implementazione Esempio: C 2

Programmi Nonostante l abbondanza di programmi disponibili esiste sempre l esigenza di scrivere programmi nuovi o di migliorarne di già esistenti In ogni caso esistono dei limiti a quello che un computer può calcolare: ci sono dei problemi per cui non esiste nessun algoritmo risolutivo Un algoritmo è il cuore di un programma: è il procedimento di calcolo che il programma deve seguire 3

Programmare Per poter programmare una certa macchina abbiamo bisogno di: Unalgoritmo che calcola ciò che il programma deve calcolare Un linguaggio per specificare l algoritmo. La macchina su cui vogliamo far girare il programma deve saper capire questo linguaggio In genere il programma che si scrive è una serie di istruzioni 4

Es: Una macchina fisica Operazioni Primitive Operazioni aritmetico-logiche Operazioni di manipolazione di stringhe di bit Lettura/Scrittura di celle di memoria e registri Input/output Controllo di Sequenza salti condizionali chiamate e ritorni dai sottoprogrammi 5

Programmare in un linguaggio Conoscere un linguaggio di programmazione corrisponde a conoscere tutti i suoi costrutti e come questi vengono eseguiti dalla relativa macchina astratta Avendo queste conoscenze si possono scrivere programmi nel linguaggio scelto e si può anche non conoscere per niente il tipo di implementazione della macchina astratta del linguaggio 6

Linguaggi di alto livello Richiedono una implementazione per poter essere poi eseguiti in una macchina fisica ospite Esistono diversi modi per implementarli: Compilazione o traduzione Interpretazione Varie combinazioni delle due 7

Compilazione Un compilatore è un programma che si occupa di tradurre un altro programma scritto in un linguaggio L in un programma equivalente scritto in L0, linguaggio di una macchina fisica ospite 8

Programma scritto in L int main() { double x; int z = 10; while (z >0)... Compilazione Compilatore Programma equivalente in L0 MOV l1, R1 MOVF l3, R2... 9

Compilazione Molti linguaggi sono compilati: C, C++, Pascal, FORTRAN, COBOL, Java (parzialmente) Scrivere un compilatore è un compito difficile, ma una volta fatto esso permette di far eseguire tutti i programmi del linguaggio L per cui è stato scritto da macchine che funzionano con il linguaggio L0 10

Interpretazione Il linguaggio L è implementato su una macchina che funziona su L0 tramite una simulazione software Un programma in L0 (generalmente chiamato interprete) si occupa di prelevare nel giusto ordine le istruzioni di un programma dato in L, di simulare la loro esecuzione e di restituirne i risultati. Esempi di linguaggi interpretati: PROLOG, LISP, Java bytecode 11

Interpretazione Programma scritto in L int main() { double x; int z = 10; while (z >0)... Interprete simulazione 12

Esempio: linguaggio C Ad alto livello Compilato Il codice compilato può essere eseguito sulla macchina ospite con il supporto di alcune librerie che implementano diverse funzionalità (supporto a tempo di esecuzione run time library) 13

Codifica degli algoritmi in un linguaggio di alto livello 14

Elementi -e terminologia- essenziali Standard Input, Standard Output Stringa Celle di memoria o variabili Identificatori simbolici. Identificatori predefiniti e riservati Parole chiave 15

Struttura sintattica di un programma C Un programma C è composto da: un intestazione seguita da una sequenza di istruzioni racchiusa tra i simboli { e }. L intestazione è costituita dall identificatore predefinito main seguito da una coppia di parentesi ( ) (per il momento vuote) Le istruzioni sono frasi del linguaggio di programmazione; ognuna di esse termina con il simbolo ;. 16

Le principali istruzioni del C (1) 1. Istruzione di assegnazione ( si usano variabili e/o costanti) x = 23; w = 'a'; y = z; r3 = (alfa*43 xgg)*(delta 32*ijj); x = x+1; 2. Istruzioni di ingresso e uscita (scanf o printf ) (si noti che sono chiamate di libreria) 3. Istruzioni composte 3.1 Istruzione condizionale 3.2 Istruzione iterativa (ciclo o loop). 17

Le principali istruzioni del C (2) Le istruzioni composte 3. Istruzioni composte 3.1 Istruzione condizionale if(x == 0) z = 5; else y = z + w*y; if(x == 0) {z = 5;} else {y = z + w*y;} if ((x+y)*(z-2) > (23+v)) {z = x + 1; y = 13 + x;} if ((x == y && z >3) w!= y) z = 5; else {y = z + w*y; x = z;} Istruzioni scorrette: if (x == 0) else y = z; y = 34; if (x == 0) a; else b + c; 3.2 Istruzione iterativa (ciclo o loop) while (x >= 0) x = x 1; while (z!= y) {y = z x; x = x*3;} 18

Gli array Un array ( o vettore) viene identificato come qualsiasi altra variabile Però anche i suoi elementi sono variabili Ad essi si accede mediante un indice: esempi: scanf(s[2]); a[3] = s[1] + x; if (a[4] > s[1] + 3) s[2] = a[2] + a[1]; x = a[i]; a[i] = a[i+1]; a[i*x] = s[a[j+1] 3]*(y a[y]); in C il primo elemento di ogni array è sempre lo 0-esimo 19

Esecuzione di programmi C su macchine reali 20

Indice Che cosa manca per poter far girare i programmi La struttura di un programma C La parte dichiarativa L I/O 21

Un vero programma C /* Programma SommaSequenza */ #include <stdio.h> main() { int numero, somma; somma = 0; scanf("%d", &numero); while (numero!= 0) { somma = somma + numero; scanf("%d", &numero); } printf("la somma dei numeri digitati è: %d\n", somma); } 22

La struttura dei programmi C Un programma C deve contenere, nell ordine: Una parte contenente direttive per il compilatore. Per il momento trascuriamo questa parte. L identificatore predefinito main seguito dalle parentesi () Due parti, racchiuse dalle parentesi {}: la parte dichiarativa; la parte esecutiva. La parte dichiarativa elenca tutti gli elementi che fanno parte del programma, con le loro principali caratteristiche. La parte esecutiva consiste in una successione di istruzioni come già descritto in generale. 23

La parte dichiarativa (1) Tutto ciò che viene usato va dichiarato. In prima istanza: Dichiarazione delle costanti; Dichiarazione delle variabili. Perché questa fatica inutile? Aiuta la diagnostica (ovvero segnalazione di errori): x = alfa; alba = alfa + 1; Senza dichiarazione, alba è una nuova variabile! Principio importante: meglio un po più di fatica nello scrivere un programma che nel leggerlo -e capirlo! 24

La parte dichiarativa (2) Una dichiarazione di variabile consiste in: Uno specificatore di tipo, seguito da Una lista di uno o più identificatori di variabili separati da una virgola Ogni dichiarazione termina con ; Importanza del concetto di tipo di dato 25

La parte dichiarativa (3) Esempi di dichiarazioni di variabili: float int char x,y; i,j; simb; Equivalenti a: float x; int i,j; char simb; float y; 26

La dichiarazione di costanti: const float PiGreco = 3.14; const float PiGreco = 3.1415, e = 2.718; const int N = 100, M = 1000; const char CAR1 = 'A', CAR2 = 'B'; Un eventuale assegnazione a una costante sarebbe segnalata come errore dal compilatore. AreaCerchio = PiGreco*RaggioCerchio*RaggioCerchio; è equivalente a: La parte dichiarativa (4) AreaCerchio = 3.14*RaggioCerchio*RaggioCerchio; (se si fa riferimento alla prima dichiarazione di PiGreco) 27

Le istruzioni di I/O Istruzione per l output: printf (stringa di controllo, elementi da stampare); Stringa di controllo caratteri di conversione caratteri di formato L insieme degli elementi da stampare è una lista di variabili, di costanti o di espressioni composte con variabili e costanti 28

Le istruzioni di I/O Istruzione per l input: scanf (stringa di controllo, elementi da leggere); I nomi delle variabili da leggere sono preceduti dall operatore unario & Esempio 4.3: scanf("%c%c%c%d%f", &c1, &c2, &c3, &i, &x); 29

La direttiva #include Ogni programma che utilizza al suo interno le funzioni printf e scanf deve dichiarare l uso di tali funzioni nella parte direttiva che precede il programma principale: #include <stdio.h> È una direttiva data a una parte del compilatore, chiamata preprocessore, 30

Primi esempi che girano (1) Il primo programma C: /* PrimoProgrammaC */ #include <stdio.h> main() { printf("questo è il mio primo programma in C\n"); } NB: niente dichiarazioni! 31

Primi esempi che girano (2) /* Programma SommaDueInteri */ #include <stdio.h> main() { int a, b, somma; printf ( inserisci come valore dei due addendi due numeri interi\n ); scanf("%d%d", &a, &b); somma = a + b; printf("la somma di a+b è:\n%d \narrivederci!\n", somma); } Se vengono inseriti i dati 3 e 5, l effetto dell esecuzione del programma sullo Standard Output è il seguente: La somma di a+b è: 8 Arrivederci! Se fossero stati omessi i primi due simboli \n nella stringa di controllo? 32