+ All Categories
Home > Documents > INFORMATICA DI BASE Linguaggio C - venus.unive.itvenus.unive.it/borg/LingC1.pdf · INFORMATICA DI...

INFORMATICA DI BASE Linguaggio C - venus.unive.itvenus.unive.it/borg/LingC1.pdf · INFORMATICA DI...

Date post: 15-Feb-2019
Category:
Upload: dangnhan
View: 222 times
Download: 0 times
Share this document with a friend
22
Prof. Andrea Borghesan venus.unive.it/borg [email protected] Ricevimento lunedì, prima o dopo lezione? Aula? 1 INFORMATICA DI BASE Linguaggio C
Transcript
Page 1: INFORMATICA DI BASE Linguaggio C - venus.unive.itvenus.unive.it/borg/LingC1.pdf · INFORMATICA DI BASE Linguaggio C. Analisi e programmazione 2 ... classe di problemi; deve pertanto

Prof. Andrea Borghesan

venus.unive.it/borg

[email protected]

Ricevimento

lunedì, prima o dopo lezione? Aula?

1

INFORMATICA DI BASE

Linguaggio C

Page 2: INFORMATICA DI BASE Linguaggio C - venus.unive.itvenus.unive.it/borg/LingC1.pdf · INFORMATICA DI BASE Linguaggio C. Analisi e programmazione 2 ... classe di problemi; deve pertanto

Analisi e programmazione

2

Tramite un elaboratore si possono risolvere problemi divaria natura: gestione dei c/c di un istituto di credito,prenotazioni ferroviarie…

Il problema deve essere formulato in modo opportuno,perché sia possibile utilizzare un elaboratore per la suasoluzione

Per analisi e programmazione si intende l’insieme delleattività preliminari atte a risolvere problemi utilizzando unelaboratore, dalla formulazione del problema fino allapredisposizione dell’elaboratore

Scopo dell’analisi definire un algoritmo

Scopo della programmazione definire un programma

Page 3: INFORMATICA DI BASE Linguaggio C - venus.unive.itvenus.unive.it/borg/LingC1.pdf · INFORMATICA DI BASE Linguaggio C. Analisi e programmazione 2 ... classe di problemi; deve pertanto

Analogia uomo-macchina

3

Analogie tra le azioni che devono essere eseguite da unoperatore umano e da un elaboratore in modo automatico

Programma + datiAlgoritmo + dati

ElaboratoreUomo

RisultatiRisultati

Page 4: INFORMATICA DI BASE Linguaggio C - venus.unive.itvenus.unive.it/borg/LingC1.pdf · INFORMATICA DI BASE Linguaggio C. Analisi e programmazione 2 ... classe di problemi; deve pertanto

Algoritmo, programma e linguaggio di programmazione

4

Algoritmo: elenco finito di istruzioni, che specificano leoperazioni eseguendo le quali si risolve una classe di problemi

Un algoritmo non può essere eseguito direttamentedall’elaboratore

Programma: ricetta che traduce l’algoritmo ed èdirettamente comprensibile, pertanto eseguibile, da partedi un elaboratore

Linguaggio di programmazione: linguaggio rigoroso chepermette la formalizzazione di un algoritmo in unprogramma

Page 5: INFORMATICA DI BASE Linguaggio C - venus.unive.itvenus.unive.it/borg/LingC1.pdf · INFORMATICA DI BASE Linguaggio C. Analisi e programmazione 2 ... classe di problemi; deve pertanto

Le fasi del procedimento di analisi e programmazione

5

Risultati

Problema

ANALISI

ELABORAZIONE Dati

PROGRAMMAZIONE

Algoritmo

Programma

Relazioni tra problema, analisi,algoritmo, programmazione, programma,dati ed elaborazione

Page 6: INFORMATICA DI BASE Linguaggio C - venus.unive.itvenus.unive.it/borg/LingC1.pdf · INFORMATICA DI BASE Linguaggio C. Analisi e programmazione 2 ... classe di problemi; deve pertanto

Definizione di algoritmo

6

Algoritmo deriva dal nome del matematico arabo Abu Ja’farMohammed ibn Musa al-Khowarizmi scrisse, circa nell’825, iltrattato “Kitab al jabr w’al-muqabala”. Il termine originario era agorismo, trasformato in algoritmo per analogia

