Skip to content

👨‍💻👩‍💻 Con questo documento voglio spiegare tutti i concetti base della programmazione utilizzando come linguaggio di riferimento Javascript.

License

Notifications You must be signed in to change notification settings

Blundert/imparare-a-programmare-con-javascript

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Imparare a programmare con Javascript

Lavorando nel mondo della programmazione ed essendo io stesso uno sviluppatore, spesso e volentieri, mi sono imbattuto ad insegnare alcune cose a persone di diverso livello di conoscenza sul tema.
Non mi sono mai però approcciato nello spiegare tutta la programmazione ad un neofita che non ne conosce nulla a riguardo.
Con questo documento voglio spiegare tutti i concetti base della programmazione utilizzando come linguaggio di riferimento Javascript.

Perché Javascript

Ho scelto di utilizzare Javascript per spiegare la programmazione per 3 semplici motivi - non del tutto razionali:

  1. è il linguaggio di programmazione che utilizzo principlamente a lavoro;
  2. ha una curva di apprendimento molto veloce;
  3. ci sono molte risorse online di facile fruizione che possono aiutare a comprendere meglio il linguaggio. Per citarne qualcuna: w3schools; MDN.

Come scrivere ed eseguire un programma

Questa guida non è orientata al WEB ma solamente alla programmazione. Utilizzeremo Javascript solamente per studiarne i principi. Quindi, gli strumenti che utilizzeremo saranno:

  1. un ambiente di sviluppo integrato (in lingua inglese integrated development environment) cioè un software che ci supporterà nella scrittura dei programmi. In particolare, utilizzeremo Visual Studio Code;
  2. Node.js è una runtime di JavaScript Open source multipiattaforma orientato agli eventi per l'esecuzione di codice JavaScript, costruita sul motore JavaScript V8 di Google Chrome. Che tradotto significa: Node.js è un programma che ci permette di eseguire programmi scritti con il liguaggio di programmazione Javascript senza l'utilizzo di un browser.
  3. La shell o terminale è un programma dotato di un'interfaccia a riga di comando, che viene eseguito all'interno di un terminale testuale. L'utente digita un comando, ovvero richiede l'esecuzione di un programma, e il programma eseguito può interagire con l'utente e/o mostrare dati sul terminale. Noi utilizzeremo la shell per eseguire i nostri programmi, per inserire informazioni nei nostri programmi e per vedere l'esecuzione di questi.

Installiamo Visual Studio Code e Node.js prima di passare al prossimo paragrafo.

Comandi base del terminale

