INFORMATICA GRAFICA!

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "INFORMATICA GRAFICA!"

Transcript

1 Knowledge Aided Engineering Manufacturing and Related Technologies INFORMATICA GRAFICA 11 giugno Shaders OpenGL Shading Language Michele Antolini

2 Shaders Ombreggiatura Uno shader permette di definire come un materiale reagisce alla luce Necessario per ottenere effetti fotorealistici Si possono fare anche altre cose (es. bump mapping, effetti particellari, animazioni)

3 Shaders

4 Shaders Le textures non bastano E necessario un controllo maggiore sulle caratteristiche della scena I primi shaders erano programmati direttamente sulla scheda video (es. flat, smooth shaders) Prima di OpenGL 2.0, alcune schede grafiche erano programmabili in linguaggio assembler, il cui codice binario doveva essere copiato sulla scheda Con OpenGL 2.0 è stato definito un linguaggio di programmazione per shaders

5 Shaders Le schede grafiche diventano una logica programmabile Il consorzio OpenGL ARB (Architecture Review Board) detta le specifiche per il linguaggio di alto livello (C-like) con cui programmare le schede Il compilatore è integrato nei driver OpenGL (se compatibile 2.0) di ogni scheda, quindi ottimizzato a seconda dell hardware sottostante

6 Shaders Gli shaders seguono il paradigma di programmazione definito stream processing La GPU permette centinaia, migliaia di operazioni contemporanee su dati multipli: Single Instruction Multiple Data (SIMD) Uno shader è un vero e proprio programma che sfrutta le capacità di calcolo parallelo della GPU

7 Shaders Categorie di shaders Vertex shaders Fragment shaders Geometry shaders (OpenGL 3.2)

8 Vertex shaders Eseguiti per ogni vertice Es. rettangolo: vertex shader eseguito 4 volte, una per ogni vertice generato per disegnarlo Usi: trasformazioni di vertici normalizzazione di vettori normali generazione di texture coordinates illuminazione applicazione di attributi (es. il colore del materiale)

9 Fragment shaders Eseguiti per ogni pixel dell oggetto rasterizzato Es. rettangolo: fragment shader eseguito per ogni pixel visibile dell area del rettangolo Usi: operazioni su attributi interpolati (varying) accesso a textures applicazione di textures effetto nebbia calcolo e applicazione colore pixel bump mapping

10 Geometry shaders Eseguiti per ogni vertice Permettono di creare nuove primitive (vertici) a partire da quelli esistenti Utilizzo più comune è la tassellazione di curve o superfici

11 GLSL Il consorzio OpenGL ARB ha definito un linguaggio standard di alto livello per la programmazione di shaders Sono stati tenuti in considerazione molti requisiti: Buona integrazione con specifiche OpenGL Possibilità di sfruttamento di hardware futuro Indipendenza dall hardware sottostante Semplicità e longevità Compatibilità con calcolo parallelo massivo

12 Shaders execution Application Shader source code OpenGL API Shader source code OpenGL Driver Compiler Shader Object compiled code Linker rogram Object executable code Graphics hard are Provided by application developer rovided by graphics hardware vendor R. Rost, OpenGL Shading Language 2 nd Edition, Addison-Wesley

13 Shaders execution Il punto di partenza è quindi il sorgente dello shader Avviene una compilazione a run-time nel linguaggio assembly della scheda grafica Il compilatore prende come argomenti degli array di stringhe, è quindi possibile la manipolazione per il riutilizzo di frammenti di codice

14 GLSL Language Definition Il GLSL (OpenGL Shading Language) è stato creato intenzionalmente ispirandosi al C Un programma possiede tipicamente due shaders: vertex e fragment E possibile utilizzare tre tipi di variabili globali all interno di uno shader uniform: può essere modificata una volta per ogni chiamata allo shader attribute: varia solitamente per ogni vertice (es. colore) varying: serve a far comunicare vertex e fragment shader Esiste anche una serie di variabili built-in, aventi prefisso gl_

