Lab07 1617

You might also like

You are on page 1of 4

FONAMENTS DE PROGRAMACI

LAB 7 MODELS DE SEQNCIA (II)


Objectius
1. Aplicaci dels esquemes de cerca i recorregut a la resoluci de problemes.
2. Reforar els conceptes de treball amb seqncies i adaptar els esquemes de
tractament de seqncies per tractar subseqncies.

Informaci de suport per a resoldre els exercicis


Tractament de subseqencies
Relacionat amb el tractament de seqncies hi ha el detall de considerar quants elements
hem de llegir alhora de la seqncia i com els hem de tractar. Als esquemes de tractament
de seqncies explicats al Tema 3, en cada iteraci es llegeix i es tracta un sol element,
per aquest algorisme s'ha d'adaptar per a quan es volen tractar subseqncies. A
continuaci es presenten dos variants:
Variant 1: Si disposem de temperatures mnimes i mximes d'un conjunt de ciutats en un
cert dia i ens demanen alguna consulta sobre elles, segurament haurem de llegir els valors
de la seqncia de dos en dos (la temperatura mnima i mxima) en cada una de les
passades per la iteraci. Els requadres simbolitzen els elements que tractem en un moment
determinat, els anomenarem finestra lgica sobre la seqncia o subseqncia.

2 18 -1 14 0 12 7 19 5 23 ......
Variant 2: Per contra ens podem trobar amb problemes on s'hagi de tractar un conjunt
d'elements consecutius per avanant noms en un en cada iteraci. Un exemple d'enunciat
seria el de comptar quants valors enters d'una seqncia sn mltiples del seu predecessor.
En tot moment estem treballant amb dos valors, per el moviment d'avanar sobre la
seqncia implica llegir noms un nou valor (si no ho fssim aix, perdrem parelles de
valors que poden complir la propietat a controlar). Grficament les parelles a tractar en
l'exemple anterior serien:

2 18 3

9 27 1

15 ......

Primera parella a tractar

2 18 3

9 27 1

15 ......

Segona parella a tractar

2 18 3

9 27 1

15 ......

Tercera parella a tractar

En aquesta sessi es tracta de treballar amb subseqncies.

FONAMENTS DE PROGRAMACI

Feina prvia a la sessi de laboratori:


Per a cada exercici, dissenyeu el pseudocodi que resolgui el problema i completar els
jocs de proves que es demana als exercicis.
La feina prvia de tots els exercicis s'ha de lliurar al Moodle, en un nic document en PDF
(documentacio.pdf) i s'ha de portar, en format paper, a la classe de laboratori.

Feina a realitzar a la sessi de laboratori:


Per a cada exercici, implementeu els algorismes en C dels exercicis proposats i valideu,
amb el joc de proves, que el programa compleix les especificacions. Si hi ha alguna
diferncia, com la justifiqueu?
Finalment, cal lliurar:

el pseudocodi i el joc de proves complet, amb els resultats obtinguts, en un nic


document en format PDF (documentacio.pdf).

els fitxers . c , de tots els programes implementats (nicament el fitxer .c, no el


projecte). Els codis s'anomenaran: lab7_ex1.c i lab7_ex2.c

Per fer el lliurament al Moodle, introduu tots els fitxers en una carpeta, anomenada lab7, a
continuaci la comprimiu en un zip i lliureu la carpeta comprimida a la tasca corresponent en
el Moodle. Disposeu fins al dilluns.

Decidir primer quin dels dos tractaments explicats anteriorment cal aplicar.
Exercici 1
Per a posar les notes a una srie d'alumnes ens hem proposat dissenyar un petit
programa que permeti calcular la nota final de cada alumne.
Tenim les notes de diverses proves de cada alumne, en concret 3 proves, i hem
anat apuntant en una llista la nota de la primera prova, la nota de la segona prova i
la nota de la tercera nota de cada alumne. Aquesta llista s'introduir pel teclat i
acabar amb el valor -20. Si per exemple, agafem la nota de tres persones, la
seqncia d'entrada seria de la forma:
5,9 7,7 10 9,5 7,4 5,8 7,5 7,3 6,5 -20
Volem dissenyar un programa que permeti llegir una seqncia d'aquest estil i que
ens calculi i mostri per pantalla:
a) Quin s el nombre d'alumnes que han aprovat l'assignatura.
b) Quin s el % de persones que han susps.
La nota final es calcula tenint en compte que la primera prova t un pes d'un 20%,
la segona d'un 30% i la tercera d'un 50%. L'aprovat es considera quan la nota final
s major o igual que 5.
S'ha de tractar el cas en qu la seqncia d'entrada est buida, per si no est
buida, els elements llegits seran vlids i correctes i sempre hi haur grups de tres
elements.
Joc de proves:

Quan tractem seqncies, els errors ms comuns es produeixen amb el primer i el


darrer nmero. Tindrem aquests casos en consideraci.

Dissenyarem el joc de proves segons diversos casos d's.

FONAMENTS DE PROGRAMACI

Recordeu que el joc de proves tracta de reproduir totes les situacions que ens porten a
qu, en conjunt, s'hagin executat totes les instruccions del nostre programa.
Tamb hem de validar els resultats en les situacions lmit.

Casos

Situacions

Seqncia

Sortida esperada

Prova de fum
(un de cada)

5,9

No hi ha cap data

-20

Un nic grup de
dades complet

5,9

7,7

Tots aprovats

5,9

7,7 10 9,5 4,4 5,8 2,5

Tots suspensos

4,0

4,0 4,0 2,5 3,4 2,8 2,5 1,4 4,8 -20

7,7 10 9,5 3,4 2,8 2,5

5,4 2,8 -20

Aprovats: 1
% sus : 66,66%
Aprovats: 0
% sus : 0%

6,8 -20

Aprovats: 1
% sus : 0,00%
5,4 9,8 -20

Aprovats: 3
% sus : 0,00%
Aprovats: 0
% sus : 100,00%

FONAMENTS DE PROGRAMACI

Exercici 2
A partir d'un llistat amb dades enteres positius, que s'introdueixen pel teclat i que
acaba amb el valor -1, ens demanen que comprovem si al llistat les dades estan o
no ordenades.
La seqncia de dades pot estar buida. Si la seqncia no est buida, les dades
sn sempre vlides i correctes (nmeros enters i positius).
Joc de proves:

Hem de considerar els casos correctes i els possibles errors a l'hora d'introduir la
seqncia.

Quan tractem seqncies, els errors ms comuns es produeixen amb el primer i el


darrer nmero. Tindrem aquests casos en consideraci.

Dissenyarem el joc de proves segons diversos casos d's.


Recordeu que el joc de proves tracta de reproduir totes les situacions que ens porten a
qu, en conjunt, s'hagin executat totes les instruccions del nostre programa.
Tamb hem de validar els resultats en les situacions lmit.

Casos

Situacions

Seqncia

Sortida esperada

Prova de fum

5 7 10 -1

Seqncia ordenada

No hi ha cap data

-1

Seqncia buida

Una dada

5 -1

Seqncia ordenada

Seqncia ordenada

5 9 10 -1

Seqncia ordenada

Seqncia amb repeticions

5 9 9 10 -1

Seqncia desordenada

4 5 3 6 -1

Seqncia desordenada amb


repeticions

4 5 5 3 6 -1

Dada desordenada al principi

4 3 5 6 -1

Dada desordenada al final

4 5 6 3 -1

10

You might also like