Corso di Linguaggi di Programmazione
|
|
- Gabriella Carletti
- 6 anni fa
- Visualizzazioni
Transcript
1 Corso di Linguaggi di Programmazione Lezione 13 Alberto Ceselli (thanks C. Braghin) Dipartimento di Tecnologie dell Informazione Università degli Studi di Milano 21 Aprile 2009
2 Motivation Importante Alcune proprietà ( siamo ancora nell ambito della semantica di un linguaggio) degli elementi di un programma sono determinate dall implementazione del linguaggio. Nelle prossime lezioni, analizziamo diversi aspetti dei linguaggi di programmazione, cercando di capire cosa si può valutare in modo automatico, come e perchè. In particolare, parleremo di costrutti o feature safe se il loro corretto utilizzo (semantica) può essere determinato automaticamente dal compilatore costrutti o feature unsafe se il loro corretto utilizzo è a carico del programmatore
3 Linguaggi e compilatori Struttura di un compilatore Struttura di un interprete Sistemi ibridi Per capire cosa si può valutare automaticamente utilizzando un particolare linguaggio e come dobbiamo avere una sensibilità a basso livello del funzionamento del relativo compilatore / interprete...
4 Struttura di un compilatore Struttura di un compilatore Struttura di un interprete Sistemi ibridi Vantaggi: massima efficienza! Es. C, C++
5 Struttura di un interprete Struttura di un compilatore Struttura di un interprete Sistemi ibridi Vantaggi: massima flessibilità! Es. Scheme, Prolog
6 Sistema ibrido Compilatori ed interpreti Struttura di un compilatore Struttura di un interprete Sistemi ibridi
7 Generazione di codice intermedio Struttura di un compilatore Struttura di un interprete Sistemi ibridi Es. Java un compilatore genera solo codice intermedio una macchina virtuale interpreta ed esegue il codice intermedio
8 Compilatori just-in-time Struttura di un compilatore Struttura di un interprete Sistemi ibridi Es. C# una macchina virtuale riceve il codice quando una porzione di codice deve essere eseguita, la macchina virtuale ne richiede la compilazione viene eseguito il codice compilato il controllo torna alla macchina virtuale N.B. ogni porzione di codice è compilata una sola volta (indipendentemente dal numero di attivazioni)
9 Linguaggi interpretati e compilati Struttura di un compilatore Struttura di un interprete Sistemi ibridi N.B. in linea di principio, ogni linguaggio può essere sia compilato che interpretato nulla vieta di scrivere interpreti per C. nulla vieta di compilare ed ottimizzare codice SCHEME, ottenendo degli eseguibili.... oppure operare scelte intermedie
10 Cosa servono i tipi durante l analisi semantica?
11 Obiettivi dell analisi semantica Controllo di tipo Controllare che gli identificatori siano stati dichiarati prima di essere usati come supporto a questa fase viene creata una tabella dei simboli (symbol table) che contiene informazioni su tutti gli elementi simbolici incontrati quali nome, scope, tipo (se presente) etc. il risultato di questa fase è l albero di sintassi astratta (AST).
12 Descrittore di Tipo Compilatori ed interpreti Un descrittore di tipo è una struttura dati che contiene tutte le informazioni necessarie a definire il tipo: se il tipo della variabile è determinato all inizio dell esecuzione del programma (statico), serve al compilatore per controlli di tipo. se il tipo della variabile è determinato o può cambiare in fase di esecuzione (dinamico), una sua parte può servire per i controlli durante l esecuzione (es. controllo sugli indici di un vettore dinamico).
13 Controllo sui Tipi Compilatori ed interpreti Determina e controlla la compatibilità dei tipi degli oggetti: assegnazioni, dichiarazioni, uso parametri, conversioni,... Il controllo avviene rispetto alle regole di tipo definite dal particolare linguaggio Tipo di controllo: statico: avviene in fase di compilazione - segue l albero sintattico (bottom-up) - determina e trasmette le informazioni sui tipi degli oggetti coinvolti dinamico: modulo di supporto a run-time - pesante dal punto di vista prestazionale - tipico dei linguaggi interpretati
14 Tipo di dato Compilatori ed interpreti Definition In un linguaggio di programmazione, un tipo di dato (o semplicemente tipo) è un nome che indica l insieme di valori omogenei che una variabile, o il risultato di un espressione, possono assumere, e le operazioni che manipolano tali valori. L insieme dei valori ha una cardinalità finita. Un tipo è caratterizzato da un nome e dalla sintassi della dichiarazione di tipo. Es.: in C, la definizione int x; indica che x può assumere come valori solo numeri interi (appartenenti ad un certo intervallo) e che su tali valori sono ammesse solo certe operazioni.
15 Classificazioni del processo di tipizzazione (1) Statico vs dinamico Fa riferimento al momento in cui alla variabile è associato il suo tipo (binding tipo-variabile). - la tipizzazione è statica quando a una variabile viene associato rigidamente in fase di compilazione un tipo che rimane lo stesso durante tutta l esecuzione. - la tipizzazione è dinamica quando una variabile può cambiare tipo durante l esecuzione a seconda del tipo dell espressione che le viene assegnata. Esplicito vs implicito Fa riferimento al modo in cui le annotazioni o dichiarazioni di tipo vengono generate, se specificate esplicitamente dal programmatore, o dedotte automaticamente dal compilatore.
16 Inferenza di Tipo Compilatori ed interpreti Il tipo di un espressione è dedotto senza richiedere al programmatore di specificare il tipo delle variabili. Quando non si può determinare subito il tipo, si utilizza una variabile di tipo. Es.: data la seguente istruzione ML fun(n) {return n+1;} si può dedurre che f è di tipo int -> int
17 Conversione di Tipo Compilatori ed interpreti Conversione implicita (coercion) operata in fase di compilazione del programma indebolisce il meccanismo di verifica dei tipi in quasi tutti i linguaggi capita se si esegue un operazione tra tipi numerici diversi. Es v e q reali, p intero: v = p + q Conversione esplicita (cast) indicata mediante costrutti linguistici nel sorgente del programma. Es v e q interi, p reale: v = (int) p + q
18 Svantaggi della tipizzazione dinamica Permette la cattura di errori di tipo solo durante l esecuzione del programma. Es.: (in pseudo-codice, L# indica la linea) L1 var x = 5; L2 var y = "test"; L3 var z = x + y; In un linguaggio con tipizzazione dinamica, solo in fase di esecuzione viene segnalato un errore quando si cerca di eseguire l istruzione alla linea L3. L implementazione è più costosa: maggiore tempo di esecuzione perché il controllo dei tipi deve venire fatto durante l esecuzione del programma maggior utilizzo della memoria perché si deve tenere memoria del tipo delle variabili durante l esecuzione del programma.
19 Classificazioni del processo di tipizzazione (2) Dal punto di vista qualitativo: Forte vs Debole Fa riferimento alle regole imposte dal linguaggio sull utilizzo dei tipi: possono essere rigide (forti) ed impedire qualsiasi uso dei dati incoerente con il tipo specificato in fase di dichiarazione (ogni errore di tipo è rilevato dal compilatore) in caso contrario (qualche errore di tipo può sfuggire al compilatore) la tipizzazione è debole. Safe vs Unsafe Un linguaggio type safe garantisce che tutti gli errori di tipo siano catturati, ma non necessariamente durante la compilazione (un programma potrebbe fallire durante l esecuzione a causa di violazioni di tipo). Linguaggi che permettono aritmetica dei puntatori non possono essere type safe. Un linguaggio con tipizzazione debole non è necessariamente unsafe (es. il controllo ritardato in fase di esecuzione Perl).
20 Linguaggi fortemente tipati In genere, un linguaggio di programmazione si considera fortemente tipato (strongly typed) se: Utilizza tipizzazione statica i tipi delle variabili sono fissati in fase di compilazione e non sono modificabili. non ci sono tipi di dato varianti (es. union in C) Impedisce qualsiasi uso dei dati incoerente con il tipo specificato in fase di dichiarazione (i.e., impossibilità di conversione di tipi) a volte la conversione esplicita (casting) è permessa, mentre quella implicita (coercion) no. Impedisce di evadere il sistema di tipi. Questo permette di avere una garanzia piuttosto forte sul comportamento del programma in fase di esecuzione.
21 Forte e Debole, Safe e Unsafe Linguaggio Statico / Dinamico Strong / Weak Safety Ada statico strong safe C statico weak unsafe C++ statico Java statico Pascal statico Lisp dinamico strong ML dinamico JavaScript dinamico Perl dinamico PHP dinamico Python dinamico Ruby dinamico Esercizio: riempire la tabella.
22 Tipizzazione Esempi nei vari linguaggi (1) Compilatori ed interpreti Linguaggi a tipizzazione statica: Ada, C, C++, Java, Fortran: tipizzazione esplicita Perl, JavaScript, ML: tipizzazione implicita in Perl, ogni nome che inizia con $ può contenere una stringa o un valore numerico in ML, la definizione fun square(x): real = x * x; è corretta. di norma vengono compilati (i tipi sono importanti anche in fase di ottimizzazione del codice).
23 Tipizzazione Esempi nei vari linguaggi (1) Compilatori ed interpreti Linguaggi a tipizzazione statica: Ada, C, C++, Java, Fortran: tipizzazione esplicita Perl, JavaScript, ML: tipizzazione implicita in Perl, ogni nome che inizia con $ può contenere una stringa o un valore numerico in ML, la definizione fun square(x): real = x * x; è corretta. di norma vengono compilati (i tipi sono importanti anche in fase di ottimizzazione del codice). Linguaggi a tipizzazione dinamica: Lisp, Scheme, Python, Perl, Ruby, JavaScript, PHP la maggior parte dei linguaggi di scripting o di sviluppo rapido sono di solito a tipizzazione dinamica di norma vengono interpretati.
24 Tipizzazione Esempi nei vari linguaggi (2) Compilatori ed interpreti Linguaggio debolmente tipato: Perl print 2 + 4; in Perl stampa a video 6 poiché viene fatta una conversione implicita
25 Tipizzazione Esempi nei vari linguaggi (2) Compilatori ed interpreti Linguaggio debolmente tipato: Perl print 2 + 4; in Perl stampa a video 6 poiché viene fatta una conversione implicita Linguaggio debolmente tipato e unsafe: C vs C++ char* buf = malloc(20); viene compilata in C senza problemi, ma genera un errore in C++ perché malloc ritorna un valore di tipo void* e il C++ richiede una conversione esplicita (cast).
26 Tipizzazione Esempi nei vari linguaggi (2) Compilatori ed interpreti Linguaggio debolmente tipato: Perl print 2 + 4; in Perl stampa a video 6 poiché viene fatta una conversione implicita Linguaggio debolmente tipato e unsafe: C vs C++ char* buf = malloc(20); viene compilata in C senza problemi, ma genera un errore in C++ perché malloc ritorna un valore di tipo void* e il C++ richiede una conversione esplicita (cast). Linguaggio fortemente tipato ma unsafe: C++ Quando viene eseguito il seguente programma (che passa senza problemi la fase di compilazione), va in crash. int* p = 0; *p = 5;
27 Tipizzazione Esempi nei vari linguaggi (3) Compilatori ed interpreti Classifica di linguaggi fortemente tipati: OCaml, Haskell: non permettono alcuna conversione di tipo implicita (coercion) Ada: non permette alcuna conversione di tipo implicita, ma ha la possibilità di sospendere temporaneamente il controllo di tipo. Java, C# permettono alcuni tipi di casting, e coercion nel caso di operatori aritmetici Es.: l istruzione x = 3 1.5; è valida, in quanto l espressione intera viene convertita in floating-point.
28 Sistema di tipo di un linguaggio di programmazione Complesso delle informazioni e delle regole che governano i tipi di un linguaggio: Insieme dei tipi predefiniti Costrutti per definire nuovi tipi Meccanismi per il controllo dei tipi: Regole di equivalenza: due tipi formalmente diversi possono essere equivalenti a livello semantico; Regole di compatibilità: un valore di un tipo diverso da quello atteso può comunque essere utilizzato; Regole di inferenza attribuzione di un tipo ad un espressione complessa. Lista (possibilmente vuota) di vincoli da controllare staticamente o dinamicamente.
29 Equivalenza di Tipi Compilatori ed interpreti Stabilire quando due tipi, formalmente diversi, sono intercambiabili, ossia non distinguibili nel loro uso. Equivalenza per nome Due tipi sono equivalenti se e solo se hanno lo stesso nome (sono lo stesso tipo) Es.: T1 = int e T2 = int sono diversi Facile da implementare ma molto restrittiva Indebolita in alcuni linguaggi: la ridenominazione (T3 e T4) genera alias e non nuovi tipi Equivalenza strutturale Due tipi sono equivalenti se e solo se hanno la stessa struttura (dichiarazioni equivalenti) Più flessibile, ma più complicata da implementare (specialmente per tipi definiti ricorsivamente).
30 Equivalenza strutturale Problemi: nel caso di strutture, si confronta solo il tipo dei campi o anche il loro nome? E l ordine in cui compaiono? se due tipi derivano da uno stesso tipo base, ma identificano entità diverse (es. typedef celsius float; typedef fahrenheit float)?
31 Equivalenza di Tipi Esempi Compilatori ed interpreti C, C++ utilizzano la versione indebolita dell equivalenza per nome nel caso di un unico file, mentre l equivalenza strutturale nel caso di file compilati separatemente - struct e union creano sempre un nuovo tipo che non è equivalente con nessun altro tipo. Es.: (in pseudo-codice) type T1 = int; type T2 = char; type T3 = struct { T1 a; T2 b; } type T4 = struct { T1 a; T2 b; }
32 Compatibilità di Tipi Compilatori ed interpreti Definition Il tipo T è compatibile con il tipo S sse un valore del tipo T è ammesso in qualsiasi contesto in cui sarebbe richiesto un valore di tipo S. Ogni linguaggio definisce le regole di compatibilità tra oggetti di tipo differente, che vengono adottate nella disciplina dell assegnazione, delle operazioni aritmetiche e del passaggio dei parametri. Compatibilità più debole dell equivalenza: Due tipi equivalenti sono sempre compatibili, ma non viceversa. Relazione riflessiva, transitiva, ma non simmetrica.
33 Classificazione di Tipi A seconda della loro struttura: - semplici o primitivi: tipi che non possono essere decomposti; - strutturati: tipi ottenuti dai tipi semplici mediante operatori forniti dal linguaggio. A secondo di chi li definisce: - predefiniti: insieme di tipi predefiniti dal linguaggio; - definiti dall utente: definiti mediante l utilizzo di operatori forniti dal linguaggio.
34 Classificazione di Tipi A seconda della loro struttura: - semplici o primitivi: tipi che non possono essere decomposti; - strutturati: tipi ottenuti dai tipi semplici mediante operatori forniti dal linguaggio. A secondo di chi li definisce: - predefiniti: insieme di tipi predefiniti dal linguaggio; - definiti dall utente: definiti mediante l utilizzo di operatori forniti dal linguaggio. Nota bene Le due classificazioni non sono perfettamente sovrapponibili: non tutti i tipi predefiniti dal linguaggio sono primitivi. Es.: le strinche in C sono tipi derivati ma predefiniti dal linguaggio.
35 Tipi e Linguaggi Compilatori ed interpreti Ogni linguaggio definisce accuratamente i tipi che permette di gestire, associando agli stessi: un insieme di operazioni ammesse l insieme di operazioni ammesse dipende dal linguaggio (vedi operazioni su stringhe) un ordinamento totale (facoltativo) scalare una codifica, spesso dipendente dalla macchina decisa dall implementatore e a seconda della macchina insieme di regole che permette di tradurre ogni valore in una stringa di bit (complemento a 1, complemento a 2, floating,...) viene ignorata dal programmatore
36 Esempio: array Compilatori ed interpreti Elementi sintattici: Forma di accesso ai dati: parentesi (Fortran, COBOL unici elementi stampabili su schede perforate), caratteri [ ] indice di partenza: 0, 1 tipo richiesto per gli indici (Ada permette anche booleani, caratteri o enum) controllo del corretto uso degli indici (Java, ML, C#)
37 Esempio: array Compilatori ed interpreti Tipo di allocazione: static array: allocazione di memoria statica e dimensione fissata fixed-stack dynamic array: dimensione fissata, allocazione nello stack quando viene incontrata la dichiarazione stack-dynamic array: dimensione non fissata, allocazione nello stack quando viene incontrata la dichiarazione fixed-heap dynamic array: dimensione fissata, allocazione nello heap quando viene incontrata la dichiarazione stack-dynamic array: dimensione non fissata, allocazione nello heap quando viene incontrata la dichiarazione
38 Esempio: array Compilatori ed interpreti Possibilità di accedere a slices: In Fortran 95: Integer Cube(1:3,1:3,1:4), Cube(1:3,1:3,2) è una porzione dell array Cube comune in linguaggi di programmazione per calcolo scientifico (Matlab)
39 Tipi nei vari linguaggi (1) Tipo Booleano valori: prevede 2 soli valori, vero o falso, utilizzati soprattutto nelle espressioni condizionali operazioni: congiunzione (and), disgiunzione (or), negazione (not), uguaglianza invece che memorizzarlo in un singolo bit, per motivi di efficienza si usa un byte (unità minima di memoria) in altri linguaggio, 0 indica falso; valori maggiori di 0 vero
40 Tipi nei vari linguaggi (1) Tipo Booleano valori: prevede 2 soli valori, vero o falso, utilizzati soprattutto nelle espressioni condizionali operazioni: congiunzione (and), disgiunzione (or), negazione (not), uguaglianza invece che memorizzarlo in un singolo bit, per motivi di efficienza si usa un byte (unità minima di memoria) in altri linguaggio, 0 indica falso; valori maggiori di 0 vero Tipi Numerici (Interi o Reali) valori: a differenza degli insiemi matematici che rappresentano, includono un massimo e un minimo numero rappresentabile dovendo essere contenuti in una parola di memoria operazioni: operazioni aritmetiche e confronti (somma, differenza, prodotto, divisione, resto) alcuni degli operatori possono venire usati sia da tipi interi che reali (operatori overloaded)
41 Tipi nei vari linguaggi (2) Record (o Strutture) valori: usato per mantenere informazioni eterogenee correlate - ogni campo è caratterizzato dal suo nome e dal suo tipo (anche diverso da quello degli altri campi operazioni: ciascun campo può essere acceduto in modo indipendente mediante l operatore di selezione (.)
42 Tipi nei vari linguaggi (2) Record (o Strutture) valori: usato per mantenere informazioni eterogenee correlate - ogni campo è caratterizzato dal suo nome e dal suo tipo (anche diverso da quello degli altri campi operazioni: ciascun campo può essere acceduto in modo indipendente mediante l operatore di selezione (.) Array valori: collezione finita di elementi dello stesso tipo (tipo base), indicizzata su un intervallo di tipo ordinale (tipo indice) operazioni: selezione, assegnamento, uguaglianza si indica, spesso tra quadre, un espressione il cui valore indica l indice dell elemento da selezionare (Es.: array[< expr >]).
43 Tipi nei vari linguaggi (3) Caratteri e Stringhe il tipo carattere tradotto con la codifica ASCII o Unicode la stringa non sempre è predefinita nel linguaggio operazioni: operazioni per la concatenazione, la selezione di una sottostringa di una stringa data, ecc. nei linguaggi di scripting anche operatori per il pattern matching
44 Esercizi per casa Compilatori ed interpreti Riempire la tabella nelle slide precedenti Scrivere una grammatica che generi espressioni aritmentiche (con + e - come unici operatori)con parentesi. Scrivere una grammatica ad attributi che verifichi le seguenti proprietà: 1 il numero massimo di parentesi annidate è 3 2 il numero massimo di operatori utilizzati è 5
Macchine astratte, linguaggi, interpretazione, compilazione
Macchine astratte, linguaggi, interpretazione, compilazione 1 Macchine astratte una collezione di strutture dati ed algoritmi in grado di memorizzare ed eseguire programmi componenti della macchina astratta
DettagliConcetti base programmazione. Antonio Gallo
Concetti base programmazione Antonio Gallo info@laboratoriolibero.com Programma Insieme di istruzioni: Strtturato Ad oggetti Strutturato Ha una struttura più lineare Basato sui concetti di sequenza, selezione,
DettagliCostanti e Variabili
Parte 3 Costanti e Variabili Identificatori Un identificatore è un nome che viene associato a diverse entità (costanti, tipi, variabili, funzioni, ecc.) e serve ad identificare la particolare entità Gli
DettagliTipi di dato semplici
Tipi di dato semplici Perché dichiarare una variabile? 2 Una variabile rappresenta uno spazio di memoria centrale Prima dell esecuzione del programma deve essere chiaro quanto spazio serve al programma
DettagliProgrammazione II. Lezione 7. Daniele Sgandurra 9/11/2010.
Programmazione II Lezione 7 Daniele Sgandurra daniele.sgandurra@iit.cnr.it 9/11/2010 1/24 Programmazione II Lezione 7 9/11/2010 Sommario 1 Gestione della Memoria 2/24 Programmazione II Lezione 7 9/11/2010
DettagliProgrammazione II. Lezione 16. Daniele Sgandurra 14/12/2010.
Programmazione II Lezione 16 Daniele Sgandurra daniele.sgandurra@iit.cnr.it 14/12/2010 1/29 Programmazione II Lezione 16 14/12/2010 Sommario 1 2/29 Programmazione II Lezione 16 14/12/2010 Parte I 3/29
DettagliLezione 6 Introduzione al C++ Mauro Piccolo
Lezione 6 Introduzione al C++ Mauro Piccolo piccolo@di.unito.it Linguaggi di programmazione Un linguaggio formale disegnato per descrivere la computazione Linguaggi ad alto livello C, C++, Pascal, Java,
Dettaglicap.6 del testo a cosa servono i tipi nei linguaggi di programmazione cos è un linguaggio type safe
cap.6 del testo a cosa servono i tipi nei linguaggi di programmazione cos è un linguaggio type safe 1 tipi statici e tipi dinamici in generale i LP hanno tipi statici, cioè ogni variabile ha un tipo dichiarato
DettagliTipi di dato. Il concetto di tipo di dato viene introdotto per raggiungere due obiettivi:
Tipi di dato Il concetto di tipo di dato viene introdotto per raggiungere due obiettivi: esprimere in modo sintetico la loro rappresentazione in memoria, e un insieme di operazioni ammissibili permettere
DettagliAlgoritmi e Strutture Dati
Algoritmi e Strutture Dati Università di Camerino Corso di Laurea in Informatica (12 CFU) I periodo didattico Emanuela Merelli email:emanuela.merelli@unicam.it Argomenti della lezione Elementi di un linguaggio
DettagliIl linguaggio C. Notate che...
Il linguaggio C Notate che... 1 Il C è un linguaggio a blocchi int main (void) { blocco } 2 Il C è un linguaggio a blocchi (2) Non è possibile mischiare dichiarazioni e comandi! int main (void) { } Dichiarazione
DettagliInformatica 3. LEZIONE 2: Sintassi e semantica
Informatica 3 LEZIONE 2: Sintassi e semantica Modulo 1: Introduzione ai concetti di sintassi e semantica Modulo 2: Il concetto di binding Modulo 3: Variabili Modulo 4: Routine Convenzioni dei nomi Informatica
DettagliIl potere espressivo di un linguaggio è caratterizzato da: PROGRAMMA = DATI + CONTROLLO
LINGUAGGI DI PROGRAMMAZIONE Il potere espressivo di un linguaggio è caratterizzato da: quali tipi di dati consente di rappresentare (direttamente o tramite definizione dell utente) quali istruzioni di
DettagliLinguaggi di Programmazione
Linguaggi di Programmazione 1 Linguaggio naturale e linguaggio macchina La comunicazione uomo-macchina avviene attraverso formalismi che assumono la forma di un linguaggio. Caratteristiche del Linguaggio
DettagliLINGUAGGI DI PROGRAMMAZIONE!
LINGUAGGI DI PROGRAMMAZIONE! Il potere espressivo di un linguaggio è! caratterizzato da:! quali tipi di dati consente di rappresentare (direttamente o tramite definizione dell utente)! quali istruzioni
DettagliInformatica 3. Informatica 3. LEZIONE 2: Sintassi e semantica. Lezione 2- Modulo 1. Le componenti di un linguaggio di programmazione
Informatica 3 Informatica 3 LEZIONE 2: Sintassi e semantica Lezione 2- Modulo 1 Modulo 1: Introduzione ai concetti di sintassi e semantica Modulo 2: Il concetto di binding Modulo 3: Variabili Modulo 4:
DettagliIl linguaggio di programmazione Python
Università Roma Tre Dipartimento di Matematica e Fisica Percorso Abilitante Speciale Classe A048 Matematica Applicata Corso di Informatica Il linguaggio di programmazione Python Marco Liverani (liverani@mat.uniroma3.it)
DettagliProgramma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore
Programma del corso Introduzione agli algoritmi Rappresentazione delle Informazioni Architettura del calcolatore Reti di Calcolatori Elementi di Programmazione Algoritmi e programmi Algoritmo Sequenza
DettagliLe basi del linguaggio Java
Le basi del linguaggio Java Compilazione e interpretazione Quando si compila il codice sorgente scritto in Java, il compilatore genera il codice compilato, chiamato bytecode. È un codice generato per una
DettagliI Linguaggi di Programmazione
I Linguaggi di Programmazione 1 Linguaggio naturale e linguaggio macchina La comunicazione uomo-macchina avviene attraverso formalismi che assumono la forma di un linguaggio. Caratteristiche del Linguaggio
DettagliIL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale
Fondamenti di Informatica IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale Fondamenti di Informatica - D. Talia - UNICAL 1 Lettura di dati da input In Java la lettura di dati da input
DettagliUtilizza i tipi di dati comuni a tutto il framework.net Accesso nativo ai tipi.net (C# è nato con.net) Concetti fondamentali:
1 Tipi di dati 1 Tipi di dati Utilizza i tipi di dati comuni a tutto il framework.net Accesso nativo ai tipi.net (C# è nato con.net) Concetti fondamentali: Tutto è un oggetto Tutto eredita implicitamente
DettagliStrutture dati nel supporto a run time
Strutture dati nel supporto a run time 1 Entità presenti quando un programma va in esecuzione programmi d utente (compilati) routines del supporto interprete I/O, librerie, routines per la gestione delle
Dettagli4 - Tipi di dato primitivi
4 - Tipi di dato primitivi Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it
DettagliIl linguaggio C. Puntatori e dintorni
Il linguaggio C Puntatori e dintorni 1 Puntatori : idea di base In C è possibile conoscere e denotare l indirizzo della cella di memoria in cui è memorizzata una variabile (il puntatore) es : int a = 50;
DettagliCaratteristiche di un linguaggio ad alto livello
Caratteristiche di un linguaggio ad alto livello Un linguaggio ad alto livello deve offrire degli strumenti per: rappresentare le informazioni di interesse dell algoritmo definire le istruzioni che costituiscono
DettagliLinguaggi e Ambienti di Programmazione
Linguaggi e Ambienti di Programmazione Principi e tecniche diffuse che si incontrano spesso nelle applicazioni dell informatica. Compilatori Editor di struttura: riceve in input una sequenza di comandi
DettagliINTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica
Fondamenti di Informatica INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica - Programma Un programma è una formulazione
DettagliStrutture Dati Dinamiche
Strutture Dati Dinamiche Motivazioni Le variabili considerate fino a questo punto devono essere dichiarate staticamente, ossia la loro esistenza, il loro nome e la loro dimensione devono essere previsti
DettagliStrutture dati e loro organizzazione. Gabriella Trucco
Strutture dati e loro organizzazione Gabriella Trucco Introduzione I linguaggi di programmazione di alto livello consentono di far riferimento a posizioni nella memoria principale tramite nomi descrittivi
DettagliLINGUAGGI DI ALTO LIVELLO. Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware
LINGUAGGI DI ALTO LIVELLO Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware 1 LINGUAGGI DI ALTO LIVELLO Barriera di astrazione Fortran Cobol Basic Pascal Python C
DettagliLINGUAGGI DI ALTO LIVELLO
LINGUAGGI DI ALTO LIVELLO Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware 1 LINGUAGGI DI ALTO LIVELLO Barriera di astrazione C Fortran Modula-2 Cobol Algol Basic
DettagliFunzioni, Stack e Visibilità delle Variabili in C
Funzioni, Stack e Visibilità delle Variabili in C Programmazione I e Laboratorio Corso di Laurea in Informatica A.A. 2016/2017 Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7
DettagliLez. 8 La Programmazione. Prof. Pasquale De Michele (Gruppo 2) e Raffaele Farina (Gruppo 1) 1
Lez. 8 La Programmazione Prof. Pasquale De Michele (Gruppo 2) e Raffaele Farina (Gruppo 1) 1 Dott. Pasquale De Michele Dott. Raffaele Farina Dipartimento di Matematica e Applicazioni Università di Napoli
DettagliLINGUAGGI DI ALTO LIVELLO
LINGUAGGI DI ALTO LIVELLO Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware Linguaggi di alto livello Barriera di astrazione C Fortran Modula-2 Cobol Algol Basic Ada
DettagliTipi di dato personalizzati Array di struct. Tipi di dato utente. Laboratorio di Programmazione I. Corso di Laurea in Informatica A.A.
Array di Tipi di dato utente Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2016/2017 Array di Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7 Lez. 8 - Introduzione
DettagliGestione dinamica della memoria
Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 2016-2017 Gestione dinamica della memoria Pietro Di Lena - pietro.dilena@unibo.it A pessimistic programmer sees the array as half empty.
DettagliAlgoritmi, Strutture Dati e Programmi. UD 1.d: Dati e Tipi di Dato
Algoritmi, Strutture Dati e Programmi : Dati e Tipi di Dato Prof. Alberto Postiglione AA 2007-2008 Università degli Studi di Salerno Dati: Variabili e Costanti Un algoritmo (e il programma che ne è rappresentazione)
DettagliLinguaggio C - sezione dichiarativa: costanti e variabili
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C - sezione dichiarativa: costanti e variabili La presente
DettagliLinguaggi di programmazione e astrazione
Linguaggi di programmazione e astrazione i linguaggi di programmazione ad alto livello moderni sono il più potente strumento di astrazione messo a disposizione dei programmatori che possono, con un solo
DettagliFondamenti di Informatica e Laboratorio T-AB T-15 Strutture dati
Fondamenti di Informatica e Laboratorio T-AB T-15 Strutture dati Paolo Torroni Dipartimento di Elettronica, Informatica e Sistemistica Università degli Studi di Bologna Anno Accademico 2008/2009 Sommario
DettagliProgrammazione Procedurale in Linguaggio C++
Programmazione Procedurale in Linguaggio C++ Tipi Strutturati Concetti Avanzati versione 2.5 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina) G. Mecca
DettagliTraduzione ed Interpretazione. Queste sconosciute
Traduzione ed Interpretazione Queste sconosciute Siano L Linguaggio ad alto livello M L M 0 Macchina astratta di L Macchina ospite Implementazione interpretativa di L Simulazione software di M L su M 0
DettagliLinguaggi, Traduttori e le Basi della Programmazione
Corso di Laurea in Ingegneria Civile Politecnico di Bari Sede di Foggia Fondamenti di Informatica Anno Accademico 2011/2012 docente: Prof. Ing. Michele Salvemini Sommario Il Linguaggio I Linguaggi di Linguaggi
DettagliEspressioni ed operatori in C
Espressioni ed operatori in C Espressioni Il C è un linguaggio basato su espressioni Una espressione è una notazione che denota un valore mediante un processo di valutazione Una espressione può essere
DettagliCorso di Fondamenti di Informatica Il sistema dei tipi in C++
Corso di Fondamenti di Informatica Il sistema dei tipi in C++ Anno Accademico Francesco Tortorella Struttura di un programma C++ // Programma semplice in C++ #include int main() { cout
DettagliEsonero di Informatica I. Ingegneria Medica
Di seguito sono elencati una serie di domande tipo esonero ; i quiz vogliono dare un sistema di autovalutazione e di confronto allo studente che deve prepararsi alla prova di metà corso. Il numero e l
DettagliEspressioni. Espressione = meccanismo fondamentale per esprimere computazioni in un LP importante comprenderne la semantica!
Espressioni Espressione = meccanismo fondamentale per esprimere computazioni in un LP importante comprenderne la semantica! Valutazione automatica di expr aritmetiche = obiettivo primario dei primi LP
DettagliFondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011
Fondamenti di Informatica 1 Prof. B.Buttarazzi.. 2010/2011 Sommario Conversione di tipo:casting Tipo enumerativo lgebra Booleana Esercizi Conversione di tipo:casting Il casting o conversione di tipo avviene
DettagliInformatica Generale Andrea Corradini Ancora sui linguaggi di programmazione
Informatica Generale Andrea Corradini 18 - Ancora sui linguaggi di programmazione Sommario Principali componenti di un linguaggio di programmazione Variabili e costanti Strutture dati: array e record Strutture
DettagliPuntatori. Obiettivi: Richiamare quanto noto sui puntatori dal modulo A Presentare l analogia tra puntatori e vettori e l aritmetica dei puntatori
Puntatori Obiettivi: Richiamare quanto noto sui puntatori dal modulo A Presentare l analogia tra puntatori e vettori e l aritmetica dei puntatori 1 Il puntatore Un tipo puntatore è un tipo scalare per
DettagliPuntatori in C. Puntatori. Variabili tradizionali Esempio: int a = 5; Proprietà della variabile a: nome: a
Puntatori in C Puntatori Variabili tradizionali indirizzo int a = 5; A00E... Proprietà della variabile a: nome: a A010 A012 5 tipo: int A014 valore: 5 indirizzo: A010 Finora abbiamo usato solo le prime
DettagliElementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I
Lezione 4 Elementi lessicali e espressioni logiche Matricole 2-3 Elementi lessicali il linguaggio C ha un suo vocabolario di base i cui elementi sono detti token esistono 6 tipi di token: parole chiave
DettagliAllocazione dinamica della memoria
Allocazione dinamica della memoria Allocazione statica: limiti Per quanto sappiamo finora, in C le variabili sono sempre dichiarate staticamente la loro esistenza deve essere prevista e dichiarata a priori
DettagliProgrammazione. Andrea Passerini Informatica. Programmazione
Andrea Passerini passerini@disi.unitn.it Informatica Linguaggi di programmazione Il calcolatore è in grado di comprendere solo istruzioni in linguaggio macchina. Il linguaggio macchina non è adatto alla
DettagliPrimi passi col linguaggio C
Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Come introdurre un linguaggio di programmazione? Obiettivi: Introduciamo una macchina astratta
DettagliTraduzione ed Interpretazione
Traduzione ed Interpretazione Queste sconosciute Siano L Linguaggio ad alto livello M L Macchina astratta di L M 0 Macchina ospite Implementazione interpretativa di L Implementazione compilativa di L Simulazione
DettagliIl Linguaggio C. Caratteristiche. Caratteristiche. Esempio di programma in C. Tipi di dato primitivi in C. Dati
Caratteristiche Il Linguaggio C Linguaggio sequenziale (lineare), imperativo, strutturato a blocchi usabile anche come linguaggio di sistema software di base sistemi operativi compilatori... FI - Algoritmi
DettagliTipi di dati scalari (casting e puntatori) Alessandra Giordani Lunedì 10 maggio 2010
Tipi di dati scalari (casting e puntatori) Alessandra Giordani agiordani@disi.unitn.it Lunedì 10 maggio 2010 http://disi.unitn.it/~agiordani/ I tipi di dati scalari I tipi aritmetici, i tipi enumerativi
DettagliProgrammazione in Java (I modulo)
Programmazione in Java (I modulo) Lezione 4 Variabili di tipo primitivo. Dichiarazione di costanti Conversioni di tipo: operatore cast Altri operatori di assegnamento Operazioni aritmetiche e di confronto
DettagliTipi di dato primitivi
Tipi di dato primitivi (oltre int) Tipi di dato primitivi int (già trattati) Valori logici (ricordati) Valori reali Valori carattere Informatica - A.A. 2009/2010 - Tipi di dato 2 1 Valori logici (il caso
DettagliFasi di un Compilatore
Dipartimento di Matematica e Informatica Università di Camerino Un implementazione compilativa di un linguaggio di programmazione viene realizzata tramite un programma che prende il nome di compilatore
DettagliInformatica Generale Andrea Corradini I linguaggi di programmazione
Informatica Generale Andrea Corradini 17 - I linguaggi di programmazione Sommario Cos'è un linguaggio di programmazione? Una prospettiva storica: linguaggi di prima, seconda e terza generazione I paradigmi
DettagliLinguaggio C: introduzione
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C: introduzione La presente dispensa e da utilizzarsi
DettagliInformatica 3. LEZIONE 5: Tipi di dati
Informatica 3 LEZIONE 5: Tipi di dati Modulo 1: Tipi e costruttori di tipo Modulo 2: Tipi definiti dall utente e tipi di dati astratti Modulo 3: Sistemi di tipi Informatica 3 Lezione 5 - Modulo 1 Tipi
DettagliTipi di dati strutturati e Linguaggio C. Record o strutture Il costruttore struct in C
Tipi di dati strutturati e Linguaggio C Record o strutture Il costruttore struct in C Dati strutturati Record Un record o struttura è una struttura dati ottenuta aggregando elementi di tipo diverso che
DettagliLez. 5 La Programmazione. Prof. Salvatore CUOMO
Lez. 5 La Programmazione Prof. Salvatore CUOMO 1 2 Programma di utilità: Bootstrap All accensione dell elaboratore (Bootsrap), parte l esecuzione del BIOS (Basic Input Output System), un programma residente
DettagliProgrammazione a Oggetti Lezione 7. Il linguaggio Java: aspetti generali
Programmazione a Oggetti Lezione 7 Il linguaggio Java: aspetti generali Sommario Obiettivi di JAVA Portabilità: produrre codice eseguibile su più piattaforme (JVM) Affidabilità: Evitare il più possibile
DettagliProgrammazione con Java
Programmazione con Java Classi e istanze in Java Definizione di classe in Java A meno che non si usino classi già scritte da altri, prima di poter creare un qualsiasi oggetto devo creare la sua rappresentazione:
DettagliFondamenti di Informatica T. Linguaggio C: i puntatori
Linguaggio C: i puntatori Il puntatore E` un tipo di dato, che consente di rappresentare gli indirizzi delle variabili allocate in memoria. Dominio: Il dominio di una variabile di tipo puntatore è un insieme
DettagliTipi di dato, Alessandra Giordani Lunedì 7 maggio 2011
Tipi di dato, memoria e conversioni Alessandra Giordani agiordani@disi.unitn.it Lunedì 7 maggio 2011 http://disi.unitn.it/~agiordani/ Il linguaggio C è esplicitamente tipato: occorre esplicitamente associare
DettagliC++ Barriera di astrazione. Barriera di astrazione. Basic. Basic. Lisp. Lisp. Pascal. Prolog. Pascal. Prolog. Cobol. Fortran IMPERATIVI FUNZIONALI
Linguaggi di alto livello Barriera di astrazione C Fortran Cobol Modula-2 Basic Pascal Algol Ada Lisp Smalltalk Simula67 Scheme C++ Prolog ML AN - 1995 Linguaggi di alto livello IMPERATIVI C Fortran Modula-2
DettagliLaboratorio di Informatica Ingegneria Clinica Lezione 9/11/2011. Prof. Raffaele Nicolussi
Laboratorio di Informatica Ingegneria Clinica Lezione 9/11/2011 Prof. Raffaele Nicolussi FUB - Fondazione Ugo Bordoni Via del Policlinico, 147-00161 Roma Università degli Studi La Sapienza Fondamenti di
DettagliProgrammazione ad oggetti
Programmazione ad oggetti Tipi di dati Tipo = insieme di valori + insieme di operazioni Es. int: valori:, -2, -1, 0, 1, 2, operazioni:: +,-,*,/,
DettagliProgrammazione Procedurale in Linguaggio C++
Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 3 Istruzioni di Assegnazione G. Mecca M. Samela Università della Basilicata Elementi di Base >> Sommario Sommario Introduzione Istruzioni
DettagliCorso di Fondamenti di Informatica Linguaggi di Programmazione
di Cassino e del Lazio Meridionale Corso di Informatica Linguaggi di Programmazione Anno Accademico 2014/2015 Francesco Tortorella Linguaggi di programmazione Un calcolatore basato sul modello di von Neumann
DettagliIl puntatore. Il puntatore
Il puntatore È un tipo scalare, che consente di rappresentare gli indirizzi delle variabili allocate in memoria. Il dominio di una variabile di tipo puntatore è un insieme di indirizzi: Il valore di una
DettagliLinguaggio C: puntatori
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica A - GES Prof. Plebani A.A. 2006/2007 Linguaggio C: puntatori La presente dispensa e da utilizzarsi ai soli fini didattici previa
DettagliLinguaggi ad oggetti. Linguaggi di Programmazione: Paradigmi di Programmazione. I principali linguaggi ad oggetti. Programmazione ad oggetti.
Linguaggi di Programmazione: Paradigmi di Programmazione Linguaggi ad oggetti I linguaggi di programmazione ad oggetti consentono di applicare metodologie di sviluppo di programmi "object oriented", ossia
DettagliIl C nel C++: Funzioni
Il C nel C++: Funzioni Funzioni (1) il concetto -> spezzare il programma in parti (procedure) una funzione è un parte di programma dotata di un nome che può essere richiamata in altri punti del programma
DettagliAXO - Architettura dei Calcolatori e Sistema Operativo. organizzazione strutturata dei calcolatori
AXO - Architettura dei Calcolatori e Sistema Operativo organizzazione strutturata dei calcolatori I livelli I calcolatori sono progettati come una serie di livelli ognuno dei quali si basa sui livelli
DettagliOgni variabile in C è una astrazione di una cella di memoria a cui corrisponde un nome, un contenuto e un indirizzo.
Ogni variabile in C è una astrazione di una cella di memoria a cui corrisponde un nome, un contenuto e un indirizzo. int a = 5; a 5 α=&a Esistono in C particolari variabili dette puntatori che possono
DettagliOperazioni numeriche - Input
Operazioni numeriche - Input Espressioni, funzioni matematiche, classi involucro, Acquisizione di input 11/11/2004 Laboratorio di Programmazione - Luca Tesei 1 Operazioni fra interi e decimali In Java
DettagliEspressioni e Comandi
Espressioni e Comandi March 24, 2017 Elementi di Base dei Programmi Ricordate? Macchina Astratta: Insieme di algoritmi e strutture dati che permettono di memorizzare ed eseguire programmi Abbiamo parlato
DettagliMacchine Astratte. Nicola Fanizzi Dipartimento di Informatica Università degli Studi di Bari. Linguaggi di Programmazione feb, 2016
Macchine Astratte Nicola Fanizzi Dipartimento di Informatica Università degli Studi di Bari Linguaggi di Programmazione 010194 29 feb, 2016 Sommario 1 Introduzione Macchina astratta Interprete Implementazione
DettagliCorso di Algoritmi e Strutture dati Programmazione Object- Oriented in Java (Parte I)
Corso di Algoritmi e Strutture dati Programmazione Object- Oriented in Java (Parte I) Ing. Gianluca Caminiti Sommario ( OOP ) Programmazione Object-Oriented Incapsulamento, Ereditarietà, Polimorfismo Richiami
Dettagli19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
19 - Eccezioni Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso
DettagliProgrammazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo
Programmazione Orientata agli Oggetti Emilio Di Giacomo e Walter Didimo Una metafora dal mondo reale la fabbrica di giocattoli progettisti Un semplice giocattolo Impara i suoni Dall idea al progetto Toy
DettagliElementi di programmazione
Fondamenti di Informatica per la Sicurezza a.a. 2003/04 Elementi di programmazione Stefano Ferrari Università degli Studi di Milano Dipartimento di Tecnologie dell Informazione Stefano Ferrari Università
DettagliIntroduzione a Matlab
INFORMATICA B Ingegneria Elettrica Introduzione a Matlab Introduzione a Matlab Matlab (MATrix LABoratory) è uno strumento per il calcolo scientifico ed ingegneristico Matlab facilita lo sviluppo di programmi
DettagliStrutture. Stefano Ferrari. Università degli Studi di Milano Programmazione. anno accademico
Strutture Stefano Ferrari Università degli Studi di Milano stefano.ferrari@unimi.it Programmazione anno accademico 2016 2017 Tipi strutturati Rappresentano informazioni composte dall insieme di più valori
DettagliAlgoritmi, Strutture Dati e Programmi. UD 2.b: Programmazione in Pascal
Algoritmi, Strutture Dati e Programmi : Programmazione in Pascal Prof. Alberto Postiglione AA 2007-2008 Università degli Studi di Salerno Il Linguaggio di Programmazione Pascal Esistono molti linguaggi
DettagliEsempio. Le istruzioni corrispondono a quelle di sopra, ma sono scritte in modo simbolico. E indipendente dalla machina
Il compilatore C Astrazione Linguaggio macchina implica la conoscenza dei metodi usati per la rappresentazione dell informazioni nella CPU Linguaggio Assembly è il linguaggio delle istruzioni che possono
DettagliIntroduzione al Linguaggio C
INFORMATICA 1 Lezione 3 (Introduzione al Linguaggio C, Introduzione ai Tipi di dato, Cenni alla codifica binaria) Introduzione al Linguaggio C 1 Passi fondamentali del C Definito nel 1972 (AT&T Bell Labs)
DettagliVerso i puntatori: Cosa è una variabile?
Verso i puntatori: Cosa è una variabile? Quando si dichiara una variabile, ad es. int a; si rende noto il nome e il tipo della variabile. Il compilatore alloca l opportuno numero di byte di memoria per
Dettagli3) Descrivere l architettura di un elaboratore tramite astrazione a livelli
Di seguito sono elencati una serie di domande tipo esonero ; i quiz vogliono dare un sistema di autovalutazione e di confronto allo studente che deve prepararsi alla prova di metà corso. Il numero e l
DettagliProgrammazione. Cognome... Nome... Matricola... Prova scritta del 22 settembre 2014. Negli esercizi proposti si utilizzano le seguenti classi:
Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 22 settembre 2014 TEMPO DISPONIBILE: 2 ore Negli
DettagliAstrazioni sui dati : Specifica di Tipi di Dato Astratti in Java
Astrazioni sui dati : Specifica di Tipi di Dato Astratti in Java 1 Specifica ed Implementazione di Tipi di Dato Astratti in Java cos è un tipo di dato astratto specifica di tipi di dati astratti un tipo
DettagliInformatica 3. LEZIONE 1: Introduzione. Modulo 1: Introduzione al corso Modulo 2: Introduzione ai linguaggi di programmazione
Informatica 3 LEZIONE 1: Introduzione Modulo 1: Introduzione al corso Modulo 2: Introduzione ai linguaggi di Informatica 3 Lezione 1- Modulo 1 Introduzione al corso Introduzione Corso di Informatica 3
Dettagli