sessiÓ 1 introducció - upc universitat politècnica de catalunyainfapli/lab.pdf– creació o...

134
SESSIÓ 1 Introducció

Upload: others

Post on 06-Aug-2021

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

SESSIÓ 1

Introducció

Page 2: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

Maquinari i programari

Informàtica

Maquinari(hardware)

Programari(software)

Programes

ProgramacióPart física

Electrònica i circuits

Mecanismes

Computador: Màquina electrònica programable que executa seqüències d’instruccions de manera automàtica.

Page 3: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

Computador

CPU

Memòriainterna

UnitatEnt/Sort

Perifèrics

Usuari

Page 4: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

Sistema Operatiu

Conjunt de programes que gestionen i administren els recursosd’un computador.

Recursos: - Memòria interna- Memòria externa- Gestió d’entrades i sortides

Actua com intermediari entre el hardware del computador il’usuari.

Subministra a l’usuari tot un conjunt de programes i utilitatsper tal de fer servir el computador.

Page 5: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar
Page 6: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

Tipus bàsics de programes• Programes per fer funcionar el maquinari:

– Sistemes operatius• Llenguatges de programació

• alt nivell• baix nivell

• Programes d’aplicacions:– Processadors de textos, editors– Fulls de càlcul– Gestors de bases de dades– Comunicacions– Gràfics

Page 7: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

Com entrar i com sortir

COM ENTRAR:’Boot Linux’ al menú d’inici. Trigará uns minuts.Login gràfic inicial:Triar “Idioma” “Catalán”Login gràfic inicial:Triar “Sesión”“gnome”.ALERTA: NO “gnome a prueba defallos”.Introdueix el teu nom d’usuari. ALERTA: NOposis xifres amb el teclat numèric de la dreta, SIposa-les amb les xifres de la fila d’adalt.Introdueix la teva contrasenya.

Prac. Lab. Se 1 – p.3/11

Page 8: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

Com entrar i com sortir

COM SORTIR:Un cop acabada la classe CAL apagar el PC:Surt de la sessió amb opció del menu principal(el peu) “Terminar Sesión”.i, aleshores, en el menú “Sistema” triar “Apagar”.La torre s’apaga sola.

CAL APAGAR LA PANTALLA.

Prac. Lab. Se 1 – p.4/11

Page 9: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

Estructura del sistema de fitxers

File System• Es pot trobar a /etc/fstab.

Es l’abreviatura de file system table.• /dev/hda és el primer disc dur.

/dev/hdb és el segòn; i així succ.• /dev/hda1 /dev/hda2 són les successives

particions del 1er. disc dur.• /media/cdrom és el lector de CD i

/media/floppy és el lector de disquets.

Prac. Lab. Se 1 – p.4/11

Page 10: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

El CD i el disquet

DESPRÉS d’haver introduït el disquet i ABANSde treballar-hi:mount /media/floppy

DESPRÉS d’haver treballat amb el disquet iABANS de retirar-lo:umount /media/floppyPel CD, el mateix umount /media/cdrom

Prac. Lab. Se 1 – p.6/11

Page 11: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

Directoris i subdirectoris

Carpetes i apartats• A cada volum (= disc dur, disquet, CD) hi ha

un arbre

• De cada nus de l’arbre hi penjen• nusos (fulls) terminals (fitxer=arxiu)• subarbres

Prac. Lab. Se 1 – p.5/11

Page 12: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

Quatre comandes de Linux

GNU/Linux, valen per tots els Unix• cat: Escriure, equival al type• ls: Llista contingut, equival a dir• passwd (o yppasswd): Per canviar de

password (RECORDAR!).

• pwd: Ón soc? print working directory

Prac. Lab. Se 1 – p.7/11

Page 13: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

Exercici 1

• Muntar el disquet mount /media/floppy

• Crear un directori en el dkt que s’anomenisessio1 mkdir sessio1

• Copiar el contingut del directori/home/profia/Practiques/PRACT1 al directorique acbem de crear sessio1

• Crear un directori dins del sessio1 qu hemcreat que s’anomeni prova

• Copiar el fitxer/home/profia/Practiques/PRACT1/vayatela.ccap al /media/floppy/sessio1/prova/tela.c

• Esborrar el directori prova

Prac. Lab. Se 1 – p.8/11

Page 14: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

El procés d’implementació

EdicióPrograma font (.c)

Compilació

Programa objecte (.o)

Muntatge

Programa executable (.exe)

Execució

Page 15: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

• Procés d’Edició– Creació o modificació d’un fitxer de text

Hi ha diferents tipus de programes que es poden utilitzar per editar:

• Editors• Processadors de textos

• Editor– Conjunt de programes qe serveixen per editar

textos. Per ex., emacs, edit.• Processadors de textos

– Conjunt de programes que s’utilitzen per la composició de textos. Per ex., wordperfect, wordstar.

Page 16: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

EMACS

• Conjunt de programes de domini públic per l’ajut a l’edició de programes

• Fàcil accés, es troba instal·lat en una plataforma de treball.