con aritmetica

Un algoritmo è una successione di istruzioni o passi che definiscono leoperazioni da eseguire sui dati per ottenere i risultati; un algoritmofornisce la soluzione ad una classe di problemi

Lo schema di esecuzione di un algoritmo specifica che i passidevono essere eseguiti in sequenza, salvo diversa indicazione

Ogni algoritmo è concepito per interagire con l’ambiente esterno peracquisire dati e comunicare messaggi o risultati; i dati su cui operaun’istruzione sono forniti dall’esterno o sono frutto di istruzionieseguite in precedenza

Ambiente esterno AlgoritmoRisultati o messaggi

Dati

Page 7: INFORMATICA DI BASE Linguaggio C - venus.unive.itvenus.unive.it/borg/LingC1.pdf · INFORMATICA DI BASE Linguaggio C. Analisi e programmazione 2 ... classe di problemi; deve pertanto

Esempio: Ordinamento di un mazzo di carte

7

Problema:

Sia dato un mazzo da 40 carte da ordinare in modo che lecuori precedano le quadri, che a loro volta precedono fiori epicche; le carte di uno stesso seme sono ordinate dall’asso alre

Algoritmo:

Si suddivida il mazzo in 4 mazzetti, ciascuno costituito datutte le carte dello stesso seme

Si ordinino le carte di ciascun mazzetto dall’asso al re

Si prendano nell’ordine i mazzetti delle cuori, quadri, fiorie picche

Page 8: INFORMATICA DI BASE Linguaggio C - venus.unive.itvenus.unive.it/borg/LingC1.pdf · INFORMATICA DI BASE Linguaggio C. Analisi e programmazione 2 ... classe di problemi; deve pertanto

Esempio: Ricerca in un mazzo di chiavi

8

Problema:

Si vuole ricercare, all’interno di un mazzo di chiavi, quellache apre un dato lucchetto

Algoritmo:

1) Si seleziona una chiave dal mazzo e la si marca con unpennarello

2) Si tenta di aprire il lucchetto con la chiave appenamarcata; se funziona, si va al passo 4)

3) Altrimenti, si controlla la chiave successiva

i. Se non è marcata, la si marca e si torna al passo 2)

ii. Viceversa, si prende atto che nel mazzo non è presentela chiave che apre il lucchetto

4) Fine della ricerca

Page 9: INFORMATICA DI BASE Linguaggio C - venus.unive.itvenus.unive.it/borg/LingC1.pdf · INFORMATICA DI BASE Linguaggio C. Analisi e programmazione 2 ... classe di problemi; deve pertanto

Esempio: Radici delle equazioni di 2° grado

9

Problema:

Calcolo delle radici reali di ax2 bx c 0

Algoritmo:

1) Acquisire i coefficienti a,b,c

2) Calcolare b2 4ac

3) Se 0 non esistono radici reali, eseguire l’istruzione 7)

4) Se 0, x1 x2 b/2a, poi eseguire l’istruzione 6)

5) x1 ( b )/2a, x2 ( b )/2a

6) Comunicare i valori x1, x2

7) Fine

Page 10: INFORMATICA DI BASE Linguaggio C - venus.unive.itvenus.unive.it/borg/LingC1.pdf · INFORMATICA DI BASE Linguaggio C. Analisi e programmazione 2 ... classe di problemi; deve pertanto

Esempio: Calcolo del M.C.D. 1

10

Problema:

Calcolare il M.C.D. di due interi a,b, con a b

Algoritmo:

Formalizzato da Euclide nel 300 a.C., si basa sul fatto cheogni divisore comune di a e b è anche divisore del resto rdella divisione intera di a per b, quando a b e r 0; se r 0, bè il M.C.D.

MCD(a,b) MCD(b,r), se r 0

MCD(a,b) b, se r 0

Nota

L’algoritmo garantisce la determinazione del M.C.D. senza ilcalcolo di tutti i divisori di a e b

Page 11: INFORMATICA DI BASE Linguaggio C - venus.unive.itvenus.unive.it/borg/LingC1.pdf · INFORMATICA DI BASE Linguaggio C. Analisi e programmazione 2 ... classe di problemi; deve pertanto

