Fondamentidi Programmazione Corso: Fondamenti di Programmazione Classe: PARI-DISPARI Docente: Prof. Luisa Gargano Testo: Aho, Ulman, Foundations of Computer.

Slides:



Advertisements
Presentazioni simili
Introduzione al linguaggio C++
Advertisements

Algebra di Boole Casazza Andrea 3EA I.I.S. Maserati.
Informatica Generale Marzia Buscemi IMT Lucca
Programma: main() { istruzioni } ; assegnazione condizione ciclo istruzione: ;
Dati, istruzione e pseudocodice
if (condizione.) { blocco_istruzioni } else
Selezione A. Ferrari.
PROGRAMMARE IN PASCAL (le basi)
I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI
MATLAB. Scopo della lezione Programmare in Matlab Funzioni Cicli Operatori relazionali Esercizi vari.
Dipartimento di Matematica
Type Checking (1° parte)
Algoritmi e Programmazione
Informatica Generale Marzia Buscemi
Anno accademico Gli operatori e le espressioni in C.
Il linguaggio C Gli operatori e le espressioni C Language
INFORMATICA Strutture iterative
1 Istruzioni, algoritmi, linguaggi. 2 Algoritmo per il calcolo delle radici reali di unequazione di 2 o grado Data lequazione ax 2 +bx+c=0, quali sono.
Introduzione agli algoritmi. Definizione Sistema di regole e procedure di calcolo ben definite che portano alla soluzione di un problema con un numero.
Algebra di Boole ed elementi di logica
Informatica 2. Concetti fondamentali di programmazione Programmare vuol dire scrivere un algoritmo in un linguaggio che faccia funzionare un calcolatore.
1 Corso di Informatica (Programmazione) Lezione 10 (12 novembre 2008) Programmazione in Java: espressioni booleane e controllo del flusso (selezione)
Corso di Laurea in Biotecnologie Informatica (Programmazione)
Il linguaggio Fortran 90: 2. Istruzioni di Controllo
Introduzione alla programmazione ll
Introduzione alla programmazione lll
DAL PROBLEMA ALL'ALGORITMO Problemi e Programmi Paolo Amico
Unità Didattica 1 Algoritmi
Istruzioni Decisionali
Strutture di controllo in C -- Flow Chart --
CAPITOLO 7.
Fondamenti di Informatica Algoritmi
Il Linguaggio C.
Elementi di Informatica
Programmazione in Java Claudia Raibulet
Elementi di Informatica
Dall’algoritmo al programma.
INFORMATICA MATTEO CRISTANI.
Lezione 6 Strutture di controllo Il condizionale
Parte 4 Elementi di Informatica di base
Laboratorio di Informatica Dott.ssa Elisa Tiezzi Dott.ssa Elisa Mori
BIOINFO3 - Lezione 15 ISTRUZIONI
Fondamenti di Informatica e Informatica di base Prof.ssa Elisa Tiezzi
ECDL Patente europea del computer
Fondamenti di Programmazione
Informatica e Algoritmi
Programmazione imperativa
DIVERTIRSI CON SCRATCH
Linguaggi algoritmici
Tesina di fine corso Argomento: Corso: Professore: Autori:
Algebra di Boole.
Introduzione a Javascript
Corso di Algoritmi e Strutture Dati APPUNTI SUL LINGUAGGIO C
Informatica B Allievi Elettrici - AA Fondamenti della programmazione in linguaggio C (II) Istruzioni e strutture di controllo.
Informatica Lezione 5 Scienze e tecniche psicologiche dello sviluppo e dell'educazione (laurea triennale) Anno accademico:
Circuiti logici.
Informatica 4 Funzioni. FUNZIONE: definizione MATEMATICA Relazione (o applicazione) binaria tra due insiemi A e B che associa a ogni elemento di A un.
1 Fabio Scotti – Università degli Studi di Milano Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza Valentina Ciriani ( )
13 ottobre Decisioni F. Bombi 13 ottobre 2002.
PRIMI ELEMENTI DI PROGRAMMAZIONE
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
FI - Algoritmi e Programmazione 1 Variabili Consentono di aumentare notevolmente la potenza espressiva. Una variabile è caratterizzata da:  Un nome 
Algoritmi e Programmazione (in C) Stefano Cagnoni e Monica Mordonini
Informatica e Informatica di Base
Problemi, algoritmi e programmazione
Il computer ragiona? Problemi e algoritmi. Paola Pianegonda2 Cos’è un problema?  Problema è qualsiasi situazione della quale non conosciamo la soluzione.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – Ver. aggiornata al 24 Agosto 2015.
Istruzioni e algoritmi. Istruzioni Operative I passi elementari che compongono l’algoritmo sono le istruzioni. Distinguiamo: Istruzioni di input Istruzioni.
Basi di Java Strutture base di Java. Basi di java ▪Variabili ▪Operatori ▪Condizioni e Cicli ▪Array.
Transcript della presentazione:

Fondamentidi Programmazione Corso: Fondamenti di Programmazione Classe: PARI-DISPARI Docente: Prof. Luisa Gargano Testo: Aho, Ulman, Foundations of Computer Science –C Edition W.H. Freeman and Company, NY, 1994 Finalita: introduzione alla programmazione

Concetti introduttivi Calcolatore Calcolatore: Oggetto in grado di 1) accedere a grandi quantita di informazioni 2) eseguire un insieme di operazioni elementari (es. aritmetiche) in modo preciso e rapido Programmazione Programmazione: Lavoro che si fa per costruire sequenze di istruzioni (operazioni) adatte a svolgere il calcolo desiderato

Concetti introduttivi Calcolatore Calcolatore: Oggetto in grado di 1) accedere a grandi quantita di informazioni 2) eseguire un insieme di operazioni elementari (es. aritmetiche) in modo preciso e rapido Programmazione Programmazione: Lavoro che si fa per costruire sequenze di istruzioni (operazioni) adatte a svolgere il calcolo desiderato Algoritmo Algoritmo: Sequenza di azioni per svolgere il calcolo INPUT: dati iniziali INPUT: x,y,z AZIONI esempio: Somma x ed y Somma z al risultato OUTPUT: risultato OUTPUT: x+y+z

ALGORITMI e PROGRAMMI Algoritmo Algoritmo: Sequenza di azioni per svolgere il calcolo INPUT: dati iniziali INPUT: x,y,z AZIONI esempio: Somma x ed y Somma z al risultato OUTPUT: risultato OUTPUT: x+y+z Programma Programma: Algoritmo espresso in notazione formale (linguaggio di programmazione) Creazione programma: Fase 1 = algoritmo Fase2 = implementazione in dato linguaggio (C) SCOPO del CORSO: SCOPO del CORSO: metodi di costruzione di algoritmi e programmi

Introduzione al linguaggio C Istruzione Istruzione: Descrizione formale di unazione esempio: Moltiplica due numeri, indica il prodotto con z Per ogni coppia di numeri il programma deve descrivere il processo di moltiplicarli input: 3, 4 Output: z = 12 input: 2, 9 Output: z = 18

Introduzione al linguaggio C Istruzione Istruzione: Descrizione formale di unazione esempio: Moltiplica due numeri, indica il prodotto con z Per ogni coppia di numeri il programma deve descrivere il processo di moltiplicarli input: 3, 4 Output: z = 12 input: 2, 9 Output: z = 18 Variabili Variabili: Non si usano numeri, ma NOMI che denotano oggetti dal valore variabile Allinizio del programma bisogna assegnare i valori alle variabili esempio: Moltiplica due numeri, indica il prodotto con z variabili: x,y,z x,y prendono i valori input z assume il valore output

Introduzione al linguaggio C Assegnamento Assegnamento di un valore v ad una variabile x denotato con x=v Il valore v puo anche essere il valore assunto da unaltra variabile o combinazioni di variabili Esempio: z=x* y x ha valore 3, y ha valore 4 z assume valore 12

Espressioni Espressione: Espressione: formula (regola di calcolo) che specifica sempre un valore Esempio: espressione algebrica: z=x* y, (x+3)/5

Espressioni Espressione: Espressione: formula (regola di calcolo) che specifica sempre un valore Esempio: espressione algebrica: z=x* y, (x+3)/5 Espressione composta da: Operatori Operandi (costanti, variabili,…)

