Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
Elementi di Programmazione - MODULO A
2014/2015
Concetti base della Programmazione
Programmazione nel linguaggio Javascript:
- Espressioni
- Variabili
- Assegnamento
- Funzioni
- Costrutti di Controllo: condizionali, iteratori
- Array (strutture dati)
- Array Associativi
Definizioni Introduttive
Informatica Informazione automatica, per fornire informazioni è necessario:
- Comprendere la richiesta: gestione informazioni (es: tra quanto parti?)
- Disporre dei dati necessari (es: Parto alle 12, sono le 11)
- Essere in grado di elaborarli: calcolarli (12-11= 1h)
- Comunicare la risposta: Tra un’ora
Informazione Automatica Viene fornita da una macchina che:
- Per comprendere la richiesta deve avere un dispositivo che permetta di specificarla
- Avere a disposizione i dati necessari scritti su un dispositivo di memorizzazione
- Essere in grado di elaborarli, calcolare la funzione che in base alle richieste risponde
- Comunicare la risposta, su un dispositivo in cui si visualizza il risultato del calcolo
- Un esempio: Calcolatrice
- 10 tasti per specificare le cifre
- 4 tasti per specificare le operazioni
- Una memoria su cui mantenere i risultati parziali
- Un foglio o un display su cui stampare il risultato
Linguaggi di Programmazione
Aspetto fondamentale è: la descrizione della funzione ed il linguaggio in cui tale descrizione è data.
- I linguaggi per descrivere le funzioni sono chiamati linguaggi di programmazione.
- Sono formalisti con sintassi e semantica formalmente definite (stesso rigore rispetto ling. naturali).
- Semantica: significato stabilito formalmente.
- I linguaggi di programmazione possono essere classificati in base a diverse caratteristiche:
- es: general/special purpose, language di scripting ecc...
- Le descrizioni delle funzioni da calcolare sono frasi in un linguaggio di programmazione e sono detti programmi.
I linguaggi di programmazione general purpose sono tutti equivalenti:
- Se ho DL1(f) programma nel linguaggio L1 e DL2(f) programma nel linguaggio L2 che calcolano la stessa funzione, abbiamo: DL1(f) → DL2(f)
La traduzione è una funzione calcolabile e quindi descrivibile con un programma che quindi può essere eseguito da un calcolatore.
Linguaggio Macchina
- Linguaggio direttamente eseguibile dal calcolatore.
- Poco comprensibile dagli umani (programmatori) che devono scrivere il programma, perché:
- Le operazioni sono molto semplici.
- Sono specificate in binario (sequenze 0-1).
- Specificare un'operazione complessa richiede la scrittura di un lungo programma, incomprensibile.
Algebra di Boole
Insieme di valori {true, false} su cui sono definiti i seguenti operatori:
- ∧ and = prodotto logico o congiunzione
- ∨ or = somma logica o disgiunzione
- not = 1′ = complementato
→ base per la logica proposizionale che consente di parlare di fatti che possono verificarsi o meno.
"Pioe" può essere vero (true) o falso (false).
Significato degli operatori di base:
AND ∧ → consente di esprimere condizioni in cui più fatti devono verificarsi contemporaneamente.
Esempio: Piove e c'è il sole → Vera se è vero che piove e se è vero che c’è il sole.
Se anche uno dei due fatti è falso, l’intera affermazione è falsa almeno.
Chiamiamo:
p primo fatto (pioggia) q secondo (sole)
Per stabilire se l’espressione p ∧ q è vera o falsa devo sapere se i due fatti sono V o F.
pqp ∧ q truetruetrue truefalsefalse falsetruefalse falsefalsefalseOR ∨ → consente di esprimere condizioni in cui più fatti possono verificarsi contemporaneamente (con significato diverso).
Esempio: Piove o fa freddo → Vera se è vero che piove o fa freddo.
Se uno dei due fatti è falso l’affermazione è vera solo se entrambi sono falsi, l’affermazione è falsa.
Chiamiamo:
p (pioggia) q (sole)
Per stabilire se l’espressione p ∨ q è vera o falsa devo sapere se le asserzioni sono V o F.
pqp ∨ q truetruetrue truefalsetrue falsetruetrue falsefalsefalseSe operandi non sono booleani:
&& PRIMO OPERANDO NON CONVERTIBILE IN FALSE → Secondo operando PRIMO OPERANDO CONVERTIBILE IN FALSE → Primo operando
|| PRIMO OPERANDO NON CONVERTIBILE IN FALSE → Primo operando PRIMO OPERANDO CONVERTIBILE IN FALSE → Secondo operando
Esercizi
- writeln (5 || true); 5
- writeln (5 || false); 5
- writeln (0 || false); false
- (0 || true); true
- ("0" || true); 0
- ("0" || false); 0
- (5 && true); true
- (5 && false); false
- (0 && true); false
- (0 && false); false
- ("0" && true); true
km 0 - km 34 = 30 min km 34 - km 60 = 26 1/2 min
Esempio Blocco
Dati mese, anno calcolare mese e anno del mese successivo
int mese = 2; anno = 2011; mesesucc, annosucc;
if (mese == 12) {
- mesesucc = 1;
- annosucc = anno+1;
}
else {
- mesesucc = mese+1;
- annosucc = anno;
}
BLOCCO → esegue 2 istruzioni nel ramo then.
Blocco nel ramo else
If ANNIDATI (IN CASCATA) → else if
Quando istruzione del ramo if, then o else è un’istruzione if o if else
Esempio
Data una temperatura t stampare messaggio, secondo la tabella:
- temperatura t
- 30 < t Molto caldo
- 20 < t ≤ 30 Caldo
- 10 < t ≤ 20 Gradevole
- 0 < t ≤ 10 Freddo
- t ≤ 0 Molto freddo
if (temperatura > 30) {
- writeln("Molto Caldo");
} else if (temperatura > 20) {
- writeln("Caldo");
} else if (temperatura > 10) {
- writeln("Gradevole");
} else if (temperatura > 0) {
- writeln("Freddo");
} else {
- writeln("Molto freddo");
}
Singola istruzione if-else
if (temperatura > 30) writeln("Molto Caldo!");
else ... (serie di altri if)
Funzioni predefinite
Math.sqrt(x)
Radice quadrataMath.log(x)
Logaritmo in base e di xMath.abs(x)
Valore assoluto di xMath.ceil(x)
Arrotonda per DIFETTO (principale)Math.floor(x)
Arrotonda per ECCESSO (intero più grande) es. in Math.floor(1.345/10)%10)Math.round(x)
Arrotonda all'intero più vicino ad xMath.pow(x,y)
xy Math.pow(4,3); 43Math.random()
Numero casuale n tale che 0 < n < 1- (num % 10); UNITÀ
- (num / 10)%10); DECINE (soluzione con valori singola...)
- (((num - (num%10)) /10) %10); DECINE approssimate
- ((num - (num%100)) /100) %10); CENTINAIA