Question 1: introduction to computer programming

Documenti analoghi
Question 1: introduction to computer programming and Linux/gvim/gcc/make/gdb

Introduction. The Structure of a Compiler

Capitolo 6 - Array. Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved.

Capitolo 5 - Funzioni

Stringhe. Prof. Lorenzo Porcelli

Puntatori, array, incrementi Array come parametri Array di puntatori. Programmazione 1. Lezione 12. Vincenzo Marra.

Elementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I

Linguaggi e Ambienti di Programmazione

Capitolo 7 I puntatori in C

A.A. 2006/2007 Laurea di Ingegneria Informatica. Fondamenti di C++ Horstmann Capitolo 3: Oggetti Revisione Prof. M. Angelaccio

Perché il linguaggio C?

Capitolo 2 Introduzione alla programmazione in C

Università degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso

Complementi. - Ridefinizione di tipo - - Costrutto switch - - Programmazione su più file - - Parametri della funzione main - Funzione system -

Le basi del linguaggio Java

Capitolo 3 Sviluppo di Programmi Strutturati

Esercitazioni di Informatica 3

La sintassi del C APPENDICE H

C: panoramica. Violetta Lonati

L apertura di un file ci restituisce un puntatore a una struttura chiamata FILE fopen:

Breve Manuale di Riferimento sulla Sintassi Linguaggi C++ e FORTRAN

Analizzatore Lessicale Parte I Scanner

Funzioni e. Alessandra Giordani Mercoledì 16 maggio 2012

Operazioni su file di caratteri

CAPITOLO2 PROGRAMMA: PRINTING UN GIOCO DI PAROLE FONDAMENTI DI C FORMA DI UN SEMPLICE PROGRAMMA COMPILAZIONE E LINKING. directive

A.S. 2011/2012. Circuito semaforico da incrocio. Corso di Elettronica. Dipartimento di Elettrotecnica

Java Virtual Machine (JVM)

Riconoscitori e analizzatori sintattici. Scanning e parsing. Funzionamento di un parser: la tecnica Shift/Reduce. Esempio

Downloading and Installing Software Socio TIS

Verso i puntatori: Cosa è una variabile?

Stored Procedures. Massimo Mecella Dipartimento di Ingegneria informatica automatica e gestionale Antonio Ruberti Sapienza Università di Roma

Introduzione al linguaggio C Gli array

Algoritmi e Strutture Dati

Spazio di indirizzamento virtuale

Introduzione alla programmazione in linguaggio C

Indice. Prefazione. 3 Oggetti e Java 53

Se vogliamo cambiarlo: i dati vengono sovrascritti. 300 White Jones (vecchio valore) 300 Worthington 0.00

Programmazione 2. Introduzione al corso

Le direttive del Preprocessore

Introduzione alla programmazione in C++

Informatica 3. LEZIONE 2: Sintassi e semantica

CAPITOLO2 PROGRAMMA: PRINTING UN GIOCO DI PAROLE FONDAMENTI DI C. COMPILAZIONE E LINKING USANDO gcc COMPILAZIONE E LINKING. % gcc pun.

Tipi di dati strutturati e Linguaggio C. Record o strutture Il costruttore struct in C

ELEMENTI DI INFORMATICA L-B. Ing. Claudia Chiusoli

Indice PARTE A. Prefazione Gli Autori Ringraziamenti dell Editore La storia del C. Capitolo 1 Computer 1. Capitolo 2 Sistemi operativi 21 XVII XXIX

Informatica 1 Tipi e dichiarazioni in C++ C++ - Tipi e dichiarazioni 1

Funzioni in C. Funzioni. Strategie di programmazione. Funzioni in C. Come riusare il codice? (2/3) Come riusare il codice? (1/3)

Corso di Laurea in INFORMATICA

Sommario. Introduzione... xv. Giorno 1 Elementi base del linguaggio C

Capitolo 11 Elaborazione di file

Java. Traditional portability (ideal)

LINGUAGGI DI ALTO LIVELLO. Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware

Indice. Introduzione a tool per lo sviluppo e l'esecuzione di programmi in linguaggio Java. Compilazione ed esecuzione di un programma

Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A I/O, thread, socket in Java

Unità Didattica 1 Linguaggio C. Fondamenti. Struttura di un programma.

Fondamenti di Programmazione