15 Variabili uniform: le variabili uniform vengono utilizzate per definire proprietà che cambiano al più ogni frame attribute: gli attribute si usano per definire proprietà che possono cambiare per ogni vertice Usiamo già attributi predefiniti come glnormal, glcolor, gltexcoord varying: le variabili di tipo varying servono a definire proprietà il cui valore verrà automaticamente interpolato durante l esecuzione del fragment shader (es. colore di un pixel dato il colore dei vertici adiacenti

16 GLSL Simple Example Semplice esempio di vertex e fragment shader che permettono l assegnazione di una temperatura ad ogni vertice e visualizzarla sotto forma di colore

17 GLSL Simple Example Vertex Shader // Global variables // uniform qualified variables are changed at most once per primitive uniform float CoolestTemp; uniform float TempRange; // attribute qualified variables are typically changed per vertex attribute float VertexTemp; // out qualified variables communicate from the vertex shader to // the fragment shader varying float Temperature; void main() { // compute a temperature to be interpolated per fragment, // in the range [0.0, 1.0] Temperature = (VertexTemp - CoolestTemp) / TempRange; gl_position = gl_modelviewprojectionmatrix * gl_vertex; }

18 GLSL Simple Example Vertex Shader Le variabili uniform CoolestTemp e TempRange definiscono parametri di tipo generale per lo shader L attribute VertexTemp viene assegnato per ogni vertice specificato La variabile varying Temperature viene automaticamente interpolata tra i valori dei vertici adiacenti quando verrà eseguito il fragment shader Notare l uso di tre variabili built-in: gl_position, gl_modelviewprojectionmatrix e gl_vertex

19 GLSL Simple Example Fragment Shader // Global variables // vec3 declares a vector of three floating-point numbers uniform vec3 CoolestColor; uniform vec3 HottestColor; // Temperature contains the now interpolated per-fragment // value of temperature set by the vertex shader varying float Temperature; void main() { // get a color between coolest and hottest colors, using // the mix() built-in function vec3 color = mix(coolestcolor, HottestColor, Temperature); } // make a vector of 4 floating-point numbers by appending an // alpha of 1.0, and set this fragment s color gl_fragcolor = vec4(color, 1.0);

20 GLSL Simple Example Fragment Shader Le variabili uniform sono diverse dal vertex shader. Si possono infatti impostare più variabili uniform nell applicazione, ed utilizzarne solo alcune all interno degli shader La variabile varying Temperature ha già un valore interpolato (0, 1) in base alla distanza dai vertici adiacenti Il colore del pixel viene calcolato con una semplice formula (built-in) di interpolazione tra due vettori di 3 elementi (la funzione mix) L esecuzione dei fragment shader è parallela

21 GLSL Data Types I tipi di dati utilizzabili per il GLSL sono raggruppati in: scalari vettori matrici samplers struct array

22 GLSL Data Types Scalari float: singola precisione, virgola mobile int: numero intero bool: flag booleano non supportati operatori sui bit come shift (<<, >>) o and bit a bit (&) gli interi hanno precisione di 16bit più il segno, quindi [-65535, 65535]

23 GLSL Data Types Vettori vec2, vec3, vec4: vettore di 2,3 o 4 float ivec2, ivec3, ivec3: vettore di 2,3 o 4 int bvec2, bvec3, bvec4: vettore di 2,3 o 4 bool

24 GLSL Data Types Vettori Le componenti di un vettore si possono richiamare con i suffissi:.x,.y,.z,.w: il vettore viene trattato come posizione o direzione.r,.g,.b,.a: il vettore viene trattato come un colore.s,.t,.p,.q: il vettore viene trattato come coordinate texture Oppure tramite l indice tra [] ( es. p[0] )

25 GLSL Data Types Matrici mat2, mat3, mat4: matrici 2x2, 3x3, 4x4 di float Le matrici vengono indicizzate per colonna, riga m[0] restituisce un vec* contenente gli elementi della colonna 0 della matrice m m[0][1] indica l elemento 1 della colonna 0 di m I prodotti con scalari, vettori matrici vengono trattati secondo le regole dell algebra (convenzione: le matrici premoltiplicano i vettori)

26 GLSL Data Types Samplers sampler1d, sampler2d, sampler3d: texture mono, bi o tridimensionale samplercube: texture cube-map sampler1dshadow, sampler2dshadow: depth texture mono o bidimensionale per shadow mapping I sampler possono essere solo variabili di tipo uniform

27 GLSL Data Types Samplers <vertex shader> uniform sampler2d my_texture;... void main( void ) { vec3 texcolor = texture2d( my_texture, gl_multitexcoord0.st )... }

28 GLSL Data Types Samplers (vertex shader) uniform sampler2d my_texture; varying vec2 my_texcoord0; void main( void ) { } //ricava il colore della texture 0 alle coordinate del vertice corrente vec3 texcolor = texture2d( my_texture, gl_multitexcoord0.st ) //manda al fragment shader le coordinate texture del vertice (verranno automaticamente interpolate dato che si tratta di una variabile varying my_texcoord0 = gl_multitexcoord0; gl_position = gl_modelviewprojectionmatrix*gl_vertex;

29 GLSL Data Types Samplers (fragment shader) uniform sampler2d my_texture; varying vec2 my_texcoord0; void main( void ) { } //ricava il colore del pixel corrente in base alle coordinate texture interpolate gl_fragcolor = texture2d(my_texture, my_texcoord0);

30 GLSL Data Types Struct E possibile definire struct come in C: struct light { } vec3 position; vec3 color; Non solo ammessi tipi union, enum, class

31 GLSL Data Types Array E possibile creare array di qualunque tipo vec4 points[10] Se gli array non sono parametri di una funzione, possono essere dichiarati senza dimensione. vec4 points[] Possono essere ridichiarati con la dimensione specificata, altrimenti viene calcolata la dimensione in base all indice più alto utilizzato

32 GLSL Inizializzazione/Costruttori vec4 v = vec4(1.0, 2.0, 3.0, 4.0); vec4 v2; v2 = vec4(1.0, 2.0, 3.0, 4.0); vec3 color = vec3(0.2, 0.5, 0.8); vec4 color4 = vec4(color, 1.0);

33 GLSL Inizializzazione/Costruttori struct light { vec4 position; struct tlightcolor { vec3 color; float intensity; } lightcolor; } light1 = light(v, tlightcolor(color, 0.9)); vec4 p = light1.position; float f = light1.lightcolor.intensity; float a[4] = float[4](1.0, 1.0, 0.0, 1.0 );

34 GLSL Inizializzazione/Costruttori mat2 Matrix0 = mat2( 1.0, 2.0, 3.0, 4.0 ); risulta: vec3 v = vec3(0.6); equivalente a " % $ ' # & vec3 v = vec3(0.6, 0.6, 0.6); mat2 m = mat2(1.0); //matrice identità 2x2

35 GLSL Type Matching Type Conversion In GLSL non c è il casting automatico dei tipi, ma ogni variabile deve essere utilizzata seguendo le intestazioni formali delle funzioni I passaggi da un tipo all altro devono essere esplicite float f = 2.3; bool b = bool(f); float f = float(3); // integer 3 to floating-point 3.0 float g = float(b); // Boolean b to floating point vec4 v = vec4(2); // set all components of v to 2.0

36 GLSL - Swizzling Utilizzando l operatore. è possible riarrangiare i componenti di una struttura elencandone i nomi Questa procedura si chiama swizzling vec4 v4; v4.rgba; // is a vec4 and the same as just using v4 v4.rgb; // is a vec3 v4.b; // is a float v4.xy; // is a vec2 v4.xgba; // is illegal - the component names do not come from the same set

37 GLSL - Swizzling vec4 pos = vec4(1.0, 2.0, 3.0, 4.0); vec4 swiz = pos.wzyx; // swiz = (4.0, 3.0, 2.0, 1.0) vec4 dup = pos.xxyy; // dup = (1.0, 1.0, 2.0, 2.0) vec4 pos = vec4(1.0, 2.0, 3.0, 4.0); pos.xw = vec2(5.0, 6.0); // pos = (5.0, 2.0, 3.0, 6.0) pos.wx = vec2(7.0, 8.0); // pos = (8.0, 2.0, 3.0, 7.0) pos.xx = vec2(3.0, 4.0); // illegal - 'x' used twice

38 GLGL Operazioni su componenti Vettore/Scalare: vec3 v, u; float f; v = u + f; Equivalente a: v.x = u.x + f; v.y = u.y + f; v.z = u.z + f;

39 GLGL Operazioni su componenti Vettore/Vettore: vec3 v, u, w; w = v + u; Equivalente a: w.x = v.x + u.x; w.y = v.y + u.y; w.z = v.z + u.z;

40 GLGL Operazioni su componenti Tutte le operazioni aritmetiche agiscono elemento per elemento, tranne il prodotto vettore/matrice, matrice/vettore e matrice/matrice (eseguito secondo le regole dell algebra lineare) vec4 v, u; mat4 m; v * u; // Prodotto componente per componente v * m; // Prodotto vettore riga con matrice m * v; // Prodotto matrice con vettore colonna m * m; // Prodotto matrice con matrice

41 GLSL Uso nell applicazione Per installare ed utilizzare uno shader è necessario: 1. Creare uno o più shader vuoti con glcreateshader 2. Fornire il codice sorgente (sotto forma di array di string) con glshadersource 3. Compilare gli shader con glcompileshader 4. Creare un oggetto program con glcreateprogram 5. Connettere gli shader al program con glattachshader 6. Link-are il program con gllinkprogram 7. Impostare il programma nello stato corrente con gluseprogram

42 GLSL Application Code #include <GLEW/glew.h> //includere GL Extensions Wrapper void setshaders() { char *vs,*fs; v = glcreateshader(gl_vertex_shader); f = glcreateshader(gl_fragment_shader); vs = textfileread( myshader.vert"); fs = textfileread( myshader.frag"); const char * vv = vs; const char * ff = fs; glshadersource(v, 1, &vv, NULL); glshadersource(f, 1, &ff, NULL); free(vs);free(fs); glcompileshader(v); glcompileshader(f); p = glcreateprogram(); glattachshader(p,v); glattachshader(p,f); } gllinkprogram(p); gluseprogram(p); // gluseprogram(0) per disattivare uno shader

43 GLSL Impostazione parametri Per impostare parametri uniform o attribute deve essere prima richiesta la location (un identificatore) in base al nome del parametro (formato stringa) Parametri uniform: Glint loc1 = glgetuniformlocation(program, CoolestTemp"); gluniform1f(loc1,mytemp); esistono le varianti gluniform 2f, 3f, 4f, v

44 GLSL Impostazione parametri Parametri attribute: Specificati tra glbegin() e glend() Glint loc2 = glgetattriblocation(program, "height"); glbegin(gl_triangle_strip); glvertexattrib1f(loc2,2.0); glvertex2f(-1,1);... glend(); esistono le varianti glvertexattrib 2f, 3f, 4f, v

45 GLSL - Particles Gli shaders possono essere utilizzati anche per produrre animazioni Primo tipo: modifica ad ogni frame delle caratteristiche della superficie dell oggetto su cui è applicato lo shader (utilizzando il fragment shader) Secondo tipo: modifica ad ogni frame (in funzione del tempo) della posizione di un particolare vertice (vertex shader) Quest ultima tecnica permette di sfruttare la potenza di calcolo parallelo della GPU per ricalcolare la posizione di una serie di punti

46 GLSL Toon Shader Example

47 GLSL Toon Shader Example Vertex shader: varying vec3 Normal; void main(void) { //passo al fragment shader il vettore normale Normal = normalize(gl_normalmatrix * gl_normal); gl_position = gl_modelviewprojectionmatrix * gl_vertex; }

48 GLSL Toon Shader Example Fragment shader: uniform vec3 DiffuseColor; //default (0.0, 0.25, 1.0) uniform vec3 PhongColor; //default (0.75, 0.75, 1.0) uniform float Edge; //default 0.5 uniform float Phong; //default 0.98 varying vec3 Normal; void main (void) { vec3 color = DiffuseColor; float f = dot(vec3(0,0,1),normal); if (abs(f) < Edge) color = vec3(0); if (f > Phong) color = PhongColor; gl_fragcolor = vec4(color, 1); }

49 GLSL Effetti particellari

50 GLSL Effetti particellari Vertex Shader uniform float time; //il tempo viene incrementato per ogni frame varying vec4 Color; const float radius = 0.3; void main(void) { vec4 vertex = gl_vertex; //coordinate non trasformate float t1 = mod(time, 5.0); vertex.x = radius * gl_color.y * t1 * sin(gl_color.x * 6.28); vertex.z = radius * gl_color.y * t1 * cos(gl_color.x * 6.28); } float h = gl_color.y * 1.25; float t2 = mod(t1, h*2.0); vertex.y = -(t2-h)*(t2-h)+h*h; vertex.y -= 1.0; gl_position = gl_modelviewprojectionmatrix * vertex; Color.r = 1.0; Color.g = gl_color.y; Color.b = 0.0; Color.a = t1 / 5.0;

51 GLSL Effetti particellari Fragment Shader varying vec4 Color; void main (void) { gl_fragcolor = Color; }

52 GLSL - Particles Animazioni: ridisegno ciclico della scena Due metodi per chiamare la glutpostredisplay(): al termine della funzione Display() all interno della gluttimerfunc impostando un framerate specifico Si aggiorna una variabile uniform per far ricalcolare agli shaders il nuovo frame

53 GLSL Utility function char *textfileread(char *fn) { FILE *fp; char *content = NULL; int count=0; if (fn = NULL) { fp = fopen(fn,"rt"); if (fp = NULL) { fseek(fp, 0, SEEK_END); count = ftell(fp); rewind(fp); } } } return content; if (count > 0) { content = (char *)malloc(sizeof(char) * (count+1)); count = fread(content,sizeof(char),count,fp); content[count] = '\0'; } fclose(fp);

54 GLSL Utility function int printoglerror() { // // Returns 1 if an OpenGL error occurred, 0 otherwise. // GLenum glerr; int retcode = 0; } glerr = glgeterror(); while (glerr = GL_NO_ERROR) { printf("glerror: %s\n", gluerrorstring(glerr)); fflush(stdout); retcode = 1; glerr = glgeterror(); } return retcode;

55 GLSL Tutorials - Libri Lighthouse 3D 3D Shaders (R. Rost, OpenGL Shading Language Orange Book)

INFORMATICA GRAFICA. 9 Giugno Shaders OpenGL Shading Language. Michele Antolini

INFORMATICA GRAFICA. 9 Giugno Shaders OpenGL Shading Language. Michele Antolini Knowledge Aided Engineering Manufacturing and Related Technologies INFORMATICA GRAFICA 9 Giugno Shaders OpenGL Shading Language michele.antolini@mail.polimi.it Shaders Ombreggiatura Uno shader permette

Dettagli

Computer Graphics. Computer Graphics. Alcuni argomenti che non abbiamo trattato (o abbiamo trattato poco) Modelling: Rendering:

Computer Graphics. Computer Graphics. Alcuni argomenti che non abbiamo trattato (o abbiamo trattato poco) Modelling: Rendering: pillole varie di CG Alcuni argomenti che non abbiamo trattato (o abbiamo trattato poco) Modelling: superfici di suddivisione NURBS Rendering: HDR images Modelling and Rendering: HW programmabile bump-maps

Dettagli

Corso di Tecniche Avanzate per la Grafica

Corso di Tecniche Avanzate per la Grafica Corso di Tecniche Avanzate per la Grafica GLSL Docente: Massimiliano Corsini Laurea Specialistica in Informatica Università di Ferrara Cosa sono gli shaders? Gli shaders sono programmi che vengono eseguiti

Dettagli

Corso di GraficaComputazionale

Corso di GraficaComputazionale Corso di GraficaComputazionale GLSL Docente: Massimiliano Corsini Laurea Specialistica in Ing. Informatica Università degli Studi di Siena Cosa sono gli shaders? Gli shaders sono programmi che vengono

Dettagli

Dati due punti sul piano calcolare la loro distanza

Dati due punti sul piano calcolare la loro distanza Introduzione al C Primo esempio in C Dati due punti sul piano calcolare la loro distanza Soluzione: la distanza fra due punti si calcola secondo il teorema di Pitagora, con la formula: y Distanza = (lato12

Dettagli

Utilizza i tipi di dati comuni a tutto il framework.net Accesso nativo ai tipi.net (C# è nato con.net) Concetti fondamentali:

Utilizza 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

Dettagli

Aggiungiamo attributi (per vertice!)

Aggiungiamo attributi (per vertice!) Prossimo passo: Aggiungiamo attributi (per vertice!) Roadmap: 1. includiamoli nel buffer 2. facciamoli prendere dal vetex puller 3. usiamoli nel vertex shader 4. (verranno inteprolati autmaticamente nel

Dettagli

Il linguaggio C. Notate che...

Il 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

Dettagli

Videogame e rendering 3D. Enrico Colombini (Erix) µhackademy 1 Marzo 2019

Videogame e rendering 3D. Enrico Colombini (Erix) µhackademy 1 Marzo 2019 Videogame e rendering 3D Enrico Colombini (Erix) µhackademy 1 Marzo 2019 Volete creare un videogame? Strumenti comodi: game engine Editor 3D, componenti Runtime engine (PC, console, mobile) Scripting,

Dettagli

Introduzione al Real Time Shading

Introduzione al Real Time Shading Introduzione al Real Time Shading Ing. Davide Vercelli, PERCRO davide.vercelli@sssup.it Sommario dal software all'hardware e ritorno cenni storici la pipeline grafica com'era: la pipeline fissa com'è:

Dettagli

Introduzione a Java. Riferimenti

Introduzione a Java. Riferimenti Introduzione a Java Si ringraziano Massimiliano Curcio e Matteo Giacalone 1: Introduction 1 Riferimenti! Java tutorial: http://java.sun.com/docs/books/tutorial/! Il Java tutorial è parte di una più ampia

Dettagli

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

Capitolo 6 - Array. Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 1 Capitolo 6 - Array Array Array Gruppo di locazioni di memoria consecutive Stesso nome e tipo Per riferirsi a un elemento, specificare Nome dell array Posizione Formato: arrayname[ position number ] Primo

Dettagli

Strategie di programmazione

Strategie di programmazione Funzioni Funzioni in C Il concetto di funzione Parametri formali e attuali Il valore di ritorno Definizione e chiamata di funzioni Passaggio dei parametri Corpo della funzione 2 Funzioni in C Strategie

Dettagli

Le Funzioni in C. Fondamenti di Informatica Anno Accademico 2010/2011. Corso di Laurea in Ingegneria Civile Politecnico di Bari Sede di Foggia

Le Funzioni in C. Fondamenti di Informatica Anno Accademico 2010/2011. Corso di Laurea in Ingegneria Civile Politecnico di Bari Sede di Foggia Le Funzioni in C Corso di Laurea in Ingegneria Civile Politecnico di Bari Sede di Foggia Fondamenti di Informatica Anno Accademico 2010/2011 docente: prof. Michele Salvemini 1/24 Sommario Le funzioni Il

Dettagli

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

Elementi 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

Dettagli

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

Funzioni in C. Funzioni. Strategie di programmazione. Funzioni in C. Come riusare il codice? (2/3) Come riusare il codice? (1/3) Funzioni Il concetto di funzione Parametri formali e attuali Il valore di ritorno Definizione e chiamata di funzioni Passaggio dei parametri Corpo della funzione 2 Strategie di programmazione Riuso di

Dettagli

Laboratorio di Informatica I

Laboratorio di Informatica I Struttura della lezione Lezione : Elementi lessicali del C Vittorio Scarano Corso di Laurea in Informatica Elementi lessicali e token Costanti Identificatori Operatori operatori di incremento/decremento

Dettagli

Introduzione al linguaggio C Primi programmi

Introduzione al linguaggio C Primi programmi Introduzione al linguaggio C Primi programmi Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica

Dettagli

Le basi del linguaggio Java

Le 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

Dettagli

Introduzione al Many/Multi-core Computing

Introduzione al Many/Multi-core Computing Introduzione al Many/Multi-core Computing Sistemi Operativi e reti 6 giugno 2011 Outline del corso Introduzione Definizioni Motivazioni Storia Architettura Framework Algoritmica Parte I Introduzione Definizioni

Dettagli

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

Informatica 1 Tipi e dichiarazioni in C++ C++ - Tipi e dichiarazioni 1 Informatica 1 Tipi e dichiarazioni in C++ C++ - Tipi e dichiarazioni 1 Cosa è il C++ E un linguaggio di programmazione derivato dal C Può essere usato per modificare il SO Unix e i suoi derivati (Linux)

Dettagli

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

Breve Manuale di Riferimento sulla Sintassi Linguaggi C++ e FORTRAN Breve Manuale di Riferimento sulla Sintassi Linguaggi e versione aggiornata al 05/02/2004 Sommario Elementi di Base... 2 Dati, Tipi e Dichiarazioni... 2 Tipi di Dato di Base... 2 Tipi di Dato Strutturati...

Dettagli

Introduzione alla programmazione in linguaggio C

Introduzione alla programmazione in linguaggio C Introduzione alla programmazione in linguaggio C Il primo programma in C commento Header della libreria Funzione principale Ogni istruzione in C va terminata con un ; Corso di Informatica AA. 2007-2008

Dettagli

Variabili e Funzioni. Informatica 1 / 19

Variabili e Funzioni. Informatica 1 / 19 Variabili e Funzioni Informatica 1 / 19 Programmi C e Un programma C e composto da funzioni e variabili Variabile: memorizza valori appartenenti ad un insieme di definizione (dipendente dal tipo) Funzione:

Dettagli

Il linguaggio C. Notate che...

Il 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

Dettagli

Linguaggio C - sezione dichiarativa: costanti e variabili

Linguaggio 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

Dettagli

Grafica Real-Time, Hardware Grafico e Linguaggi di Shading. Alessandro Martinelli

Grafica Real-Time, Hardware Grafico e Linguaggi di Shading. Alessandro Martinelli Grafica Real-Time, Hardware Grafico e Linguaggi di Shading Alessandro Martinelli Grafica Real Time Il concetto di 'Real Time' in ambito grafico ha una valenza molto particolare: Fino agli anni '80, solo

Dettagli

Computer Graphics. Digital representation of 3D objects. 3D Rendering. Scena 3D rendering image. Marco Tarini - univ insubria AA 2016/2017

Computer Graphics. Digital representation of 3D objects. 3D Rendering. Scena 3D rendering image. Marco Tarini - univ insubria AA 2016/2017 Computer Graphics Digital representation of 3D objects Università dell Insubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2016/17 Marco Tarini 3D Rendering Scena 3D

Dettagli

Linguaggio C. Tipi predefiniti e operatori. Università degli Studi di Brescia. Docente: Massimiliano Giacomin

Linguaggio C. Tipi predefiniti e operatori. Università degli Studi di Brescia. Docente: Massimiliano Giacomin Linguaggio C Tipi predefiniti e operatori Università degli Studi di Brescia Docente: Massimiliano Giacomin Elementi di Informatica e Programmazione Università di Brescia 1 RICHIAMI char 8 bit Valori interi

Dettagli

Introduzione al linguaggio C Funzioni

Introduzione al linguaggio C Funzioni Introduzione al linguaggio C Funzioni Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Violetta Lonati

Dettagli

Parte Input e output in linguaggio i C. 3. Programmazione strutturata 1 (if, switch, comunque segnalare dei warning

Parte Input e output in linguaggio i C. 3. Programmazione strutturata 1 (if, switch, comunque segnalare dei warning Obiettivi di questa esercitazione Fondamenti di Informatica T-1 Parte 2 Laboratorio 01 1. Input e output in linguaggio i C 2. Espressioni 3. Programmazione strutturata 1 (if, switch, do while) 1 2 Warning

Dettagli

ERRORI DI PROGRAMMAZIONE INDICE

ERRORI DI PROGRAMMAZIONE INDICE ERRORI DI PROGRAMMAZIONE INDICE 1 ERRORI FREQUENTI 2 1. 4 Parentesi graffe mancanti per i blocchi delle istruzioni di controllo 3 1.1 Punto e virgola mancante 2 1.2 Utilizzo di una variabile non dichiarata

Dettagli

ä t s r r ModelViewProjectionMatrix void main(void) { gl_position = gl_modelviewprojectionmatrix * gl_vertex; }

ä t s r r ModelViewProjectionMatrix void main(void) { gl_position = gl_modelviewprojectionmatrix * gl_vertex; } r r r r r ür t r r st ts ts ss s s r rt t r r rt 3 rs r t 3 r t r r ür3 s r s t s ä r s r rt 3 r ö r 3 ör rs r s t3t t tät t r 3 r t r r r t rt s t r rs t r t st s r r t t r rs r s r rs 3 rs st r t rs

Dettagli

INFORMATICA GRAFICA. 28 Aprile Trasformazioni - Illuminazione. Michele Antolini

INFORMATICA GRAFICA. 28 Aprile Trasformazioni - Illuminazione. Michele Antolini Knowledge Aided Engineering Manufacturing and Related Technologies INFORMATICA GRAFICA 28 Aprile Trasformazioni - Illuminazione michele.antolini@mail.polimi.it Trasformazioni Durante il ridisegno della

Dettagli

C++ funzioni Alberto Ferrari. Alberto Ferrari Programmazione di applicazioni SW

C++ funzioni Alberto Ferrari. Alberto Ferrari Programmazione di applicazioni SW C++ funzioni Alberto Ferrari http://en.cppreference.com FUNZIONI le funzioni caratterizzate da nome, parametri (numero, ordine e tipo) e tipo di ritorno le funzioni hanno un prototipo il prototipo non

Dettagli

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

Algoritmi, 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

Dettagli

Funzioni, Stack e Visibilità delle Variabili in C

Funzioni, Stack e Visibilità delle Variabili in C Funzioni, Stack e Visibilità delle Variabili in C Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2018/2019 Argomenti del Corso Ogni lezione consta di una spiegazione assistita da slide,

Dettagli

Corso di Fondamenti di Informatica Il sistema dei tipi in C++

Corso 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

Dettagli

Conoscere l uso delle collezioni in Java. Conoscere il concetto di Generics (programmazione

Conoscere l uso delle collezioni in Java. Conoscere il concetto di Generics (programmazione 1 Conoscere l uso delle collezioni in Java Comprendere le principali caratteristiche nelle varie classi di Collection disponibili Saper individuare quali classi di Collection usare in casi specifici Conoscere

Dettagli

Introduzione al linguaggio C Puntatori

Introduzione al linguaggio C Puntatori Introduzione al linguaggio C Puntatori Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica 19 ottobre 2017

Dettagli

Tipi e Valori. Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna

Tipi e Valori. Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna Tipi e Valori Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ Tipi e Valori 2 / 26 Ringraziamenti prof. Mirko Viroli, Università

Dettagli

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

Unità Didattica 1 Linguaggio C. Fondamenti. Struttura di un programma. Unità Didattica 1 Linguaggio C Fondamenti. Struttura di un programma. 1 La storia del Linguaggio C UNIX (1969) - DEC PDP-7 Assembly Language BCPL - un OS facilmente accessibile che fornisce potenti strumenti

Dettagli

Concetti Base Encapsulation ed Ereditarietà Programmare con l Ereditarietà. Java: Ereditarietà. Damiano Macedonio

Concetti Base Encapsulation ed Ereditarietà Programmare con l Ereditarietà. Java: Ereditarietà. Damiano Macedonio Dipartimento di Informatica, Università degli Studi di Verona Corso di Programmazione per Bioformatica Introduzione Ereditarietà in Sintesi È uno dei concetti chiave della programmazione orientata agli

Dettagli

#include <stdio.h> /* l esecuzione comincia dalla funzione main */ int main()

#include <stdio.h> /* l esecuzione comincia dalla funzione main */ int main() Primi passi Il mio primo programma #include /* l esecuzione comincia dalla funzione main */ int main() { printf( Hello World!\n" ); return 0; /* il programma termina con successo */ } /* fine

Dettagli

1

1 Manuali di C Linguaggio C B. W. Kernigan, D. M. Ritchie Jackson La guida completa al C H. Schildt McGraw-Hill Fondamenti di Informatica 1 Linguaggio C Creato nei primi anni 70 per sviluppare il S.O. Unix

Dettagli

Assembly. Linguaggio di programmazione corrispondente al linguaggio macchina P.H. Cap. 2.1, 2.2 e App. A. Linguaggio assembly (App.

Assembly. Linguaggio di programmazione corrispondente al linguaggio macchina P.H. Cap. 2.1, 2.2 e App. A. Linguaggio assembly (App. Assembly Linguaggio di programmazione corrispondente al linguaggio macchina P.H. Cap. 2.1, 2.2 e App. A 1 Linguaggio assembly (App. A) Rappresentazione simbolica del linguaggio macchina Più comprensibile

Dettagli

Stringhe in C. Nicu Sebe. Informatica Nicu Sebe 1 / 14

Stringhe in C. Nicu Sebe. Informatica Nicu Sebe 1 / 14 Stringhe in C Nicu Sebe Informatica Nicu Sebe 1 / 14 Stringhe in C Stringhe: tipo di dato strutturato Sequenze di caratteri Linguaggio C: progettato per la semplicità No supporto nativo per le stringhe

Dettagli

OCA JAVA 7 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL ANNO

OCA JAVA 7 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL ANNO CENTRO STUDI ULISSE Via Buccino, n. 22 - C.a.p. 84018 - Scafati (SA) Tel. Fax. 081.19970299-339.2365416-349.4152010 E-mail: info@centrostudiulisse.it - www.centrostudiulisse.it OCA JAVA 7 SE PROGRAMMER

Dettagli

Linguaggi di Programmazione I Lezione 10

Linguaggi di Programmazione I Lezione 10 Linguaggi di Programmazione I Lezione 10 Prof. Marcello Sette mailto://marcello.sette@gmail.com http://sette.dnsalias.org 8 maggio 2008 Array 3 Dichiarazione...........................................................

Dettagli

C: panoramica. Violetta Lonati

C: panoramica. Violetta Lonati C: panoramica Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica AA 2009/2010 Violetta Lonati

Dettagli

Fondamenti di Programmazione

Fondamenti di Programmazione Fondamenti di Programmazione (con linguaggio di riferimento C++) Gianfranco Rossi Università di Parma Dip. di Matematica e Informatica 43100 Parma (Italy) gianfranco.rossi@unipr.it Indice 1 Introduzione

Dettagli

Il corpo di tutte le funzioni deve essere contenuto tra parentesi graffe

Il corpo di tutte le funzioni deve essere contenuto tra parentesi graffe Primi passi Il mio primo programma #include /* l esecuzione comincia dalla funzione main */ int main() { printf( Hello World!\n" ); return 0; /* il programma termina con successo */ } /* fine

Dettagli

Octave. Luca Abeni. Informatica Luca Abeni 1 / 21

Octave. Luca Abeni. Informatica Luca Abeni 1 / 21 Luca Abeni Informatica Luca Abeni 1 / 21 Linguaggi di Programmazione di Alto Livello Parole chiave: possibilmente con significato in inglese Ma agli informatici piacciono molto contrazioni e acronimi...

Dettagli

Il C nel C++: Funzioni

Il 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

Dettagli

Funzioni (1) Il C nel C++: Funzioni. Funzione (2) Vantaggi delle Funzioni. Localizzazione della funzionalità correggibilità manutenibilità

Funzioni (1) Il C nel C++: Funzioni. Funzione (2) Vantaggi delle Funzioni. Localizzazione della funzionalità correggibilità manutenibilità Funzioni (1) Il C nel C++: Funzioni 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

Dettagli

Introduzione al linguaggio C

Introduzione al linguaggio C Linguaggio C Introduzione al linguaggio C Sistemi di sviluppo integrati Noti anche come IDE: Integrated Development Environment Un pacchetto software che permette di scrivere, preprocessare, compilare,

Dettagli

Lezione 6 Introduzione al C++ Mauro Piccolo

Lezione 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,

Dettagli

Struttura di un programma C++

Struttura di un programma C++ Struttura di un programma C++ // Programma semplice in C++ #include using namespace std; int main() { cout

Dettagli

INFORMATICA GRAFICA!

INFORMATICA GRAFICA! Knowledge Aided Engineering Manufacturing and Related Technologies INFORMATICA GRAFICA! 18 Maggio! Vertex array, VBO, Display lists! Michele Antolini michele.antolini@mail.polimi.it! Prestazioni! Abbiamo

Dettagli

Fondamenti di Grafica Tridimensionale

Fondamenti di Grafica Tridimensionale Fondamenti di Grafica Tridimensionale La Pipeline Grafica Marco Di Benedetto marco.dibenedetto@isti.cnr.it Visualizzazione dell Informazione noi siamo qui Informazione mondo reale (es: scans) creazione

Dettagli

Il linguaggio C. Il preprocessore...

Il linguaggio C. Il preprocessore... Il linguaggio C Il preprocessore... 1 Il preprocessore Viene invocato prima della compilazione vera e propria Esegue delle manipolazioni testuali sul file sostituisce nomi con testo elimina e inserisce

Dettagli

Esercizi Programmazione I

Esercizi Programmazione I Esercizi Programmazione I 0 Ottobre 016 Esercizio 1 Funzione valore assoluto Il file.c di questo esercizio deve contenere nell ordine, il prototipo (dichiarazione) di una una funzione abs, che prende in

Dettagli

Corso di Linguaggi di Programmazione

Corso di Linguaggi di Programmazione Corso di Linguaggi di Programmazione Lezione 14 Alberto Ceselli alberto.ceselli@unimi.it Dipartimento di Informatica Università degli Studi di Milano 23 Aprile 2013 Cosa servono i tipi durante l analisi

Dettagli

L oggetto creato. Creazione di Oggetti. Rectangle: il concetto 10. Costruzione. Lo spazio di memoria del linguaggio Java. Rectangle: l oggetto

L oggetto creato. Creazione di Oggetti. Rectangle: il concetto 10. Costruzione. Lo spazio di memoria del linguaggio Java. Rectangle: l oggetto Usare e costruire oggetti Variabili e Oggetti Lo spazio di memoria di Java Le API di Java Gli oggetti sono entità di un programma che si possono manipolare invocando i metodi System.out oggetto della classe

Dettagli

Stringhe in C. Luca Abeni. Informatica Luca Abeni 1 / 10

Stringhe in C. Luca Abeni. Informatica Luca Abeni 1 / 10 Stringhe in C Luca Abeni Informatica Luca Abeni 1 / 10 Stringhe in C Stringhe: tipo di dato strutturato Sequenze di caratteri Linguaggio C: progettato per la semplicità No supporto nativo per le stringhe

Dettagli

Strutture dati e loro organizzazione. Gabriella Trucco

Strutture 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

Dettagli

IL LINGUAGGIO JAVA. Input, Tipi Elementari e Istruzione Condizionale. Primo esempio di un programma Java

IL LINGUAGGIO JAVA. Input, Tipi Elementari e Istruzione Condizionale. Primo esempio di un programma Java Fondamenti di Informatica IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale Fondamenti di Informatica - D. Talia - UNICAL 1 Primo esempio di un programma Java Semplicissimo programma

Dettagli

Capitolo 5 - Funzioni

Capitolo 5 - Funzioni Capitolo 5 - Funzioni Divide and conquer Introduzione Costruire un programma da pezzi più piccoli o da singole componenti Questi pezzi più piccoli sono chiamati moduli Ogni singolo pezzo è più facilmente

Dettagli

C funzioni à scope di variabili

C funzioni à scope di variabili C funzioni à scope di variabili Per questo motivo il parametro di una function può avere lo stesso nome del parametro effettivo del processo chiamante. Possiamo definire anche delle variabili globali e

Dettagli

Question 1: introduction to computer programming

Question 1: introduction to computer programming 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:

Dettagli

IL LINGUAGGIO JAVA. Input, Tipi Elementari e Istruzione Condizionale. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

IL LINGUAGGIO JAVA. Input, Tipi Elementari e Istruzione Condizionale. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica Fondamenti di Informatica IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale Fondamenti di Informatica - D. Talia - UNICAL 1 Primo esempio di un programma Java Semplicissimo programma

Dettagli

Precisazione sui tipi in ANSi C

Precisazione sui tipi in ANSi C Precisazione sui tipi in ANSi C Tipi primitivi del C Un tipo è costituito da un insieme di valori ed un insieme di operazioni su questi valori. Classificazione dei tipi primitivi del C scalari aritmetici:

Dettagli

24 aprile Qualche minuto di laboratorio

24 aprile Qualche minuto di laboratorio 24 aprile 2002 Avvisi: Risultati 1 o Esonero: (entro) lunedi 27 disponibili nella pag. WEB, ma anche esposti nella bacheca fuori dal corridoio 2 o dente, piano terra. Speciale 1 o Esonero : soluzioni,

Dettagli

High Dynamic Range Rendering in OpenGL

High Dynamic Range Rendering in OpenGL Università degli Studi di Trieste Corso di Laurea Specialistica in Ingegneria Informatica Tesina per il corso di Elementi di Grafica Digitale a.a. 2006/2007 High Dynamic Range Rendering in OpenGL Studente

Dettagli

Qualsiasi programma in C++ segue lo schema: Variabili

Qualsiasi programma in C++ segue lo schema: Variabili Qualsiasi programma in C++ segue lo schema: #include // libreria che gestisce flusso di input e output using namespace std; // uso di librerie standard del C++ int main() { // dichiarazioni

Dettagli

Struttura di un. Struttura dei programmi C

Struttura di un. Struttura dei programmi C Parte 4 Struttura di un Programma Struttura dei programmi C Un programma C deve essere contenuto in uno o più file (salvo diversa specifica, per ora si assume in un file): 1. Una parte contenente direttive

Dettagli

Capitolo 2 GOCCE DI JAVA. Domande a risposte multiple

Capitolo 2 GOCCE DI JAVA. Domande a risposte multiple GOCCE D AVA Capitolo 2 Domande a risposte multiple Selezionando una risposta, il bottone corrispondente diventa verde se la risposta è giusta, altrimenti diventa rosso. 2 1. Quale dei seguenti non è un

Dettagli

BASI LINGUAGGIO. Programmazione Web 1

BASI LINGUAGGIO. Programmazione Web 1 BASI LINGUAGGIO Programmazione Web 1 Commen0 Riga singola // This is a comment Riga mul8pla /* This is a sec8on of mul8line comments which will not be interpreted */ Programmazione Web 2 Istruzioni Un

Dettagli

Assegnazione di una variabile

Assegnazione di una variabile Assegnazione di una variabile Per scrivere un valore dentro una variabile si usa l operatore di assegnazione, che è rappresentato dal simbolo =. Quindi, se scrivo int a; a = 12; assegno alla variabile

Dettagli

Primi programmi in C

Primi programmi in C Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica In breve Uso del compilatore gcc Struttura di un programma

Dettagli

Il primo programma C++

Il primo programma C++ Il primo programma C++ Un programma in qualsiasi linguaggio evoluto è una sequenza di istruzioni che la CPU dopo opportune conversioni esegue. La sintassi dei linguaggi di programmazione è molto piu rigida

Dettagli

Linguaggio C: Array Valeria Cardellini

Linguaggio C: Array Valeria Cardellini Linguaggio C: Array Valeria Cardellini Corso di Calcolatori Elettronici A.A. 2018/19 Università degli Studi di Roma Tor Vergata Dipartimento di Ingegneria Civile e Ingegneria Informatica Array in C q Dichiarazione

Dettagli

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Struttura di un programma Java

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Struttura di un programma Java Fondamenti di Informatica INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA 1 Struttura di un programma Java Un programma Java consiste in un insieme di definizioni di classi. In genere

Dettagli

1 PANORAMICA SUL LINGUAGGIO C

1 PANORAMICA SUL LINGUAGGIO C 1 PANORAMICA SUL LINGUAGGIO C 1.1 Le origini del linguaggio C Il C fu inventato e implementato da Dennis Ritchie negli anni 70 su una macchina che impiegava il sistema operativo Unix. Il C è il risultato

Dettagli

Capitolo 5. Array e collezioni. c 2005 Pearson Education Italia Capitolo 5-1 / 61

Capitolo 5. Array e collezioni. c 2005 Pearson Education Italia Capitolo 5-1 / 61 Capitolo 5 Array e collezioni c 2005 Pearson Education Italia Capitolo 5-1 / 61 Sommario: Array e collezioni 1 Array Array di oggetti Lunghezza di un array Accesso agli elementi di un array Array e cicli

Dettagli

Fondamenti di Informatica e Laboratorio T-AB Prova Pratica - 16 Giugno 2009 Compito A

Fondamenti di Informatica e Laboratorio T-AB Prova Pratica - 16 Giugno 2009 Compito A Prima di cominciare: si scarichi il file StartKit4A.zip contenente i file di esempio. Avvertenze per la consegna: nominare i file sorgenti come richiesto nel testo del compito, apporre all inizio di ogni

Dettagli

IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale

IL 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

Dettagli

BASI LINGUAGGIO. Programmazione Web 1

BASI LINGUAGGIO. Programmazione Web 1 BASI LINGUAGGIO Programmazione Web 1 Commen0 Riga singola // This is a comment Riga mul8pla /* This is a sec8on of mul8line comments which will not be interpreted */ Programmazione Web 2 Istruzioni Un

Dettagli

Linguaggi di Programmazione

Linguaggi di Programmazione Linguaggi di Programmazione 1 C-Introduzione.tex: Versione 1.0, aa 2005-2006 Linguaggi di programmazione (1) Sono linguaggi che permettono la codifica di algoritmi in modo da renderli eseguibili, direttamente

Dettagli

Tipi 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: 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

Dettagli

Programmazione Procedurale in Linguaggio C++

Programmazione Procedurale in Linguaggio C++ Programmazione Procedurale in Linguaggio C++ Tipi Strutturati Parte 3 Record G. Mecca M. Samela Università della Basilicata Tipi Strutturati: Record >> Sommario Sommario Introduzione Dichiarazione di Record

Dettagli

Esempio. Le istruzioni corrispondono a quelle di sopra, ma sono scritte in modo simbolico. E indipendente dalla machina

Esempio. 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

Dettagli

Linguaggio C: Espressioni

Linguaggio C: Espressioni Linguaggio C: Espressioni Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ 2 Ringraziamenti prof. Mirko Viroli, Università

Dettagli

Un esecutore di un linguaggio simbolico e costituito dalla coppia Compilatore, processore (o Interprete, processore)

Un esecutore di un linguaggio simbolico e costituito dalla coppia Compilatore, processore (o Interprete, processore) Un esecutore di un linguaggio simbolico e costituito dalla coppia Compilatore, processore (o Interprete, processore) Macchina astratta: un linguaggio di programmazione trasforma un calcolatore in una macchina

Dettagli

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

A.A. 2006/2007 Laurea di Ingegneria Informatica. Fondamenti di C++ Horstmann Capitolo 3: Oggetti Revisione Prof. M. Angelaccio A.A. 2006/2007 Laurea di Ingegneria Informatica Fondamenti di C++ Horstmann Capitolo 3: Oggetti Revisione Prof. M. Angelaccio Obbiettivi Acquisire familiarità con la nozione di oggetto Apprendere le proprietà

Dettagli