• Consta d’un help i tutorials que es poden consultar ‘on line’

• Cal recordar que per editar un fitxer, cal situar-se en la unitat de disc dur /home/jo

• Utilitzarem la versió GNU-EMACS

Page 17: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

Arranqueu emacs:

emacs &

Page 18: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

Preparació de l’editor emacs 1

• Demanem execució de l’editor emacs

• options• customize emacs• top-level customization group• programming• tools• compilation

Prac. Lab. Se 1 – p.9/11

Page 19: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

Preparació de l’editor emacs 2

• compile command• show• Escriure a la línia ón hi havia make

gcc -c -Wall -Wmissing-prototypes-Wstrict-prototypes -ansi -Wno-main

• save for future sessions

I, després a Options activar Syntax Highlighting

Prac. Lab. Se 1 – p.10/11

Page 20: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

Comandes bàsiques de l’emacs emacs nom_fitxer

crtl X crtl S

crtl X crtl W

crtl X crtl C

crtl G

crtl X crtl F

crtl X I

Per iniciar l’edició d’un fitxer

Salva l’estat actual d’un fitxer

Salva el fitxer amb nom nou

Acaba l’edició sense modificar el fitxer(no es guarda) Aborta qualsevol comanda

Recuperar un fitxer

Insereix un fitxer a la posició del cursor

Page 21: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

Exercici 1.2

1) Executeu l’EMACS

2) Obriu un nou fitxer en el directori que s’anomeni prova.c

3) Entreu un text

4) Guardeu el fitxer en el disquet

Page 22: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

El procés de compilació i muntatgeEdició

Programa font (.c)

Compilació

Programa objecte (.o)

Muntatge

Programa executable (.exe)

Execució

Page 23: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

Conceptes d’emacs• Bloc: porció de text d’un fitxer

– Marcar Inici (botó esquerra) i Final (botó dret)– Menú Editar: Copiar...

• Buffer: zones de memòria que contenen diferents fitxers.– Menú Buffers

• Finestra: Zones en la pantalla d’emacs– CTRL-X 2

• Frame: Finestres independents en una mateixa execució d’emacs.– Menú File: New frame...

Page 24: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

Seqüència d’accions percopiar/moure/esborrar blocs

1.- Marcar el bloc:1.1.- Posar el cursor a l’inici del bloc1.2.- Amb el butó esquerra presionat

seleccionar tot el bloc.2.- Escollir l’operació d’edició:

Esborrar: Edit + Cut Guardar: Edit + Copy Recuperar:Edit + Paste

Page 25: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

Buffers: Diferents àrees de treball

• Llista de tots els buffers:– Menú Buffers

* Indica els buffers no salvats a disc• Canviar de buffer:

– Menú Buffers i seleccionar el buffer que es vulgui

Page 26: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

Exercici 1.3

1) Obriu, des d’EMACS, els fitxers exemple1.c i entsort.c

2) Obteniu en dues finestres diferents els dos fitxers.

3) Copieu el bloc A (veure pag. seg. ) del fitxer entsort.c al fitxer exemple1.c

4) Guardeu els dos fitxers.

Page 27: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

entsort.c: bloc A

void EscriureReal ( float r ){

int ret;ret = printf (“%g”, r);assert( ret > 0);

}

void LlegirEnter(int *const i){

int ret;ret = scanf("%d", i);assert(ret == 1);

}

Page 28: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

El procés de compilació i muntatgeEdició

Programa font (.c)

Compilació

Programa objecte (.o)

Muntatge

Programa executable (.exe)

Execució

Page 29: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

Compilació: procés de traducció d’un llenguatge a un altre llenguatge

programa font en llenguatge C (.c)

COMPILADOR de C

programa en codi màquina de la CPU del computadorprograma objecte (.o)

Page 30: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

Compiladors de CTurboCMicrosoftCQuickCLatticeCAztecVZortecCGnuC. . .

tots poden compilar segonsl’estàndard:

ANSI - C

COMPILACIÓ en GNU-C

gcc -c -O -Wall -Wmissing-prototypes -Wstrict-prototypes -ansi-Wno-main nom_fitxer.c

Page 31: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

Com compilar des d’EMACS?

• ESC x• En la línia de comandes de l’EMACS cal

escriure:– compile <RETORN>

• Apareixerà la comanda:– gcc -c -O -Wall -Wmissing-prototypes -Wstrict-prototypes

-Wno-main -ansi

• Al final de la comanda cal afegir el nom del fitxer que es vol compilar:– gcc -c -O -Wall -Wmissing-prototypes -Wstrict-prototypes

-Wno-main -ansi nomfitxer.c <RETORN>

Page 32: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

El procés de compilació i muntatgeEdició

Programa font (.c)

Compilació

Programa objecte (.o)

Muntatge

Programa executable (.exe)

Execució

Page 33: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

Muntatge (linkar): procés d’enllaç de programa objecte amb les altres unitats muntables que són necessàries per generar un programa executable.

programa objecte (.o)

MUNTATGE

programa executable codi màquina de la CPU(.exe)