LINGUAGGI DI ALTO LIVELLO

Paolo Bison. Fondamenti di Informatica A.A. 2006/07 Università di Padova

Laboratorio di Programmazione: Linguaggio C Lezione 21 del 19 maggio 2014

Analizzatori Lessicali con JLex. Giuseppe Morelli

Il linguaggio Python

By E.M. note sull'uso di GAMBAS

Sommario PREFAZIONE...XI CAPITOLO 1: INTRODUZIONE AI COMPUTER, A INTERNET E AL WEB... 1 CAPITOLO 2: INTRODUZIONE ALLA PROGRAMMAZIONE IN C...

TNCguide OEM Informativa sull introduzione di documentazione aggiuntiva nella TNCguide

Le strutture. Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune.

Domain Name Service. Mapping nomi/indirizzi con Socket API in C

Un esempio di compilatore realizzato con flex e bison

1 Il Paradigma Imperativo

Programmazione di base

Il linguaggio C. Notate che...

Fasi di un Compilatore

Costanti e Variabili

C O P Y R I G H T ( C ) W W W. F O N D A M E N T I. I N F O

Introduzione a Java. Riferimenti

Commenti per documentare il codice (doc comments) I commenti speciali devono essere delimitati da /**... */.

Informatica 3. Informatica 3. LEZIONE 2: Sintassi e semantica. Lezione 2- Modulo 1. Le componenti di un linguaggio di programmazione

Programmazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014

Introduzione al Linguaggio C

Strategie di programmazione

Analizzatore lessicale o scanner. Lo scanner rappresenta un'interfaccia fra il programma sorgente e l'analizzatore sintattico o parser.

Il sistema dei tipi in ML. cenni

I file Laboratorio di Linguaggi di Programmazione a.a. 2001/2002

Argomenti Avanzati.! I puntatori! Stack! Visibilità delle Variabili

Attraversamento di un albero (binario)

Allocazione dinamica della memoria

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

Lezione 9: Puntatori a funzioni. Tipi enumerativi e orientati ai bit

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore

I files in C. A cura del prof. Ghezzi

Introduzione al linguaggio C

Grammatiche Parse trees Lezione del 17/10/2012

Tipici tempi di esecuzione. Martedì 7 ottobre 2014

Evoluzione del FORTRAN 14/03/2016. LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 15 IL LINGUAGGIO FORTRAN

Mod INTERFACCIA USB/KEY USB/KEY INTERFACE. Sch./Ref.1067/003

Input/output da file I/O ANSI e I/O UNIX FLUSSI E FILE FLUSSI FLUSSI di TESTO FLUSSI BINARI FILE

Progetto E-CLIL. Anno scolastico

Programmazione I - Laboratorio

Università degli Studi di Cassino e del Lazio Meridionale Corso di Fondamenti di Informatica Allocazione dinamica di memoria

Algoritmi, Strutture Dati e Programmi. UD 2.b: Programmazione in Pascal

Esercizio 1 (15 punti)

Transcript:

Question 1: introduction to computer programming Question 1: introduction to computer programming What is a compiler? (4 points). Cos è un compilatore? (4 punti). c 2006 Marco Bernardo 1/14

Question 1: introduction to computer programming A compiler is a software tool that translates a program written in a high level programming language into an equivalent machine language program. It is composed of a lexical analyzer, a parser, a static semantic checker (usually implementing a type system), an intermediate code generator, a code optimizer, and a code generator. Un compilatore è uno strumento software che traduce un programma scritto in un linguaggio di programmazione ad alto livello di astrazione in un programma in linguaggio macchina equivalente. Si compone di un analizzatore lessicale, un riconoscitore sintattico, un controllore semantico statico (che di solito implementa un sistema di tipi), un generatore di codice intermedio, un ottimizzatore di codice e un generatore di codice. c 2006 Marco Bernardo 2/14

Question 2: introduction to the language ANSI C Question 2: introduction to the language ANSI C What is the role of the placeholders within the format strings? (4 points). Qual è il ruolo dei segnaposto all interno delle stringhe formato? (4 punti). c 2006 Marco Bernardo 3/14

