19
Estudis d’Informàtica, Multimèdia i Telecomunicació Programació PAC2 — Document d’exercicis Estudiant Cognoms: Villarreal Quintana Nom: Jaume 1

PAC2_PA

Embed Size (px)

DESCRIPTION

PAC 2 de l'assignatura de Programació Algorítmica [UOC - Grau en Multimèdia]

Citation preview

Nom

Estudis dInformtica, Multimdia i Telecomunicaci Programaci

PAC2 Document dexercicisEstudiant

Cognoms: Villarreal QuintanaNom: JaumeExercici 1: Declaraci d'accions i funcions [15%]

Tasca: Per a cada apartat, decidiu si s millor una acci o una funci i definiu-ne la capalera (noms es demana la capalera, no cal que dissenyeu cap algorisme). Es demana la capalera d'un mdul (acci o funci) que:a) Que rebi un nmero de telfon i digui si est assignat o no a algun usuari i el nom del propietari:

acci phone (ent tlfn: enter, sor name: cadena, sor msg: boolea)b) Que reculli de l'entrada estndard 10 paraules una rera laltre i digui si les han entrat per ordre alfabticfunci alphabeticOrder (): boolec) Donades dues cadenes digui si la segona est continguda en la primera i quants de cops apareixacci repeatString (ent string1: cadena, ent string2: cadena, sor repeat: enter, sor: msg: boole)d) Que rebi limport dun lloguer a actualitzar i lIPC i actualitzi el preu del lloguer. acci setup (ent amount: real, ent IPC: real) Exercici 2: Crides a mduls i modificadors d'entrada i sortida [15%]

Tasca: Donats lalgorisme i les capaleres de les segents accions i funcions:funcio function1( x: enter, y: enter, z: enter) : boolea;

funcio function2( x: enter, c: caracter, b: boolea) :enter;accio action1( sor x: enter, ent z: enter) ;

accio action2( ent c: caracter, ent x: enter, entsor y: enter);

algorisme algorithm

var

i, j, k: enter;

x, y, z : real;

d : caracter;

b: boolea;

fvar

...

...

falgorismeResponeu a cada apartat si s correcte o no substituir el requadre gris de lalgorisme algorithm per la instrucci que es dna i, si no ho s, indiqueu-ne les causesa) action1 (k, function2( 7, x, function1(x, y, z ));INCORRECTA.Els parmetres que es passen a function1 corresponen a variables de tipus real, quan els parmetres formals de la funci declarada sn de tipus enter.

b) k := action2( d, function2 ( i, A, cert), j);INCORRECTA.

La invocaci d'una acci sempre es fa fora d'una expressi. Seria correcte:

action2( d, function2 ( i, A, cert), j);c) b := function1( j, function2( k, d, function1(5, 7, 12)), 3*k);CORRECTA.Exercici 3: s de mduls i parmetres segons el seu significat i [15%]

Tasca: Desprs duns anys dhaver construt un aeroport i no posar-lo en funcionament, la companyia Escocesa AllInAir ha decidit comprar-lo com a seu exclusiva dels seus avions i des don fa un vol diari danada i tornada a cadascuna de les seves 22 destinacions. Per als mostradors de laeroport (nic lloc on es venen bitllets) ha creat el programa que facilita lemissi de bitllets que shan de pagar al moment amb targeta.Ompliu les caixes, amb una nica instrucci o expressi a cada una, per aconseguir el comportament que us hem descrit. Lalgorisme resultant ha dutilitzar obligatriament les segents accions i funcions, que no heu dimplementar:

Acci que llegeix del canal dentrada la destinaci, la data de viatge (dd-mm-aaaa) i el nom del viatger:

accio getFlightInfo (sor destination: cadena, sor date:cadena,

sor traveller: cadena);Acci que llegeix del TPV el nmero de targeta de crdit i el PIN i diu si el PIN correspon a la targeta:

accio getCreditCardInfo (sor number: enter, sor PIN: enter, sor OK: boolea);Funci que rep la destinaci i retorna el codi del vol funcio getFlightCode ( location: cadena): cadenaFunci que rep un import i les dades duna targeta i retorna cert si sha pogut carregar limport a la targeta:

funcio payOK (amount: real, creditCarNumber: enter, PIN: enter): boolea;

Acci que rep el codi del vol i la data i diu si hi ha o no places i el preu de la plaa vacant acci vacancyCost ( ent code: cadena, ent date: cadena, sor vacancy: boolea, sor amount: real);

Acci que donades les dades del bitllet (codi del vol,data, nom del viatger i preu) escriu la targeta dembarcament i el bitllet:

accio writeBoardingPass (ent code: cadena, ent date:cadena, ent traveller:cadena, ent amount: real );

algorisme AllInAirAirportvar

cityTo, date, travellerData, fligthCode: cadena;

creditCardNum, PIN : enter;

travelAmount: real;

OKSeat, OKCredit, OKPay: boolea;

fvar{llegeix del canal estndard la informaci de fitxer de vol i viatger}

;

{obt el codi del vol}

fligthCode:= ;

{mira si hi ha vacants a la data de vol i el preu en qesti}

;si OKSeat llavors{obt les dades de la targeta de crdit de lusuari}

;

si OKCredit llavors

{intenta fer el cobrament del bitllet}

OKPay := ;

si OKPay llavors

{ genera bitllet i targeta

;

sino

writeString (Pagament no acceptat),

fsi

sino

writeString (PIN incorrecte);

fsi

sino

writeString (No hi ha vacants per aquest vol);

fsi

falgorisme

Exercici 4: Disseny de mduls [15%]

Tasca: Una empresa es dedica a pintar dipsits rectangulars per encrrec i vol una aplicaci que li digui quanta pintura ha de fer servir per a un dipsit determinat.Crear un mdul (acci o funci, el ms adequat) que rebi les mides del dipsit (en metres), si sha de pintar noms per fora o tamb per dins i el rendiment de la pintura (en metres quadrats per kilo de pintura) i digui quants pots de pintura (els pots sn de 1 kg) necessita.funci tankPainting (ent h: real, ent: w: real, ent d: real, ent efficiency: real, ent fullPainting: boole)var

tankArea: real

totalPaint: real

totalPaintCan:enterfvar

tankArea := (2*h*w)+(2*h*d)+(2*w*d);

si fullPainting := S llavors

tankArea := tankArea*2;

totalPaint := tankArea / efficiency;

sino

totalPaint := tankArea / efficiency;

fsitotalPaint := totalPaint + 1;

totalPaintCan := realaEnter (totalPaint);

retorna (totalPaintCan);

ffunciExercici 5: Traducci dun algorisme amb mduls a PHP [20%]

Tasca: L algorisme inferior calcul rees de determinats polgons regulars (polgons amb tots els costats igual de llargs): triangles, quadrats, pentgons i hexagons. Li demana a l'usuari que entri el nombre de costats i la mida del costat.

En aquest algorisme suposarem que disposem de la funci sqrt(x:real):real que retorna l'arrel quadrada de x.algorisme area

const

FORPENTA: real = 0.344;

fconst

var

sidesNumber: enter;

side, area: real;

fvar

{ACCIONS I FUNCIONS}

accio getData (sor n: enter, sor long: real)

n := readInteger();

long := readReal();

faccio

funcio cub (n: real): real

retorna n * n * n;

ffuncio

funcio triangle (long: real): real

var

s: real;

fvar

s := long * 1.5;

return sqrt( s * cub(s-long));

ffuncio

funcio quadrat (long: real): real

return long * long;

ffuncio

funcio pentagon (long: real): real

return 5.0 * quadrat(long) * FORPENTA;

ffuncio

funcio hexagon (long: real): real

return 6.0 * triangle (long);

ffuncio

{PROGRAMA PRINCIPAL}

getData (sidesNumber, side);

si sidesNumber6 llavors

writeString("El Nombre de costats ha d'estar entre 3 i 6");

sino

si sidesNumber = 3 llavors

area := triangle (side);

sino

si sidesNumber = 4 llavors

area := quadrat (side);

sino

si sidesNumber = 5 llavors

area := pentagon (side);

sino

area := hexagon (side);

fsi

fsi

fsi

fsi writeString ("L'rea s ");

writeReal (area);

falgorisme

Cal que ompliu la plantilla PAC2_exer5_plantilla.php amb la traducci de lalgorisme a PHP i li canvieu el nom a PAC2_exer5.php

Indicacions per a PHP

Les dades sentraran pel mtode $_GET en dos parmetres de noms sidesNumber, side. La crida ha de ser del tipus: http://localhost/PAC2_exer5.php?sidesNumber=4&side=27.3Per a comprovar el funcionament podeu fer servirhttp://phppract.comlu.com/pac2/PAC2_exer5.php?sidesNumber=4&side=27.3Advertiments1. En PHP existeix la function sqrt($arg) que retorna l'arrel quadrada de $arg

2. Si voleu que els nmeros reals resultats dels clculs es mostrin amb 2 decimals com a lexemple, lescriptura sha de fer amb lordre printfCopieu aqu el codi de la vostra soluci