SlideShare ist ein Scribd-Unternehmen logo
1 von 14
Estudis d’Informàtica, Multimèdia i Telecomunicació


Programació
Pràctica 1

SOLUCIÓ

Indicacions generals:
Llegiu amb detall les tasques encomanades a cada exercici i també les indicacions i
suggeriments de resolució.
Per a dubtes i aclariments sobre l’enunciat, adreceu-vos al consultor responsable de la
vostra aula.
Lliurament:
1. Els exercicis en llenguatge algorísmic han de resoldre’s en aquest mateix document
2. Cal lliurar la solució d’aquesta pràctica en un fitxer comprimit en format zip o rar
   nomenat CognomsNom_P_PRACT1 adreçat a la bústia “Lliurament d’activitats”
3. El fitxer comprimit contindrà aquest fitxer amb les respostes als exercicis 1 a 3 i els
   arxius php corresponents als exercicis 4 i 5. No s'ha d'adjuntar els fitxers d'imatges
   ni de dades
4. Data límit per lliurar la solució: dilluns, 28 de novembre de 2011 (a les 23:59
   hores).


És imprescindible respectar el format i data d’entrega. La no adequació a
aquestes especificacions pot suposar la no avaluació de la Pràctica.
Exercici 1: Treball amb seqüències [10 %]


Objectius: Donada una seqüència de dades, aplicar l’esquema adequat per construir
un algorisme que solucioni un determinat problema.


Materials: Mòdul 3: Tractament seqüencial.




Tasca: Crear mòdul (acció o funció) que rebi un número sense decimals, calculi, per
una banda, la suma de totes les xifres i per altre el producte de totes les xifres (si una
xifra és un zero no intervindrà en el càlcul del producte), i retorni els dos valors, suma i
producte.
P.e. si el número es el 123, es retornarà 6 i 6; si és el 420 es retornarà el 6 i el 8; si és
el 30, es retornarà el 3 i el 3.

Com que ha de retornar dos valors el mòdul ha de ser una acció.