Esempio: Calcolo del M.C.D. 2

11

1) Acquisire i valori di a e b

2) Se b a, scambiare i valori di a e b

3) Calcolare il resto r della divisione intera di a per b

4) Se r 0, MCD(a,b) b; comunicare il risultato all’esterno;eseguire l’istruzione 6)

5) Se r 0, sostituire il valore di a con il valore di b ed il valoredi b con il valore di r; tornare al passo 3)

6) Fine

Page 12: INFORMATICA DI BASE Linguaggio C - venus.unive.itvenus.unive.it/borg/LingC1.pdf · INFORMATICA DI BASE Linguaggio C. Analisi e programmazione 2 ... classe di problemi; deve pertanto

Proprietà degli algoritmi

12

Affinché una “ricetta”, un elenco di istruzioni, possa essereconsiderato un algoritmo, devono essere soddisfatti i seguentirequisiti: Finitezza: ogni algoritmo deve essere finito, cioè ogni singola

istruzione deve poter essere eseguita in tempo finito ed un numerofinito di volte

Generalità: ogni algoritmo deve fornire la soluzione per unaclasse di problemi; deve pertanto essere applicabile a qualsiasiinsieme di dati appartenenti all’insieme di definizione odominio dell’algoritmo e deve produrre risultati cheappartengano all’insieme di arrivo o codominio

Non ambiguità: devono essere definiti in modo univoco i passisuccessivi da eseguire; devono essere evitati paradossi,contraddizioni ed ambiguità; il significato di ogni istruzione deveessere univoco per chiunque esegua l’algoritmo

Page 13: INFORMATICA DI BASE Linguaggio C - venus.unive.itvenus.unive.it/borg/LingC1.pdf · INFORMATICA DI BASE Linguaggio C. Analisi e programmazione 2 ... classe di problemi; deve pertanto

Algoritmi e appositi linguaggi

13

Un algoritmo deve poter essere eseguito da chiunque, senzache l’esecutore sia stato necessariamente coinvolto nell’analisidel problema o nella descrizione dell’algoritmo

Gli algoritmi devono essere formalizzati per mezzo di appositilinguaggi, dotati di strutture linguistiche che garantiscanoprecisione e sintesi

I linguaggi naturali non soddisfano questi requisiti, infatti...

sono ambigui: la stessa parola può assumere significati diversi incontesti differenti (pesca è un frutto o un’attività sportiva?)

sono ridondanti: lo stesso concetto può essere espresso in moltimodi diversi, ad esempio “somma 2 a 3”, “calcola 2 3”, “eseguil’addizione tra 2 e 3”

Page 14: INFORMATICA DI BASE Linguaggio C - venus.unive.itvenus.unive.it/borg/LingC1.pdf · INFORMATICA DI BASE Linguaggio C. Analisi e programmazione 2 ... classe di problemi; deve pertanto

Un primo programma in c

14

Scrivere un programma che calcoli l’area del triangolo:

Elaborare un algoritmo per la risoluzione del problema

Scriverlo in linguaggio C

Compilare il programma ed eseguirlo su computer

Page 15: INFORMATICA DI BASE Linguaggio C - venus.unive.itvenus.unive.it/borg/LingC1.pdf · INFORMATICA DI BASE Linguaggio C. Analisi e programmazione 2 ... classe di problemi; deve pertanto

Calcolo area triangolo: algoritmo

1. Inserire/leggere la base

2. Inserire/leggere l’altezza

3. Calcolare l’area = (base x altezza)/2

4. Scrivere risultato a video

15

Page 16: INFORMATICA DI BASE Linguaggio C - venus.unive.itvenus.unive.it/borg/LingC1.pdf · INFORMATICA DI BASE Linguaggio C. Analisi e programmazione 2 ... classe di problemi; deve pertanto

Listato in C: prima versione

// calcolo area del triangolo

# include <stdio.h>

main ()

{

int base;

int altezza;

int area;

base = 3;

altezza = 10;

area = base * altezza /2;

printf(“area = %d\n”, area);

} 16