Page 34: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

Com muntar des d’EMACS?

• ESC !• En la línia de comandes de l’EMACS surt el

missatge:• Shell command:

• En la línia de comandes de l’EMACS cal entrar:

• gcc nom_fitxer.o -o nom_fitxer.exe <RETORN>

Page 35: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

El procés de compilació i muntatgeEdició

Programa font (.c)

Compilació

Programa objecte (.o)

Muntatge

Programa executable (.exe)

Execució

Page 36: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

Execució del procés:

programa executable (.exe)

EXECUCIÓ

Interacció amb l’usuari

Page 37: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

Com executar?

• Des de linia de comandes:– Obrir una pantalla alfanumérica– Posar en la línia el nom del fitxer

• Des de icones:– Doble clic en la icona de l’executable

Page 38: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

Exercici 1.41) Copieu del directori:

/home/profia/Curs/Practiques/PRACT2 els fitxers: exemple1.c, exemple2.c

exemple3.c i exemple4.c2) Realitzeu el procés de compilació, muntatge i

execució dels 4 fitxers.

3) Copieu els fitxers graus1.c, graus2.c i graus3.c(versions de l’exemple3.c). Observeu si es produeixen errors i a quina etapa es produeixen.

Page 39: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

SESSIÓ 2

Traduccions bàsiques

Page 40: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

DE l’Algorisme AL llenguatge CEstructura general d’un algorisme

algorisme nom algorisme definicio_constants definició_tipus

declaració variables sentències falgorisme accions_funcions

Page 41: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

DE l’Algorisme AL llenguatge C

algorisme nom algorisme definicio_constants definició_tipus

declaració variables sentències falgorisme subprogrames

inclusions

La part d’inclusions ha de contenir els fitxers que calgui de la llibreria estàndard

- Sempre: # include <assert.h>

# include <stdio.h>

- Quan s’usin objectes de tipus booleà: # include <stdbool.h>

- Quan s’usin funcions matemàtiques: exp, log, sin ,… : # include <math.h>

Estructura general

Page 42: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

DE l’Algorisme AL llenguatge CEstructura general

algorisme nom algorisme definicio_constants definició_tipus

declaració variables sentències falgorisme subprogrames

inclusions

void main (void) {

}

Page 43: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

DE l’Algorisme AL llenguatge CEstructura general

algorisme nom algorisme definicio_constants definició_tipus

declaració variables sentències falgorisme subprogrames

inclusions definició_constants definició_tipus

void main (void) {

}

Page 44: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

DE l’Algorisme AL llenguatge CEstructura general

algorisme nom algorisme definicio_constants definició_tipus

declaració variables sentències falgorisme subprogrames

inclusions definició_constants definició_tipus

void main (void) { declaració_variables sentències }

Page 45: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

DE l’Algorisme AL llenguatge C

Estructura general

algorisme nom algorisme definicio_constants definició_tipus

declaració variables sentències falgorisme subprogrames

inclusions definició_constants definició_tipus capçaleres_subprogrames void main (void) { declaració_variables sentències } subprogrames

Page 46: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

Definició de Constants

const

nom_const : nom_tipus =expr_const

fconst

#define nom_const expr_const

Exemple:

const

MAX: enter = 25

fconst

# define MAX 25

Page 47: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

Declaració de Variables

var nom_variable, nom_variable: nom_tipus fvar

nom_tipus_C nom variable, nom_variable ;

Exemple:

Atenció!!var

x: enter

y, z: real

a: caràcter

b: booleà

fvar

int x;

float y, z;

char a;

bool b;

Page 48: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

Tipus elementals

enter

real

caràcter

booleà

int

float

char

bool

Recordeu que quan s’usa el tipus booleà en C cal incloure la llibreria: # include <stdbool.h> a l’apartat d’inclusions

Page 49: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

Assignació

nom_variable :=expressió nom_variable = expressió ;

Assignació en C:Qualsevol assignació és permesa EXCEPTE SI SÓN TAULES:

El compilador no generarà un error però l’assignació no

funcionarà correctament

Atenció!!

Page 50: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

Operadors en expressions

− no

− !

+ − ∗ / div mod

+ − ∗ / / %

Page 51: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

Operadors en expressions

. , [ ]−, !

*, / , %+ , −

<, >, <=, >=== , != &&

||

< > = ≠ ≤ ≥ i o

< > == != <= >= & & | |

+

_

Prioritat

Atenció!! No confondre amb l’assignació

Page 52: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

Exemplealgorisme intercanvivar

x,y,tmp:enterfvar

LlegirEnter(x)LlegirEnter(y)tmp:= xx:= yy:= tmpEscriureEnter(x)EscriureEnter(y)

falgorisme

# include <stdio.h># include <assert.h>

void main (void) {

}

Page 53: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

Exemple algorisme intercanvivar

x,y,tmp:enterfvar

LlegirEnter(x)LlegirEnter(y)tmp:= xx:= yy:= tmpEscriureEnter(x)EscriureEnter(y)

falgorisme

#include <stdio.h># include <assert.h>

