Mudanças entre as edições de "Introduzione alla programmazione"

De Cliomatica - Digital History
(Criou página com ' Avere un’idea, seppure sommaria, di cosa ci sia dietro il funzionamento degli strumenti informatici che oggi agevolano il compito di un public historian potrebbe sembrare s...')
 
Linha 1: Linha 1:
 +
{{articolo|
 +
nome=Ludovica Binetti|
 +
cognome=Lorenzo Di Gianvittorio|
 +
testo=
  
 
Avere un’idea, seppure sommaria, di cosa ci sia dietro il funzionamento degli strumenti informatici che oggi agevolano il compito di un public historian potrebbe sembrare superfluo, eppure ciò è indispensabile per un uso consapevole di questi stessi strumenti che spesso e volentieri vengono usati in maniera meccanica. Ciò che, innanzitutto, si deve comprendere è che alla base del dialogo e dell’interazione tra uno studioso e un computer vi sono i linguaggi di programmazione. Di linguaggi di programmazione ne esistono moltissimi e di solito ognuno di questi è orientato ad un particolare campo informatico (quale, ad esempio, la progettazione web, l’analisi di dati storici o lo sviluppo di software) che corrisponde, a sua volta, a un preciso scopo per uno studioso di Storia. Per tale ragione, qui di seguito, si offrirà un’introduzione generica e molto basilare ai concetti che stanno dietro un qualsiasi linguaggio di programmazione. Una volta appresi questi concetti, se ne riuscirà a comprendere la versatilità e la loro possibile applicazione a una grande varietà di campi in quanto basati sui linguaggi di programmazione: dalla manipolazione di dati alla visualizzazione di grafici; dalla rappresentazione digitale di un testo all’estrazione di informazione da questo; dalla creazione di una pagina web alla possibilità di creare strumenti interattivi su di esso.  
 
Avere un’idea, seppure sommaria, di cosa ci sia dietro il funzionamento degli strumenti informatici che oggi agevolano il compito di un public historian potrebbe sembrare superfluo, eppure ciò è indispensabile per un uso consapevole di questi stessi strumenti che spesso e volentieri vengono usati in maniera meccanica. Ciò che, innanzitutto, si deve comprendere è che alla base del dialogo e dell’interazione tra uno studioso e un computer vi sono i linguaggi di programmazione. Di linguaggi di programmazione ne esistono moltissimi e di solito ognuno di questi è orientato ad un particolare campo informatico (quale, ad esempio, la progettazione web, l’analisi di dati storici o lo sviluppo di software) che corrisponde, a sua volta, a un preciso scopo per uno studioso di Storia. Per tale ragione, qui di seguito, si offrirà un’introduzione generica e molto basilare ai concetti che stanno dietro un qualsiasi linguaggio di programmazione. Una volta appresi questi concetti, se ne riuscirà a comprendere la versatilità e la loro possibile applicazione a una grande varietà di campi in quanto basati sui linguaggi di programmazione: dalla manipolazione di dati alla visualizzazione di grafici; dalla rappresentazione digitale di un testo all’estrazione di informazione da questo; dalla creazione di una pagina web alla possibilità di creare strumenti interattivi su di esso.  
2.1. I linguaggi di programmazione
+
 
 +
===''' I linguaggi di programmazione '''===
 +
 
 
Nonostante al giorno d’oggi vi siano moltissimi linguaggi di programmazione, ognuno dei quali si presta più o meno facilmente all’esecuzione di un particolare tipo di “task storico”, ognuno di essi lo si può definire come segue: un linguaggio di programmazione è un linguaggio formale rappresentante un insieme di istruzioni atte a svolgere una specifica funzione per il controllo di una macchina o di una sua implementazione. Ciò che contraddistingue questi linguaggi formali dalle lingue naturali è la loro non ambiguità: i linguaggi di programmazione presentano, infatti, “una sintassi e delle regole ben precise che evitano possibili interpretazioni sbagliate da parte del computer” , al contrario, invece, delle lingue naturali che sono fortemente ambigue dal punto di vista sintattico e/o lessicale. In questa ragione risiede, dunque, la necessità di dover usare un linguaggio formale per comunicare con un computer.
 
Nonostante al giorno d’oggi vi siano moltissimi linguaggi di programmazione, ognuno dei quali si presta più o meno facilmente all’esecuzione di un particolare tipo di “task storico”, ognuno di essi lo si può definire come segue: un linguaggio di programmazione è un linguaggio formale rappresentante un insieme di istruzioni atte a svolgere una specifica funzione per il controllo di una macchina o di una sua implementazione. Ciò che contraddistingue questi linguaggi formali dalle lingue naturali è la loro non ambiguità: i linguaggi di programmazione presentano, infatti, “una sintassi e delle regole ben precise che evitano possibili interpretazioni sbagliate da parte del computer” , al contrario, invece, delle lingue naturali che sono fortemente ambigue dal punto di vista sintattico e/o lessicale. In questa ragione risiede, dunque, la necessità di dover usare un linguaggio formale per comunicare con un computer.
2.2 Linguaggi di alto e di basso livello
+
 
 +
===''' Linguaggi di alto e di basso livello '''===
 
La maggior parte dei linguaggi moderni è stata progettata per essere facile da utilizzare, per questo tali linguaggi vengono definiti di alto livello . Tra questi, i più famosi sono Java, Python, Javascript e i vari linguaggi della famiglia C. Per una maggiore precisione, si deve far presente che i linguaggi di alto livello vengono poi tradotti in un linguaggio molto semplice, fatto solo di due simboli 0 e 1, detto linguaggio macchina o di basso livello - l'unico linguaggio che le macchine sono in grado di comprendere. Della traduzione dei comandi che un programmatore scrive in una sequenza di "zeri e uni" si occupa un programma apposito chiamato compilatore o interprete. In realtà, non solo esiste una differenza concettuale tra "compilazione" e "interpretazione", ma tra linguaggio macchina e linguaggio di alto livello si colloca un ulteriore tipo di linguaggio detto assembly. Tuttavia, essendo questi argomenti più avanzati, non verranno qui trattati. Per ulteriori approfondimenti si rimanda qui.
 
La maggior parte dei linguaggi moderni è stata progettata per essere facile da utilizzare, per questo tali linguaggi vengono definiti di alto livello . Tra questi, i più famosi sono Java, Python, Javascript e i vari linguaggi della famiglia C. Per una maggiore precisione, si deve far presente che i linguaggi di alto livello vengono poi tradotti in un linguaggio molto semplice, fatto solo di due simboli 0 e 1, detto linguaggio macchina o di basso livello - l'unico linguaggio che le macchine sono in grado di comprendere. Della traduzione dei comandi che un programmatore scrive in una sequenza di "zeri e uni" si occupa un programma apposito chiamato compilatore o interprete. In realtà, non solo esiste una differenza concettuale tra "compilazione" e "interpretazione", ma tra linguaggio macchina e linguaggio di alto livello si colloca un ulteriore tipo di linguaggio detto assembly. Tuttavia, essendo questi argomenti più avanzati, non verranno qui trattati. Per ulteriori approfondimenti si rimanda qui.
 +
 
2.3. Una semplice definizione di "algoritmo"
 
2.3. Una semplice definizione di "algoritmo"
 
Altra definizione fondamentale per chiunque voglia avvicinarsi al mondo della programmazione è la definizione di algoritmo: un algoritmo non è altro che una sequenza di istruzioni che indica al computer la procedura attraverso cui, dato un input, produrre un output, risolvendo, dunque, un certo problema.
 
Altra definizione fondamentale per chiunque voglia avvicinarsi al mondo della programmazione è la definizione di algoritmo: un algoritmo non è altro che una sequenza di istruzioni che indica al computer la procedura attraverso cui, dato un input, produrre un output, risolvendo, dunque, un certo problema.
 
“Per capire cos'è un algoritmo basta pensare a una ricetta di cucina: gli ingredienti per fare una torta [...] sono l'input, la torta pronta da mangiare è l'output, e i passi da seguire secondo una certa sequenza per trasformare gli ingredienti nella torta sono l'algoritmo” .
 
“Per capire cos'è un algoritmo basta pensare a una ricetta di cucina: gli ingredienti per fare una torta [...] sono l'input, la torta pronta da mangiare è l'output, e i passi da seguire secondo una certa sequenza per trasformare gli ingredienti nella torta sono l'algoritmo” .
 +
 
2.4. La "grammatica" dei linguaggi
 
2.4. La "grammatica" dei linguaggi
 
Nonostante ogni linguaggio di programmazione abbia una propria sintassi (ovvero un insieme di regole che consentono di creare una frase di senso compiuto  e delle specifiche parole chiave (a cui è associata una semantica altrettanto specifica), questi condividono uno scheletro, formato da una sorta di “grammatica di base” che, una volta appresa, sarà applicabile a qualsiasi linguaggio.
 
Nonostante ogni linguaggio di programmazione abbia una propria sintassi (ovvero un insieme di regole che consentono di creare una frase di senso compiuto  e delle specifiche parole chiave (a cui è associata una semantica altrettanto specifica), questi condividono uno scheletro, formato da una sorta di “grammatica di base” che, una volta appresa, sarà applicabile a qualsiasi linguaggio.
 +
 
2.4.1 Variabili
 
2.4.1 Variabili
 
Un concetto fondamentale nei linguaggi di programmazione è quello di variabile. Queste possono essere identificate tramite parole chiave che cambiano in base al linguaggio, es. var, int, String. La loro funzione è quella di memorizzare in uno spazio di memoria fisica dati di ogni genere. Queste possono essere definite come una sorta di contenitore, in cui il dato racchiuso è chiamato valore . Nei linguaggi di alto livello le variabili devono essere dichiarate prima di poter essere utilizzate, ovvero è necessario definire un nome che le identifichi (es. nome_variabile nella lista in basso). Inoltre, per i linguaggi tipizzati come Javascript e Java è anche obbligatorio stabilire il tipo della variabile che, posto prima del nome, va a rappresentare numeri interi o decimali, stringhe, vettori e altre tipologie di datatype. Di seguito alcuni esempi:  
 
Un concetto fondamentale nei linguaggi di programmazione è quello di variabile. Queste possono essere identificate tramite parole chiave che cambiano in base al linguaggio, es. var, int, String. La loro funzione è quella di memorizzare in uno spazio di memoria fisica dati di ogni genere. Queste possono essere definite come una sorta di contenitore, in cui il dato racchiuso è chiamato valore . Nei linguaggi di alto livello le variabili devono essere dichiarate prima di poter essere utilizzate, ovvero è necessario definire un nome che le identifichi (es. nome_variabile nella lista in basso). Inoltre, per i linguaggi tipizzati come Javascript e Java è anche obbligatorio stabilire il tipo della variabile che, posto prima del nome, va a rappresentare numeri interi o decimali, stringhe, vettori e altre tipologie di datatype. Di seguito alcuni esempi:  
● In Python: nome_variabile = 10
+
* in Python: nome_variabile = 10;
● In Javascript: var nome_variabile = 10
+
* in Javascript: var nome_variabile = 10;
● In Java: String nome_variabile = "stringa"
+
* in Java: String nome_variabile = "stringa".
 +
 
 
Un tipo particolare di variabili sono le variabili booleane. A differenza di altri tipi di variabili (i cui valori possono essere assegnati arbitrariamente dal programmatore), le variabili booleane hanno due soli valori possibili: true o false. Queste risultano particolarmente utili negli statement condizionali, che si vedranno nel paragrafo xxx.
 
Un tipo particolare di variabili sono le variabili booleane. A differenza di altri tipi di variabili (i cui valori possono essere assegnati arbitrariamente dal programmatore), le variabili booleane hanno due soli valori possibili: true o false. Queste risultano particolarmente utili negli statement condizionali, che si vedranno nel paragrafo xxx.
 +
 
2.4.2 Funzioni e pacchetti
 
2.4.2 Funzioni e pacchetti
 
Una funzione identifica un blocco di istruzioni volte alla realizzazione di un preciso scopo. Una funzione può essere richiamata in precisi punti di un programma ed esistono due principali tipologie di funzioni:
 
Una funzione identifica un blocco di istruzioni volte alla realizzazione di un preciso scopo. Una funzione può essere richiamata in precisi punti di un programma ed esistono due principali tipologie di funzioni:
Funzioni predefinite: si tratta “funzioni già fatte” che è possibile trovare nella documentazione di un linguaggio. In Figura 1 è possibile vedere un esempio di funzione (today()) che calcola la data nel giorno attuale;
+
* Funzioni predefinite: si tratta “funzioni già fatte” che è possibile trovare nella documentazione di un linguaggio. In Figura 1 è possibile vedere un esempio di funzione (today()) che calcola la data nel giorno attuale;
 
   
 
   
 
Figura 1: esempio di funzione predefinita in Python
 
Figura 1: esempio di funzione predefinita in Python
Funzioni definite dall'utente: funzioni personalizzabili a seconda delle necessità del programmatore. In Figura 2 è stata, ad esempio, definita una funzione “sommaNumeri” che, presi in input due numeri x e y, restituisce la loro somma.
+
* Funzioni definite dall'utente: funzioni personalizzabili a seconda delle necessità del programmatore. In Figura 2 è stata, ad esempio, definita una funzione “sommaNumeri” che, presi in input due numeri x e y, restituisce la loro somma.
 
   
 
   
 
Figura 2: esempio di funzione definita dall'utente
 
Figura 2: esempio di funzione definita dall'utente
Linha 31: Linha 43:
  
 
2.4.3 Condizioni if-else
 
2.4.3 Condizioni if-else
 +
 
Poiché programmare significa trovare una procedura volta alla risoluzione di un problema, è spesso necessario dover considerare diversi scenari al fine di compiere una scelta. Ad esempio, se volessimo creare un programma che simula il comportamento di un semaforo si dovrebbe associare a ogni colore un messaggio per i guidatori:
 
Poiché programmare significa trovare una procedura volta alla risoluzione di un problema, è spesso necessario dover considerare diversi scenari al fine di compiere una scelta. Ad esempio, se volessimo creare un programma che simula il comportamento di un semaforo si dovrebbe associare a ogni colore un messaggio per i guidatori:
 
if (annoDiNascita.equals(“XV”))
 
if (annoDiNascita.equals(“XV”))
Linha 40: Linha 53:
 
\MODIFICARE ESEMPIO
 
\MODIFICARE ESEMPIO
 
Verrebbe stampato il messaggio di stop in tutti i casi in cui il colore del semaforo non è verde (quindi che sia rosso o arancione o, addirittura, di un altro colore).
 
Verrebbe stampato il messaggio di stop in tutti i casi in cui il colore del semaforo non è verde (quindi che sia rosso o arancione o, addirittura, di un altro colore).
 +
 
2.4.4 Cicli
 
2.4.4 Cicli
 
Quando, tramite un linguaggio di programmazione, dobbiamo risolvere un problema in un numero fisso o variabile di passi, presentandosi così la necessità di ripetere una serie di azioni, il costrutto che possiamo utilizzare è chiamato ciclo o loop. Il ciclo può quindi essere identificato come un percorso chiuso nel quale vengono inserite determinate istruzioni, eseguite al verificarsi di una certa condizione. Esistono diverse forme di cicli che cambiano in base alla tipologia di parola chiave utilizzata, ad esempio cicli for e cicli while. Per capire meglio il concetto, immaginiamo di avere delle parole racchiuse all'interno di una lista, chiamata convenzionalmente listaDiParole, e vogliamo stampare a schermo tutte le parole utilizzando i vari costrutti avremo:  
 
Quando, tramite un linguaggio di programmazione, dobbiamo risolvere un problema in un numero fisso o variabile di passi, presentandosi così la necessità di ripetere una serie di azioni, il costrutto che possiamo utilizzare è chiamato ciclo o loop. Il ciclo può quindi essere identificato come un percorso chiuso nel quale vengono inserite determinate istruzioni, eseguite al verificarsi di una certa condizione. Esistono diverse forme di cicli che cambiano in base alla tipologia di parola chiave utilizzata, ad esempio cicli for e cicli while. Per capire meglio il concetto, immaginiamo di avere delle parole racchiuse all'interno di una lista, chiamata convenzionalmente listaDiParole, e vogliamo stampare a schermo tutte le parole utilizzando i vari costrutti avremo:  
Tramite un ciclo for:
+
* Tramite un ciclo for:
listaDiparole = ["giallo", "verde", "blu"]
+
 
 +
''listaDiparole = ["giallo", "verde", "blu"]
 
for parola in listaDiParole:
 
for parola in listaDiParole:
print parola
+
print parola''
Tramite un ciclo while:
+
 
listaDiparole = ["giallo", "verde", "blu"]\\
+
* Tramite un ciclo while:
 +
 
 +
''listaDiparole = ["giallo", "verde", "blu"]\\
 
contatore = 0
 
contatore = 0
 
while (contatore != listaDiParole.length):
 
while (contatore != listaDiParole.length):
 
print parola
 
print parola
contatore++
+
contatore++''
 +
 
 
Entrambe le istruzioni stampo a schermo tutte le parole della lista, la prima semplicemente iterando per ogni parola presente, la seconda avvalendosi di un indice che, posto inizialmente a 0 \footnote{Si ricordi che gli informatici iniziano sempre a contare da 0 e non da 1!}, aumenta di 1 ad ogni parola stampata, e si ferma quando il contatore è uguale alla lunghezza della lista, nel nostro caso 3.
 
Entrambe le istruzioni stampo a schermo tutte le parole della lista, la prima semplicemente iterando per ogni parola presente, la seconda avvalendosi di un indice che, posto inizialmente a 0 \footnote{Si ricordi che gli informatici iniziano sempre a contare da 0 e non da 1!}, aumenta di 1 ad ogni parola stampata, e si ferma quando il contatore è uguale alla lunghezza della lista, nel nostro caso 3.
 +
}}

Edição das 07h11min de 12 de agosto de 2021

Tempo di lettura 11 minuti - per Ludovica Binetti Lorenzo Di Gianvittorio


Avere un’idea, seppure sommaria, di cosa ci sia dietro il funzionamento degli strumenti informatici che oggi agevolano il compito di un public historian potrebbe sembrare superfluo, eppure ciò è indispensabile per un uso consapevole di questi stessi strumenti che spesso e volentieri vengono usati in maniera meccanica. Ciò che, innanzitutto, si deve comprendere è che alla base del dialogo e dell’interazione tra uno studioso e un computer vi sono i linguaggi di programmazione. Di linguaggi di programmazione ne esistono moltissimi e di solito ognuno di questi è orientato ad un particolare campo informatico (quale, ad esempio, la progettazione web, l’analisi di dati storici o lo sviluppo di software) che corrisponde, a sua volta, a un preciso scopo per uno studioso di Storia. Per tale ragione, qui di seguito, si offrirà un’introduzione generica e molto basilare ai concetti che stanno dietro un qualsiasi linguaggio di programmazione. Una volta appresi questi concetti, se ne riuscirà a comprendere la versatilità e la loro possibile applicazione a una grande varietà di campi in quanto basati sui linguaggi di programmazione: dalla manipolazione di dati alla visualizzazione di grafici; dalla rappresentazione digitale di un testo all’estrazione di informazione da questo; dalla creazione di una pagina web alla possibilità di creare strumenti interattivi su di esso.

I linguaggi di programmazione

Nonostante al giorno d’oggi vi siano moltissimi linguaggi di programmazione, ognuno dei quali si presta più o meno facilmente all’esecuzione di un particolare tipo di “task storico”, ognuno di essi lo si può definire come segue: un linguaggio di programmazione è un linguaggio formale rappresentante un insieme di istruzioni atte a svolgere una specifica funzione per il controllo di una macchina o di una sua implementazione. Ciò che contraddistingue questi linguaggi formali dalle lingue naturali è la loro non ambiguità: i linguaggi di programmazione presentano, infatti, “una sintassi e delle regole ben precise che evitano possibili interpretazioni sbagliate da parte del computer” , al contrario, invece, delle lingue naturali che sono fortemente ambigue dal punto di vista sintattico e/o lessicale. In questa ragione risiede, dunque, la necessità di dover usare un linguaggio formale per comunicare con un computer.

Linguaggi di alto e di basso livello

La maggior parte dei linguaggi moderni è stata progettata per essere facile da utilizzare, per questo tali linguaggi vengono definiti di alto livello . Tra questi, i più famosi sono Java, Python, Javascript e i vari linguaggi della famiglia C. Per una maggiore precisione, si deve far presente che i linguaggi di alto livello vengono poi tradotti in un linguaggio molto semplice, fatto solo di due simboli 0 e 1, detto linguaggio macchina o di basso livello - l'unico linguaggio che le macchine sono in grado di comprendere. Della traduzione dei comandi che un programmatore scrive in una sequenza di "zeri e uni" si occupa un programma apposito chiamato compilatore o interprete. In realtà, non solo esiste una differenza concettuale tra "compilazione" e "interpretazione", ma tra linguaggio macchina e linguaggio di alto livello si colloca un ulteriore tipo di linguaggio detto assembly. Tuttavia, essendo questi argomenti più avanzati, non verranno qui trattati. Per ulteriori approfondimenti si rimanda qui.

2.3. Una semplice definizione di "algoritmo" Altra definizione fondamentale per chiunque voglia avvicinarsi al mondo della programmazione è la definizione di algoritmo: un algoritmo non è altro che una sequenza di istruzioni che indica al computer la procedura attraverso cui, dato un input, produrre un output, risolvendo, dunque, un certo problema. “Per capire cos'è un algoritmo basta pensare a una ricetta di cucina: gli ingredienti per fare una torta [...] sono l'input, la torta pronta da mangiare è l'output, e i passi da seguire secondo una certa sequenza per trasformare gli ingredienti nella torta sono l'algoritmo” .

2.4. La "grammatica" dei linguaggi Nonostante ogni linguaggio di programmazione abbia una propria sintassi (ovvero un insieme di regole che consentono di creare una frase di senso compiuto e delle specifiche parole chiave (a cui è associata una semantica altrettanto specifica), questi condividono uno scheletro, formato da una sorta di “grammatica di base” che, una volta appresa, sarà applicabile a qualsiasi linguaggio.

2.4.1 Variabili Un concetto fondamentale nei linguaggi di programmazione è quello di variabile. Queste possono essere identificate tramite parole chiave che cambiano in base al linguaggio, es. var, int, String. La loro funzione è quella di memorizzare in uno spazio di memoria fisica dati di ogni genere. Queste possono essere definite come una sorta di contenitore, in cui il dato racchiuso è chiamato valore . Nei linguaggi di alto livello le variabili devono essere dichiarate prima di poter essere utilizzate, ovvero è necessario definire un nome che le identifichi (es. nome_variabile nella lista in basso). Inoltre, per i linguaggi tipizzati come Javascript e Java è anche obbligatorio stabilire il tipo della variabile che, posto prima del nome, va a rappresentare numeri interi o decimali, stringhe, vettori e altre tipologie di datatype. Di seguito alcuni esempi:

  • in Python: nome_variabile = 10;
  • in Javascript: var nome_variabile = 10;
  • in Java: String nome_variabile = "stringa".

Un tipo particolare di variabili sono le variabili booleane. A differenza di altri tipi di variabili (i cui valori possono essere assegnati arbitrariamente dal programmatore), le variabili booleane hanno due soli valori possibili: true o false. Queste risultano particolarmente utili negli statement condizionali, che si vedranno nel paragrafo xxx.

2.4.2 Funzioni e pacchetti Una funzione identifica un blocco di istruzioni volte alla realizzazione di un preciso scopo. Una funzione può essere richiamata in precisi punti di un programma ed esistono due principali tipologie di funzioni:

  • Funzioni predefinite: si tratta “funzioni già fatte” che è possibile trovare nella documentazione di un linguaggio. In Figura 1 è possibile vedere un esempio di funzione (today()) che calcola la data nel giorno attuale;

Figura 1: esempio di funzione predefinita in Python

  • Funzioni definite dall'utente: funzioni personalizzabili a seconda delle necessità del programmatore. In Figura 2 è stata, ad esempio, definita una funzione “sommaNumeri” che, presi in input due numeri x e y, restituisce la loro somma.

Figura 2: esempio di funzione definita dall'utente

Si noti che, nel caso di funzioni predefinite, è spesso necessario importare specifici pacchetti, ovverosia moduli che raggruppano funzioni già implementate e che aggiungono funzionalità ad un programma. Nell'esempio di Figura 1 il nome del pacchetto è “datetime” a cui ci si riferisce con il nome di date all’interno del codice. Come si può vedere, la parola chiave da usare per importare i pacchetti è “import” seguita dal nome del pacchetto, from e il nome che vogliamo assegnarvi. Tale direttiva deve precedere la chiamata della funzione. Le funzioni possono, inoltre, ricevere o meno uno o più parametri di input che sono contenuti entro le parentesi quadre. Ogni qual volta la funzione deve essere richiamata, è necessario che, nella sua invocazione, le siano passati esattamente lo stesso numero e tipo di parametri formali definiti in fase di dichiarazione. Un esempio di corretta chiamata della funzione definita in Figura 2 è: sommaNumeri (3, 10)

2.4.3 Condizioni if-else

Poiché programmare significa trovare una procedura volta alla risoluzione di un problema, è spesso necessario dover considerare diversi scenari al fine di compiere una scelta. Ad esempio, se volessimo creare un programma che simula il comportamento di un semaforo si dovrebbe associare a ogni colore un messaggio per i guidatori: if (annoDiNascita.equals(“XV”)) tabella.insert(annoDiNascita) Come si può vedere, per realizzare un programma di tal genere si potrebbero creare delle variabili booleane per i colori del semaforo e stampare dei messaggi con l'ausilio di una funzione di "stampa". Per realizzare una struttura di tal genere si utilizzano i cosiddetti comandi condizionali (o istruzioni condizionali) che hanno la seguente forma: ● Parola chiave if seguita dalla condizione (detta guardia) e il comando da eseguire se tale condizione è soddisfatta; ● Parola chiave else, che, in realtà, indica un ramo opzionale. Se la premessa dell'if non è soddisfatta, si entra in questo ramo e il comando che segue l'else verrà eseguito. Ritornando all'esempio precedente, se scrivessimo: \MODIFICARE ESEMPIO Verrebbe stampato il messaggio di stop in tutti i casi in cui il colore del semaforo non è verde (quindi che sia rosso o arancione o, addirittura, di un altro colore).

2.4.4 Cicli Quando, tramite un linguaggio di programmazione, dobbiamo risolvere un problema in un numero fisso o variabile di passi, presentandosi così la necessità di ripetere una serie di azioni, il costrutto che possiamo utilizzare è chiamato ciclo o loop. Il ciclo può quindi essere identificato come un percorso chiuso nel quale vengono inserite determinate istruzioni, eseguite al verificarsi di una certa condizione. Esistono diverse forme di cicli che cambiano in base alla tipologia di parola chiave utilizzata, ad esempio cicli for e cicli while. Per capire meglio il concetto, immaginiamo di avere delle parole racchiuse all'interno di una lista, chiamata convenzionalmente listaDiParole, e vogliamo stampare a schermo tutte le parole utilizzando i vari costrutti avremo:

  • Tramite un ciclo for:

listaDiparole = ["giallo", "verde", "blu"] for parola in listaDiParole: print parola

  • Tramite un ciclo while:

listaDiparole = ["giallo", "verde", "blu"]\\ contatore = 0 while (contatore != listaDiParole.length): print parola contatore++

Entrambe le istruzioni stampo a schermo tutte le parole della lista, la prima semplicemente iterando per ogni parola presente, la seconda avvalendosi di un indice che, posto inizialmente a 0 \footnote{Si ricordi che gli informatici iniziano sempre a contare da 0 e non da 1!}, aumenta di 1 ad ogni parola stampata, e si ferma quando il contatore è uguale alla lunghezza della lista, nel nostro caso 3.


Bibliografia e sitografia




Citazione di questo articolo
Come citare: LORENZO DI GIANVITTORIO, Ludovica Binetti . "Introduzione alla programmazione". In: CLIOMATICA - Portale di Storia Digitale e ricerca. Disponibile in: http://lhs.unb.br/cliomatica/index.php/Introduzione_alla_programmazione. il giorno: 6/07/2024.






Informare errori in questa pagina