Question 2: introduction to the language ANSI C The placeholders stand for data to be read or to be written. In the case of a scanf-like function, they represent data to be read and then to be assigned to the variables whose addresses are contained in the function invocation. In the case of a printf-like function, they represent data to be written on the basis of the evaluation of the expressions contained in the function invocation. The placeholders and the variables (respectively the expressions) must coincide by number, order, and type. I segnaposto stanno per dati da leggere o da scrivere. Nel caso di una funzione tipo scanf, essi rappresentano dati da leggere e poi da assegnare alle variabili i cui indirizzi sono contenuti nell invocazione della funzione. Nel caso di una funzione tipo printf, essi rappresentano dati da scrivere sulla base della valutazione delle espressioni contenute nell invocazione della funzione. I segnaposto e le variabili (rispettivamente le espressioni) debbono coincidere per numero, ordine e tipo. c 2006 Marco Bernardo 4/14

Question 3: constants, variables, and expressions Question 3: constants, variables, and expressions Explain the difference between a symbolic constant and a literal constant (4 points). Spiegare la differenza tra una costante simbolica e una costante in senso letterale (4 punti). c 2006 Marco Bernardo 5/14

Question 3: constants, variables, and expressions A symbolic constant is defined via a #define directive, which provides an int/double/char/string value with a symbolic name that can be used wherever in the rest of the program. A literal constant is just an int/double/char/string value with no symbolic name associated with it. The use of symbolic constants increases program readability and maintainability. Una costante simbolica è definita attraverso una direttiva #define, la quale dota un valore di tipo int/double/char/stringa di un nome simbolico che può essere usato ovunque nel resto del programma. Una costante in senso letterale è semplicemente un valore di tipo int/double/char/stringa senza nessun nome simbolico associato ad esso. L uso di costanti simboliche incrementa la leggibilità e la mantenibilità dei programmi. c 2006 Marco Bernardo 6/14

Question 4: statements Question 4: statements Describe syntax and semantics of the multi-assignment statement (4 points). Descrivere sintassi e semantica dell istruzione di assegnamento multiplo (4 punti). c 2006 Marco Bernardo 7/14

Question 4: statements The syntax of this statement is var1 = var2 =... = varn = expr;. The meaning is that first expression expr is evaluated, then its value is stored into the memory locations associated with the variables varn,..., var2, var1 considered in this order. La sintassi di questa istruzione è var1 = var2 =... = varn = espr;. Il significato è che prima viene valutata l espressione espr, poi il suo valore viene collocato nelle locazioni di memoria associate alle variabili varn,..., var2, var1 considerate in questo ordine. c 2006 Marco Bernardo 8/14

Question 5: functions Question 5: functions Explain the difference between argc and argv (4 points). Spiegare la differenza tra argc e argv (4 punti). c 2006 Marco Bernardo 9/14

Question 5: functions They represent the parameters of function main. While argc stores the number of strings (executable file name and possible options) occurring in the command given to start the execution of the program, argv stores the strings themselves. Essi rappresentanto i parametri della funzione main. Mentre argc contiene il numero di stringhe (nome del file eseguibile ed eventuali opzioni) presenti nel comando dato per avviare l esecuzione del programma, argv contiene le stringhe stesse. c 2006 Marco Bernardo 10/14

Question 6: data types What is a type constructor? (4 points). Cos è un costruttore di tipo? (4 punti). Question 6: data types c 2006 Marco Bernardo 11/14

Question 6: data types A type constructor is a mechanism through which a new type can be constructed on the basis of already existing types. The type constructors provided by the language ANSI C are enum, [] (for array types), struct, union, and * (for pointer types). Un costruttore di tipo è un meccanismo tramite il quale un nuovo tipo può essere costruito sulla base di tipi già esistenti. I costruttori di tipo forniti dal linguaggio ANSI C sono enum, [] (per i tipi array), struct, union e * (per i tipi puntatori). c 2006 Marco Bernardo 12/14

Question 7: function development exercises Question 7: function development exercises Write a recursive function that takes as input parameters a string and a character and returns as result the number of occurrences of the character within the string (6 points). Scrivere una funzione ricorsiva che ha come parametri di ingresso una stringa e un carattere e restituisce come risultato il numero di occorrenze del carattere all interno della stringa (6 punti). c 2006 Marco Bernardo 13/14

Question 7: function development exercises int count(char *s, char c) { int n; } if (s[0] == \0 ) n = 0; else { n = (s[0] == c)? 1: 0; n += count(s + 1, c); } return(n); c 2006 Marco Bernardo 14/14