void main (void) {int x, y, tmp;

}

Page 54: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

Exemple algorisme intercanvivar

x,y,tmp:enterfvar

LlegirEnter(x)LlegirEnter(y)tmp:= xx:= yy:= tmpEscriureEnter(x)EscriureEnter(y)

falgorisme

#include <stdio.h># include <assert.h>

void main (void) {int x, y, tmp;LlegirEnter(&x);LlegirEnter(&y);tmp = x; x = y; y = tmp;EscriureEnter(x);EscriureEnter(y);

}

Page 55: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

Exemple #include <stdio.h># include <assert.h>void LlegirEnter(int *const i);void EscriureEnter(int i);void main (void) {

int x, y, tmp;LlegirEnter(&x);LlegirEnter(&y);tmp = x; x = y; y = tmp;EscriureEnter(x);EscriureEnter(y);

}void LlegirEnter (int *const i) {...}void EscriureEnter(int i) {...}

algorisme intercanvivar

x,y,tmp:enterfvar

LlegirEnter(x)LlegirEnter(y)tmp:= xx:= yy:= tmpEscriureEnter(x)EscriureEnter(y)

falgorisme

Page 56: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

Entrada / Sortida

Llenguatge Algorísmic

acció EscriureEnter (ent e: enter)

acció EscriureReal (ent r: real)

acció EscriureCaracter (ent c: caràcter)

acció LlegirEnter (sort i: enter)

acció LlegirReal (sort r: real)

acció LlegirCaràcter (sort c: caràcter)

Page 57: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

entsort.c: Sortida en llenguatge Cvoid EscriureEnter ( int i){

int ret;

ret = printf (“%d” , i);assert( ret > 0);

}

void EscriureCaracter (char c){

putchar ( c );}void EscriureReal ( float r)

{ int ret;

ret = printf (“%g”, r);assert( ret > 0);

}

Page 58: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

entsort.c : Entrada en llenguatge Cvoid LlegirEnter (int *const i){

int ret;ret = scanf (“%d”, i);assert ( ret ==1 );

}

void LlegirReal (float *const r{

int ret;ret = scanf (“%f”, r);assert ( ret ==1 );

}

char LlegirCaracter ( char *const c ){

*c= getchar ( );}

Page 59: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

Exercici 2.1: Traduiu a C:algorisme Perímetre

const pi: real = 3.1416

fconst var

r, p:realfvarLlegirReal(r)p := 2.0 * pi * rEscriureReal(p)

falgorisme

Page 60: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

SESSIÓ 3

Composicions Algorísmiques

Page 61: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

Composicions Algorísmiques

seqüencial (vist a sessió anterior)

condicional

iterativa

Page 62: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

Condicional

si

expressió_booleana1→ sentències1

expressió_booleana2→sentències2

. . .

fsi

if ( expressió_booleana1 ) {

sentències1

} else if (expressió_booleana2 ) {

sentències2

. . .

} else assert (0);

Condicional

La darrera línia de la sentència condicional ( } else assert (0); )

assegura una bona construcció del si.

Page 63: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

Exemple condicional

si

x > 5 → i := 10

x < 5 → i := 20

x = 5 → continuar

fsi

if ( x > 5 ) {

i = 10;

} else if ( x < 5 ) {

i = 20;

} else if ( x == 5 ) {

} else assert(0);

Page 64: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

Iterativa

mentre expressió_booleana fer

sentències

fmentre

while (expressió_booleana) {

sentències

}

Exemple

while ( i <= N ) {

i = i + 1 ;

}

mentre i ≤ N fer

i := i + 1

fmentre

Page 65: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

Exercicis 3.1 i 3.2

1) Traduiu a C els algorismes potencies1 i potencies2

(veure transparències següents)

2) Editeu els programes en els fitxers potencies1.c i

potencies2.c

Les accions EscriureEnter i LlegirEnter es troben

en el fitxer entsort.c

3) Compileu, munteu i executeu el programa

resultant

Page 66: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

algorisme potencies1var

x,z,n : enterfvarLlegirEnter (x)si

x > 0 → z := 1n := 0mentre z < x fer

z := 2 * zn := n + 1

fmentre

EscriureEnter (n)

no (x > 0) → continuarfsi

falgorisme

Page 67: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

algorisme potencies2var

x,y,z : enterfvarLlegirEnter (x)LlegirEnter (y)si

x > 0 i y > x → z := 1mentre z < x fer

z := 2 * zfmentre

mentre z <= y ferEscriureEnter (z)EscriureCaracter(‘ ‘)z := 2 * z

fmentre

no (x > 0 i y > x ) → continuarfsi

falgorisme

Page 68: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

Exercici 3.3

1) Traduiu a C l’algorisme producte per sumes

(veure transparència)

2) Editeu el programa en el fitxer sumes.c Les

accions EscriureEnter i LlegirEnter es troben

en el fitxer entsort.c

3) Compileu, munteu i executeu el programa,

resolent els errors de compilació i muntatge.

Page 69: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

algorisme productevar

x,y,z : enterfvar