Espressioni Espressione: Espressione: formula (regola di calcolo) che specifica sempre un valore Esempio: espressione algebrica: z=x* y, (x+3)/5 Espressione composta da: Operatori Operandi (costanti, variabili,…) Operatori Algebrici: +, -, *, /, - unario, ++, --, % ( i%j= i modulo j= resto di i diviso j) ( i%j= i modulo j= resto di i diviso j)

Espressioni Espressione: Espressione: formula (regola di calcolo) che specifica sempre un valore Esempio: espressione algebrica: z=x* y, (x+3)/5 Espressione composta da: Operatori Operandi (costanti, variabili,…) Operatori Algebrici: +, -, *, /, - unario, ++, --, % ( i%j= i modulo j= resto di i diviso j) ( i%j= i modulo j= resto di i diviso j) Operatori Logici: AND (&&), OR (||), NOT (!), (su variabili booleane - valore vero/falso) (su variabili booleane - valore vero/falso) x AND y VERO se e solo se x,y VERE x AND y VERO se e solo se x,y VERE x OR y FALSO se e solo se x,y FALSE x OR y FALSO se e solo se x,y FALSE NOT x VERO se e solo se x FALSA NOT x VERO se e solo se x FALSA

Espressioni Operatori di confronto: Uguale ==: x==y da VERO sse x e y hanno stesso valore Diverso !=: x!=y da VERO sse x e y hanno dalori diversi Minore < Minore o Uguale <= Maggiore > Maggiore o uguale >=

ISTRUZIONI Assegnamento: Assegnamento: x=E, Calcola il valore dellespressione E e lo assegna alla variabile x Esempio: x=x+y calcola il valore di x+y e lo assegna ad x se x vale 5 e y vale 3, x=x+y da ad x valore 8

ISTRUZIONI Assegnamento: Assegnamento: x=E, Calcola il valore dellespressione E e lo assegna alla variabile x Esempio: x=x+y calcola il valore di x+y e lo assegna ad x se x vale 5 e y vale 3, x=x+y da ad x valore 8 Istruzioni Strutturate: 1) Composizione di Istruzioni 1) Composizione di Istruzioni: Esegui I 1, quando e terminata esegui I 2, quando e terminata … esegui I m. x=1; y=2; x=x+y; (x vale 3) y=x*y (y vale 6)

ISTRUZIONI Strutturate 2) Istruzioni Condizionali 2) Istruzioni Condizionali: If (C) I else I; C condizione, I ed I composizioni di istruzioni Es. Poni z=0 se x y if (x<=y) z=0 else x=x-y

ISTRUZIONI Strutturate 2) Istruzioni Condizionali 2) Istruzioni Condizionali: If (C) I else I; C condizione, I ed I composizioni di istruzioni Es. Poni z=0 se x y if (x<=y) z=0 else x=x-y Poni z=0 se x<=y; altrimenti lascia il valore di z inalterato if (x<=y) z=0 If (C) I;

Istruzioni Ripetitive For (x=1, x<=n, x++) I; I e una composizione di istruzioni Poni x=1 esegui I Modifica x (x=2), esegui I … Modifica x (x=n), esegui I y=0; for (x=1, x<=n, x++) y=y+x; x y = =6 …… n1+2+…+n x=1 I x++ X>n Vero, ESCI Falso

while ( C ) I; C e una condizione, I e una composizione di istruzioni x=1; y=0; while (x<=n) {y=y+x; x++} x y = =6 …… n1+2+…+n I C Falso, ESCI Vero

do I while (C); x=1; y=0; do y=y+x; x++ while (x<=n) y x = =64 …… 1+2+…+nn+1 (>n) I C Falso, ESCI Vero n=0?

Risolvere problema Scegliere astrazione: definire un Insieme di dati che rappresentano la realta (modello di dati) Scegliere rappresentazione della informazione (struttura dati) Algoritmo e programma Es. Archivio impiegati contiene insieme di dati rilevanti (astrazione) su ogni impiegato Rilevanti: Nome, stipendio, mansione Non rilevanti: altezza, peso, colore occhi, colore capelli