Page 17: INFORMATICA DI BASE Linguaggio C - venus.unive.itvenus.unive.it/borg/LingC1.pdf · INFORMATICA DI BASE Linguaggio C. Analisi e programmazione 2 ... classe di problemi; deve pertanto

Listato in C: seconda versione// calcolo area del triangolo

# include <stdio.h>

main ()

{

int base;

int altezza;

int area;

printf(“inserisci valore base: “);

scanf(“%d\n”, &base);

printf(“inserisci valore altezza: “);

scanf(“%d\n”, &altezza);

Area = base * altezza/2;

printf(“area = %d\n”, area);

} 17

Page 18: INFORMATICA DI BASE Linguaggio C - venus.unive.itvenus.unive.it/borg/LingC1.pdf · INFORMATICA DI BASE Linguaggio C. Analisi e programmazione 2 ... classe di problemi; deve pertanto

Esercizi

1. Scrivere un programma che scriva a video:

Questo

è il mio primo programma

by andrea

2. Scrivere un programma che calcoli y=ax+b,

Dove x=5, a=18 e b =7 (a,b,x numeri interi)

3. Modificare programma precedente in modo che il valore di

x venga immesso dall’utente

18

Page 19: INFORMATICA DI BASE Linguaggio C - venus.unive.itvenus.unive.it/borg/LingC1.pdf · INFORMATICA DI BASE Linguaggio C. Analisi e programmazione 2 ... classe di problemi; deve pertanto

Esercizi1. Determinare il valore delle var a, b e c al termine di tutte le seguenti istruzioni:

a = -2;

b = a+1;

b = b – abs(a);

c = a*b;

b = 3;

1. Indicare gli errori nel listato:

include <stdio.h>

#define Base 3

#define altezza

main () {

area int;

area = base x altezza

printf(“Base: d\n”, Base); printf(“Altezza: %d/n”; area)

printf(“Area: d\n”, area);

}19

Page 20: INFORMATICA DI BASE Linguaggio C - venus.unive.itvenus.unive.it/borg/LingC1.pdf · INFORMATICA DI BASE Linguaggio C. Analisi e programmazione 2 ... classe di problemi; deve pertanto

Area del triangolo: versione migliorata

Possiamo accettare base e/o altezza = zero?

// calcolo area del triangolo

# include <stdio.h>

main () {

int base, altezza, area;

printf(“inserisci valore base: “);

scanf(“%d\n”, &base);

printf(“inserisci valore altezza: “);

scanf(“%d\n”, &altezza);

SE base ≠ 0 AND altezza ≠ 0 ALLORA

area = base * altezza/2;

scrivi a video area

ALTRIMENTI “Non è possibile calcolare l’area”

} 20

Page 21: INFORMATICA DI BASE Linguaggio C - venus.unive.itvenus.unive.it/borg/LingC1.pdf · INFORMATICA DI BASE Linguaggio C. Analisi e programmazione 2 ... classe di problemi; deve pertanto

Esercizi

Se a=5, b=35 e c=7 calcolare le espressioni:

Ris = a+b*c

Ris = (a+b) * (a<b)

Ris = (a+b) && (a<b)

Ris = (a*c-b) || (a>b)

Ris = ((a*c) != b) || (a>b)

Ris = (a>b) || (a<c) || (c==b)

!(a>b) && (c>a)

(a!=c) || ((a<b) && (b<c))

PER CASA: scrivere un programma che verifichi le risposte

21

Page 22: INFORMATICA DI BASE Linguaggio C - venus.unive.itvenus.unive.it/borg/LingC1.pdf · INFORMATICA DI BASE Linguaggio C. Analisi e programmazione 2 ... classe di problemi; deve pertanto

Esercizi

Scrivere un programma che, richiesti i numeri GG, MM,

AAAA di una data, verifichi se questa è valida

Scrivere un programma che letto l’anno nel formato AAAA,

verifichi se tale anno è bisestile. Suggerimento: un anno è

bisestile se è divisibile per 4 ma non per 100

PER CASA: scrivere un programma che letto base e altezza,

esegua:

A scelta dell’utente il calcolo dell’area del triangolo o

rettangolo

La media delle 2 aree

Il rapporto delle 2 aree

22


Recommended