LlegirEnter (x )LlegirEnter (y )si

x > 0 i y>0 →{ x = X, y=Y, X, Y>0 }z := 0mentre y ≠ 0 fer

z:= z + xy:= y – 1

fmentre{ z = X• Y }EscriureEnter (z)

no (x>0 i y>0 ) → continuarfsi

falgorisme

Les precondicions i

les postcondicions

no es tradueixen!!

Page 70: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

SESSIÓ 4

Traducció de Tipus Estructurats

Page 71: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

Traducció del tipus taula

tipus nom_tipus = taula [rang1, rang2,… ] de nom_tipus2ftipus

typedef nom_tipus2 nom_tipus[num_elem1][num_elem2]… ;

Rang_ALG: [ a . . b ]

num_elem = b - a + 1 → Rang_C: [ 0 . . num_elem-1]

ATENCIO!!!

Page 72: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

Traducció del tipus taula a C

inclusions

# define N valor

typedef int T1[ N] ;

prototipus_subprogrames

void main (void) {

….

}

const

N : enter = valor

fconst

tipus

T1 = taula [ 1 . . N]

de enter

ftipus

Page 73: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

Declaració d’una variable de tipustaula en C

var

t : tipusTAU

fvar

tipusTAU t ;

Page 74: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

Accés a una variable de tipustaula en C

variable[index]

a ≤ index ≤ b

variable[indexC]

indexC = index - a

Page 75: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

Accés a una variable de tipus taula en C

constN : enter = 15

fconsttipus

T1 = taula [ 1 . . N]de enter

ftipusvar

t : T1fvar….t[2] := t[4] + t[5]

# define N 15

typedef int T1[ N] ;

void main (void) {

T1 t ;

…..

t[1] = t[3] + t[4];

….

Page 76: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

Traducció del tipus tupla tipus nou_tipus = tupla cam p1:t1 cam p2:t2 … cam pN :tN ftupla ftipus

typedef struct { t1 cam p1; t2 cam p2; … ; tN cam pN ;

} nou_tipus;

tipus

t_persona = tupla

edat: enter

altura: real

ftupla

ftipus

Exemple

typedef struct {

int edat;

float altura;

} t_persona;

Page 77: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

Declaració d’una variable de tipus tupla en C

var

t : tipusTup

fvar

tipusTup t ;

Page 78: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

Exercici 4.1

1) Traduiu l’algorisme següent a fibotau.cL’algorisme calcula la quantitat de nombres múltiples de 3 en la seqüència dels N primers nombres de Fibonacci usant una taula de N casselles

(nota: l’ús de la taula només és per il·lustrar els conceptes de la sessió)

2) Compileu, munteu i executeu el programa resultant

Page 79: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

algorisme fibotauconst

N : enter = 20 fconsttipus

tauFib = taula [0 . . N-1] d’enterftipusvar

fib : tauFibi, qm3 : enter

fvar fib[0] := 0; fib[1] := 1; i := 2mentre ( i < N ) fer

fib[i] := fib[i-1] + fib[i-2]i: = i + 1

fmentre

Page 80: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

qm3 := 0; i := 0

mentre ( i < N ) fersi

fib[i] mod 3 = 0 → qm3 := qm3 + 1

no(fib[i] mod 3 = 0) → continuarfsi

i := i + 1fmentre

EscriureEnter(qm3)

falgorisme

Page 81: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

Exercici 4.21) Traduiu l’algorisme següent a fibotup.c

L’algorisme emmagatzema els N primers nombres de Fibbonaci i després elimina els que són múltiples de 7.(nota: Es defineix i s’usa una tupla per il.lustrarels conceptes de la sessió)

2) Compileu, munteu i executeu el programa resultant

Page 82: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

algorisme fibotupconst

N : enter = 20 fconst

tipustauFib = taula [0 . . N-1] d’entertupFib = tupla

t: tauFib {contindrà els valors de Fibbonaci}n: enter {indica el nombre d’elements a fib.t}

ftuplaftipus

varfib : tupFibi, j : enter

fvar

Page 83: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

fib.t[0] := 0

fib.t[1] := 1

fib.n := 2

mentre fib.n < N fer

fib.t[fib.n] := fib.t[fib.n-1] + fib.t[fib.n-2]

fib.n: = fib.n + 1

fmentre

Page 84: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

i := 0mentre i < fib.n fer

sifib.t[i] mod 7 = 0 →

j := i + 1mentre j < fib.n fer

fib.t[j-1] := fib.t[j]j := j + 1

fmentrefib.n := fib.n – 1

no (fib.t[i] mod 7 = 0) → continuarfsii := i + 1

fmentreEscriureEnter(fib.n)

falgorisme

Page 85: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

SESSIÓ 5

AccionsSubprogrames

Funcions

Paràmetres elementals i estructurats

Page 86: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

De l’Algorisme al llenguatge C

algorisme nom_algorisme definició_constants definició_tipus declaració_variables sentències crida_subprograma falgorisme subprogrames