Tipi di dati Principio di base: Programma ha accesso a Scatole (box): ogni box ha associato un tipo (intero, reale,…) si possono conservare solo oggetti di tale tipo Nome: ogni box e identificata da un nome Tipi Base (in C): intero (int), reale (real), carattere (char) Definizioni di variabili int x definisce x come variabile di tipo intero

Definizioni di Variabili ARRAY formato da componenti dello stesso tipo le componenti sono individuate da un indice int A[n] :array di n componenti di tipo intero A[0]A[1]A[2] …A[n-1] Si accede ad una componente alla volta specificando lindice int X[5] X[0]=10; X[1]=7; X[2]=4; X[3]=3; X[4]=8; Crea larray di interi X:

Array Es. cerca il minimo indice i di una componente di un array A[n] avente valore w. idea: confronta w con A[0], A[1],… finche non trovi w oppure non hai esaminato tutto larray int A[n] i=0; while (A[i]!=w) && (i < n) i++; if(i==n) non esiste /* altrimenti i contiene lindice cercato*/ A[0]A[1]A[2] …A[n-1] i=0 A[0]=w esci

Array Es. cerca il minimo indice i di una componente di un array A[n] avente valore w. idea: confronta w con A[0], A[1],… finche non trovi w oppure non hai esaminato tutto larray int A[n] i=0; while (A[i]!=w) && (i < n) i++; if(i==n) non esiste /* altrimenti i contiene lindice cercato*/ A[0]A[1]A[2] …A[n-1] A[0]!=w i=1 se A[1]=w esci

Array Es. cerca il minimo indice i di una componente di un array A[n] avente valore w. idea: confronta w con A[0], A[1],… finche non trovi w oppure non hai esaminato tutto larray int A[n] i=0; while (A[i]!=w) && (i < n) i++; if(i==n) non esiste /* altrimenti i contiene lindice cercato*/ A[0]A[1]A[2] …A[n-1] A[0]!=w A[1]!=w A[2]!=w … i=n-1 se A[i]=w, esci altr. i++, esci con i=n

STRUCT Permette di unire elementi di tipi differenti. Es. Vogliamo descrivere persone usando 3 campi: (NOME, COGNOME, DATA-NASCITA) Struct S {T1 M1; T2 M2; … Tn Mn} Definisce una struttura con n campi (M1, M2, …, Mn) Di tipo T1,T2,…,Tn, rispettivamente.

STRUCT Es. Vogliamo descrivere persone usando 3 campi: (NOME, COGNOME, DATA-NASCITA) 1) typedef char alfa[10] definisce il tipo alfa come un array di 10 caratteri 2) Struct data {int giorno; int mese; int anno} 3) Struct persona {alfa cognome; alfa nome; data data-nascita} Struct persona P P= (Mario, Rossi,(10,3,1980))

STRUCT Es. Struct persona P= (Mario, Rossi,(10,03,1980)) P.nome e larray contenete Mario P.nome[1] e il carattere a P.data-nascita e la struttura di tipo data (10,3,1980) P.data-nascita.mese e lintero 3 La componente i-ma di nome Mi della struttura S, S=(M1,…,Mi,…,Mn), si indica con S.Mi

Es. Array di struct di tipo persona persona A[n] array di n componenti A[0],…,A[i],…,A[n-1] A[i] e una struct di tipo persona E possibile combinare array e strutture

Es. Array di struct di tipo persona persona A[n] array di n componenti A[0],…,A[i],…,A[n-1] A[i] e una sruct di tipo persona Cerca il numero di persone nate a maggio {int count; count=0; for(i=0,i<n,i++) if (A[i].data.mese=5) count++;} E possibile combinare array e strutture

Una variabile di tipo puntatore contiene un indirizzo di memoria int x *p Definisce p come un puntatore alla variabile di tipo intero x PUNTATORI Px

Una variabile di tipo puntatore contiene un indirizzo di memoria int x *p definisce p come un puntatore alla variabile di tipo intero x P=&x assegna a p lindirizzo di memoria di x y=*p assegna a y il contenuto della variabile puntata da p Es. {p=&x; y=*p} risulta valore di x = valore di y PUNTATORI

Programma Creazione di un programma Algoritmo (metodo) Implementazione in linguaggio dato test