Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Fonaments d’Informàtica: Secuencias y Esquemas Algorítmicos, Diapositivas de Informática

teoria de secuencias en codeblocks

Tipo: Diapositivas

2020/2021

Subido el 12/05/2021

albagg2
albagg2 🇪🇸

1 / 14

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Alfredo Vellido : www.cs.upc.edu/~avellido
Fonaments d’Informàtica: 2ºP
Semanas 1-2: Secuencias, esquemas
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe

Vista previa parcial del texto

¡Descarga Fonaments d’Informàtica: Secuencias y Esquemas Algorítmicos y más Diapositivas en PDF de Informática solo en Docsity!

Alfredo Vellido : www.cs.upc.edu/~avellido

Fonaments d’Informàtica: 2ºP

Semanas 1-2: Secuencias, esquemas

En la base de todo: secuencias

  • Concepto abstracto de secuencia (stream): A B C D E F G H I ... (tamaño no necesariamente conocido a priori, puede ser 0)
  • A menudo necesitaremos algoritmos que obtengan resultados para un número indeterminado de datos. Estos datos generalmente se obtienen de un dispositivo de entrada y: - se acceden en secuencia: uno → después → de → otro - Una vez obtenido un elemento no se vuelve a obtener (secuencia como entidad direccional).

Secuencias Las trataremos en función de la información de la que dispongamos:

P.1: Si sabemos el número de elementos (es determinado)

(=> conocemos 1ª y última posición de la secuencia) cout << “quants elements” << endl; cin >> n_elem; int v; for (int i=1; i<=n_elem; i++) { cin >> v; [...] } NOTA: El número de elementos puede ser indeterminado, pero ha de ser finito.

Secuencias Tratamiento en función de la información de la que dispongamos:

P.2: Si sabemos cuál es el elemento final. Ej.: Lectura por teclado de una

secuencia de enteros, que sólo acabará al leerse el valor -1 … int v; cin >> v; while (v != -1) { [...] cin >> v; } NOTA: El número de elementos puede ser indeterminado, pero ha de ser finito.

Esquemas: Recorridos

  • El algoritmo tiene que pasar NECESARIAMENTE por todos los elementos de la secuencia. Normalmente hay que calcular algún tipo de ‘resultado parcial’ relativo a cada elemento de la secuencia, que vendría a ser “el resultado si la secuencia acabase ahí” ...
  • Esquema base (secuencia longitud definida) en pseudo-código: while (!UltimoElemento) { }

Esquemas: Recorridos

  • El algoritmo tiene que pasar NECESARIAMENTE por todos los elementos de la secuencia. Normalmente hay que calcular algún tipo de ‘resultado parcial’ relativo a cada elemento de la secuencia, que vendría a ser “el resultado si la secuencia acabase ahí” ...
  • Esquema base (secuencia longitud indefinida) en pseudo-código: while (!UltimoElemento) { }

Esquemas: Recorridos

  • Ejemplo: Mostrar cuántas veces aparece el carácter ‘x’ en una secuencia de caracteres acabada en ‘.’ introducida por teclado … [...] int main ( ) { char cAct; int num_x=0; cin >> cAct; while (cAct != '.') { if (cAct = = ‘x’) num_x++; cin >> cAct; } cout << “S’han trobat: ” << num_x << “ x.” << endl; } Ahora queremos el % de ‘x’ en vez del número. Hacerlo añadiendo otro subprograma que calcule el % de ‘x’, dado su número.

Esquemas: Búsquedas

  • El algoritmo BUSCA ALGO en la secuencia y DEBE parar tan pronto como lo encuentra.
  • Hay dos estilos típicos: con y sin uso de variable booleana.
  • Esquema base con booleano: <Obtener_1er_Elem> // no siempre while (!UltimoElem && !encontrado) { if () encontrado=true; // con booleano else { } } if (encontrado) // PostratarEncontrado else // PostratarNoEncontrado

Esquemas: Búsquedas

  • Ejemplo 1: Decir si la suma de los n elementos de una secuencia de int es

    = k , donde los valores de n y k se introducen por teclado (Solución alternativa con booleano) int k, n, ele, cont=1, suma = 0; bool menor = true; cout << “quants elem. ”; cin >> n; cout << “limite suma ”; cin >> k; cout << “dame primer elem. ”; cin >> ele; if (ele >= k) menor = false; while (cont<n && menor == true) {suma += ele; if (suma >= k) menor = false; else {cin >> ele; cont++;} } if (menor) suma += ele; // // DIFERENTE POST-TRATAMIENTO if (suma >= k) menor = false; cout << menor << endl << endl;

Esquemas: Búsquedas

  • Ejemplo 1: Decir si la suma de los n elementos de una secuencia de int es

    = k , donde los valores de n y k se introducen por teclado (Solución alternativa con booleano) Y, ¡ojo!, el problema anterior no es realmente una búsqueda, sino un recorrido … La clave es pensar, que estamos hablando de int (enteros), no de números naturales. ¿Por qué esto nos cambia el esquema?