Nei principali sistemi operativi (Linux, MacOS e Windows) è possibile utilizzare la shell dei comandi in modo nativo, perciò senza dove installare nulla oltre a quando proposto di default. Per accedere al teminale è necessario:

  • Windows 10: fare clic con il tasto destro del mouse sul menu Start e nel menù a discesa selezionare Windows PowerShell;
  • MacOS 10.15: fare clic sull’icona Launchpad nel Dock, scrivere Terminale nel campo di ricerca, quindi fare clic su Terminale;
  • Linux (Ubuntu): fare clic sul pulsante Dash (il pulsante Dash è posizionato nell'angolo superiore sinistro del desktop ed è caratterizzato dal logo di Ubuntu). Digitare la parola chiave terminale, quindi fare clic su Terminale.

Comandi comuni tra tutti i teminali:

  • pwd: vedere il percorso corrente in cui il terminale è posizionato;

Il primo programma: Hello world!

Una volta installati Visual Studio Code (da ora abbreviato VSC) e Node.js (da ora semplicemente node) saremo pronti per scrivere il nostro primo programma.

  1. Aprire VSC;
  2. Nel menù File selezionare New File;
  3. Scrivere il seguente testo (da ora in poi il testo che contiene codice sarà indicato come codice):
var helloWorld = "Hello world!";

console.log(helloWorld);
  1. Salviamo il file in una posizione che ci aggrada con il nome hello-world.js. Fare attenzione all'estenzione .js;
  2. Aprire il terminale utilizzando quello incorporato con VSC (che non fa altro che utilizzare uno di quelli spiegati sopra): nello stesso menù di File, selezionare invece Terminal e poi fare clic su New Terminal. Si aprirà il prompt dei comandi sotto il file di testo che abbiamo scritto posizionato in una cartella. Per essere consapevoli del path completo eseguire il comando pwd.
  3. Utilizzando i comandi spiegati nel paragrafio sopra, ci posizioniamo nella stessa cartella in cui abbiamo salvato il file hello-world.js.
  4. Scriviamo il seguente comando nel terminale:
> node hello-world.js
  1. Vedremo stampato (modo gergale informatico per dire visualizzato) in una nuova riga la stringa
> Hello world!

Input ed output

I programmi devono poter scambiare informazioni con l'esterno ed a questo servono le operazioni di lettura e stampa, dette di input/output e abbreviate in i/o.

Un programma comunica con l'esterno per mezzo di dispositivi molto diversi: in un computer moderno, l'input standard è la tastiera, l'output standard è lo schermo, ma un programma potrebbe poter scrivere o leggere da un dispositivo USB o da CD o DVD o semplicemente da un file nella memoria del computer o anche un file che risiede nella memoria di qualche altro computer raggiungibile d quello su cui il programma esegue.

Come abbiamo visto nell'esercizio precedente:

var helloWorld = "Hello world!";

console.log(helloWorld);

viene fatto utilizzo di console.log per poter stampare a video la scritta Hello world!. Console.log non è altro che un metodo per poter eseguire l'operazione di output del nostro programma.

Come si può notare non è possibile cambiare o inserire una nuova stringa senza prima modificare il programma, in pratica non è possibile utilizzare l'operazione di input.

Scriviamo un nuovo programma che stampa a video un saluto seguito dal nome di una persona, che andremo a salvare con il nome di hello.js.

var myArgs = process.argv.slice(2);
var nomeDellaPersona = myArgs[0];

console.log("Ciao", nomeDellaPersona, "!");

Andremo a scrivere poi nel seguente modo il comando nel terminale:

> node hello.js <stringa che vogliamo inserire come parametro>

nel concreto:

> node hello.js Matteo

Dopo l'esecuzione vedremo stampato:

> Ciao Matteo !

Se eseguiremo lo stesso comando con un nome diverso, per esempio Leonardo al posto di Matteo vedremo stampato:

> Ciao Leonardo !

In questo modo possiamo leggere un parametro dal terminale. Per leggerene più di uno, sarà necessario modificare il nostro programma ancora e cambiare la sintassi dell'esecuzione del comando.
In particolare, per inserire nel comando più di una parola basta separare i parametri con uno spazio:

> node hello.js Matteo Leonardo Alberto

Scriviamo un nuovo programma che stampa a video un il nome della persona seguito dalla sua età. Entrambi questi valori saranno letti come input. Andremo a salvare con il file con il nome di age.js.

var myArgs = process.argv.slice(2);
var nomeDellaPersona = myArgs[0];
var etaDellaPersona = myArgs[1];

console.log(nomeDellaPersona, "ha la seguente età:", etaDellaPersona);

Poniamo particolare attenzione alle righe:

var myArgs = process.argv.slice(2);
var nomeDellaPersona = myArgs[0];
var etaDellaPersona = myArgs[1];

myArgs è una variabile di tipo array (che faremo nei prossimi paragrafici) alla quale vengono assegnati tutti i valori scritti come parametro nell'esecuzione del programma. Per ora ci basta sapere che se richiamata con la seguente sintassi: myArgs[n] con n il numero del valore sarà possibile ottenere dentro il programma il valore scritto come parametro.

Facciamo un esempio per spiegare meglio questo concetto:

> node mio-programma.js one two three four

myArgs conterrà:

myArgs:  [ "one", "two", "three", "four" ]

Nel mio programma potrò ottenere i parametri facendo:

var parametroUno = myArgs[0]; // "one"
// ...
var parametroQuattro = myArgs[0]; // "four"

Tipi predefiniti e variabili

...

## Istruzioni di base

...

Condizionale

...

Cicli while

...

Esercizi

Una serie di esercizi sui cicli while.

  1. Dati due numeri interi, calcolare il quoziente e il resto supponendo che l'esecutore non sappia fare la divisione.

Cicli for

...

Array

...

Algortmi

...

Funzioni

...

Ricorsione

...

Alberi

...

Programmazione funzionale

...

Programmazione ad oggetti

...

Bibliografia

Link utili:

  1. https://it.wikipedia.org/wiki/Programmazione_(informatica)
  2. https://it.wikipedia.org/wiki/JavaScript
  3. https://it.wikipedia.org/wiki/Integrated_development_environment
  4. https://it.wikipedia.org/wiki/Open_source
  5. https://it.wikipedia.org/wiki/Node.js
  6. https://www.laramind.com/blog/cose-un-terminale-accedere-da-mac-e-da-windows/
  7. https://it.wikipedia.org/wiki/Terminale_(informatica)
  8. https://it.wikipedia.org/wiki/Terminale_virtuale
  9. https://it.wikipedia.org/wiki/Shell_(informatica)
  10. https://it.admininfo.info/c-mo-abrir-powershell-en-windows-10
  11. https://support.apple.com/it-it/guide/terminal/apd5265185d-f365-44cb-8b09-71a064a42125/mac
  12. https://www.libreriaprogetto.it/web/libro/9000000000055.php
  13. https://www.math.unipd.it/~gilberto/
  14. https://it.wikipedia.org/wiki/Input/output
  15. https://developer.mozilla.org/it/docs/Web/API/Console/log
  16. https://nodejs.org/en/knowledge/command-line/how-to-parse-command-line-arguments/

Utility di scrittura

In questo paragrafo mi annoto le utility di Markdown utilizzate in questo documento:

Link utili:

  1. https://github.com/yzhang-gh/vscode-markdown

About

👨‍💻👩‍💻 Con questo documento voglio spiegare tutti i concetti base della programmazione utilizzando come linguaggio di riferimento Javascript.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published