inclusions definició_constants definició_tipus capçaleres subprogrames void main (void) { declaració_variables sentències crida_subprograma } subprogrames

Page 87: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

Implementació general d’un subprograma

Capçalera {

COS}

Page 88: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

Implementació d’accions

acció nom_acció (param_formals, param_formals, ... )

declaració_variables sentències

facció

void nom acció (param formals, param_formals,...) { declaració_variables sentències }

Page 89: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

Implementació de funcions

funció nom_funció(param_formal,..)

retorna nom_tipus

declaració_variables

sentències

retorna expressió

ffunció

nom_tipus nom_funció ( param_formal,.. )

{

declaració_variables

sentències

return expressió ;

}

Page 90: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

Paràmetres formals: tipus elementals i tuples

ent nom_param, ... : nom_tipus

sort nom_param, ... : nom_tipus

ent/sort nom_param,...:nom_tipus

nom_tipus nom_param

nom_tipus ∗ const nom_param

nom_tipus *const nom_param

Page 91: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

De l’Algorisme al llenguatge C

algorisme nom_algorisme definicio_constants definició_tipus declaració_variables sentències crida_subprograma falgorisme subprogrames

inclusions definició_constants definició_tipus capçaleres subprogrames void main (void) { declaració_variables sentències crida_subprograma } subprogrames

Page 92: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

Capçaleres de Subprogrames

Capçaleres acabades en ‘;’

Acció:void nom acció (param formal, param formal,...);

Funció:nom_tipus nom_funció ( param_formal,... );

Page 93: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

De l’Algorisme al llenguatge C

algorisme nom algorisme definicio_constants definició_tipus

declaració variables sentències crida_acció falgorisme accions_funcions

inclusions definició_constants definició_tipus capçaleres accions funcions

void main (void) { declaració_variables sentències crida_acció } accions_funcions

Page 94: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

Crida a una acció: Paràmetres elementals i tuples

nom_acció ( paràmetre_actual,

paràmetre_actual, ... )

nom_acció ( paràmetre_actual,

paràmetre_actual, ... ) ;

nom_variable

expressió

nom_variable &nom_variable

expressió

Page 95: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

Exemple de traducció de capçalera:paràmetres elementals i tuples

Crida Capçalera Ús dins del’acció

Entrada nom_var tipus nom_var nom_var

Sortida &nom var tipus *constnom_var

*nom_var(*nom var).camp

Ent/Sort &nom var tipus *constnom_var

*nom_var(*nom var).camp

acció prova( ent x: enter, sort y: enter, ent/sort p: t_persona, ent/sort z: enter)

void prova ( int x, int *const y, t_persona *const p, int *const z );

Nota: per l’exemple usem el tipus tupla t_persona definit a la sessió anterior

Page 96: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

Exemple de traducció de cos: paràmetres elementals i tuples

Crida Capçalera Ús dins del’acció

Entrada nom_var tipus nom_var nom_var

Sortida &nom var tipus *constnom_var

*nom_var(*nom var).camp

Ent/Sort &nom var tipus *constnom_var

*nom_var(*nom var).camp

acció prova ( ent x: enter, sort y: enter,

ent/sort p: t_persona ,

ent/sort z: enter)

y:= x + z

z := y + z

p.edat := p.edat + x

facció

void prova ( int x, int *const y,

t_persona *const p,

int *const z ) {

*y = x + *z ;

*z = *y + *z ;

(* p).edat = (* p).edat + x

}

Page 97: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

Traducció de crida: elementals i tuplesCrida Capçalera Ús dins de

l’accióEntrada nom_var tipus nom_var nom_var

Sortida &nom var tipus *constnom_var

*nom_var(*nom var).camp

Ent/Sort &nom var tipus *constnom_var

*nom_var(*nom var).camp

void main (void) {

...

a = 75;

b = 20;

c = 30;

p.edat = 24; p.altura = 1.80

prova ( a, &b, &p, &c ) ;

}

algorisme exemple

...

a := 75

b := 20

c := 30

p.edat := 24; p.altura := 1.80

prova ( a, b, p, c)

falgorisme

Page 98: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

Exemple d’ús d’una ACCIÓ...void intercanvi (int *const x,

int *const y);

void main (void) {

int a, b, c, d;a= 1; b= 2; c= 3; d= 4;intercanvi (&a, &b);

intercanvi (&c, &d);

}

void intercanvi (int *const x, int *const y)

{int tmp;tmp = *x;*x = *y;*y= tmp;

}

Page 99: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

Crida a una funció

Sempre forma part d’una expressió

nom_funció ( paràmetre_actual,

paràmetre_actual, ... )

nom_funció ( paràmetre_actual,

paràmetre_actual, ... )

nom_variable nom_variable

Page 100: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

Exemple de traducció de capçalera

Crida Capçalera Ús dins de la funció

Entrada nom_var tipus nom_var nom_var

funció fun_prova( ent x: enter, ent y: enter) retorna enter

int fun_prova( int x , int y );

Page 101: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

Exemple de traducció de cosCrida Capçalera Ús dins de la funció

