Pseudocodice

Da Wikipedia

In informatica, nell’ambito della programmazione, per pseudocodice, pseudocodifica, pseudolinguaggio o linguaggio di progettazione si intende un linguaggio il cui scopo è la rappresentazione di algoritmi in alternativa al classico diagramma di flusso e non soggetto a molte limitazioni intrinseche di quest’ultimo tipo di rappresentazione.
La stesura della pseudocodifica può precedere la codifica del programma scritto in un linguaggio di programmazione essendo spesso un linguaggio a metà tra la logica proposizionale e il linguaggio di programmazione vero e proprio.

Non esiste uno pseudolinguaggio standard e convenzionalmente usato: gli autori di libri o corsi di programmazione definiscono spesso un proprio pseudolinguaggio, utilizzato nelle loro pubblicazioni; inoltre ciascun programmatore può essere portato ad utilizzare una propria variante.
Ogni pseudolinguaggio ha un proprio lessico, una propria sintassi e una propria semantica, ma la progettazione di questo tipo di formalismo è volta alla comprensibilità e alla leggibilità del codice; la sintassi sarà quindi meno rigorosa rispetto ad un vero linguaggio e le parole chiave saranno evocative, in modo da rendere più intuitiva la sua interpretazione.

Approfondisci

Quesiti

Programmazione visuale

Da Wikipedia

Un Linguaggio di Programmazione Visuale (Visual Programming Language V.P.L.) è un linguaggio che consente la programmazione tramite la manipolazione grafica degli elementi e non tramite sintassi scritta.

I vantaggi della programmazione visuale sono la facilità di apprendimento e la possibilità di visualizzare lo stato del programma durante le fasi di debug.

La programmazione visuale si ritrova in diversi ambiti

  • Didattico: Scratch, App Inventor, App Lab (code.org)
  • Game Design: GameMaker, …
  • Industriale: LabVIEW, …
  • Multimediale: …

In ambito didattico si può scegliere tra ambienti di sviluppo online o da installare

Online

Da installare

  • Alice
  • Scratch
  • Squeak
  • Robot Emil

In alternativa esistono IDE che permettono di progettare un’applicazione partendo dal diagramma di flusso (flow-chart)

RISORSE ONLINE

Linguaggi di programmazione

Definizioni

  • simboli + regole
  • parole + regole
  • Linguaggio naturale – artificiale – formale – logico/matematico – di programmazione – di progetto – pseudolinguaggio – metalinguaggio – di alto livello – di basso livello – linguaggio macchina – lato client – lato server – di script – di comandi – esoterico – …
Storia

In ordine alfabetico


I linguaggi possono essere classificati a seconda del paradigma di programmazione che realizzano

  • Funzionale: LISP – LOGO – AutoLISP – Mathematica- Common Lisp, Scheme, Scala
  • Logico: PROLOG (Programming logic – PROgrammation en LOGique)
  • Orientato agli oggetti: Simula – Smalltalk – C++ – Eiffel – Delphi, Java, VisualBasic 4
  • Script: ActionScript (Flash) – AppleScript – ASP – Bash (Unix, Linux, …) – Javascript – JSP (Java server page) – PHP – VBScript – Perl, Python, Ruby, Tcl, …

Molti linguaggi si presentano come multiparadigma, forniscono al programmatore una sintassi molto flessibile / completa

  • Adaprogrammazione modulare, orientata agli oggetti, concorrente, distribuita
  • C#: … imperativa, dichiarativa, funzionale, generica, object-oriented, component-oriented
  • Common Lispprocedurale, imperativa, funzionale, object-oriented
  • F#: … imperativa, funzionale, object-oriented
  • Scala… funzionale, object-oriented

Strumenti di sviluppo


Forse non hai bisogno di un linguaggio di programmazione tradizionale, considera


RISORSE ONLINE

  1. Lista dei linguaggi di programmazione
  2. tutorialspoint (C, C++, C#, Java, Pascal, Python, …)
  3. tekh.io

I paradigmi di programmazione

Negli anni sono stati codificati diversi modi per passare dal problema all’algoritmo

Programmazione imperativa

Un programma è costituito da una sequenza di comandi che l’esecutore eseguirà ordinatamente

  1. Comando A
  2. Comando B
  3. Comando C

Il controllo dell’esecuzione si realizza tramite delle istruzioni di salto

  • condizionato (JGT, JLT, …)
  • incondizionato (JUMP…)
  • GOTO, …

I linguaggi di basso livello e i primi linguaggi di programmazione avevano questo approccio (oggi è da evitare).

Programmazione strutturata

Il controllo dell’esecuzione non si realizza con le istruzioni di salto ma con

  • selezioni (per i salti in avanti)
    • singola
    • doppia
    • multipla
  • ripetizioni (per i salti indietro)
    • indefinita
    • predefinita

Paradigma procedurale

Divido il problema in sotto-problemi e li risolvo singolarmente (con dei sotto-programmi) fino a risolvere tutto il problema.

PARA3


PARA1

Da dove si parte?

Metodologia TOP-DOWN

Affronto qualsiasi problema partendo dall’aspetto più alla superficie.
Continuo strato dopo strato fino ad arrivare alla radice.

Ad ogni passo risolvo l’aspetto più immediato/semplice fino ad arrivare a risolvere completamente il problema.

Metodologia BOTTOM-UP

Affronto subito la risoluzione del nucleo del problema.
Risalgo strato dopo strato fino alla superficie esterna.

PARA2

Inizio risolvendo l’aspetto più caratteristico (significativo / difficile) del problema e poi aggiungo strato dopo strato il codice necessario.


Riepilogo dei paradigmi di programmazione

  1. Imperativa: Variabili, comandi, istruzioni per il controllo del flusso
  2. Strutturata: Sequenza, cicli, alternative
  3. Procedurale: Sottoprogrammi, procedure, funzioni
  4. Modulare: Moduli, interfacce
  5. Orientata agli oggetti: Classi, incapsulamento, ereditarietà, polimorfismo
  6. Funzionale: Valutazione di funzioni
  7. Logica: Clausole, unificazione
  8. Visuale: Blocchi, frecce, …
  9. Concorrente: Processi
  10. Parallela: Concorrenza
  11. Genetica: Apprendimento automatico
  12. Orientata agli eventi: Eventi, gestori degli eventi
  13. Di script: Shell, interpretato