Problemi, algoritmi e programmazione
Obiettivi
Comunicare con il computer Questa lezione introduce la programmazione, che è una attività complessa e articolata, impossibile senza alcune nozioni di base, che qui introdurremo : programmare significa scrivere istruzioni; programmare significa comunicare con il computer; che cosa è un algoritmo; come si trattano i dati. Problemi, algoritmi e programmazione > Obiettivi
Dal problema al programma
Programmare Programmare significa descrivere un procedimento capace di far svolgere a una macchina/esecutore una serie ordinata di operazioni in modo da raggiungere il risultato finale desiderato. Problema Algoritmo Dati Programma Esecutore Risultati Problemi, algoritmi e programmazione > Programmare
Il programma Il computer è un esecutore Esegue in sequenza comandi che elaborano dati, cioè il programma. Il programma è il mezzo con cui l’uomo descrive ciò che la macchina deve fare e come deve farlo. Problemi, algoritmi e programmazione > Programmare
Comunicare con il calcolatore
Comunicare con il computer Per poter meglio comprendere le fasi che portano alla realizzazione di un programma, cerchiamo di capire come è possibile comunicare con il calcolatore e, quindi, come dobbiamo fornirgli le istruzioni affinché sia in grado di eseguire il compito che vogliamo affidargli. Problemi, algoritmi e programmazione > Comunicare con il calcolatore
Comunicare con il computer Per comunicare occorre un linguaggio. I linguaggi possono essere Naturali Artificiali Sono usati nella comunicazione tra uomini Hanno un vocabolario molto vasto e una sintassi poco rigida Sono usati nella comunicazione fra macchine e sono definiti da un vocabolario ristrettissimo e una sintassi rigidissima. I linguaggi di programmazione Problemi, algoritmi e programmazione > Comunicare con il calcolatore
Ci sono infatti 2 soli simboli: Il linguaggio del computer Tutti i linguaggi si basano su un alfabeto. Ogni alfabeto è basato su un insieme di simboli. Il linguaggio dei computer ha un alfabeto molto semplice! Ci sono infatti 2 soli simboli: 0 e 1 Problemi, algoritmi e programmazione > Comunicare con il calcolatore
Il linguaggio del computer Per dare istruzioni ad un computer bisogna usare un linguaggio composto solo da 0 e 1. Il computer è progettato per eseguire funzioni elementari E' possibile eseguire ognuna di queste funzioni elementari con un comando rappresentato da un codice formato solo dai simboli 0 e 1 Istruzione macchina Problemi, algoritmi e programmazione > Comunicare con il calcolatore
Il linguaggio del computer L'insieme delle istruzioni che un computer è in grado di eseguire è detto Linguaggio macchina I calcolatori sono in grado di eseguire solo programmi scritti in linguaggio macchina. Problemi, algoritmi e programmazione > Comunicare con il calcolatore
linguaggi simbolici ad alto livello Il linguaggio del computer L'uomo non è in grado di dare comandi al computer (cioè di scrivere programmi ) usando il linguaggio macchina! Occorre avere un linguaggio che l'uomo possa comprendere, cioè formato da simboli (alfabeto) e parole comprensibili linguaggi simbolici ad alto livello Problemi, algoritmi e programmazione > Comunicare con il calcolatore
Il linguaggio del computer Il problema è : Come tradurre un programma scritto con un linguaggio di alto livello in un programma in linguaggio macchina, quindi effettivamente eseguibile dal computer? La soluzione è nell'uso di un programma che faccia da interprete e trasformi il linguaggio di alto livello nel linguaggio della macchina Il compilatore Problemi, algoritmi e programmazione > Comunicare con il calcolatore
Il linguaggio del computer Programma nel linguaggio di alto livello Compilatore Programma eseguibile in linguaggio macchina Problemi, algoritmi e programmazione > Comunicare con il calcolatore
Il linguaggio del computer I linguaggi che un programmatore può usare sono di 2 tipi: Linguaggi orientati alla macchina Linguaggi orientati all'uomo Linguaggi di alto livello Linguaggi assembler Problemi, algoritmi e programmazione > Comunicare con il calcolatore
Basic Fortran Cobol C,C++ Pascal Java I principali linguaggi di alto livello Basic Fortran Cobol C,C++ Pascal Java Problemi, algoritmi e programmazione > Comunicare con il calcolatore
Gli algoritmi e la loro rappresentazione
Le fasi della realizzazione di un programma Capire il problema e individuare la soluzione (algoritmo) Progettare e codificare il programma Creare il programma eseguibile Eseguire e provare il programma Documentare il programma Problemi, algoritmi e programmazione > Gli algoritmi e la loro rappresentazione
Capire il problema e individuare la soluzione Per scrivere un programma occorre trovare per prima cosa la sua soluzione descritta da un ALGORITMO ALGORITMO Cioè i passi da compiere per ottenere i risultati attesi. Problemi, algoritmi e programmazione > Gli algoritmi e la loro rappresentazione
Capire il problema e individuare la soluzione Per individuare correttamente l'algoritmo risolutivo del nostro problema occorre conoscere da dove si parte e dove si vuole arrivare Lo scenario iniziale : Dati in input Lo scenario finale: Dati in output Problemi, algoritmi e programmazione > Gli algoritmi e la loro rappresentazione
L'algoritmo Nella vita quotidiana capita regolarmente di dover svolgere un’azione complessa, formata da più passi elementari che devono essere eseguiti in un ordine prestabilito. Se vuoi giocare con una console dovrai compiere alcune azioni elementari. Qual è la sequenza di azioni che devi compiere? Se descrivi queste azioni nell'ordine corretto avrai descritto l'algoritmo che ti permette di giocare. Problemi, algoritmi e programmazione > Gli algoritmi e la loro rappresentazione
Caratteristiche di un algoritmo Finito Deterministico Non ambiguo Generale Problemi, algoritmi e programmazione > Gli algoritmi e la loro rappresentazione
Rappresentazione di un algoritmo Per descrivere correttamente un algoritmo esistono 2 strumenti: Diagrammi a blocchi o Flow Chart La pseudocodifica Problemi, algoritmi e programmazione > Gli algoritmi e la loro rappresentazione
Flow Chart (diagrammi di flusso) Nella descrizione tramite diagramma a blocchi o flow-chart, a ogni simbolo corrisponde un preciso tipo di operazione : Ogni algoritmo deve iniziare con il simbolo: Questi due simboli devono presentarsi una sola volta all’interno del flow-chart e deve concludersi con il simbolo: Problemi, algoritmi e programmazione > Gli algoritmi e la loro rappresentazione
Flow Chart (diagrammi di flusso) indica un’operazione (indicata all’interno del riquadro). indica l’operazione di lettura (input) indica l’operazione di scrittura (output) Problemi, algoritmi e programmazione > Gli algoritmi e la loro rappresentazione
Flow Chart (diagrammi di flusso) - esempio Problema: Calcola l'area di un quadrato, Prendendo in input la misura del suo lato L'algoritmo risolutivo del problema dato Problemi, algoritmi e programmazione > Gli algoritmi e la loro rappresentazione
Pseudocodifica - esempio Si utilizza un linguaggio speciale che descrive le istruzioni con frasi rigorose anziché con simboli grafici. Facciamo un esempio: Calcola l'area di un quadrato, Prendendo in input la misura del suo lato. L'algoritmo risolutivo del problema dato Problemi, algoritmi e programmazione > Gli algoritmi e la loro rappresentazione
I dati
I dati Dal momento che un algoritmo è un procedimento (sequenza di passi) capace di trasformare i dati iniziali nei risultati finali, occorre definire che cosa è un dato Per dato si intende un qualunque fatto o elemento fornito da qualcuno, oppure raccolto tramite osservazioni o misurazioni Problemi, algoritmi e programmazione > I dati
Rappresentazione dei dati I dati, in base agli oggetti che rappresentano, possono essere classificati come segue: Dati numerici dati su cui possono essere effettuate operazioni aritmetiche dati che contengono caratteri alfabetici (A, B, C,... Z), caratteri speciali ($, %, !, ?, &...) e cifre (1, 2, 3...) sulle quali non è possibile effettuare le operazioni aritmetiche. Dati alfanumerici Problemi, algoritmi e programmazione > I dati
Contenitori per i dati Dove possono essere contenuti i dati che il vostro programma deve elaborare? I contenitori per i dati possono essere di 2 tipi: Costanti Variabili Problemi, algoritmi e programmazione > I dati
Contenitori per i dati. Le variabili Una variabile è un contenitore identificato da un nome in cui si possono introdurre dei valori, questi valori possono essere modificati durante l'esecuzione di un programma. Una variabile può essere letta o scritta Variabile= contenuto che può variare Problemi, algoritmi e programmazione > I dati
Contenitori per i dati: le Costanti Le costanti sono dati particolari il cui valore non cambia durante l’esecuzione dell’algoritmo. Esempio: se devo calcolare l'area di un cerchio: AREA = RAGGIO*RAGGIO*PIGRECO PIGRECO sarà un dato costante, il cui valore - 3.14 - non cambierà mai durante l'esecuzione del programma Problemi, algoritmi e programmazione > I dati