140 likes | 257 Views
Estructures iteratives o repetitives. mentre expressió booleana fer sentències fmentre expressió booleana : mentre s’avalua a cert -> s’executen les sentències si s’avalua a fals -> s’acaba l’execució del mentre conté una variable tal que: - Inicialment té un valor
E N D
Estructures iteratives o repetitives • mentre expressió booleana fer • sentències • fmentre • expressió booleana : • mentre s’avalua a cert -> s’executen les sentències • si s’avalua a fals -> s’acaba l’execució del mentre • conté una variable tal que: • - Inicialment té un valor • - Es modificada per les sentències del mentre
Estructures iteratives o repetitives pernomvariableenteraen [inicirang..firang] fer sentències fper inicirang valor inicial de la variable entera firang valor final de la variable entera Les sentències es repeteixen firang-inicirang vegades
Estructures iteratives o repetitives Exemple: Escriure els números entre 1 i 10 per n en [1..10] fer EscriureEnter(n) fper Pas 1: n val 1 EscriureEnter(1) Pas 2: n val 2 EscriureEnter(2) Pas 3: n val 3 EscriureEnter(3) ... Pas 10: n val 10 EscriureEnter(10)
Estructures iteratives o repetitives pernomvariableenteraen [inicirang..firang] pasincrement fer sentències fper Si no és posa pasincrement, l’increment és 1 Exemple: Escriure els 10 primers múltiples de 3 per n en [3..30] pas +3fer EscriureEnter(n) fper
Estructures iteratives o repetitives Qualsevol estructura per es pot substituir per un mentre Una estructura mentrenomés es pot substituir per un per si - L’expressió consisteix en comparar la variable entera amb un valor n:= 1 mentre n <=10 ferper n en [1..10] fer EscriureEnter(n) EscriureEnter(n) n:= n+1 fmentrefper
Estructura per. Traducció a C per nomvar en [inicirang..firang] fer sentències fper for (nomvar = inicirang; nomvar<= firang; nomvar++;){ sentències }
Estructura per. Traducció a C per k en [a..b] fer for (k = a; k <= b; k = k+1) { sentències sentències fper } Exemples: per k en [20..50] ferfor (k = 20; k <= 50; k = k+1) { EscriureEnter(K) cout<< k; fper } per k en [20..50] pas +2 ferfor (k = 20; k <= 50; k = k+2) { EscriureEnter(K) cout<< k; fper }
Escriure tots els nombres parells entre el 1 i el 20(Múltiples de 2) • Solució: Repetir les sentències • EscriureEnter • k := k +2 (Obtenir el següent parell) • fins que k > 20 (expressió k <= 20) • algorisme parells del 1 al 20 • var k: enterfvar • k := 2 • mentre k <= 20 fer • EscriureEnter(k) • k := k + 2 • fmentre • falgorisme
Escriure tots els nombres parells entre el 1 i el 20(Múltiples de 2) El perrealitza automàticament l’increment k := k +2 des de 2 a 20 (per k en [2.. 20 ]pas +2 fer) algorisme parells del 1 al 20 var k: enterfvar per k en [2.. 20 ]pas +2 fer EscriureEnter(k) fper falgorisme
Escriure parells entre 1 i 20 (En C) /* Programa que llista tots els nombres múltiples de 2 entre 1 i 20 */ #include <stdio.h> #include <stdlib.h> #include <iostream.h> void main (void) { int k; cout << "Llistat dels nombres enters parells entre 1 i 20” << endl; for (k = 1; k<= 20; k= k+2) { cout << k << endl ; } system(“pause”); }
Calcular el factorial d’un enter • Factorial: n! = 1*2*3...*n-2*n-1*n • Solució: Repetir • Obtenir les diferents unitats de n (per i en [1..n]fer) • Multiplicar-les resultat := resultat *i • Algoritme factorial • var n, i, resultat : enter fvar • resultat := 1 • n := LlegirEnter() • si n>0 llavors • per i en [1..n]fer • resultat := resultat *i • fper • EscriureEnter(resultat) • fsi • falgoritme
Calcular el factorial d’un enter (en C) #include <stdio.h> #include <stdlib.h> #include <iostream.h> void main(void) { int n, i, resultado; cout << "Introduzca un numero positivo: " << endl; cin >> n; resultado=1; if (n>1) { for (i=1;i<=n;i++) { resultado*=i; /* resultado = resultado * i; */ } } cout << "El factorial de " << n << " es " << resultado << endl; system("pause"); }
Calcular la suma dels 10 reals que s’entren • Solució: Repetir 10 vegades: • Llegir el real que entren LlegirReal() • Sumar-lo suma := suma + numero • Algoritme suma_llista_10 • var i: enter ; numero,suma: realfvar • suma := 0.0 • per i en [1..10 ]fer • numero := LlegirReal() • suma := suma + numero • fper • EscriureReal(suma) • falgoritme
Calcular la suma dels 10 reals que s’entren (C) /* Este programa lee 10 números y calcula su suma.*/ #include <stdio.h> #include <stdlib.h> #include <iostream.h> void main(void) { float numero_actual, suma=0.0; int i; for (i=0;i<10;i++) { cout << "Introduzca un numero real: "; cin >> numero_actual; cout << endl << endl; suma+=numero_actual; /* Abreviatura de suma=suma+numero_actual */ } cout << "La suma de los numeros introducidos es " << suma << endl; system("pause"); }