MOPT - Lògica i programacio / Pseudocodi: Solucions Exercicis Pseudocodi
Contingut
Exercicis Seqüencials
1. Escriu un programa que demani al usuari el seu nom, i a continuació escrigui una salutació.
- Anàlisi
- Hem de demanar un nom per teclat i després escriure un missatge de salutació
- Dades d'entrada: nom (cadena)
- Variables: nom (cadena)
- Disseny
- 1. Llegir nom
- 2. Escriure missatge de salutació
Proceso Saludar
Definir nom como Cadena;
Escribir "Diguem el teu nom:";
Leer nom;
Escribir "Hola ",nom;
FinProceso
2. Calcular el perímetre i l'àrea d'un rectangle atesa la base i l'alçada.
- Anàlisi
- Hem de llegir la base i l'alçada del triangle i calcular el perímetre i el àrea
- Dades d'entrada: base(real), alçada(real)
- Informació de sortida: perímetre(real) i àrea(real)
- Variables: base, alçada, perímetre i àrea (real)
- Disseny
- 1. Llegir base i altura
- 2. Calcular perímetre(2*base + 2*alçada)
- 3. Calcular àrea (base * altura
- 4. Mostrar perímetre i àrea
Proceso Rectangle
Definir base,alcada,perimetre,area como Real;
Escribir "Introdueix la base:";
Leer base;
Escribir "Introdueix la alçada:";
Leer alcada;
perimetre <- 2 * base + 2 * alcada;
area <- base * alcada;
Escribir "El perímetre és ",perimetre," y el àrea es ",area;
FinProceso
3. Calcular la hipotenusa d'un triangle rectangle a partir dels seus catets.
- Anàlisi
- Hem de llegir la longitud dels dos catets i calcular la hipotenusa.
- (Teorema de Pitàgores)
- Variables d'entrada: catet1(real), catet2(real)
- Variables de sortida: hipotenusa(real)
- Disseny
- 1. Llegir la longitud dels catets
- 2. Calcular hipotenusa (En un triangle rectangle el quadrat de la hipotenusa és igual a la suma dels quadrats dels catets.)
- Per tant la hipotenusa és igual a l'arrel quadrada de la suma dels quadrats dels catets (funció raiz).
- 3. Mostrar la hipotenusa
Proceso CalcularHipotenusa
Definir catet1,catet2,hipotenusa como Real;
Escribir "Introdueix el catet 1:";
Leer catet1;
Escribir "Introdueix la catet 2:";
Leer catet2;
hipotenusa <- raiz(catet1 ^ 2 + catet2 ^ 2);
Escribir "La hipotenusa és ", hipotenusa;
FinProceso
4. Escriu un algorisme amb pseudocodi que demani dos valors numèrics i mostri la seva suma, resta, divisió i multiplicació.
- Anàlisi
- Hem de llegir dos números, calcular la suma, resta, multiplicació i divisió.
- Dades d'entrada: Els dos números (real)
- Informació de sortida: suma, resta, multiplicació, divisió(real)
- Variables: num1, num2 (Real).
- Considero que les sortides no cal desar-la en variables.
- Disseny
- 1. Llegir els números
- 2. Mostrar suma, resta, multiplicació i divisió
Proceso Calcular
Definir num1,num2 Como Real;
Escribir Sin Saltar "Introdueix el número 1:";
Leer num1;
Escribir Sin Saltar "Introdueix el número 2:";
Leer num2;
Escribir "La suma ", num1+num2;
Escribir "La resta és ", num1-num2;
Escribir "La multiplicació és ", num1*num2;
Escribir "La divisió és ", num1/num2;
FinProceso
5. Feu un algoritme per calcular la mitjana de tres números demanats per teclat.
- Anàlisi
- Hem de llegir tres números i calcular la mitjana. Suma dels tres partits 3.
- Dades d'entrada: els tres números (real)
- Informació de sortida: la mitjana (real)
- Variables: num1,num2,num3, mitjana (Real).
- Disseny
- 1. Llegir els tres números
- 2. Calcular la mitjana: (num1+num2+num3)/3
- .3. Mostrar la mitjana
Proceso CalcularMitjana
Definir num1,num2,num3, mitjana Como Real;
Escribir Sin Saltar "Introdueix el número 1:";
Leer num1;
Escribir Sin Saltar "Introdueix el número 2:";
Leer num2;
Escribir Sin Saltar "Introdueix el número 3:";
Leer num3;
mitjana <- (num1 + num2 + num3) /3;
Escribir "La mitjana és ",mitjana;
FinProceso
6. Realitza un algoritme que rebi una quantitat de minuts i mostri per pantalla a quantes hores i minuts correspon.
- Anàlisi
- Hem de llegir una quantitat de minuts, i calcular quantes hores i minuts són.
- Dades d'entrada: minuts (entero)
- Informació de sortida:hores i minuts (entero)
- Variables: minuts, res_hores, res_minuts (entero).
- Disseny
- 1. Llegir els minuts
- 2. Calcular a quantes hores correspon, divisió sencera entre 60.
- 3. calcular els minuts restants: resta de la divisió entre 60.
- 4. Mostrar hores i minuts
Proceso CalcularHoras
Definir minuts, res_hores, res_min como Entero;
Escribir "Indica la quantitat de minuts:";
Leer minuts;
res_hores<-trunc(minuts / 60);
res_min<-minuts % 60;
Escribir res_hores," horas i ",res_min," minuts.";
FinProceso
7. Un venedor rep un sou base més un 10% extra per comissió de les vendes, el venedor desitja saber quants diners obtindrà per concepte de comissions per les tres vendes que realitza al mes i el total que rebrà al mes prenent en compte el sou base i comissions.
- Anàlisi
- El venedor té un sou base més una comissió del 10% per cada venda.
- Fa tres vendes.
- Dades dentrada: sou base, les tres vendes (real).
- Informació de sortida: comissions i sou total (real).
- Variables: sou_base, venda1, venda2, venda3, comissió(real).
- Disseny
- 1. Llegir sou base
- 2. Llegir les tres vendes
- 3. Calculeu les comissions. Suma del 10% de cada venda.
- 4. Mostra comissió
- 5. Mostra sou total: sou_base+comissió
Proceso CalcularSou
Definir sou_base, venda1, venda2, venda3, comissio como Real;
Escribir "Indica el sou base:";
Leer sou_base;
Escribir "Indica import primera venda 1:";
Leer venda1;
Escribir "Indica import segona venda 2:";
Leer venda2;
Escribir "Indica import tercera venda 3:";
Leer venda3;
comissio<-venda1*0.1+venda2*0.1+venda3*0.1;
Escribir "Comissió per vendes:",comissio;
Escribir "Sou total:", sou_base+comissio;
FinProceso
8. Un alumne vol saber quina serà la seva qualificació final en la matèria d'Algorismes. Aquesta qualificació es compon dels percentatges següents:
- 55% de la mitjana de les tres qualificacions parcials.
- 30% de la qualificació de lexamen final.
- 15% de la qualificació d'un treball final.
- Anàlisi
- Cal llegir les notes parcials, la nota de l'examen final i la nota del treball final.
- Posteriorment es calculen els percentatges i es sumen.
- Dades d'entrada: tres qualificacions parcials, nota examen final, nota treball final (real).
- Informació de sortida: nota final (real).
- Variables: parcial1, parcial2, parcial3, examen, treball, nota (real).
- Disseny
- 1. Llegir les notes parcials, de l'examen final i de la feina.
- 2. Calculem la nota 55% de la mitjana de les notes parcials, més el 30% de la nota de l'examen més 15% de la nota del treball.
- 3. Mostra nota final
Proceso CalcularNota
Definir parcial1,parcial2,parcial3,examen,treball,nota como Real;
Escribir "Indica la nota del parcial 1:";
Leer parcial1;
Escribir "Indica la nota del parcial 2:";
Leer parcial2;
Escribir "Indica la nota del parcial 3:";
Leer parcial3;
Escribir "Indica la nota del examen:";
Leer examen;
Escribir "Indica la nota del treball:";
Leer treball;
nota <- ((parcial1 + parcial2 + parcial3)/3)*0.55 + 0.3*examen + 0.15*treball;
Escribir "Nota final:", nota;
FinProceso
9. Escriu un algoritme amb pseudocodi que demani dos valors numèrics, intercanviï els valors de les variables, i mostri les variables amb els valors intercanviats.
- Anàlisi
- Es demanen el valor de dues variables (el tipus pot ser el que vulguem).
- Cal intercanviar els valors de les variables
- Dades d'entrada: dos números en dues variables (enters).
- Informació de sortida: Les dues variables però amb les dades canviades (enter)
- Variables: num1, num2 (enters).
- Disseny
- 1. Llegir els dos números
- 2. Intercanvio els valors. Necessito una variable auxiliar (aux).
- Assigno "num1" a "aux", "num2" a "num1" i "aux" a "num2"
- 3. Mostra "num1" i "num2"
Proceso IntercanviarVariables
Definir num1,num2,aux como Entero;
Escribir "Introdueix valor de la variable num1:";
Leer num1;
Escribir "Introdueix valor de la variable num2:";
Leer num2;
aux <- num1;
num1 <- num2;
num2 <- aux;
Escribir "Nou valor de num1: ", num1;
Escribir "Nou valor de num2: ", num2;
FinProceso
10. Dissenyar un algorisme que ens digui els diners que tenim (en euros i cèntims) després de demanar-nos quantes monedes tenim de 2e, 1e, 50 cèntims, 20 cèntims o 10 cèntims).
- Anàlisi
- Es demanen la quantitat de monedes que tenim (de 2e, 1e, 50 cèntims, 20 cèntims o 10 cèntims) i calculem els diners que tenim (euros i cèntims)
- Dades d'entrada: monedes de 2e, 1e, 50 cèntims, 20 cèntims o 10 cèntims) (Enteros).
- Informació de sortida: total de diners: euros i cèntims (Enteros)
- Variables: euro2, euro1, cent50, cent20, cent10, total_euros, total_centims (Enteros)
- Disseny
- 1. Llegir el monedes de 2e, 1e, 50 cèntims, 20 cèntims i 10 cèntims.
- 2. Calcular Euros (sumar monedes de 2 euros * 2 + monedes de 1 euro
- 3. Calcular cèntims (monedes de 50c * 50 + moneda de 20c * 20 + moneda de 10c * 10)
- 4. Convertir cèntims a euros (divisió sencera entre 100)
- 5. Mostrar euros i cèntims totals
Proceso CalcularDiners
Definir euro2,euro1,cent50,cent20,cent10 como Entero;
Definir total_euros, total_centims Como Entero;
Escribir Sin Saltar "Monedes de 2 euros:";
Leer euro2;
Escribir Sin Saltar "Monedes de 1 euro:";
Leer euro1;
Escribir Sin Saltar "Monedes de 50 cèntims:";
Leer cent50;
Escribir Sin Saltar "Monedes de 20 cèntims:";
Leer cent20;
Escribir Sin Saltar "Monedes de 10 cèntims:";
Leer cent10;
//2. Calcular Euros (sumar monedes de 2 euros * 2 + monedes de 1 euro
total_euros <- euro2 * 2 + euro1;
//3. Calcular cèntims (monedes de 50c * 50 + monedes de 20c * 20 + monedes de 10c * 10
total_centims <- cent50 * 50 + cent20 * 20 + cent10 * 10;
//4. Convertir cèntims a euros (divisió entera entre 100)
total_euros <- total_euros + trunc(total_centims / 100);
total_centims <- total_centims % 100;
Escribir total_euros," euros i ",total_centims," cèntims.";
FinProceso
Exercicis estructura alternativa
1. Escriu un algorisme que demani un número i digui si és positiu, negatiu o 0.
- Anàlisi
- Hem de demanar un número per teclat, comparar-lo amb 0, i indicar si és igual, major o menor que 0.
- Dades d'entrada: número (enter)
- Informació de sortida: Un missatge de text indicant si el número és igual, major o menor que 0.
- Variables: num (enters)
- Disseny
- 1. Llegir el número
- 2. Si el nombre és igual 0 escriviu "És igual a 0"
- 3. En cas contrari si és més gran que 0 escriure "És més gran que 0"
- 4. En altre cas escriure "És menor que 0"
Proceso CalcularPositiuNegatiuZero
Definir num como Entero;
Escribir "Digue'm el número :";
Leer num;
Si num=0 Entonces
Escribir "És igual a 0";
SiNo
Si num>0 Entonces
Escribir "És positiu";
SiNo
Escribir "És negatiu";
FinSi
FinSi
FinProceso
2. Escriu un algorisme en pseudocodi que demani un nom d'usuari i una contrasenya i si s'ha introduït "pcarbonell" i "pc1673" s'indica "Has entrat al sistema", sinó hi ha un error.
- Anàlisi
- Demanem per teclat nom i contrasenya
- si coincideixen amb les correctes indiquem que s'ha entrat al sistema.
- en cas contrari indiquem que el nom o la clau són incorrectes
- Dades d'entrada: usuari, password (cadena)
- Informació de sortida: Missatges d'encert o error.
- Variables: usuari, password (cadena)
- Disseny
- 1. Llegir l'usuari
- 2. Llegir el password
- 3. Si l'usuari és igual a "pcarbonell" i el password és igual a "pc1673"
- escriure "Has entrat al sistema"
- 4. En cas contrari mostrar el missatge "Usuari/password incorrecte"
Procéso Login
Definir usuari, password como Cadena;
Escribir Sin Saltar "Introdueix l'usuari:";
Leer usuari;
Escribir Sin Saltar "Introdueix el password:";
Leer password;
Si usuari="pcarbonell" Y password="pc1673" Entonces
Escribir "Has entrat al sistema";
SiNo
Escribir "Usuari/password incorrecte";
FinSi
FinProceso
3. Algorisme que demani dos números 'nota' i 'edat' i un caràcter 'sexe' i mostri el missatge 'ACCEPTADA' si la nota és major o igual a cinc, l'edat és més gran o igual a divuit i el sexe és 'F'. En cas que es compleixi el mateix, però el sexe sigui 'M', heu d'imprimir 'POSSIBLE'. Si no es compleixen aquestes condicions cal mostrar 'NO ACCEPTADA'.
- Anàlisi
- Demanem per teclat dos números: nota i edat i un caràcter sexe.
- Es mostra "ACCEPTADA" si nota>=5, edat>=18 i el sexe és femení.
- Si es compleix les mateixes condicions però amb el sexe masculí -> "POSSIBLE" en cas contrari es mostra "NO ACCEPTADA"
- Dades d'entrada: nota, edat (enter) i sexe (cadena)
- Informació de sortida: Missatge d'informació
- Variables: nota, edat (enter) i sexe (cadena)
- Disseny
- 1. Llegir la nota, l'edat i el sexe
- 2. si nota>=5, edat>=18
- 3. si sexe="F" mostrar "ACCEPTADA" -> funció Mayusculas()
- 4. si sexe="M" mostrar "POSSIBLE"
- 5. En cas contrari, mostrar "NO ACCEPTADA"
Proceso ComprovarNotaEdatSexe
Definir nota,edat como Entero;
Definir sexe como Cadena;
Escribir Sin Saltar "Introdueix la nota:";
Leer nota;
Escribir Sin Saltar "Introdueix la edat:";
Leer edat;
Escribir Sin Saltar "Introdueix el sexe (F/M):";
Leer sexe;
Si nota>=5 Y edat>=18 Entonces
Si Mayusculas(sexe)="F" Entonces
Escribir "Acceptada";
SiNo
Si Mayusculas(sexe)="M" Entonces
Escribir "Possible";
SiNo
Escribir "No Acceptada";
FinSi
FinSi
SiNo
Escribir "No Acceptada";
FinSi
FinProceso
4. L'associació de vinicultors té com a política fixar un preu inicial al quilo de raïm, la qual es classifica en tipus A i B, i a més en mides 1 i 2. Quan es realitza la venda del producte, aquesta és d'un sol tipus i mida, es requereix determinar quant rebrà un productor pel raïm que lliura en un embarcament, considerant el següent:
- Si és de tipus A, se li carreguen 20 cèntims al preu inicial quan és de mida 1; i 30 cèntims si és de mida 2.
- Si és de tipus B, es rebaixen 30 cèntims quan és de mida 1, i 50 cèntims quan és de mida 2.
- Realitzeu un algorisme per determinar l'import final.
- Anàlisi
- El preu final del raïm es calcula multiplicant els quilos recollits pel preu de cada quilo. El preu per quilo es calcula a partir del preu inicial sumant o restant una quantitat determinada segons la mida i el tipus del raïm.
- Dades d'entrada: tipus, mida (caràcter), preu inicial en cèntims i quilos (enter)
- Informació de sortida: Preu final en euros (real) o missatge d'error
- Variables: preu_inicial (enter), quilos (enter), mida (caràcter), tipus (caràcter), preu_final (real)
- Disseny
- 1. Llegir preu_inicial, quilos
- 2. Llegir tipus
- 3. Si tipus no és "A" o "B" tornar missatge d'error.
- 4. Llegir la mida
- 5. Si la mida no és "1" o "2" tornar missatge d'error.
- 6. Si tipus és "A" i mida és "1" summe a preu_inicial 20 cèntims.
- 7. Si tipus és "A" i mida és "2" summe a preu_inicial 30 cèntims.
- 8. Si tipus és "B" i grandària és "1" resta a preu_inicial 20 cèntims.
- 9. Si tipus és "B" i grandària és "2" resta a preu_inicial 30 cèntims.
- 10. El preu_final = preu_inicial * quilos
- 11. Mostra preu final/100 euros
Proceso PreuUva
Definir tipus como Caracter;
Definir mida como Caracter;
Definir preu_inicial,preu_final como Real;
Definir quilos como Entero;
Escribir Sin Saltar "Introdueix el preu inicial per quilos del UVA (cèntims):";
Leer preu_inicial;
Escribir Sin Saltar "Introdueix quants quilos has venut:";
Leer quilos;
Escribir Sin Saltar "Introdueix el tipus de lUVA (A/B):";
Leer tipus;
Si Mayusculas(tipus)<>"A" Y Mayusculas(tipus)<>"B" Entonces
Escribir "Tipus incorrecte";
SiNo
Escribir Sin Saltar "Introdueix la mida del UVA (1/2):";
Leer mida;
Si mida<>"1" Y mida<>"2" Entonces
Escribir "Mida incorrecte";
SiNo
Si Mayusculas(tipus)="A" Entonces
Si mida="1" Entonces
preu_inicial<-preu_inicial+20;
SiNo
preu_inicial<-preu_inicial+30;
FinSi
SiNo
Si mida="1" Entonces
preu_inicial<-preu_inicial-20;
SiNo
preu_inicial<-preu_inicial-30;
FinSi
FinSi
preu_final<-preu_inicial * quilos;
Escribir "El guany és",preu_final/100, "euros.";
FinSi
FinSi
FinProceso
Exercicis avaluar expressions lògiques
Avalueu les següents condicions en funció dels valors corresponents de les variables
1. ((num1<num2) O ((num2>1) Y (num1>1)))
a) num1=1 num2=1 False b) num1=1 num2=2 False c) num1=2 num2=1 False d) num1=2 num2=2 True e) num1=0 num2=0 False f) num1=1 num2=0 True
2. (((num1>3)Y(num1<6)) O NO((num2>3)Y(num2<6)))
a) num1=3 num2=3 True b) num1=3 num2=4 False c) num1=4 num2=3 True d) num1=4 num2=4 True
3. (num3>num1 Y num3>num2 O num1>=num2)
a) num1=1 num2=1 num3=1 True b) num1=1 num2=2 num3=3 True c) num1=1 num2=3 num3=2 False d) num1=2 num2=1 num3=3 True e) num1=2 num2=3 num3=1 False f) num1=3 num2=2 num3=1 True g) num1=3 num2=1 num3=2 True
Exercicis avaluar expressions lògiques
Exercicis estructura repetitiva
Para
1. Crea una algorisme amb pseudocodi que demani un número i calculi el seu factorial (El factorial d'un nombre és el producte de tots els enters entre 1 i el mateix nombre i es representa pel nombre seguit d'un signe d'exclamació. Per exemple 5! = 1x2x3x4x5=120)
- Anàlisi
- Necessito acumular les successives multiplicacions, començant per 2 fins al número indicat.
- Dades d'entrada: número per calcular el factorial comptador per in comptant els números des de 2 al nombre.
- Informació de sortida: El resultat del factorial
- Variables: num, comptador (enter), resultat (real)
- Disseny
- 1. Llegir nombre
- 2. Inicialitza variables: resultat = 1
- 3. Per a comptador=2 fins num
- 4. resultat=resultat*comptador
- 5. Mostrar resultat
Proceso Factorial
Definir num,comptador como Entero;
Definir resultat como Real;
resultat <- 1;
Escribir Sin Saltar "Digue'm un número:";
Leer num;
Para comptador<-2 Hasta num Hacer
resultat <- resultat * comptador;
FinPara
Escribir "El resultat és", resultat;
FinProceso
2. Feu un algorisme que imprimeixi tots els números parells entre dos números que se li demanin a l'usuari.
- Anàlisi
- Llegim un nombre. Si és senar, li sumo 1 i ja és parell. Llegim el segon número.
- Escric el número des del primer fins al segon de dos en dos.
- Dades d'entrada: dos números
- Informació de sortida: Els nombres parells que hi ha entre els dos anteriors
- Variables: num, num1, num2 (enter)
- Disseny
- 1. Llegir num1,num2
- 2. Si num1 és senar -> num1=num1+1
- 3. Des de num1 fins a num2 de 2 en 2
- 4. Escriure el número
Proceso NumerosParells
Definir num,num1,num2 Como Entero;
Escribir Sin Saltar "Introdueix el número 1:";
Leer num1;
Escribir Sin Saltar "Introdueix el número 2:";
Leer num2;
Si num1 % 2 = 1 Entonces
num1<-num1+1;
FinSi
Para num<-num1 Hasta num2 Con Paso 2 Hacer
Escribir Sin Saltar num," ";
FinPara
FinProceso
3. Realitzar un algorisme que demani números (es demanarà per teclat la quantitat de números a introduir). El programa ha d'informar de quants números introduïts són més grans que 0, menors que 0 i iguals a 0.
- Anàlisi
- Es demana la quantitat de números que es llegiran. Anem introduint números.
- Hem de comptar els positius, negatius i zeros.
- Dades d'entrada: Quantitat de números, els números.
- Informació de sortida: Quantitat de positius, de negatius i de zeros.
- Variables: quantitat_num,num,cont_positius,cont_negatius,cont_zeros(enters)
- Disseny
- 1. Inicialitzo els comptadors
- 2. Llegir quantitat de números
- 3. Des d'1 fins a quantitat de números
- 4. Llegir num
- 5. Si num> 0-> increment cont_positius
- 6. Si num< 0-> increment cont_negatius
- 7. Si num = 0-> increment cont_zeros.
- 8Mostra cont_postius, cont_negatius, cont_zeros
Proceso ComptarNumerosPositiusNegatiusIZeros
Definir num Como Entero;
Definir quantitat_num,i Como Entero;
Definir cont_negatius,cont_positius,cont_zeros Como Entero;
cont_negatius <- 0;
cont_positius <- 0;
cont_zeros <- 0;
Escribir "Quants números introduiràs?:";
Leer quantitat_num;
Para i<-1 Hasta quantitat_num Hacer
Escribir "Nombre ",i,":" ;
Leer num;
Si num>0 Entonces
cont_positius <- cont_positius + 1;
SiNo
Si num<0 Entonces
cont_negatius <- cont_negatius + 1;
Sino
cont_zeros <- cont_zeros + 1;
FinSi
FinSi
FinPara
Escribir "Números positius:",cont_positius;
Escribir "Números negatius:",cont_negatius;
Escribir "Nombre igual a 0:",cont_zeros;
FinProceso
4. Feu un algorisme que mostri la taula de multiplicar d'un número introduït per teclat.
- Anàlisi
- Llegim el número del que volem mostrar la taula
- Necessitem un comptador per comptar d'1 a 10
- .Hem de repetir 10 vegades -> A cada volta hem de mostrar: el comptador * el número = resultat de la multiplicació
- Dades d'entrada: El número de la taula i un comptador d'1 a 10.
- Informació de sortida: Les 10 operacions de la taula de multiplicació
- Variables: taula,num (enters)
- Disseny
- 1. Llegir taula
- 2. Des de nombre d'1 a 10
- 3. Mostrar num * taula = (num*taula)
Proceso TaulaMultiplicar
Definir num, numTaula Como Entero;
Escribir Sin Saltar "De quin número vols mostrar la taula de multiplicar?:";
Leer numTaula;
Para num<-1 Hasta 10 Hacer
Escribir num," * ", numTaula," = ",num*numTaula;
FinPara
FinProceso
Para niats
1. Fei un algoritme que mostri el següent quadrat d'asteríscos. Per exemple si l'usuari introdueix el valor 5, imprimirà:
* * * * *
* * * * *
* * * * *
* * * * *
* * * * *
Proceso QuadratAstriscos
Definir num, fila, col Como Entero;
Escribir Sin Saltar "De quin número vols fer el quadrat dasteríscos?:";
Leer num;
Para fila<-1 Hasta num Hacer
Para col<-1 Hasta num Hacer
Escribir Sin Saltar "* ";
FinPara
Escribir "";
FinPara
FinProceso
2. Com l'anterior però fent un quadrat buit. Per exemple si l'usuari introdueix el valor 5, imprimirà:
* * * * *
* *
* *
* *
* * * * *
Proceso QuadratBlanc
Definir num, fila, col Como Entero;
Escribir Sin Saltar "De quin número vols fer el quadrat dasteríscos?:";
Leer num;
Para fila<-1 Hasta num Hacer
Para col<-1 Hasta num Hacer
Si (fila = 1 o fila = num o col = 1 o col = num) Entonces
Escribir Sin Saltar "* ";
SiNo
Escribir Sin Saltar " ";
FinSi
FinPara
Escribir "";
FinPara
FinProceso
3. Escriu un programa que llegeixi un número N i mostri per pantalla el següent:
1
1 2
1 2 3
...
1 2 3 ... N
4. Realitzar un programa que mostri el següent dibuix per a un nombre de línies demanat a l'usuari (a l’exemple 5)
*
* *
* * *
* * * *
* * * * *
Proceso TriangleNums
Definir num, fila, col Como Entero;
Escribir Sin Saltar "De quin número vols fer el quadrat dasteríscos?:";
Leer num;
Para fila<-1 Hasta num Hacer
Para col<-1 Hasta fila Hacer
Escribir Sin Saltar "* ";
FinPara
Escribir "";
FinPara
FinProceso
5. Realitzar un programa que mostri el següent dibuix per a un nombre de línies demanat a l'usuari (a l’exemple 5)
* * * * *
* * * *
* * *
* *
*
Proceso TriangleNums
Definir num, fila, col Como Entero;
Escribir Sin Saltar "De quin número vols fer el quadrat dasteríscos?:";
Leer num;
Para fila<-1 Hasta num Hacer
Para col<-num Hasta fila Con Paso -1 Hacer
Escribir Sin Saltar "* ";
FinPara
Escribir "";
FinPara
FinProceso
6. Realitzar un programa que mostri el següent dibuix per a un nombre de línies demanat a l'usuari (a l’exemple 5)
1 2 3 4 5
1 2 3 4
1 2 3
1 2
1
Proceso TriangleNums
Definir num, fila, col Como Entero;
Escribir Sin Saltar "De quin número vols fer el quadrat dasteríscos?:";
Leer num;
Para fila<-num Hasta 1 Con Paso -1 Hacer
Para col<-1 Hasta fila Hacer
Escribir Sin Saltar col," ";
FinPara
Escribir "";
FinPara
FinProceso
7. Realitzar un programa que mostri el següent dibuix per a un nombre de línies demanat a l'usuari (a l’exemple 5)
5 4 3 2 1
4 3 2 1
3 2 1
2 1
1
Proceso TriangleNums
Definir num, fila, col Como Entero;
Escribir Sin Saltar "De quin número vols fer el quadrat dasteríscos?:";
Leer num;
Para fila<-num Hasta 1 Con Paso -1 Hacer
Para col<-fila Hasta 1 Con Paso -1 Hacer
Escribir Sin Saltar col, " ";
FinPara
Escribir "";
FinPara
FinProceso
8. Realitzar un programa que mostri el següent dibuix per a un nombre de línies demanat a l'usuari (a l’exemple 5)
1 1 1 1 1
2 2 2 2
3 3 3
4 4
5
9. Realitzar un programa que mostri el següent dibuix per a un nombre de línies demanat a l'usuari (a l’exemple 5)
5 5 5 5 5
4 4 4 4
3 3 3
2 2
1
10. Realitzar un programa que mostri el següent dibuix per a un nombre de línies demanat a l'usuari (a l’exemple 7)
1 1 1 1 1 1 1
1 2 3 4 5 6
3 3 3 3 3
1 2 3 4
5 5 5
1 2
7
Proceso TriangleNums
Definir num, fila, col Como Entero;
Escribir Sin Saltar "De quin número vols fer el quadrat?:";
Leer num;
Para fila<-1 Hasta num Hacer
Si fila%2 = 1 Entonces
Para col<-1 Hasta num-fila+1 Hacer
Escribir Sin Saltar fila, " ";
FinPara
SiNo
Para col<-1 Hasta num-fila+1 Hacer
Escribir Sin Saltar col, " ";
FinPara
FinSi
Escribir "";
FinPara
FinProceso
Solució amb dos bucles:
Proceso TriangleNums
Definir num, fila, col Como Entero;
Escribir Sin Saltar "De quin número vols fer el quadrat?:";
Leer num;
Para fila<-1 Hasta num Hacer
Para col<-1 Hasta num-fila+1 Hacer
Si fila%2 = 1 Entonces
Escribir Sin Saltar fila, " ";
SiNo
Escribir Sin Saltar col, " ";
FinSi
FinPara
Escribir "";
FinPara
FinProceso
11. Realitzar un programa que mostri el següent dibuix per a un nombre de línies demanat a l'usuari (a l’exemple 7)
7 7 7 7 7 7 7
6 5 4 3 2 1
5 5 5 5 5
4 3 2 1
3 3 3
2 1
1
Proceso TriangleNums
Definir num, fila, col Como Entero;
Escribir Sin Saltar "De quin número vols fer el quadrat?:";
Leer num;
Para fila<-num Hasta 1 Con Paso -1 Hacer
Si fila%2 = 1 Entonces
Para col<-1 Hasta fila Hacer
Escribir Sin Saltar fila, " ";
FinPara
SiNo
Para col<-fila Hasta 1 Con Paso -1 Hacer
Escribir Sin Saltar col, " ";
FinPara
FinSi
Escribir "";
FinPara
FinProceso
Solució amb dos bucles:
Proceso TriangleNums
Definir num, fila, col Como Entero;
Escribir Sin Saltar "De quin número vols fer el quadrat?:";
Leer num;
Para fila<-num Hasta 1 Con Paso -1 Hacer
Para col<-fila Hasta 1 Con Paso -1 Hacer
Si fila%2 = 1 Entonces
Escribir Sin Saltar fila, " ";
SiNo
Escribir Sin Saltar col, " ";
FinSi
FinPara
Escribir "";
FinPara
FinProceso
12. Realitzar un programa que mostri el següent dibuix per a un nombre de línies demanat a l'usuari (a l’exemple 5)
*
* *
* * *
* * * *
* * * * *
13. Realitzar un programa que mostri el següent dibuix per a un nombre de línies demanat a l'usuari (a l’exemple 5)
* * * * *
* * * *
* * *
* *
*
Algun exercici més:
14. Realitzar un programa que mostri el següent dibuix per a un nombre de línies demanat a l'usuari (a l’exemple 5)
* * *
* *
* * *
* *
* * *
15. Realitzar un programa que mostri el següent dibuix per a un nombre de línies demanat a l'usuari.
exemple 5 exemple 6
* * * *
* * * *
* * *
* * * *
* * * *
* *
16. Mostra per pantalla aquesta "representació" a partir de la introducció de d'un número imparell més gran de 3.
Per exemple si num = 7
* * * * * * *
* * A A A * *
* B * A * C *
* B B * C C *
* B * D * C *
* * D D D * *
* * * * * * *
17. Dibuixa un rectangle amb '*' i números, demanant l'alçada (mínim 5 i imparell) i l'amplada (mínim 3). En el exemple
exemple alçada 9 i amplada 7
* * * * * * *
* 2 2 2 2 2 *
* 3 3 3 3 3 *
* 4 4 4 4 4 *
* * * * * * *
* 6 6 6 6 6 *
* 7 7 7 7 7 *
* 8 8 8 8 8 *
* * * * * * *
18. Mostra per pantalla aquest dibuix demanant a parit de la introducció d'un número (mínim 5 i imparell). En el exemple 7
* * * * * * *
* * * * *
* * *
*
* * *
* * * * *
* * * * * * *
19. Mostra per pantalla aquest dibuix demanant a parit de la introducció d'un número (mínim 5 i imparell). En el exemple 7
1 2 3 4 5 6 7
1 2 3 4 5
1 2 3
1
1 2 3
1 2 3 4 5
1 2 3 4 5 6 7
20. Mostra per pantalla aquesta "representació" a partir de la introducció de dos números imparells i es segon més gran que el primer (en el exemple 7 i 9).
* # * # o # * # *
# * # * o * # * #
* # * # o # * # *
o o o o o o o o o
* # * # o # * # *
# * # * o * # * #
* # * # o # * # *
Pas previ:
* # * # * # * # *
# * # * # * # * #
* # * # * # * # *
# * # * # * # * #
* # * # * # * # *
# * # * # * # * #
* # * # * # * # *
Mientras
1. Crea un algoritme amb pseudoci que permeti endevinar un número. L'aplicació genera un número aleatori de l'1 al 100. A continuació va demanant números i va responent si el nombre a endevinar és més gran o més petit que l'introduït, a més dels intents que et queden (tens 10 intents per encertar-ho).
El programa acaba quan s'encerta el número (a més et diu quants intents ho has encertat), si s'arriba al límit d'intents et mostra el número que havia generat.
- Anàlisi
- Hem de generar un nombre aleatori (funció aleatori) de l'1 al 100.
- Necessitem un comptador per comptar els 10 intents. Al principi val 10 i anirà decrementant.
- Mentre no encerti el número i em quedin intents:
- Llegeixo un número
- Ho comparo amb el nombre generat (dic si és més gran o més petit)
- Demano un altre nombre
- Puc acabar el bucle per dues raons: si he endevinat el número (he guanyat) i mostro els intents que he necessitat.
- sinó he perdut, he utilitzat els 10 intents i mostro el número generat.
- Dades d'entrada: número demanat a l'usuari.
- Informació de sortida: Has guanyat i els intents, o has perdut i el número.
- Variables: num_scret, num_ingressat, intents (enters)
- Disseny
- 1. Genero un nombre aleatori de l'1 al 100 (num_secret)
- 2. intents = 10
- 3. Llegir num
- 4. Mentre num<> num_secret i intents>1
- 5. Si num_screto>num -> Escriure "Molt baix"
- 6. Si num_screto<num -> Escriure "Molt alt"
- 7. intents=intents-1
- 8. Escriure intents
- 9. Llegir num
- 10. Si num_secreo=num -> Escriure "Has guanyat", intents
- 11. SiNo -> Escriure "Has perdut, num_secret
Proceso Adivina_Numero
Definir intents,num_secret,num_ingressat Como Entero;
intents <- 10;
num_secret <- Aleatorio(1,100);
Escribir "Endevineu el nombre (d'1 a 100):";
Leer num_ingressat;
Mientras num_secret<>num_ingressat Y intents>1 Hacer
Si num_secret>num_ingressat Entonces
Escribir "Molt baix";
Sino
Escribir "Molt alt";
FinSi
intents <- intents-1;
Escribir "Li queden ",intents," intents:";
Leer num_ingressat;
FinMientras
Si num_secret=num_ingressat Entonces
Escribir "Exacte! Vostè endevino a ",11-intents," intents.";
Sino
Escribir "El nombre era: ",num_secret;
FinSi
FinProceso
2.Algorisme que demani números fins que s'introdueixi un zero. Heu d'imprimir la suma i la mitjana de tots els números introduïts.
- Anàlisi
- Anem demanant números fins a introduir un 0.
- Necessitem un acumulador per anar fent les sumes intermèdies.
- A més necessitem un comptador, per calcular la mitjana (suma/quantitat)
- Dades d'entrada: números, un acumulador per sumar i un comptador
- Informació de sortida: La suma i la mitjana
- Variables:num, suma, cont enters)
- Disseny
- 1. Inicialitzat: suma = 0, cont = 0
- 2. Llegir num
- 3. Mentre num<>0
- 4. Acumul: suma = suma + num
- 5. Conte si num<>0: cont=cont+1
- . 6. Llegir num
- 7. Si cont=0 (No hem introduït cap número)-> mitjana=0
- 8. SiNo -> mitjana=suma/cont;
- 9. Mostrar suma i mitjana
Proceso CalcularSumaMitjana
Definir num Como Entero;
Definir suma,cont como Entero;
Definir mitjana Como Real;
suma <- 0;
cont <-0;
//Amb el mentre si el primer número és 0 no entrarà al bucle
Escribir "Nombre (0 per sortir):"
Leer num;
Mientras num<>0 Hacer
suma <- suma + num;
cont <- cont + 1;
Escribir "Nombre (0 per sortir):";
Leer num;
FinMientras
//Si cont=0 no puc fer la divisió
Si cont>0 Entonces
mitjana <- suma / cont;
SiNo
mitjana <-0;
FinSi
Escribir "Suma:",suma;
Escribir "Mitjana:",mitjana;
FinProceso
3. Crea una aplicació que demani un número i calculi el seu factorial (El factorial de un nombre és el producte de tots els enters entre 1 i el mateix nombre i es representa pel nombre seguit d'un signe d'exclamació.
- Per exemple 5! = 1x2x3x4x5=120
- Anàlisi
- Necessito acumular les successives multiplicacions, començant per 2 fins al número indicat.
- Dades d'entrada: número per calcular el factorial comptador per in comptant els números des de 2 al nombre
- Informació de sortida: El resultat del factorial
- Variables: num, comptador (entero), resultat (real)
- Disseny
- 1. Llegir nombre
- .2. Inicials variables
- comptador = 2
- resultat = 1
- 3. Mentre comptador<=num fer
- 4. resultat=resultat*comptador
- 5. comptador=comptador+1
- . 6. Mostrar resultat
Proceso Factorial
Definir num,comptador Como Entero;
Definir resultat Como Real;
resultat <- 1;
Escribir Sin Saltar "Digue'm un número:";
Leer num;
comptador <- 2;
Mientras comptador<=num Hacer
resultat <- resultat * comptador;
comptador <- comptador + 1;
FinMientras
Escribir "El resultat és ", resultat;
FinProceso
4. Feu una algorisme amb pseudocodi que digui si un número introduït per teclat és primer o no.
- Un nombre primer és aquell que només és divisible entre ell mateix i la unitat.
- Nota: N'hi ha prou amb provar fins a l'arrel quadrada del número per veure si és divisible per algun altre número.
- Anàlisi
- Llegim un número i anem comprovant si és divisible entre 2 fins a l'arrel quadrada del nombre. Si és divisible per algun número no és primer.
- Si no és divisible per cap nombre és primer.
- Per saber si és divisible fem servir l'operador mòdul.
- Dades d'entrada: el número a comprovar si és primer o no
- Informació de sortida: Un missatge dient si és primer o no
- Variables: numero_es_primer (entero), num (entero) comptador des de 2 fins arrel quadrada del num_es_primer, es_primer (lógico)
- Disseny
- 1. Suposo que el nombre és primer -> és_primer<-Verdadero
- 2. Llegir num_ces_primer
- 3. Mentre no final (num < número primer?) i el número primer? no sigui divisible pel num
- 4. Incrementem el num
- 5. Si es_primer -> Mostra "És primer"
- 6. Si no -> Mostra "No és primer"
Proceso EsPrimo
Definir num,div Como Entero;
Escribir Sin Saltar "Introdueix un número per comprovar si és primer:";
Leer num;
div <- 2;
Mientras div<>num Y num % div <> 0 Hacer
div <- div +1;
FinMientras
Si div = num Entonces
Escribir "És Primer";
SiNo
Escribir "No és Primer";
FinSi
FinProceso
Exercicis prova CURS 2024-2025
1. Càlcul de nòmines en una empresa
En una empresa, hi ha tres tipus de treballadors: administratius, operaris i directius. Cada tipus de treballador té una tarifa horària diferent: els administratius cobren 12 € per hora, els operaris 15 € per hora i els directius 25 € per hora. A més, els directius reben un bonus fix de 500 € si treballen més de 160 hores mensuals. També es consideren els dies de baixa durant el mes, aplicant una penalització del 10% al sou final si aquests superen els cinc dies.
Dissenya un programa que llegeixi contínuament el tipus de treballador, el nombre d'hores treballades i els dies de baixa, calculi el sou corresponent i indiqui si s'ha aplicat alguna penalització.
El programa finalitzarà quan s'introdueixi un tipus de treballador no vàlid o bé un valor de sortida especificat.
Proceso CalculNomines
Definir tipus, hores, diesBaixa, sou Como Entero;
Escribir "Introdueix el tipus de treballador (1=Administratiu, 2=Operari, 3=Directiu, 0 per sortir):";
Leer tipus;
Mientras tipus <> 0 Hacer
Si tipus < 1 O tipus > 3 Entonces
Escribir "Tipus no vàlid. Torna a intentar-ho.";
Sino
Escribir "Introdueix el nombre dhores treballades:";
Leer hores;
Escribir "Introdueix el nombre de dies de baixa:";
Leer diesBaixa;
Segun tipus Hacer
1:
sou <- hores * 12;
2:
sou <- hores * 15;
3:
sou <- hores * 25;
Si hores > 160 Entonces
sou <- sou + 500;
FinSi
FinSegun
Si diesBaixa > 5 Entonces
sou <- sou * 0.9;
Escribir "Penalització aplicada per dies de baixa.";
FinSi
Escribir "El sou del treballador és:", sou, "€";
FinSi
Escribir "Introdueix el tipus de treballador (1=Administratiu, 2=Operari, 3=Directiu, 0 per sortir):";
Leer tipus;
FinMientras
FinProceso
2. Control de passatgers en un aeroport
Un aeroport vol gestionar la informació sobre els passatgers dels seus vols, diferenciant entre passatgers nacionals i internacionals. Es tracta de dissenyar un programa que permeti introduir el codi de cada vol, el nombre de passatgers nacionals i internacionals, i que calculi el total de passatgers del vol i el percentatge de passatgers internacionals. A més, el programa ha de ser capaç de determinar quin vol té el percentatge més alt de passatgers internacionals entre tots els registrats.
El programa s'ha de repetir per diversos vols fins que es detecti un codi de vol de sortida especificat.
Proceso ControlPassatgers
Definir codiVol, nacionals, internacionals, total, volMaxInternacionals Como Entero;
Definir percentatgeInternacionals, maxPercentatge Como Real;
maxPercentatge <- 0;
volMaxInternacionals <- 0;
Escribir "Introdueix el codi del vol (0 per acabar):";
Leer codiVol;
Mientras codiVol <> 0 Hacer
Escribir "Introdueix el nombre de passatgers nacionals:";
Leer nacionals;
Escribir "Introdueix el nombre de passatgers internacionals:";
Leer internacionals;
total <- nacionals + internacionals;
Escribir "El vol ", codiVol, " té un total de ", total, " passatgers.";
Si total > 0 Entonces
percentatgeInternacionals <- (internacionals / total) * 100;
Escribir "Percentatge de passatgers internacionals: ", percentatgeInternacionals, "%";
Si percentatgeInternacionals > maxPercentatge Entonces
maxPercentatge <- percentatgeInternacionals;
volMaxInternacionals <- codiVol;
FinSi
Sino
Escribir "El vol no té passatgers.";
FinSi
Escribir "Introdueix el codi del vol (0 per acabar):";
Leer codiVol;
FinMientras
Escribir "El vol amb més percentatge de passatgers internacionals és el vol ", volMaxInternacionals, " amb un ", maxPercentatge, "% de passatgers internacionals.";
FinProceso
3. Seguiment d'atletes en una competició
En una competició d’atletisme, es volen analitzar els resultats de diversos atletes. Cada atleta participa en tres curses i es registra el temps (en segons) de cadascuna. Es necessita un programa que, per a cada atleta, llegeixi el número de dorsal i els temps de les tres curses, calculi la mitjana dels temps i indiqui si ha superat els 10 segons de mitjana o no. A més, el programa ha de mantenir un registre del dorsal de l'atleta amb la millor mitjana i el de l'atleta amb la pitjor mitjana.
La introducció de dades continuarà fins que s'introdueixi un número de dorsal específic per finalitzar.
Proceso SeguimentAtletisme
Definir dorsal, millorDorsal, pitjorDorsal Como Entero;
Definir temps1, temps2, temps3 Como Real;
Definir millorMitjana, pitjorMitjana, mitjana Como Real;
millorMitjana <- 999999;
pitjorMitjana <- 0;
Escribir "Introdueix el dorsal de latleta (-1 per acabar):";
Leer dorsal;
Mientras dorsal <> -1 Hacer
Escribir "Introdueix el temps de la primera cursa:";
Leer temps1;
Escribir "Introdueix el temps de la segona cursa:";
Leer temps2;
Escribir "Introdueix el temps de la tercera cursa:";
Leer temps3;
mitjana <- (temps1 + temps2 + temps3) / 3;
Escribir "La mitjana de temps per latleta amb dorsal ", dorsal, " és: ", mitjana, " segons.";
Si mitjana < millorMitjana Entonces
millorMitjana <- mitjana;
millorDorsal <- dorsal;
FinSi
Si mitjana > pitjorMitjana Entonces
pitjorMitjana <- mitjana;
pitjorDorsal <- dorsal;
FinSi
Si mitjana > 10 Entonces
Escribir "Latleta amb dorsal ", dorsal, " no ha superat els 10 segons.";
Sino
Escribir "Latleta amb dorsal ", dorsal, " ha superat els 10 segons.";
FinSi
Escribir "Introdueix el dorsal de latleta (-1 per acabar):";
Leer dorsal;
FinMientras
Escribir "Latleta amb millor mitjana és el dorsal ", millorDorsal, " amb una mitjana de ", millorMitjana, " segons.";
Escribir "Latleta amb pitjor mitjana és el dorsal ", pitjorDorsal, " amb una mitjana de ", pitjorMitjana, " segons.";
FinProceso
Exercicis Arrays
1. Realitzar un programa que defineixi un vector anomenat "vector_numeros" de 10 enters, a continuació ho inicialitzi amb valors aleatoris (de l'1 al 10) i posteriorment mostri en pantalla cada element del vector juntament amb el seu quadrat i el seu cub.
Proceso QuadratCubVector
Definir vector_numeros Como Entero;
Dimension vector_numeros[10];
Definir index Como Entero;
//Primer recorregut per llegir el vector
Para index<-0 hasta 9 hacer
vector_numeros[index]<-aleatorio(1,10);
FinPara
//Segon recorregut per mostrar el resultat
Para index<-0 hasta 9 hacer
Escribir vector_numeros[index]," ",vector_numeros[index]^2," ",vector_numeros[index]^3;
FinPara
FinProceso
2. Crear un vector de 5 elements de cadenes de caràcters, inicialitza el vector amb dades llegides pel teclat. Copia els elements del vector en un altre vector però en ordre invers, i mostra-ho per la pantalla.
Anàlisi
- Recorro el vector1 i llegeixo els seus elements per teclat. recorro de forma inversa el vector1 i vaig guardant els elements al vector2 (s'inverteixen).
- Recorro el vector2 per mostrar els elements.
- Dades d'entrada: 5 cadenes de caràcters
- Informació de sortida: Les cinc cadena però mostrar donin ordre invers.
- Variables:
- vector1,vector2 (vector de 5 cadenes)
- tam_vector1,tam_vector2(enter)
- indicador1, indicador2 (enter)
Proceso VectorInvers
Definir vector1,vector2 Como Cadenas;
Dimension vector1[5],vector2[5];
Definir indicador1,indicador2 Como Entero;
Definir tam_vector1,tam_vector2 Como Entero;
//Defineixo la mida dels vectors per utilitzar-los en els recorreguts
tam_vector1<-5;
tam_vector2<-5;
//RRecorro el vector1 i llegeixo cada element per teclat
Para indicador1<-0 hasta tam_vector1-1 hacer
Escribir Sin Saltar "Dónam la cadena ",indicador1+1,":";
Leer vector1[indicador1];
FinPara
indicador2<-0;
//Recorro el vector1 des del final al principi
//Cada element el guardo al vector2
Para indicador1<-tam_vector1-1 hasta 0 con paso -1 hacer
vector2[indicador2]<-vector1[indicador1];
indicador2<-indicador2+1;
FinPara
//Recorro el vector2 per mostrar-lo
Para indicador2<-0 hasta tam_vector2-1 hacer
Escribir "La cadena ",indicador2+1,": ",vector2[indicador2];
FinPara
FinProceso
3. Es vol realitzar un programa que llegeixi per teclat les 5 notes obtingudes per un alumne (compreses entre 0 i 10). A continuació indiqui la nota mitjana, la nota més alta que ha tret i la menor.
Anàlisi
- Llegeixo 5 notes (valido que siguin >=0 i <=10). guardant-les en un vector.
- Recorro de nou el vector per acumular les notes, calcular la nota màxima i la nota mínima.
- Finalment calculo la mitjana i mostro els valors.
- Dades d'entrada: 5 notes
- Informació de sortida: Les notes, la nota mitjana, nota màxima i nota mínima.
- Variables:
- notes (vector de 10 enters)
- tam_notes,index(enter)
- nota_mitjana (real), suma, nota_max, nota_min (enter)
Proceso VectorNotes
Definir notes Como Entero;
Dimension notes[5];
Definir tam_notes como Entero;
Definir nota_mitjana Como Real;
Definir suma,nota_max,nota_min, nota como Entero;
Definir index Como Entero;
tam_notes<-5;
Para index<-0 hasta tam_notes-1 hacer
Escribir sin saltar "Introdueix la nota ",index+1,": ";
Leer nota;
Mientras nota<0 o nota>10 Hacer
//Comprovem que sigui un nombre >=0 i <=10
Escribir sin saltar "Nota incorrecte. Introdueix la nota ",index+1,": ";
Leer nota;
FinMientras
notes[index] <- nota;
FinPara
//Suposo que la nota màxima i la mínima és aquesta primera
nota_max<-notes[0];
nota_min<-notes[0];
suma<-0;
Para index<-0 hasta tam_notes-1 hacer
//Acumulo la nota per calcular la mitjana
suma<-suma+notes[index];
//Actualitzo la nota màxima si en trobo una de més gran
Si notes[index]>nota_max Entonces
nota_max<-notes[index];
FinSi
//Actualitzo la nota mínima si en trobo una de més petita
Si notes[index]<nota_min Entonces
nota_min<-notes[index];
FinSi
FinPara
//Calculo la mitjana, tenint en compte la mida del vector
nota_mitjana<-suma/tam_notes;
//Mostro resultats
Escribir "";
Escribir sin Saltar "Notes:";
Para index<-0 hasta tam_notes-1 hacer
Escribir sin Saltar notes[index]," ";
FinPara
Escribir "";
Escribir "Nota mitjana: ",nota_mitjana;
Escribir "Nota màxima: ",nota_max;
Escribir "Nota mínima: ",nota_min;
FinProceso
4. Programa que declari un vector de deu elements enters i demani números per omplir-lo fins que s'ompli el vector o s'introdueixi un número negatiu. Llavors cal imprimir el vector (només els elements introduïts).
Anàlisi
- Recorro el vector i vaig inicialitzant els seus elements. Si introdueixo un número negatiu sortim del bucle. També acabo el bucle si introdueixo tots els elements de vector. El número negatiu em serveix d'indicador de fins a quina posició el vector té elements.
- Recorro fins a la mida del vector o trobi un número negatiu per mostrar els elements del vector.
- Dades d'entrada: Llegeixo nombre positius i els guardo al vector, fins que llegiu un nombre negatiu o llegiu tots els elements del vector.
- Informació de sortida: Els elements (números positius) guardats al vector.
- Variables:
- vector (vector de 10 enters)
- tam_vector,indice,num enter)
Proceso VectorPositiu
Definir vector Como Entero;
Dimension vector[10];
Definir tam_vector,index,num como Entero;
index<-0;
tam_vector<-10;
//Recorro el vector i vaig inicialitzant els seus elements
//No faig servir un para, perquè si introdueixo un nombre negatiu sortim del bucle
//També acabo el bucle si introdueixo tots els elements de vector
//El nombre negatiu em serveix d'indicador que fins a aquesta posició el vector té element
Repetir
Escribir Sin Saltar "Introdueix un número al vector. Número ",index+1;
Leer vector[index];
index<-index+1;
Hasta Que index=tam_vector O vector[index-1]<0;
index<-0;
//Recorro fins a la mida del vector o trobi un nombre negatiu
Escribir "Elements del vector";
Mientras index<tam_vector-1 Y vector[index]>=0 Hacer
Escribir sin saltar vector[index]," ";
index<-index+1;
FinMientras
FinProceso
5.Fer un programa que inicialitzi un vector de números amb valors aleatoris, i posterior ordeneu els elements de menor a major.
Anàlisi
- Inicialitzo el vector amb valors aleatoris. Vaig recorrent el vector e intercanvio els valors de dos elements consecutius si no estan ordenats.
- Cada vegada que faig un intercanvi ho compatibilitzo, aquest procés ho repeteixo fins que no hagi fet cap canvi, el vector està ordenat.
- Dades d'entrada: Res
- Informació de sortida: Números del vector ordenat.
- Variables:
- vector (vector de 10 enters)
- tam_vector,index,aux,canvis (enter)
Proceso OrdenarVector
Definir vector Como Entero;
Dimension vector[10];
Definir canvis,aux Como Entero;
Definir index Como Entero;
Definir tam_vector Como Entero;
tam_vector<-10;
//Inicialitzo el vector amb valors aleatoris
Para index<-0 hasta tam_vector-1 hacer
vector[index]<-aleatorio(1,10);
FinPara
//Repetiré l'ordenació fins que no hagi canviat cap número
Repetir
canvis<-0;
//Recorre fins a l'antepenúltim
//Intercanvio els valors de dos elements consecutius si no estan ordenats
Para index<-0 hasta tam_vector-2 Hacer
Si vector[index]>vector[index+1] Entonces
aux<-vector[index];
vector[index]<-vector[index+1];
vector[index+1]<-aux;
canvis<-canvis+1;
FinSi
FinPara
Hasta Que canvis=0;
//Recorro el vector ordenat
Para index<-0 hasta tam_vector-1 Hacer
Escribir Sin Saltar vector[index]," ";
FinPara
FinProceso
6. Crea un programa que demani un número de mes a l'usuari (per exemple, el 4) i indiqui quants dies té (per exemple, 30) i el nom del mes.
Has de fer servir un vector. Per simplificar-ho suposarem que el febrer té 28 dies.
Anàlisi
- Guardo en un vector de 12 posicions els dies corresponents a cada mes.
- De la mateixa manera guardo en un altre vector els noms dels mesos
- Llegeixo el número d'un mes (Comprovo que sigui entre 1 a 12) i faig coincidir el número del mes amb l'índex dels vectors.
- Dades d'entrada: Número del mes
- Informació de sortida: Dies i nom del mes.
- Variables:
- dies (vector de 12 enters)
- nom_mes (vector de 12 cadenes),
- mes (enter)
Proceso DiesDelMes
Definir dies Como Entero;
Dimension dies[12];
Definir nom_mes Como Caracter;
Dimension nom_mes[12];
Definir mes como Entero;
dies[0]<-31;
dies[1]<-28;
dies[2]<-31;
dies[3]<-30;
dies[4]<-31;
dies[5]<-30;
dies[6]<-31;
dies[7]<-31;
dies[8]<-30;
dies[9]<-31;
dies[10]<-30;
dies[11]<-31;
nom_mes[0]<-"Gener";
nom_mes[1]<-"Febrer";
nom_mes[2]<-"Març";
nom_mes[3]<-"Abril";
nom_mes[4]<-"Maig";
nom_mes[5]<-"Juny";
nom_mes[6]<-"Juliol";
nom_mes[7]<-"Agost";
nom_mes[8]<-"Setembre";
nom_mes[9]<-"Octubre";
nom_mes[10]<-"Novembre";
nom_mes[11]<-"Desembre";
Escribir Sin Saltar "Introdueix un mes (1-12):";
Leer mes;
Mientras mes < 1 o mes > 12 Hacer
Escribir "Error: mes incorrecte.";
Escribir Sin Saltar "Introdueix un mes (1-12):";
Leer mes;
FinMientras
Escribir "El mes de ",nom_mes[mes-1]," té ",dies[mes-1]," dies.";
FinProceso
7. Programa que declari tres vectors 'vector1', 'vector2' i 'vector3' de cinc enters cadascun, demaneu valors per a 'vector1' i 'vector2' i calculeu vector3=vector1+vector2.
Anàlisi
- Omple els elements de dos vectors. Posteriorment els recorro per sumar els valors i desar-lo en un tercer vector.
- Dades d'entrada: Números per al primer vector, números per al segon vector
- Informació de sortida: Els números del tercer vector, que és la suma dels anteriors
- Variables:
- vector1,vector2,vector3 (vectors de 5 enters),
- índex, tam_vector (enter)
Proceso SumarVectors
Definir vector1,vector2,vector3 Como Entero;
Dimension vector1[5],vector2[5],vector3[5];
Definir tam_vector como Entero;
tam_vector<-5;
Definir index Como Entero;
Para index<-0 hasta tam_vector-1 Hacer
Escribir Sin Saltar "Introdueix lelement ",index+1," del vector1:";
Leer vector1[index];
FinPara
Para index<-0 hasta tam_vector-1 Hacer
Escribir sin Saltar "Introdueix lelement ",index+1," del vector2:";
Leer vector2[index];
FinPara
Para index<-0 hasta tam_vector-1 Hacer
vector3[index]<-vector1[index]+vector2[index];
FinPara
Escribir "La suma dels vectors és:";
Para index<-0 hasta tam_vector-1 Hacer
Escribir sin Saltar vector3[index]," ";
FinPara
FinProceso
8. Volem desar els noms i les edats dels alumnes de curs.
- Feu un programa que introdueixi el nom i l'edat de cada alumne.
- El procés de lectura de dades acabarà quan s'introdueixi com a nom un asterisc (*)
- En finalitzar es mostrarà les dades següents:
- Tots els alumnes majors d'edat.
- Els alumnes més grans (els que tenen més edat)
Anàlisi
- Inicialitzo els vectors fins que introduïu un "*" o arribi a final del vector.
- El * em serveix per indicar el final del vector.
- Faig un recorregut per mostrar els alumnes majors d'edat.
- Faig un recorregut (fins a trobar un * o arriba al final) per calcular l'edat màxima. A continuació recorro els arrays, i mostro el nom dels alumnes amb més edat.
- Dades d'entrada: Nom i edat dels alumnes fins a ficar *.
- Informació de sortida: Els alumnes majors d'edat, i els alumnes més grans
- Variables:
- edat (vector de 30 enters), nom (vector de 30 cadenes)
- index, tam_vector, edat_max (enter)
Proceso InformacioAlumnos
Definir edats, numAlum Como Entero;
Dimension edats[30];
Definir noms, nom Como Caracter;
Dimension noms[30];
Definir edat_max como Entero;
Definir index,tam_vector como Entero;
index<-0;
tam_vector<-30;
//Inicialitzo els vectors fins que introdueixi un "*" o arribi a final del vector
//El * em serveix per indicar el final del vector
Escribir Sin Saltar "Diguem el nom dun alumne:";
Leer nom;
Mientras nom <>"*" Y index < tam_vector Hacer
noms[index] <- nom;
Escribir sin saltar "Diguem la seva edat:";
Leer edats[index];
index<-index+1;
Escribir Sin Saltar "Diguem el nom dun alumne:";
Leer nom;
FinMientras
numAlum <- index;
index<-0;
//Calcular la edat màxima
//El recorrido es hasta que no encuentre un * y no hayamos llegado al final del vector
edat_max<-edats[0];
Mientras index < numAlum Hacer
Si edats[index]>edat_max Entonces
edat_max<-edats[index];
FinSi
index<-index+1;
FinMientras
// Alumnes majors d'edat
index<-0;
Escribir "Alumnes majors dedat";
Escribir "=======================";
Mientras index < numAlum Hacer
Si edats[index]>=18 Entonces
Escribir noms[index];
FinSi
index<-index+1;
FinMientras
// Alumnes majors
index<-0;
Escribir "Alumnes majors";
Escribir "===============";
Mientras index<numAlum Hacer
Si edats[index]=edat_max Entonces
Escribir noms[index];
FinSi
index<-index+1;
FinMientras
FinProceso
Proceso InformacioAlumnos
Definir edats Como Entero;
Dimension edats[30];
Definir noms Como Caracter;
Dimension noms[30];
Definir edat_max como Entero;
Definir index,tam_vector como Entero;
index<-0;
tam_vector<-30;
//Inicialitzo els vectors fins que introdueixi un "*" o arribi a final del vector
//El * em serveix per indicar el final del vector
Repetir
Escribir Sin Saltar "Digue'm el nom d'un alumne:";
Leer noms[index];
Si noms[index]<>"*" Entonces
Escribir sin saltar "Digue'm la seva edat:";
Leer edats[index];
FinSi
index<-index+1;
Hasta Que noms[index-1]="*" o index=tam_vector;
index<-0;
//Calcular la edat màxima
//El recorrido es hasta que no encuentre un * y no hayamos llegado al final del vector
edat_max<-edats[0];
Mientras index<tam_vector Y noms[index]<>"*" Hacer
Si edats[index]>edat_max Entonces
edat_max<-edats[index];
FinSi
index<-index+1;
FinMientras
// Alumnes majors d'edat
index<-0;
Escribir "Alumnes majors d'edat";
Escribir "=======================";
Mientras index<tam_vector Y noms[index]<>"*" Hacer
Si edats[index]>=18 Entonces
Escribir noms[index];
FinSi
index<-index+1;
FinMientras
// Alumnes majors
index<-0;
Escribir "Alumnes majors";
Escribir "===============";
Mientras index<tam_vector Y noms[index]<>"*" Hacer
Si edats[index]=edat_max Entonces
Escribir noms[index];
FinSi
index<-index+1;
FinMientras
FinProceso
9. Volem guardar la temperatura mínima i màxima de 5 dies.
- Realitza un programa que proporcioni la següent informació:
- La temperatura mitjana de cada dia
- Els dies amb menys temperatura
- Es llegeix una temperatura per teclat i es mostren els dies la temperatura dels quals màxima coincideix amb ella.Si no hi ha cap dia es mostra un missatge informatiu.
Anàlisi
- Recorro la taula llegint per a cada dia la temperatura màxima i mínima.
- Recorro la taula per mostrar la temperatura mitjana de cada dia.
- Recorro la taula, per calcular la temperatura mínima, i torno a recórrer per mostrar els dies amb aquesta temperatura.
- Per últim demano una temperatura i recorro la taula per mostrar el dia del qual temperatura màxima és igual a la temperatura indicada, o un missatge dient que no hi ha dia amb aquesta temperatura.
- Dades d'entrada: Al cap de cinc dies introduïm temperatura màxima i mínima. I al final introduïm una temperatura per cercar els dies amb temperatura màxima.
- Informació de sortida: La temperatura mitjana de cada dia, els dies amb temperatura mínima, els dies amb temperatures màxima la indicada per teclat o un missatge informant que no hi ha dies amb aquesta temperatura màxima.
- Variables:
- temperatura (taula de 5 x 2 enters)
- existeix_temperatura (logico)
- índex, cant_dies (enter)
- temp_max, temp_min (enter)
Proceso ExTemperatures
Definir temperatures Como Real;
Dimension temperatures[5,2];
Definir existeix_temperatura Como Logico;
Definir index,cant_dies como Entero;
Definir temp_max, temp_min como Real;
cant_dies<-5;
//Recorregut per emplenar la taula (5 dies amb temp mínima i màxima)
Para index<-0 Hasta cant_dies-1 Hacer
Escribir Sin Saltar "Dia ",(index+1),". Temperatura mínima:";
Leer temperatures[index,0];
Escribir Sin Saltar "Dia ",(index+1),". Temperatura màxima:";
Leer temperatures[index,1];
FinPara
//Mostrar temperatura mitjana
Escribir "Temperatures mitjanes";
Escribir "===================";
Para index<-0 Hasta cant_dies-1 Hacer
Escribir "Dia ",(index+1),". Temperatura mitjana:",(temperatures[index,0]+temperatures[index,1])/2;
FinPara
//Calcular temperatura mínima més petita
temp_min<-temperatures[0,0];
Para index<-0 Hasta cant_dies-1 Hacer
Si temperatures[index,0]<temp_min Entonces
temp_min<-temperatures[index,0];
FinSi
FinPara
//Mostrar els dies amb menys temperatura
Escribir "Dies amb menys temperatura";
Escribir "==========================";
Para index<-0 Hasta cant_dies-1 Hacer
Si temperatures[index,0]=temp_min Entonces
Escribir "Dia ",(index+1);
FinSi
FinPara
//Dies amb temperatura màxima
existeix_temperatura<-Falso;
Escribir "Dies amb temperatura màxima";
Escribir "===========================";
Escribir sin saltar "Introdueix una temperatura:";
Leer temp_max;
Para index<-0 Hasta cant_dies-1 Hacer
Si temperatures[index,1]=temp_max Entonces
Escribir "Dia ",(index+1);
existeix_temperatura<-Verdadero;
FinSi
FinPara
Si no existeix_temperatura Entonces
Escribir "No hi ha cap dia amb aquesta temperatura.";
FinSi
FinProceso
10. Dissenyar l'algorisme corresponent a un programa, que:
- Crea una taula bidimensional de longitud 5x5 i nom 'matriu'.
- Carrega la taula amb valors numèrics enters.
- Suma tots els elements de cada fila i tots els elements de cada columna visualitzant els resultats en pantalla.
Anàlisi
- Recorro la taula (amb dues per) i vaig llegint els elements de cada fila i columna.
- Recorro la taula per files i columnes i vaig acumulant el valor dels elements de cada columna.
- Recorro la taula per columnes i files i vaig acumulant el valor dels elements de cada fila.
- Dades dentrada: Els elements de la taula.
- Informació de sortida: La suma per cada columna, i la suma per cada fila
- Variables:
- matriu (taula de 5 x 5 enter)
- fila, col, num_files, num_cols, suma (enter)
Proceso Tabla
Definir matriz Como Entero;
Dimension matriz[5,5];
Definir fila,col como Entero;
Definir num_files, num_cols Como Entero;
Definir suma como Entero;
num_files<-5;
num_cols<-5;
Para fila<-0 hasta num_files-1 Hacer
Para col<-0 hasta num_cols-1 Hacer
Escribir Sin Saltar "Introduïu el número de la fila ",fila+1," i columna ",col+1,":";
Leer matriz[fila,col];
FinPara
FinPara
//Suma les files
Para fila<-0 hasta num_files-1 Hacer
suma<-0;
Para col<-0 hasta num_cols-1 Hacer
suma<-suma+ matriz[fila,col];
FinPara
Escribir "La suma dels elements de la fila ",fila+1," és ",suma;
FinPara
//Suma les columnes
Para col<-0 hasta num_cols-1 Hacer
suma<-0;
Para fila<-0 hasta num_files-1 Hacer
suma<-suma+ matriz[fila,col];
FinPara
Escribir "La suma dels elements de la columna ",col+1," és ",suma;
FinPara
FinProceso
11. Dissenyar l'algorisme corresponent a un programa, que:
- Crea una taula bidimensional de longitud 5x5 i nom 'diagonal'.
- Carrega la taula de manera que els components pertanyents a les diagonals de la matriu prenen el valor 1 i la resta el valor 0.
- Mostra el contingut de la taula en pantalla.
Anàlisi
- Recorro la taula: si l'índex de fila = índex de columna (diagonal principal) o índex de fila = nombre de files - 1 - índex de columnes (l'altra diagonal) guardo un 1 sinó guardo un 0.
- Recorro la taula per mostrar-la.
- Dades d'entrada: Res
- Informació de sortida: Els valors de la taula
- Variables:
- matriu (taula de 5 x 5 enter)
- fila, col, num_files, num_cols (enter)
Proceso Diagonal
Definir matriz Como Entero;
Dimension matriz[5,5];
Definir fila,col como Entero;
Definir num_files, num_cols Como Entero;
Definir suma como Entero;
num_files<-5;
num_cols<-5;
//Recorro la taula
Para fila<-0 hasta num_files-1 Hacer
Para col<-0 hasta num_cols-1 Hacer
//Si estic en alguna diagonal inicialitzo a 1
Si fila=col o fila=(num_files-1)-col Entonces
matriz[fila,col]<-1;
//No estic en diagonal, inicialitzo a 0
SiNo
matriz[fila,col]<-0;
FinSi
FinPara
FinPara
//Recorro per mostrar la taula
Para fila<-0 hasta num_files-1 Hacer
Para col<-0 hasta num_cols-1 Hacer
Escribir Sin Saltar matriz[fila,col];
FinPara
Escribir "";
FinPara
FinProceso
12. Dissenyar l'algorisme corresponent a un programa, que:
- Crea una taula bidimensional de longitud 5x15 i nom 'marc'.
- Carrega la taula amb dos únics valors 0 i 1, on el valor un ocuparà les posicions o elements que delimiten la taula, és a dir, les més externes, mentre que la resta dels elements contindran el valor 0.
- Visualitza el contingut de la matriu a la pantalla.
Anàlisi
- Recorro la taula: si l'índex de fila = 0 (extrem esquerre)
- o índex de fila = nombre de files -1 (extrem dret)
- o índex de columnes = 0 (extrem superior)
- o índex de columnes = de columnes columnes -1 (extrem inferior)
- inicialitzo a 1, sinó inicialitzo a 0.
- Recorro la taula per files i columnes per mostrar els valors.
- Dades d'entrada: Res
- Informació de sortida: Els valors de la taula
- Variables:
- matriu (taula de 5 x 5 enter)
- fila, col, num_files, num_cols (enter)
Proceso CostatExtern
Definir matriz Como Entero;
Dimension matriz[5,15];
Definir num_files,num_cols como Entero;
Definir fila,col como Entero;
num_files<-5;
num_cols<-15;
Para fila<-0 hasta num_files-1 Hacer
Para col<-0 hasta num_cols-1 Hacer
//Si estic a l'extrem esquerre, dret, superior o inferior
Si fila=0 o fila=num_files-1 o col=0 o col= num_cols-1 Entonces
//Inicialitzo a 1
matriz[fila,col]<-1;
SiNo
//SiNo inicialitzo a 0
matriz[fila,col]<-0;
FinSi
FinPara
FinPara
//Recorro per mostrar la taula
Para fila<-0 hasta num_files-1 Hacer
Para col<-0 hasta num_cols-1 Hacer
Escribir Sin Saltar matriz[fila,col];
FinPara
Escribir "";
FinPara
FinProceso