Entrada nom_var tipus nom_var nom_var

funció fun_prova ( ent x: enter,

ent y: enter) retorna enter

retorna (2*y + x)

ffunció

int fun_prova ( int x, int y ) {

return (2*y +x) ;

}

Page 102: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

Exemple de traducció de cridaCrida Capçalera Ús dins de la funció

Entrada nom_var tipus nom_var nom_var

void main (void) {

...

a = 75;

b = 20;

c = fun_prova ( a, b ) ;

}

algorisme exemple

a := 75

b := 20

c := fun_prova ( a, b);

falgorisme

Page 103: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

Exemple d’ús d’una FUNCIÓ…

int potencia (int b, int e);

void main (void){

int x, y, z;

x=4; y=7;

z = 2*x + 3 * potencia (x,2*y);

z = potencia(z , 5);

}

int potencia (int b, int e){int n , p;

n=e; p=1;while (n!=0){

p=p*b;n=n-1;

}return p;

}

Page 104: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

Traducció de capçalera amb paràmetrestipus TAULA

Crida Capçalera Ús dins de l’acció

Entrada nom_var const tipus nom_var nom_var

Sortida nom_var tipus nom_var nom_var

Ent/Sort nom_var tipus nom_var nom_var

acció nom_accio ( ent x: t_taula, sort y: t_taula, ent/sort z: taulac )

void nom_accio ( const t_taula x, t_taula y, taulac z);

Page 105: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

Traducció de cos amb paràmetres tipus TAULA

Crida Capçalera Ús dins de l’acció

Entrada nom_var const tipus nom_var nom_var

Sortida nom_var tipus nom_var nom_var

Ent/Sort nom_var tipus nom_var nom_var

void nom_accio (const t_taula x,t_taula y,taulac z)

{....y [0] = y [1] + x [2];z [0]= ‘a’;....

}

accio nom_accio (ent x: t_taula,sort y: t_taula,

ent/sort z: taulac)....y [0] = y [1] + x [2];z [0]= ‘a’;....

faccio

Page 106: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

Traducció de crida amb paràmetres tipus TAULA

algorisme exemple var

a, b: t_taulac: taulac

fvara[0]:=75; a[1]:=20; a[2]:=30;b[0]:=1; b[1]:=2; b[2]:=5nom_accio (a, b, c)

falgorisme

Crida Capçalera Ús dins de l’acció

Entrada nom_var const tipus nom_var nom_var

Sortida nom_var tipus nom_var nom_var

Ent/Sort nom_var tipus nom_var nom_var

…void main(void) {

t_taula a,b;taulac c;a[0]=75; a[1]=20; a[2]=30;b[0]=1; b[1]=2; b[2]=5;nom_acció (a,b,c);

}

Page 107: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

Exercici 5.1: Subprogrames amb paràmetres de tipus elementals i tuples

1) Traduiu l’algorisme de la transparència

següent a fibtuSub.c

L’algorisme soluciona el mateix problema

plantejat a l’exercici 4.2 usant, aquí,

subprogrames.

2) Compileu, munteu i executeu el programa resultant

Page 108: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

algorisme fibtuSub

constN : enter = 20

fconsttipus

tauFib = taula [0 . . N-1] d’entertupFib = tupla

t: tauFib {contindrà els valors de Fibbonaci}n: enter {indica el nombre d’elements a fib.t}

ftuplaftipusvar

fib : tupFibi : enter

fvar

Page 109: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

inicia( fib)

i := 0mentre i < fib.n fer

sifib.t[i] mod 7 = 0 → moure( i, fib)

no (fib.t[i] mod 7 = 0) → continuarfsii := i + 1

fmentre

EscriureEnter(fib.n)

falgorisme

Page 110: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

acció inicia( sort f : tupFib )

f.t[0] := 0

f.t[1]:= 1

f.n:=2

mentre f.n < N fer

f.t[f.n] := f.t[f.n-1] + f.t[f.n-2]

f.n: = f.n + 1

fmentrefacció

Page 111: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

acció moure( ent i : enter, ent/sort f : tupFib ) var

j: enterfvar

j := i + 1mentre j < f.n fer

f.t[j-1] := f.t[j]

j := j + 1

fmentre

f.n := f.n – 1facció

Page 112: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

Exercici 5.2: Subprogrames amb paràmetres de tipus taules

1) Traduiu l’algorisme de la transparència

següent a fibtaSub.c

L’algorisme soluciona el mateix problema

plantejat a l’exercici 4.1 usant, aquí,

subprogrames.

2) Compileu, munteu i executeu el programa resultant

Page 113: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

algorisme fibtaSub

constN : enter = 20

fconst

tipustauF = taula [0 . . N-1] d’enter

ftipus

varfib : tauFi, qm3 : enter

fvar

Page 114: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

iniciaTau( fib )

qm3 := 0i := 0mentre i < N fer

mult3( fib[i], qm3)

i := i + 1

fmentre

EscriureEnter(qm3)falgorisme

Page 115: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

acció iniciaTau( sort f: tauF)var i: enter fvar

