sessiÓ 1 introducció - upc universitat politècnica de catalunyainfapli/lab.pdf– creació o...
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/1.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/2.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/3.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/4.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/5.jpg)
![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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/6.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/7.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/8.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/9.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/10.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/11.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/12.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/13.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/14.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/15.jpg)
• 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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/16.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/17.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/18.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/19.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/20.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/21.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/22.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/23.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/24.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/25.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/26.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/27.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/28.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/29.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/30.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/31.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/32.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/33.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/34.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/35.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/36.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/37.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/38.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/39.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/40.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/41.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/42.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/43.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/44.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/45.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/46.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/47.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/48.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/49.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/50.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/51.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/52.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/53.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/54.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/55.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/56.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/57.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/58.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/59.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/60.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/61.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/62.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/63.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/64.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/65.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/66.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/67.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/68.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/69.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/70.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/71.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/72.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/73.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/74.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/75.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/76.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/77.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/78.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/79.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/80.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/81.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/82.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/83.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/84.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/85.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/86.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/87.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/88.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/89.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/90.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/91.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/92.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/93.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/94.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/95.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/96.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/97.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/98.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/99.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/100.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/101.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/102.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/103.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/104.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/105.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/106.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/107.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/108.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/109.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/110.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/111.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/112.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/113.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/114.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/115.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/116.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/117.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/118.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/119.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/120.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/121.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/122.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/123.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/124.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/125.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/126.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/127.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/128.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/129.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/130.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/131.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/132.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/133.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022081622/6139ef7b0051793c8c00c296/html5/thumbnails/134.jpg)
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