accio sumProd( ent numero: enter, sor sum: enter, sor prod:enter)
  var
     digit: enter;
  fvar

      {inicialització de variables}
   sum := 0;

   si (numero = 0) llavors
     prod := 0; {si el número és zero es retorna zero}
   sino
       prod:= 1; {per poder fer multiplicacions s'inicialitza a 1}
   fsi

   mentre (numero>0) fer
     digit := numero mod 10; {es recull una xifra}
     sum:= sum + digit;
     si (digit ≠ 0) llavors
         prod := prod * digit;
     fsi
     numero := numero div 10; {treiem la darrera xifra de numero}
   fmentre

faccio
Exercici 2: Treball amb seqüències [15 %]


Objectius: Donada una seqüència de dades a l’entrada, aplicar l’esquema adequat
per construir un algorisme que solucioni un determinat problema.


Materials: Mòdul 3: Tractament seqüencial.




Tasca:

                                                          Codi ASCII estandard

                                                 A cada caràcter imprimible estàndard li
                                                 correspon un codi numèric entre el 32
                                                 (espai en blanc) i el 126.
                                                 Els caràcters que es mostren en vermell
                                                 tenien funció de control en les
                                                 comunicacions




Un estudiant d'informàtica vol fer un algorisme que li serveixi per encriptar i
desencriptar missatges escrits en anglès en els caràcters del codi ASCII, depenent
d'una clau secreta (un número entre 1 i 20).
El mecanisme d'encriptació seria simple: a cada caràcter li correspondria el caràcter
que està a clau posicions més enllà (p.e. si clau és 3, a la @ li correspondria la C, al 9
li correspondria el símbol <, a la a li correspondria la d, etc). Per aplicar el programa
suposarà que després del caràcter ~ (ASCII 126) ve l'espai en blanc (ASCII 32).
Per desencriptar

L'algorisme ha de llegir en primer lloc una lletra e (encriptar) o d (desencriptar),
després llegirà la clau, en tercer lloc la longitud de la cadena a codificar i després la
seqüència de caràcters per encriptar o desencriptar.
Per exemple, per ocultar la cadena "programa en PHP" amb una clau 8, la seqüència
d'entrada seria <e 8 15 programa en PHP>
Nota: la funció charToCode(c), retorna el codi ascii del caràcter que conté la variable
c. La funció codeToChar(num) retorna el caràcter el codi ascii del qual és num.


{Pre: a l'entrada hi ha una cadena action key long string
       action és un caràcter que pot prendre els valors e o d
       key un número entre 1 i 10
       string una seqüència de caracteres
       long la longitud de string}

algorisme secret
   var
      key, long: enter;
      action: caracter;
   fvar

   action := readChar();
   key := readInteger();
   long := readInteger();

   si (action = 'd') llavors key := -key; {així podem emprar encripta per codificar i
                                             descodificar}
   encripta(key, long);
falgorisme

acció encripta(ent key: enter, ent long: enter)
  var
     i, code: enter;
     c: caracter;
  fvar

   per i:=1 fins long fer
      c := readChar();
      code := charToCode(c);
      code := codi + key;
      {es codifica una lletra a cada volta}
      si (code > 126) llavors
          code := code - 95; {això passa el 127 al 32, el 128 al 33, etc}
      fsi
      si (code <32) llavors
          code := code + 95; {això passa el 31 a 126, el 30 al 125, etc}
      fsi
      writeChar(codeToChar(code));
   fper
faccio

{post: a la sortida està la cadena de caràcters codificada amb la clau key }
Exercici 3: Treball amb seqüències [15 %]


Objectius: Donada una seqüència de dades a l’entrada, aplicar l’esquema adequat
per construir un algorisme que solucioni un determinat problema.


Materials: Mòdul 3: Tractament seqüencial.


Tasca: als multicinemes Penícules han automatitzat el despatx d'entrades de manera
que el registre de vendes d'entrades crea una seqüència diària del tipus:
        <h1 s1 h2 s2 h3 s3 … hm sm X> on
        hi és un caràcter el valor del qual pot ser
                m matinal
                t sessió de tarda
                n sessió de nit
                g sessió golfa
        si és un número que pot tenir un valor entre 1 i 8
                1 i 2 són sales 3D
                la resta són sales normals
        X és la lletra 'X' i indica el final de la seqüència

Els preus que s'apliquen a les sales varien segons la tipologia i sessió segons la
següent taula:
    Tipus / sessió           m              t            n              g
          3D                7.50          8.50          9.00          8.50
          2D                6.00          7.00          7.50          7.00

Heu de crear un mòdul (acció o funció) que llegeixi de l'entrada estàndard una
seqüència diària i retorni la recaudació total del dia.
funcio dailyAmount(): real

    const
      CHEAPPRICE: real = 6.0;
      MEDIUMPRICE: real = 7.0;
      CHEAPPRICE: real = 6.0;
    fconst

    var
      total: real;
      cinema: integer;
      session : character;
    fvar

    total := 0.0;
    car := readCharacter();

    mentre (car ≠ 'X') fer
      si (car = 'm') llavors
        total := total + 6.0;
      sino si (car = 'n') llavors
                total := total + 7.5;
            sino
                total := total + 7.0
            fsi
      fsi
      cinema := readInteger();
      si (cinema < 3) llavors
          total := total + 1.5; {sobrepreu de 3D}
      fsi
    fmentre
    retorna (total);
ffuncio
Exercici 4: Treball amb seqüències [30 %]


Objectius: Donada una seqüència de dades a l’entrada, aplicar l’esquema adequat
per construir un programa en PHP que solucioni un determinat problema.


Materials: Mòdul 3: Tractament seqüencial.
               Guia Bàsica de PHP: mòduls 1 a 4 i mòdul 7.


Tasca: Tractar una seqüència de números per obtenir-ne valors singulars i estadístics.
     A la crida del programa es rep, en el paràmetre filename, el nom d'un fitxer que
     conté una instrucció php del tipus
              <?php $cadena="50 32 19 53 32 27 51 33 34 34";.?>
     la variable $cadena conté una cadena de text formada per números d'una o dues
     xifres separats per un espai en blanc.
     El programa ha de llegir la seqüència i
         Al principi: dir quans números integren la seqüència
         Durant la lectura: per cada deu números llegits, escriure en una línia, els deu
          números, la suma i el producte dels 10 números i també la mitjana.
         En arribar el darrer grup de números:
              o El missatge "Darrer grup de números"
              o La quantitat de números que integra aquest grup
              o Llista, suma, producte i mitjana del darrer grup de números
Indicacions
      El fitxer php rebrà el nom pract1_exer4.php
      La crida al programa serà del tipus
                      pract1_exer4.php?filename=nom_arxiu_dades
       per la qual cosa s'haurà d'emprar la instrucció $filename=$_GET["filename"];
       per carregar el nom del fitxer que incorpora la instrucció que carrega la variable
       $cadena. Un cop carregat aquest nom, es pot incorporar la instrucció al programa
       mitjançant l'ordre include($filename)1; ambdues instruccions ja formen part
       de la plantilla i són les primeres del programa principal.
       El fitxer example.php adjunt carrega un d'aquests fitxers i n'imprimeix el
       contingut. la crida ha de ser del tipus         example.php?filename=data45
      Es faciliten diversos arxius de dades amb els noms data40 a data49. Són fitxers
       de text i podeu obrir-los per comprovar el contingut: una instrucció php.




1
    http://www.php.net/manual/es/function.include.php
   Per a recollir els números un a un de la seqüència s'aconsella fer servir la
    combinació d'instruccions explode i array_shift.
   Per conèixer la longitud           d'un    array   podeu     fer   servir   la   funció
    count($nom_variable);2
   S'haurà d'implementar una acció NL() per escriure el salt de línia a la sortida.
   S'haurà d'implementar una acció block_10(entsor var1, ...) que rebi com a primer
    paràmetre la variable sobre la que es fa l'array_shift (si cal en pot rebre més) i
    escrigui, en una mateixa línia, totes les dades que es sol·licita per cada bloc de
    dades.
    Per exemple pel bloc de dades 1 2 3 4 5 6 7 8 9 1 escriuria 1 2 3 4 5 6 7 8 9 1 46
    362880 4.6
   L'acció NL() es farà servir sempre que es vulgui fer un salt de línia a la sortida des
    del PHP.
    L'acció block_10 s'emprarà cada cop que s'hagi d'escriure les dades
    corresponents a un bloc de números.
   Per escriure un número real amb un nombre concret de decimals cal per servir la
    instrucció printf3


Avaluació
Es valorarà especialment l'aplicació correcta dels esquemes de cerca, recorregut i/o
tractament adequats al problema.

També es tindrà present el disseny i l'aprofitament adequat de funcions i accions, tant
les preceptives per enunciat com aquelles altres que resultin útils i que l'estudiant
vulgui desenvolupar voluntàriament.




2
 http://www.php.net/manual/es/function.count.php
3
 http://materials.cv.uoc.edu/continguts/PID_00149863/web/main/m3/v5_3.html i
http://materials.cv.uoc.edu/continguts/PID_00149863/web/main/m7/v2_2.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//ES"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="ES" dir="ltr" xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Practica 1 - Exercici 4</title>
</head>
<body>
<h3>Practica 1 - Exercici 4</h3>
<h3>SOLUCIO</h3>           <!-- No oblideu posar el nom -->
<div>
<?php
 /* Carrega a la variable filename el nom d'un arxiu de text que conté una
              instrucció que carrega les dades a la variable $cadena.
              Les dades carregades són una sèrie de números de dues xifres
              El programa, ha de llegir tots els números i escriure:
              Al principi : Quants números hi ha.
              Durant la lectura : Per cada 10 números llegits escriurà en una línia
                    la llista de números la suma, el producte i la mitjana
                    dels números del bloc
              En arribar al darrer bloc de números:
                    el missatge "Darrer grup de números"
                    la quantitat de números que integra aquest grup
                    suma, producte i mitjana del darrer grup de números

           PRACTICA 1 - setembre 2011- gener 2012
           autor:
*/


/************ FUNCTION *************/
 function NL()
           { //new line
             print "<br />";
           }

           function block_10(&$list, $counter)
           { //write writes $counter long list numbers and statistics
              $sume=0;
              $prod=1;
              NL();
              for($i=0; $i<$counter; $i++)
              {
                 $n = array_shift($list);
                 print"$n ";
                 $sume += $n;
                 $prod *= $n;
              }
              print " ($sume) ($prod) ";
              printf ("(%.2f)", $sume / $counter);
           }

 /*********** PROGRAMA PRINCIPAL ************/

if (isset($_GET["filename"]))
{
            // load data file
  $filename=$_GET["filename"];
            include($filename);
$numeros = explode(' ', $cadena);

          // init variables
          $quantity = count ($numeros);

          // block sequence treatment
          while ($quantity>0)
          {
             $counter = min(10, $quantity);
             if ($counter<10)
             {
                NL();
                print "Darrer grup de n&uacute;meros";
             }
             block_10($numeros, $counter);
             $quantity = count ($numeros);
          }
 }
 else
 {
          print "Falta el nom de l'arxiu de dades";
          NL();
          print "la crida és del tipus <b>pract1_exer5.php?filename=<i>nom_d'arxiu</i></b>";
 }

?>
</div>
</body>
</html>
Exercici 5: Codificació en PHP [30 %]


        Objectius: Donada una seqüència de dades a l’entrada, aplicar l’esquema adequat
        per construir un programa en PHP que solucioni un determinat problema.


        Materials: Mòdul 3: Tractament seqüencial.
                      Guia Bàsica de PHP: mòduls 1 a 4 i mòdul 7.
        Tasca: Disposem de quatre imatges que representen quatre personatges familiars:
          mare, pare, noia i noi, en format png i el nom de les quals són les quatre primeres
          xifres.
          La tasca plantejada és investigar en una cadena de text l'aparició de les paraules
          mum, dad, girl i boy, per tal de fer aparèixer a una pàgina web tantes imatges com
          cops apareix cadascuna de les paraules.




                                                         Pàgina corresponent a la cadena
             1.png       2.png      3.png     4.png
                                                      14mumgfj00girltuicdaddshmumuboyhidadjf

             A la crida del programa es rep, en el paràmetre filename, el nom d'un fitxer que
             conté una instrucció php del tipus
                         $cadena="14mumgfj00girltuicdaddshmumuboyhidadjf";
             la variable $cadena conté la cadena de text on s'ha de localitzar els noms dels
             personatges.
        Indicacions
              El fitxer php rebrà el nom pract1_exer5.php
              La crida al programa serà del tipus
                             pract1_exer5.php?filename=nom_arxiu_dades
               per tant, s'haurà d'emprar la sentència $filename=$_GET["filename"]; per
               carregar el nom del fitxer que incorpora la instrucció que carrega la variable
               $cadena. Un cop carregat aquest nom, es pot incorporar la instrucció al programa
mitjançant l'ordre include($filename)4; ambdues instruccions ja formen part
    de la plantilla i són les primeres del programa principal.
    El fitxer example.php adjunt carrega un d'aquests fitxers i n'imprimeix el
    contingut. la crida ha de ser del tipus         example.php?filename=data24
   Es faciliten diversos arxius de dades amb els noms data50 a data55. Són fitxers
    de text i podeu obrir-los per comprovar el contingut: una instrucció php.
   Com que tots els caràcters van seguits, sense cap separador, la funció explode
    no és d'aplicació. A les cadenes de text es pot accedir a cadascun dels caràcters
    individuals que la formen mitjançant el nom de la variable i un número que indica
    la posició del caràcter dins de la cadena. Si el contingut de $v és "Hola", llavors
    $v[0] és 'H', $v[1] és 'o', $v[2] és 'l' i $v[3] és 'a'. Dins de les claus es pot emprar
    una variable entera p.e:
    for ($i=0; $i<4; $i ++) print $v[$i]."<br />";
    S'ha de tenir present que al primer caràcter se li assigna l'índex 0.
   PHP facilita la funció strlen($cadena)5; que retorna la longitud en caràcters de
    la cadena de text $cadena
   S'haurà d'implementar una acció NL() per escriure el salt de línia a la sortida.
   S'haurà d'implementar el mòdul putImg($image_file) que ha de rebre com a
    paràmetre el nom d'un fitxer en format png i el posarà a la pantalla. P.e. Si rep
    com paràmetre oasis, posaria en la pàgina web el fitxer d'imatge osasis.png.
   Per tal de localitzar les paraules mum, dad, girl i boy, s'haurà de crear el mòdul
    detectStarring que rebrà la variable que conté la cadena de text y un número
    (posició) i retornarà
           o un 1 si a la posició de la cadena comença la subcadena mum.
           o un 2 si a la posició de la cadena comença la subcadena dad.
           o un 3 si a la posició de la cadena comença la subcadena girl.
           o un 4 si a la posició de la cadena comença la subcadena boy.
           o un 0 en els altres casos.


   PHP facilita la funció substr_compare6($main_str, $str , $offset ,$length) que
    retorna un 0 si a partir de la posició $offset de la cadena $main_str, coincideixen
    $length caràcters amb la cadena $str.
    P.e. substr_compare ("caleidoscopio", "idoia", 4, 3 ) retornaria 0 perquè a
    partir de la quarta posició de caleidoscopio (recordeu que el primer caràcter està
    a la posició zero) trobem 3 lletres iguals a les tres primeres de "idoia".


AMPLIACIÓ OPCIONAL
Es pot crear la function contenida($main_str, $str, $offset) que retorni un 0 si la
cadena $str está sin de la cadena $main_str a partir de la posició $ofsset i un -1
altrament. De fet vindria a ser una simplificació de la funció substr_compare que

4
  http://www.php.net/manual/es/function.include.php
5
  http://es.php.net/manual/es/function.strlen.php
6
  http://php.net/manual/es/function.substr-compare.php
només serviria per saber si la totalitat d'una cadena petita está situada en una
        determinada posició d'una cadena més gran.
        Si es crea aquesta funció, serà contenida i no pas substr_compare la que es faci
        servir per localitzar les paraules mum, dad, girl i boy.


        Avaluació
        Es valorarà especialment l'aplicació correcta dels esquemes de cerca, recorregut i/o
        tractament adequats al problema.

        També es tindrà present el disseny i l'aprofitament adequat de funcions i accions, tant
        les preceptives per enunciat com aquelles altres que resultin útils i que l'estudiant
        vulgui desenvolupar voluntàriament.




<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//ES"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="ES" dir="ltr" xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Practica 1 - Exercici 5</title>
</head>
<body>
<h3>Practica 1 - Exercici 5</h3>
<h3>Nom de l'estudiant</h3>           <!-- No oblideu posar el nom -->
<div>
<?php
/* Carrega a la variable filename el nom d'un arxiu de text que conté una
  instrucció que carrega les dades a la variable $cadena.
  El contingut de la variable cadena és una cadena de text en la qual
  pot aparèixer les subcadenes "mum", "dad", "girl" i "boy".
  El programa ha de revisar el contingut de la cadena i mostrar una imatge
   ("1.png", "2.png", "3.png" o "4.png") cada cop que troba en la
  cadena la subcadena corresponent.
  PRACTICA 1 - setembre 2011 - gener 2012
  autor:
*/



 /*********** PROGRAMA PRINCIPAL ************/

if (isset($_GET["filename"]))
{
          // load data file
 $filename=$_GET["filename"];

 include($filename);


  // data file contains $cadena assignation

 $long= strlen($cadena);          //$long contains $cadena length

 $long -=2; // beyond long-2 they are not coincidences
for ($i=0; $i<$long; $i++)
 {
     $starring = detectStarring($cadena, $i);

     if ($starring!=0) putImg($starring);
 }
}
else
{
   print "Falta el nom de l'arxiu de dades";
   NL();
   print "la crida és del tipus <b>pract1_exer5.php?filename=<i>nom_d'arxiu</i></b>";
}

/************ FUNCTION *************/
  function putImg($image_file)
  { // put the image
    print "<img src=".$image_file.".png>";
  }//de putImg

 function NL()
 { // new line
   print "<br />";
 }// de NL

 function detectStarring($string, $pos)
 {
   switch ($string[$pos])
   {
     case 'm': if (substr_compare($string,   "mum", $pos, 3)==0) $starring=1;
               break;
     case 'd': if (substr_compare($string,   "dad", $pos, 3)==0) $starring=2;
              break;
     case 'g': if (substr_compare($string,   "girl", $pos, 4)==0) $starring=3;
               break;
     case 'b': if (substr_compare($string,   "boy", $pos, 3)==0) $starring=4;
              break;
     default: $starring=0;
   }

    return ($starring);
  }//de detectStarring
?>
</div>
</body>

Weitere ähnliche Inhalte

Was ist angesagt?

Programació - Pac1 - Lidia Bria
Programació - Pac1 - Lidia BriaProgramació - Pac1 - Lidia Bria
Programació - Pac1 - Lidia BriaLidia Bria
 
Matemàtiques per a la Multimèdia II - PAC 1 - Multimedia (UOC) - Paquita Ribas
Matemàtiques per a la Multimèdia II - PAC 1 - Multimedia (UOC) - Paquita RibasMatemàtiques per a la Multimèdia II - PAC 1 - Multimedia (UOC) - Paquita Ribas
Matemàtiques per a la Multimèdia II - PAC 1 - Multimedia (UOC) - Paquita RibasPaquita Ribas
 
Programació - Pràctica1 - Lidia Bria
Programació - Pràctica1 - Lidia BriaProgramació - Pràctica1 - Lidia Bria
Programació - Pràctica1 - Lidia BriaLidia Bria
 
Programació - Pac3 - Solució - Lídia Bria
Programació - Pac3 - Solució - Lídia BriaProgramació - Pac3 - Solució - Lídia Bria
Programació - Pac3 - Solució - Lídia BriaLidia Bria
 
| programacion | PRACTICA 2 - Madel Ortiz
| programacion | PRACTICA 2 - Madel Ortiz| programacion | PRACTICA 2 - Madel Ortiz
| programacion | PRACTICA 2 - Madel OrtizArdillita Trepadora
 
Programació - Pac3 - Lidia Bria
Programació - Pac3 - Lidia BriaProgramació - Pac3 - Lidia Bria
Programació - Pac3 - Lidia BriaLidia Bria
 
Matemàtiques per a la Multimèdia II - Pràctica 1 - Multimedia (UOC) - Paquita...
Matemàtiques per a la Multimèdia II - Pràctica 1 - Multimedia (UOC) - Paquita...Matemàtiques per a la Multimèdia II - Pràctica 1 - Multimedia (UOC) - Paquita...
Matemàtiques per a la Multimèdia II - Pràctica 1 - Multimedia (UOC) - Paquita...Paquita Ribas
 
Mates codificacio criptografia_compressio
Mates codificacio criptografia_compressioMates codificacio criptografia_compressio
Mates codificacio criptografia_compressioPaquita Ribas
 
Funcions 4t eso matemàtiques
Funcions 4t eso matemàtiquesFuncions 4t eso matemàtiques
Funcions 4t eso matemàtiquesrbnterrassa
 
Programació - Pràctica 1 - Solució - Lidia Bria
Programació - Pràctica 1 - Solució - Lidia BriaProgramació - Pràctica 1 - Solució - Lidia Bria
Programació - Pràctica 1 - Solució - Lidia BriaLidia Bria
 
Funciones
FuncionesFunciones
FuncionesEVAMASO
 
Algorismes
AlgorismesAlgorismes
Algorismesmferre7
 

Was ist angesagt? (20)

Prog_pac2
Prog_pac2Prog_pac2
Prog_pac2
 
Prog_pac1
Prog_pac1Prog_pac1
Prog_pac1
 
Prog_pac3
Prog_pac3Prog_pac3
Prog_pac3
 
Programació - Pac1 - Lidia Bria
Programació - Pac1 - Lidia BriaProgramació - Pac1 - Lidia Bria
Programació - Pac1 - Lidia Bria
 
Prog_prac1
Prog_prac1Prog_prac1
Prog_prac1
 
Prog_prac2
Prog_prac2Prog_prac2
Prog_prac2
 
Matemàtiques per a la Multimèdia II - PAC 1 - Multimedia (UOC) - Paquita Ribas
Matemàtiques per a la Multimèdia II - PAC 1 - Multimedia (UOC) - Paquita RibasMatemàtiques per a la Multimèdia II - PAC 1 - Multimedia (UOC) - Paquita Ribas
Matemàtiques per a la Multimèdia II - PAC 1 - Multimedia (UOC) - Paquita Ribas
 
Programació - Pràctica1 - Lidia Bria
Programació - Pràctica1 - Lidia BriaProgramació - Pràctica1 - Lidia Bria
Programació - Pràctica1 - Lidia Bria
 
| PROGRAMACIO | Pract2 solucio
| PROGRAMACIO | Pract2 solucio | PROGRAMACIO | Pract2 solucio
| PROGRAMACIO | Pract2 solucio
 
Programació - Pac3 - Solució - Lídia Bria
Programació - Pac3 - Solució - Lídia BriaProgramació - Pac3 - Solució - Lídia Bria
Programació - Pac3 - Solució - Lídia Bria
 
| programacion | PRACTICA 2 - Madel Ortiz
| programacion | PRACTICA 2 - Madel Ortiz| programacion | PRACTICA 2 - Madel Ortiz
| programacion | PRACTICA 2 - Madel Ortiz
 
Programació - Pac3 - Lidia Bria
Programació - Pac3 - Lidia BriaProgramació - Pac3 - Lidia Bria
Programació - Pac3 - Lidia Bria
 
Matemàtiques per a la Multimèdia II - Pràctica 1 - Multimedia (UOC) - Paquita...
Matemàtiques per a la Multimèdia II - Pràctica 1 - Multimedia (UOC) - Paquita...Matemàtiques per a la Multimèdia II - Pràctica 1 - Multimedia (UOC) - Paquita...
Matemàtiques per a la Multimèdia II - Pràctica 1 - Multimedia (UOC) - Paquita...
 
Mates codificacio criptografia_compressio
Mates codificacio criptografia_compressioMates codificacio criptografia_compressio
Mates codificacio criptografia_compressio
 
Funcions 4t eso matemàtiques
Funcions 4t eso matemàtiquesFuncions 4t eso matemàtiques
Funcions 4t eso matemàtiques
 
Funcions
Funcions Funcions
Funcions
 
Programació - Pràctica 1 - Solució - Lidia Bria
Programació - Pràctica 1 - Solució - Lidia BriaProgramació - Pràctica 1 - Solució - Lidia Bria
Programació - Pràctica 1 - Solució - Lidia Bria
 
Funciones
FuncionesFunciones
Funciones
 
Algorismes
AlgorismesAlgorismes
Algorismes
 
YDC_pract1
YDC_pract1YDC_pract1
YDC_pract1
 

Ähnlich wie Programació - Pràctica 1 correcció - Multimedia (UOC) - Paquita Ribas

Programació - Pràctica 2 - Lidia Bria
Programació - Pràctica 2 - Lidia BriaProgramació - Pràctica 2 - Lidia Bria
Programació - Pràctica 2 - Lidia BriaLidia Bria
 
Programem la placa Arduino - Presentación para la asignatura de robótica
Programem la placa Arduino - Presentación para la asignatura de robóticaProgramem la placa Arduino - Presentación para la asignatura de robótica
Programem la placa Arduino - Presentación para la asignatura de robóticaemunoz341
 
Programació - Pràctica2 - Solució - Lídia Bria
Programació - Pràctica2 - Solució - Lídia BriaProgramació - Pràctica2 - Solució - Lídia Bria
Programació - Pràctica2 - Solució - Lídia BriaLidia Bria
 
Eso2 ut3-programacio
Eso2 ut3-programacioEso2 ut3-programacio
Eso2 ut3-programaciolluís nater
 
Programació - Pac2 - Solució - Lídia Bria
Programació - Pac2 - Solució - Lídia BriaProgramació - Pac2 - Solució - Lídia Bria
Programació - Pac2 - Solució - Lídia BriaLidia Bria
 
Programació - Pac2 - Lidia Bria
Programació - Pac2 - Lidia BriaProgramació - Pac2 - Lidia Bria
Programació - Pac2 - Lidia BriaLidia Bria
 
Guia d'estils jordi
Guia d'estils jordiGuia d'estils jordi
Guia d'estils jordiLa Salle
 
Tractament i publicació d'imatge i vídeo practica2
Tractament i publicació d'imatge i vídeo practica2Tractament i publicació d'imatge i vídeo practica2
Tractament i publicació d'imatge i vídeo practica2Marcos Baldovi
 
Pac2 Matematiques per a multimedia 2
Pac2 Matematiques per a multimedia 2Pac2 Matematiques per a multimedia 2
Pac2 Matematiques per a multimedia 2Joan Ignasi
 
Operacions combinades
Operacions combinadesOperacions combinades
Operacions combinadesceedukat
 
Fonaments de programació; intro
Fonaments de programació; introFonaments de programació; intro
Fonaments de programació; introMelanie Nogué
 

Ähnlich wie Programació - Pràctica 1 correcció - Multimedia (UOC) - Paquita Ribas (18)

Programació - Pràctica 2 - Lidia Bria
Programació - Pràctica 2 - Lidia BriaProgramació - Pràctica 2 - Lidia Bria
Programació - Pràctica 2 - Lidia Bria
 
PW_pac1
PW_pac1PW_pac1
PW_pac1
 
Programem la placa Arduino - Presentación para la asignatura de robótica
Programem la placa Arduino - Presentación para la asignatura de robóticaProgramem la placa Arduino - Presentación para la asignatura de robótica
Programem la placa Arduino - Presentación para la asignatura de robótica
 
Programació - Pràctica2 - Solució - Lídia Bria
Programació - Pràctica2 - Solució - Lídia BriaProgramació - Pràctica2 - Solució - Lídia Bria
Programació - Pràctica2 - Solució - Lídia Bria
 
UD3 Programació
UD3 ProgramacióUD3 Programació
UD3 Programació
 
Eso2 ut3-programacio
Eso2 ut3-programacioEso2 ut3-programacio
Eso2 ut3-programacio
 
Programació - Pac2 - Solució - Lídia Bria
Programació - Pac2 - Solució - Lídia BriaProgramació - Pac2 - Solució - Lídia Bria
Programació - Pac2 - Solució - Lídia Bria
 
Programació - Pac2 - Lidia Bria
Programació - Pac2 - Lidia BriaProgramació - Pac2 - Lidia Bria
Programació - Pac2 - Lidia Bria
 
Guia d'estils jordi
Guia d'estils jordiGuia d'estils jordi
Guia d'estils jordi
 
Tractament i publicació d'imatge i vídeo practica2
Tractament i publicació d'imatge i vídeo practica2Tractament i publicació d'imatge i vídeo practica2
Tractament i publicació d'imatge i vídeo practica2
 
UD3 PROGRAMACIÓ
UD3 PROGRAMACIÓUD3 PROGRAMACIÓ
UD3 PROGRAMACIÓ
 
Python
PythonPython
Python
 
Pac2 Matematiques per a multimedia 2
Pac2 Matematiques per a multimedia 2Pac2 Matematiques per a multimedia 2
Pac2 Matematiques per a multimedia 2
 
Operacions combinades
Operacions combinadesOperacions combinades
Operacions combinades
 
Fonaments de programació; intro
Fonaments de programació; introFonaments de programació; intro
Fonaments de programació; intro
 
formules-rstudio.pdf
formules-rstudio.pdfformules-rstudio.pdf
formules-rstudio.pdf
 
formules-rstudio.pdf
formules-rstudio.pdfformules-rstudio.pdf
formules-rstudio.pdf
 
Luis Crespo
Luis CrespoLuis Crespo
Luis Crespo
 

Mehr von Paquita Ribas

Tipografia · Resum materials · Paquita Ribas
Tipografia · Resum materials · Paquita RibasTipografia · Resum materials · Paquita Ribas
Tipografia · Resum materials · Paquita RibasPaquita Ribas
 
Tipografia · Resum llibre
Tipografia · Resum llibreTipografia · Resum llibre
Tipografia · Resum llibrePaquita Ribas
 
Taller de Color · Pac 1 · Paquita Ribas
Taller de Color · Pac 1 · Paquita RibasTaller de Color · Pac 1 · Paquita Ribas
Taller de Color · Pac 1 · Paquita RibasPaquita Ribas
 
Fotografia Digital - Resum mòdul 1
Fotografia Digital - Resum mòdul 1Fotografia Digital - Resum mòdul 1
Fotografia Digital - Resum mòdul 1Paquita Ribas
 
Fotografia Digital - Resum mòdul 3
Fotografia Digital - Resum mòdul 3Fotografia Digital - Resum mòdul 3
Fotografia Digital - Resum mòdul 3Paquita Ribas
 
Fotografia Digital - Resum mòdul 2
Fotografia Digital - Resum mòdul 2Fotografia Digital - Resum mòdul 2
Fotografia Digital - Resum mòdul 2Paquita Ribas
 
Fotografia Digital - Resum mòdul 1
Fotografia Digital - Resum mòdul 1Fotografia Digital - Resum mòdul 1
Fotografia Digital - Resum mòdul 1Paquita Ribas
 
Fotografia Digital - Resum mòdul 1
Fotografia Digital - Resum mòdul 1Fotografia Digital - Resum mòdul 1
Fotografia Digital - Resum mòdul 1Paquita Ribas
 
Tractament i Publicació d'Àudio - Super-resum
Tractament i Publicació d'Àudio - Super-resumTractament i Publicació d'Àudio - Super-resum
Tractament i Publicació d'Àudio - Super-resumPaquita Ribas
 
Tractament i Publicació d'Àudio - Resum mòdul 6
Tractament i Publicació d'Àudio - Resum mòdul 6Tractament i Publicació d'Àudio - Resum mòdul 6
Tractament i Publicació d'Àudio - Resum mòdul 6Paquita Ribas
 
Tractament i Publicació d'Àudio - Resum mòdul 5
Tractament i Publicació d'Àudio - Resum mòdul 5Tractament i Publicació d'Àudio - Resum mòdul 5
Tractament i Publicació d'Àudio - Resum mòdul 5Paquita Ribas
 
Tractament i Publicció d'Àudio - Resum mòdul 4
Tractament i Publicció d'Àudio - Resum mòdul 4Tractament i Publicció d'Àudio - Resum mòdul 4
Tractament i Publicció d'Àudio - Resum mòdul 4Paquita Ribas
 
Tractament i Publicació d'Àudio - Resum mòdul 3
Tractament i Publicació d'Àudio - Resum mòdul 3Tractament i Publicació d'Àudio - Resum mòdul 3
Tractament i Publicació d'Àudio - Resum mòdul 3Paquita Ribas
 
Tractament i Publicació d'Àudio - Resum mòdul 2
Tractament i Publicació d'Àudio - Resum mòdul 2Tractament i Publicació d'Àudio - Resum mòdul 2
Tractament i Publicació d'Àudio - Resum mòdul 2Paquita Ribas
 
Tractament i publicació d'Àudio - Resum modul 1
Tractament i publicació d'Àudio -  Resum modul 1Tractament i publicació d'Àudio -  Resum modul 1
Tractament i publicació d'Àudio - Resum modul 1Paquita Ribas
 
Gestió de projectes Resumen mod 8
Gestió de projectes Resumen mod 8Gestió de projectes Resumen mod 8
Gestió de projectes Resumen mod 8Paquita Ribas
 
Gestió de projectes - Resum mod 7
Gestió de projectes - Resum mod 7Gestió de projectes - Resum mod 7
Gestió de projectes - Resum mod 7Paquita Ribas
 
Gestió de projectes - Resum mod 6
Gestió de projectes - Resum mod 6Gestió de projectes - Resum mod 6
Gestió de projectes - Resum mod 6Paquita Ribas
 
Gestió de projectes - Resum mod 5
Gestió de projectes - Resum mod 5Gestió de projectes - Resum mod 5
Gestió de projectes - Resum mod 5Paquita Ribas
 

Mehr von Paquita Ribas (20)

Tipografia · Resum materials · Paquita Ribas
Tipografia · Resum materials · Paquita RibasTipografia · Resum materials · Paquita Ribas
Tipografia · Resum materials · Paquita Ribas
 
Tipografia · Resum llibre
Tipografia · Resum llibreTipografia · Resum llibre
Tipografia · Resum llibre
 
Taller de Color · Pac 1 · Paquita Ribas
Taller de Color · Pac 1 · Paquita RibasTaller de Color · Pac 1 · Paquita Ribas
Taller de Color · Pac 1 · Paquita Ribas
 
Licencias
LicenciasLicencias
Licencias
 
Fotografia Digital - Resum mòdul 1
Fotografia Digital - Resum mòdul 1Fotografia Digital - Resum mòdul 1
Fotografia Digital - Resum mòdul 1
 
Fotografia Digital - Resum mòdul 3
Fotografia Digital - Resum mòdul 3Fotografia Digital - Resum mòdul 3
Fotografia Digital - Resum mòdul 3
 
Fotografia Digital - Resum mòdul 2
Fotografia Digital - Resum mòdul 2Fotografia Digital - Resum mòdul 2
Fotografia Digital - Resum mòdul 2
 
Fotografia Digital - Resum mòdul 1
Fotografia Digital - Resum mòdul 1Fotografia Digital - Resum mòdul 1
Fotografia Digital - Resum mòdul 1
 
Fotografia Digital - Resum mòdul 1
Fotografia Digital - Resum mòdul 1Fotografia Digital - Resum mòdul 1
Fotografia Digital - Resum mòdul 1
 
Tractament i Publicació d'Àudio - Super-resum
Tractament i Publicació d'Àudio - Super-resumTractament i Publicació d'Àudio - Super-resum
Tractament i Publicació d'Àudio - Super-resum
 
Tractament i Publicació d'Àudio - Resum mòdul 6
Tractament i Publicació d'Àudio - Resum mòdul 6Tractament i Publicació d'Àudio - Resum mòdul 6
Tractament i Publicació d'Àudio - Resum mòdul 6
 
Tractament i Publicació d'Àudio - Resum mòdul 5
Tractament i Publicació d'Àudio - Resum mòdul 5Tractament i Publicació d'Àudio - Resum mòdul 5
Tractament i Publicació d'Àudio - Resum mòdul 5
 
Tractament i Publicció d'Àudio - Resum mòdul 4
Tractament i Publicció d'Àudio - Resum mòdul 4Tractament i Publicció d'Àudio - Resum mòdul 4
Tractament i Publicció d'Àudio - Resum mòdul 4
 
Tractament i Publicació d'Àudio - Resum mòdul 3
Tractament i Publicació d'Àudio - Resum mòdul 3Tractament i Publicació d'Àudio - Resum mòdul 3
Tractament i Publicació d'Àudio - Resum mòdul 3
 
Tractament i Publicació d'Àudio - Resum mòdul 2
Tractament i Publicació d'Àudio - Resum mòdul 2Tractament i Publicació d'Àudio - Resum mòdul 2
Tractament i Publicació d'Àudio - Resum mòdul 2
 
Tractament i publicació d'Àudio - Resum modul 1
Tractament i publicació d'Àudio -  Resum modul 1Tractament i publicació d'Àudio -  Resum modul 1
Tractament i publicació d'Àudio - Resum modul 1
 
Gestió de projectes Resumen mod 8
Gestió de projectes Resumen mod 8Gestió de projectes Resumen mod 8
Gestió de projectes Resumen mod 8
 
Gestió de projectes - Resum mod 7
Gestió de projectes - Resum mod 7Gestió de projectes - Resum mod 7
Gestió de projectes - Resum mod 7
 
Gestió de projectes - Resum mod 6
Gestió de projectes - Resum mod 6Gestió de projectes - Resum mod 6
Gestió de projectes - Resum mod 6
 
Gestió de projectes - Resum mod 5
Gestió de projectes - Resum mod 5Gestió de projectes - Resum mod 5
Gestió de projectes - Resum mod 5
 

Kürzlich hochgeladen

SISTEMA DIÈDRIC. PLANS, PAREL·LELISME,PERPENDICULARITAT,
SISTEMA DIÈDRIC. PLANS, PAREL·LELISME,PERPENDICULARITAT,SISTEMA DIÈDRIC. PLANS, PAREL·LELISME,PERPENDICULARITAT,
SISTEMA DIÈDRIC. PLANS, PAREL·LELISME,PERPENDICULARITAT,Lasilviatecno
 
XARXES UBANES I LA SEVA PROBLEMÀTICA.pptx
XARXES UBANES I LA SEVA PROBLEMÀTICA.pptxXARXES UBANES I LA SEVA PROBLEMÀTICA.pptx
XARXES UBANES I LA SEVA PROBLEMÀTICA.pptxCRIS650557
 
ELLUCHINFORME_BAREM_DEFINITIU_BAREM (1).pdf
ELLUCHINFORME_BAREM_DEFINITIU_BAREM (1).pdfELLUCHINFORME_BAREM_DEFINITIU_BAREM (1).pdf
ELLUCHINFORME_BAREM_DEFINITIU_BAREM (1).pdfErnest Lluch
 
Creu i R.pdf, anàlisis d'una obra de selectivitat
Creu i R.pdf, anàlisis d'una obra de selectivitatCreu i R.pdf, anàlisis d'una obra de selectivitat
Creu i R.pdf, anàlisis d'una obra de selectivitatLourdes Escobar
 
Menú maig 24 escola ernest Lluch (1).pdf
Menú maig 24 escola ernest Lluch (1).pdfMenú maig 24 escola ernest Lluch (1).pdf
Menú maig 24 escola ernest Lluch (1).pdfErnest Lluch
 
MECANISMES I CINEMÀTICA 1r DE BATXILLERAT
MECANISMES I CINEMÀTICA 1r DE BATXILLERATMECANISMES I CINEMÀTICA 1r DE BATXILLERAT
MECANISMES I CINEMÀTICA 1r DE BATXILLERATLasilviatecno
 

Kürzlich hochgeladen (8)

SISTEMA DIÈDRIC. PLANS, PAREL·LELISME,PERPENDICULARITAT,
SISTEMA DIÈDRIC. PLANS, PAREL·LELISME,PERPENDICULARITAT,SISTEMA DIÈDRIC. PLANS, PAREL·LELISME,PERPENDICULARITAT,
SISTEMA DIÈDRIC. PLANS, PAREL·LELISME,PERPENDICULARITAT,
 
XARXES UBANES I LA SEVA PROBLEMÀTICA.pptx
XARXES UBANES I LA SEVA PROBLEMÀTICA.pptxXARXES UBANES I LA SEVA PROBLEMÀTICA.pptx
XARXES UBANES I LA SEVA PROBLEMÀTICA.pptx
 
HISTÒRIES PER A MENUTS II. CRA Serra del Benicadell.pdf
HISTÒRIES PER A MENUTS II. CRA  Serra del Benicadell.pdfHISTÒRIES PER A MENUTS II. CRA  Serra del Benicadell.pdf
HISTÒRIES PER A MENUTS II. CRA Serra del Benicadell.pdf
 
ELLUCHINFORME_BAREM_DEFINITIU_BAREM (1).pdf
ELLUCHINFORME_BAREM_DEFINITIU_BAREM (1).pdfELLUCHINFORME_BAREM_DEFINITIU_BAREM (1).pdf
ELLUCHINFORME_BAREM_DEFINITIU_BAREM (1).pdf
 
itcs - institut tècnic català de la soldadura
itcs - institut tècnic català de la soldaduraitcs - institut tècnic català de la soldadura
itcs - institut tècnic català de la soldadura
 
Creu i R.pdf, anàlisis d'una obra de selectivitat
Creu i R.pdf, anàlisis d'una obra de selectivitatCreu i R.pdf, anàlisis d'una obra de selectivitat
Creu i R.pdf, anàlisis d'una obra de selectivitat
 
Menú maig 24 escola ernest Lluch (1).pdf
Menú maig 24 escola ernest Lluch (1).pdfMenú maig 24 escola ernest Lluch (1).pdf
Menú maig 24 escola ernest Lluch (1).pdf
 
MECANISMES I CINEMÀTICA 1r DE BATXILLERAT
MECANISMES I CINEMÀTICA 1r DE BATXILLERATMECANISMES I CINEMÀTICA 1r DE BATXILLERAT
MECANISMES I CINEMÀTICA 1r DE BATXILLERAT
 

Programació - Pràctica 1 correcció - Multimedia (UOC) - Paquita Ribas

  • 1. Estudis d’Informàtica, Multimèdia i Telecomunicació Programació Pràctica 1 SOLUCIÓ Indicacions generals: Llegiu amb detall les tasques encomanades a cada exercici i també les indicacions i suggeriments de resolució. Per a dubtes i aclariments sobre l’enunciat, adreceu-vos al consultor responsable de la vostra aula. Lliurament: 1. Els exercicis en llenguatge algorísmic han de resoldre’s en aquest mateix document 2. Cal lliurar la solució d’aquesta pràctica en un fitxer comprimit en format zip o rar nomenat CognomsNom_P_PRACT1 adreçat a la bústia “Lliurament d’activitats” 3. El fitxer comprimit contindrà aquest fitxer amb les respostes als exercicis 1 a 3 i els arxius php corresponents als exercicis 4 i 5. No s'ha d'adjuntar els fitxers d'imatges ni de dades 4. Data límit per lliurar la solució: dilluns, 28 de novembre de 2011 (a les 23:59 hores). És imprescindible respectar el format i data d’entrega. La no adequació a aquestes especificacions pot suposar la no avaluació de la Pràctica.
  • 2. Exercici 1: Treball amb seqüències [10 %] Objectius: Donada una seqüència de dades, aplicar l’esquema adequat per construir un algorisme que solucioni un determinat problema. Materials: Mòdul 3: Tractament seqüencial. Tasca: Crear mòdul (acció o funció) que rebi un número sense decimals, calculi, per una banda, la suma de totes les xifres i per altre el producte de totes les xifres (si una xifra és un zero no intervindrà en el càlcul del producte), i retorni els dos valors, suma i producte. P.e. si el número es el 123, es retornarà 6 i 6; si és el 420 es retornarà el 6 i el 8; si és el 30, es retornarà el 3 i el 3. Com que ha de retornar dos valors el mòdul ha de ser una acció. accio sumProd( ent numero: enter, sor sum: enter, sor prod:enter) var digit: enter; fvar {inicialització de variables} sum := 0; si (numero = 0) llavors prod := 0; {si el número és zero es retorna zero} sino prod:= 1; {per poder fer multiplicacions s'inicialitza a 1} fsi mentre (numero>0) fer digit := numero mod 10; {es recull una xifra} sum:= sum + digit; si (digit ≠ 0) llavors prod := prod * digit; fsi numero := numero div 10; {treiem la darrera xifra de numero} fmentre faccio
  • 3. Exercici 2: Treball amb seqüències [15 %] Objectius: Donada una seqüència de dades a l’entrada, aplicar l’esquema adequat per construir un algorisme que solucioni un determinat problema. Materials: Mòdul 3: Tractament seqüencial. Tasca: Codi ASCII estandard A cada caràcter imprimible estàndard li correspon un codi numèric entre el 32 (espai en blanc) i el 126. Els caràcters que es mostren en vermell tenien funció de control en les comunicacions Un estudiant d'informàtica vol fer un algorisme que li serveixi per encriptar i desencriptar missatges escrits en anglès en els caràcters del codi ASCII, depenent d'una clau secreta (un número entre 1 i 20). El mecanisme d'encriptació seria simple: a cada caràcter li correspondria el caràcter que està a clau posicions més enllà (p.e. si clau és 3, a la @ li correspondria la C, al 9 li correspondria el símbol <, a la a li correspondria la d, etc). Per aplicar el programa suposarà que després del caràcter ~ (ASCII 126) ve l'espai en blanc (ASCII 32). Per desencriptar L'algorisme ha de llegir en primer lloc una lletra e (encriptar) o d (desencriptar), després llegirà la clau, en tercer lloc la longitud de la cadena a codificar i després la seqüència de caràcters per encriptar o desencriptar. Per exemple, per ocultar la cadena "programa en PHP" amb una clau 8, la seqüència d'entrada seria <e 8 15 programa en PHP>
  • 4. Nota: la funció charToCode(c), retorna el codi ascii del caràcter que conté la variable c. La funció codeToChar(num) retorna el caràcter el codi ascii del qual és num. {Pre: a l'entrada hi ha una cadena action key long string action és un caràcter que pot prendre els valors e o d key un número entre 1 i 10 string una seqüència de caracteres long la longitud de string} algorisme secret var key, long: enter; action: caracter; fvar action := readChar(); key := readInteger(); long := readInteger(); si (action = 'd') llavors key := -key; {així podem emprar encripta per codificar i descodificar} encripta(key, long); falgorisme acció encripta(ent key: enter, ent long: enter) var i, code: enter; c: caracter; fvar per i:=1 fins long fer c := readChar(); code := charToCode(c); code := codi + key; {es codifica una lletra a cada volta} si (code > 126) llavors code := code - 95; {això passa el 127 al 32, el 128 al 33, etc} fsi si (code <32) llavors code := code + 95; {això passa el 31 a 126, el 30 al 125, etc} fsi writeChar(codeToChar(code)); fper faccio {post: a la sortida està la cadena de caràcters codificada amb la clau key }
  • 5. Exercici 3: Treball amb seqüències [15 %] Objectius: Donada una seqüència de dades a l’entrada, aplicar l’esquema adequat per construir un algorisme que solucioni un determinat problema. Materials: Mòdul 3: Tractament seqüencial. Tasca: als multicinemes Penícules han automatitzat el despatx d'entrades de manera que el registre de vendes d'entrades crea una seqüència diària del tipus: <h1 s1 h2 s2 h3 s3 … hm sm X> on hi és un caràcter el valor del qual pot ser m matinal t sessió de tarda n sessió de nit g sessió golfa si és un número que pot tenir un valor entre 1 i 8 1 i 2 són sales 3D la resta són sales normals X és la lletra 'X' i indica el final de la seqüència Els preus que s'apliquen a les sales varien segons la tipologia i sessió segons la següent taula: Tipus / sessió m t n g 3D 7.50 8.50 9.00 8.50 2D 6.00 7.00 7.50 7.00 Heu de crear un mòdul (acció o funció) que llegeixi de l'entrada estàndard una seqüència diària i retorni la recaudació total del dia.
  • 6. funcio dailyAmount(): real const CHEAPPRICE: real = 6.0; MEDIUMPRICE: real = 7.0; CHEAPPRICE: real = 6.0; fconst var total: real; cinema: integer; session : character; fvar total := 0.0; car := readCharacter(); mentre (car ≠ 'X') fer si (car = 'm') llavors total := total + 6.0; sino si (car = 'n') llavors total := total + 7.5; sino total := total + 7.0 fsi fsi cinema := readInteger(); si (cinema < 3) llavors total := total + 1.5; {sobrepreu de 3D} fsi fmentre retorna (total); ffuncio
  • 7. Exercici 4: Treball amb seqüències [30 %] Objectius: Donada una seqüència de dades a l’entrada, aplicar l’esquema adequat per construir un programa en PHP que solucioni un determinat problema. Materials: Mòdul 3: Tractament seqüencial. Guia Bàsica de PHP: mòduls 1 a 4 i mòdul 7. Tasca: Tractar una seqüència de números per obtenir-ne valors singulars i estadístics. A la crida del programa es rep, en el paràmetre filename, el nom d'un fitxer que conté una instrucció php del tipus <?php $cadena="50 32 19 53 32 27 51 33 34 34";.?> la variable $cadena conté una cadena de text formada per números d'una o dues xifres separats per un espai en blanc. El programa ha de llegir la seqüència i  Al principi: dir quans números integren la seqüència  Durant la lectura: per cada deu números llegits, escriure en una línia, els deu números, la suma i el producte dels 10 números i també la mitjana.  En arribar el darrer grup de números: o El missatge "Darrer grup de números" o La quantitat de números que integra aquest grup o Llista, suma, producte i mitjana del darrer grup de números Indicacions  El fitxer php rebrà el nom pract1_exer4.php  La crida al programa serà del tipus pract1_exer4.php?filename=nom_arxiu_dades per la qual cosa s'haurà d'emprar la instrucció $filename=$_GET["filename"]; per carregar el nom del fitxer que incorpora la instrucció que carrega la variable $cadena. Un cop carregat aquest nom, es pot incorporar la instrucció al programa mitjançant l'ordre include($filename)1; ambdues instruccions ja formen part de la plantilla i són les primeres del programa principal. El fitxer example.php adjunt carrega un d'aquests fitxers i n'imprimeix el contingut. la crida ha de ser del tipus example.php?filename=data45  Es faciliten diversos arxius de dades amb els noms data40 a data49. Són fitxers de text i podeu obrir-los per comprovar el contingut: una instrucció php. 1 http://www.php.net/manual/es/function.include.php
  • 8. Per a recollir els números un a un de la seqüència s'aconsella fer servir la combinació d'instruccions explode i array_shift.  Per conèixer la longitud d'un array podeu fer servir la funció count($nom_variable);2  S'haurà d'implementar una acció NL() per escriure el salt de línia a la sortida.  S'haurà d'implementar una acció block_10(entsor var1, ...) que rebi com a primer paràmetre la variable sobre la que es fa l'array_shift (si cal en pot rebre més) i escrigui, en una mateixa línia, totes les dades que es sol·licita per cada bloc de dades. Per exemple pel bloc de dades 1 2 3 4 5 6 7 8 9 1 escriuria 1 2 3 4 5 6 7 8 9 1 46 362880 4.6  L'acció NL() es farà servir sempre que es vulgui fer un salt de línia a la sortida des del PHP.  L'acció block_10 s'emprarà cada cop que s'hagi d'escriure les dades corresponents a un bloc de números.  Per escriure un número real amb un nombre concret de decimals cal per servir la instrucció printf3 Avaluació Es valorarà especialment l'aplicació correcta dels esquemes de cerca, recorregut i/o tractament adequats al problema. També es tindrà present el disseny i l'aprofitament adequat de funcions i accions, tant les preceptives per enunciat com aquelles altres que resultin útils i que l'estudiant vulgui desenvolupar voluntàriament. 2 http://www.php.net/manual/es/function.count.php 3 http://materials.cv.uoc.edu/continguts/PID_00149863/web/main/m3/v5_3.html i http://materials.cv.uoc.edu/continguts/PID_00149863/web/main/m7/v2_2.html
  • 9. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//ES" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html lang="ES" dir="ltr" xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Practica 1 - Exercici 4</title> </head> <body> <h3>Practica 1 - Exercici 4</h3> <h3>SOLUCIO</h3> <!-- No oblideu posar el nom --> <div> <?php /* Carrega a la variable filename el nom d'un arxiu de text que conté una instrucció que carrega les dades a la variable $cadena. Les dades carregades són una sèrie de números de dues xifres El programa, ha de llegir tots els números i escriure: Al principi : Quants números hi ha. Durant la lectura : Per cada 10 números llegits escriurà en una línia la llista de números la suma, el producte i la mitjana dels números del bloc En arribar al darrer bloc de números: el missatge "Darrer grup de números" la quantitat de números que integra aquest grup suma, producte i mitjana del darrer grup de números PRACTICA 1 - setembre 2011- gener 2012 autor: */ /************ FUNCTION *************/ function NL() { //new line print "<br />"; } function block_10(&$list, $counter) { //write writes $counter long list numbers and statistics $sume=0; $prod=1; NL(); for($i=0; $i<$counter; $i++) { $n = array_shift($list); print"$n "; $sume += $n; $prod *= $n; } print " ($sume) ($prod) "; printf ("(%.2f)", $sume / $counter); } /*********** PROGRAMA PRINCIPAL ************/ if (isset($_GET["filename"])) { // load data file $filename=$_GET["filename"]; include($filename);
  • 10. $numeros = explode(' ', $cadena); // init variables $quantity = count ($numeros); // block sequence treatment while ($quantity>0) { $counter = min(10, $quantity); if ($counter<10) { NL(); print "Darrer grup de n&uacute;meros"; } block_10($numeros, $counter); $quantity = count ($numeros); } } else { print "Falta el nom de l'arxiu de dades"; NL(); print "la crida és del tipus <b>pract1_exer5.php?filename=<i>nom_d'arxiu</i></b>"; } ?> </div> </body> </html>
  • 11. Exercici 5: Codificació en PHP [30 %] Objectius: Donada una seqüència de dades a l’entrada, aplicar l’esquema adequat per construir un programa en PHP que solucioni un determinat problema. Materials: Mòdul 3: Tractament seqüencial. Guia Bàsica de PHP: mòduls 1 a 4 i mòdul 7. Tasca: Disposem de quatre imatges que representen quatre personatges familiars: mare, pare, noia i noi, en format png i el nom de les quals són les quatre primeres xifres. La tasca plantejada és investigar en una cadena de text l'aparició de les paraules mum, dad, girl i boy, per tal de fer aparèixer a una pàgina web tantes imatges com cops apareix cadascuna de les paraules. Pàgina corresponent a la cadena 1.png 2.png 3.png 4.png 14mumgfj00girltuicdaddshmumuboyhidadjf A la crida del programa es rep, en el paràmetre filename, el nom d'un fitxer que conté una instrucció php del tipus $cadena="14mumgfj00girltuicdaddshmumuboyhidadjf"; la variable $cadena conté la cadena de text on s'ha de localitzar els noms dels personatges. Indicacions  El fitxer php rebrà el nom pract1_exer5.php  La crida al programa serà del tipus pract1_exer5.php?filename=nom_arxiu_dades per tant, s'haurà d'emprar la sentència $filename=$_GET["filename"]; per carregar el nom del fitxer que incorpora la instrucció que carrega la variable $cadena. Un cop carregat aquest nom, es pot incorporar la instrucció al programa
  • 12. mitjançant l'ordre include($filename)4; ambdues instruccions ja formen part de la plantilla i són les primeres del programa principal. El fitxer example.php adjunt carrega un d'aquests fitxers i n'imprimeix el contingut. la crida ha de ser del tipus example.php?filename=data24  Es faciliten diversos arxius de dades amb els noms data50 a data55. Són fitxers de text i podeu obrir-los per comprovar el contingut: una instrucció php.  Com que tots els caràcters van seguits, sense cap separador, la funció explode no és d'aplicació. A les cadenes de text es pot accedir a cadascun dels caràcters individuals que la formen mitjançant el nom de la variable i un número que indica la posició del caràcter dins de la cadena. Si el contingut de $v és "Hola", llavors $v[0] és 'H', $v[1] és 'o', $v[2] és 'l' i $v[3] és 'a'. Dins de les claus es pot emprar una variable entera p.e: for ($i=0; $i<4; $i ++) print $v[$i]."<br />"; S'ha de tenir present que al primer caràcter se li assigna l'índex 0.  PHP facilita la funció strlen($cadena)5; que retorna la longitud en caràcters de la cadena de text $cadena  S'haurà d'implementar una acció NL() per escriure el salt de línia a la sortida.  S'haurà d'implementar el mòdul putImg($image_file) que ha de rebre com a paràmetre el nom d'un fitxer en format png i el posarà a la pantalla. P.e. Si rep com paràmetre oasis, posaria en la pàgina web el fitxer d'imatge osasis.png.  Per tal de localitzar les paraules mum, dad, girl i boy, s'haurà de crear el mòdul detectStarring que rebrà la variable que conté la cadena de text y un número (posició) i retornarà o un 1 si a la posició de la cadena comença la subcadena mum. o un 2 si a la posició de la cadena comença la subcadena dad. o un 3 si a la posició de la cadena comença la subcadena girl. o un 4 si a la posició de la cadena comença la subcadena boy. o un 0 en els altres casos.  PHP facilita la funció substr_compare6($main_str, $str , $offset ,$length) que retorna un 0 si a partir de la posició $offset de la cadena $main_str, coincideixen $length caràcters amb la cadena $str. P.e. substr_compare ("caleidoscopio", "idoia", 4, 3 ) retornaria 0 perquè a partir de la quarta posició de caleidoscopio (recordeu que el primer caràcter està a la posició zero) trobem 3 lletres iguals a les tres primeres de "idoia". AMPLIACIÓ OPCIONAL Es pot crear la function contenida($main_str, $str, $offset) que retorni un 0 si la cadena $str está sin de la cadena $main_str a partir de la posició $ofsset i un -1 altrament. De fet vindria a ser una simplificació de la funció substr_compare que 4 http://www.php.net/manual/es/function.include.php 5 http://es.php.net/manual/es/function.strlen.php 6 http://php.net/manual/es/function.substr-compare.php
  • 13. només serviria per saber si la totalitat d'una cadena petita está situada en una determinada posició d'una cadena més gran. Si es crea aquesta funció, serà contenida i no pas substr_compare la que es faci servir per localitzar les paraules mum, dad, girl i boy. Avaluació Es valorarà especialment l'aplicació correcta dels esquemes de cerca, recorregut i/o tractament adequats al problema. També es tindrà present el disseny i l'aprofitament adequat de funcions i accions, tant les preceptives per enunciat com aquelles altres que resultin útils i que l'estudiant vulgui desenvolupar voluntàriament. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//ES" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html lang="ES" dir="ltr" xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Practica 1 - Exercici 5</title> </head> <body> <h3>Practica 1 - Exercici 5</h3> <h3>Nom de l'estudiant</h3> <!-- No oblideu posar el nom --> <div> <?php /* Carrega a la variable filename el nom d'un arxiu de text que conté una instrucció que carrega les dades a la variable $cadena. El contingut de la variable cadena és una cadena de text en la qual pot aparèixer les subcadenes "mum", "dad", "girl" i "boy". El programa ha de revisar el contingut de la cadena i mostrar una imatge ("1.png", "2.png", "3.png" o "4.png") cada cop que troba en la cadena la subcadena corresponent. PRACTICA 1 - setembre 2011 - gener 2012 autor: */ /*********** PROGRAMA PRINCIPAL ************/ if (isset($_GET["filename"])) { // load data file $filename=$_GET["filename"]; include($filename); // data file contains $cadena assignation $long= strlen($cadena); //$long contains $cadena length $long -=2; // beyond long-2 they are not coincidences
  • 14. for ($i=0; $i<$long; $i++) { $starring = detectStarring($cadena, $i); if ($starring!=0) putImg($starring); } } else { print "Falta el nom de l'arxiu de dades"; NL(); print "la crida és del tipus <b>pract1_exer5.php?filename=<i>nom_d'arxiu</i></b>"; } /************ FUNCTION *************/ function putImg($image_file) { // put the image print "<img src=".$image_file.".png>"; }//de putImg function NL() { // new line print "<br />"; }// de NL function detectStarring($string, $pos) { switch ($string[$pos]) { case 'm': if (substr_compare($string, "mum", $pos, 3)==0) $starring=1; break; case 'd': if (substr_compare($string, "dad", $pos, 3)==0) $starring=2; break; case 'g': if (substr_compare($string, "girl", $pos, 4)==0) $starring=3; break; case 'b': if (substr_compare($string, "boy", $pos, 3)==0) $starring=4; break; default: $starring=0; } return ($starring); }//de detectStarring ?> </div> </body>