i:=2; f[0] := 0; f[1]:= 1mentre i < N fer

f[i] := f[i-1] + f[i-2]i: = i + 1

fmentrefacció

acció mult3( ent a: enter, ent/sort q3:enter ) si

a mod 3 = 0 → q3 :=q3 + 1

no (a mod 3 = 0 ) → continuarfsi

facció

Page 116: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

Exercici 5.3: Ús de funcions

1) Obriu un fitxer en el disquet amb nom

mult13.c

2) Traduiu l’algorisme de la transparència

següent.

L’algorisme calcula el primer número

natural múltiple de 13 i capicua.

3) Compileu, munteu i executeu el programa

resultant

Page 117: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

algorisme mult13_capicuavar

s:enterfvars:=13mentre no (capicua(s)) fer

s := s + 13fmentreEscriureEnter( s )

falgorisme

Page 118: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

funció capicua (ent n:enter) retorna booleàvar

x, aux, n2 : enterfvarn2 := nx := n2 mod 10aux := 0mentre n2 > 0 fer

aux := aux * 10 + xn2 := n2 div 10x := n2 mod 10

fmentreretorna ( n = aux )

ffunció

Page 119: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

Exercici 5.4: Exemple de traducció de taules

1) Traduiu a C l’algorisme següent a digits.cAquest algorisme compta el nombre de dígits 0, 1, 2, ... ,9 que apareixen globalment en la

seqüència de múltiples de 7 menors de 10000.

2) Compileu, munteu i executeu el programa resultant

Page 120: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

algorisme compta_digitstipus

tdigit = taula [0 . . 9] de enterftipusvar

digits : tdigitt : enter

fvariniciar_digits (digits)t := 7mentre t<10000 fer

actualitza_digits (t, digits)t := t + 7

fmentreescriure_digits (digits)

falgorisme

Page 121: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

accio actualitza_digits (ent n: enter, ent/sort t: tdigit )var

d : enterfvar

mentre n ≠ 0 ferd := n mod 10t[d] := t[d] + 1n := n div 10

fmentrefaccio

Page 122: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

accio escriure_digits (ent d: tdigit)var

i : enterfvar

i := 0mentre i <= 9 fer

EscriureEnter ( d[ i ] )EscriureCaracter(‘ ‘)i := i + 1

fmentrefaccio

Page 123: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

accio iniciar_digits (sort d:tdigit)var

i: enterfvar

i:=0mentre i<=9 fer

d[i] := 0i := i + 1

fmentrefaccio

Page 124: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

SESSIÓ 6

Exercicis de tradució

Page 125: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

Exercici 6.1

1) Traduir a llenguatge C l’algorisme de la pàgina següent en un fitxer sessio6.c

2) Compileu, munteu i executeu el programa resultant

Page 126: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

algorisme sessio6const

N : enter = 10fconsttipus

ttaula = taula [ 0 . . N-1 ] de caracterftipusvar

t : ttaulai, compt : enter

fvar

Page 127: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

ObtenirParaula ( t )i := 0compt := 0mentre i < N div 2 fer

sit[i] = t[N - i - 1] → Actualitzar ( t, i, compt )no (t[i] = t[N - i - 1]) → continuar

fsi

i := i + 1fmentreEscriureEnter ( compt )EscriureFrase ( t )

falgorisme

Page 128: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

accio ObtenirParaula ( sort a : ttaula )var

j : enterx : caracter

fvarj := 0mentre j < N fer

LlegirCaracter ( x )a [ j] := xj := j + 1

fmentrefaccio

Page 129: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

accio Actualitzar ( ent/sort a : ttaula,ent j : enter, ent/sort c : enter )

a [N - j - 1] := ’$’

c := c + 1

faccio

Page 130: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

accio EscriureFrase ( ent a : ttaula )

varj : enter

fvarj := 0mentre j < N fer

EscriureCaracter ( a [j] )j := j + 1

fmentre

faccio

Page 131: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

Exercici 6.2

1) Traduiu a llenguatge C l’algorisme de la pàgina següent en un fitxer exercici.c

2) Compileu, munteu i executeu el programa resultant

Page 132: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

algorisme exerciciconst

N : enter = 15fconsttipus

tauent = taula [ 1 . . N ] de enterftipusvar

t : tauenti : enter

fvar

Page 133: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

i := 1mentre i ☯ N fer

t[i] := i mod ( N div 4 ) i := i + 1

fmentrei := 1mentre i ☯ N fer

tractar ( t, i )i := i + 1

fmentreEscriureEnter ( t[N] )falgorisme

Page 134: SESSIÓ 1 Introducció - UPC Universitat Politècnica de Catalunyainfapli/lab.pdf– Creació o modificació d’un fitxer de text Hi ha diferents tipus de programes que es poden utilitzar

accio tractar ( ent/sort t : tauent, ent i : enter )varj : enter

fvarj := 1mentre j ☯ i fer

sit[j] ≥ t[i] → t[j] := t[j] - t[i]t[j] < t[i] → continuar

fsij := j + 1

fmentrefaccio