ESTRUCTURACION DE ALGORITMOS

14
ESTRUCTURACION DE ALGORITMOS. A. ESTRUCTURAS DE ALGORITMOS. Las estructuras de operación de programas son un grupo de formas de trabajo, que permiten, mediante la manipulación de variables, realizar ciertos procesos específicos que nos lleven a la solución de problemas. I. Algoritmos de Estructura Secuencial. Este tipo de algoritmos se caracteriza por que entre sus instrucciones no existen estructuras condicionales ni repetitivas, se desarrollan línea a línea hasta culminar con su ejecución, gráficamente se observaría de la siguiente manera: II. Algoritmos de Estructura Condicional. Las estructuras selectivas son tres: la sentencia SI –ENTONCES – SINO, SI – ENTONCES – SINO – SI, SELECCIÓN – CASO. La forma como se estructura una condición se puede realizar de dos formas: Condiciones Simples. Son aquellas condiciones que utilizan operadores relacionales. Ejemplos: - (A + 6) > (3 + P) - (40 * P) < 500 - (E > 20) - (3 + (6 + R) * 2) = 60

Transcript of ESTRUCTURACION DE ALGORITMOS

ESTRUCTURACION DE ALGORITMOS.

A. ESTRUCTURAS DE ALGORITMOS.

Las estructuras de operación de programas son un grupo de formas de trabajo, que permiten, mediante la manipulación de variables, realizar ciertos procesos específicos que nos lleven a la solución de problemas.

I. Algoritmos de Estructura Secuencial.

Este tipo de algoritmos se caracteriza por que entre sus instrucciones no

existen estructuras condicionales ni repetitivas, se desarrollan línea a línea

hasta culminar con su ejecución, gráficamente se observaría de la siguiente

manera:

II. Algoritmos de Estructura Condicional.

Las estructuras selectivas son tres: la sentencia SI –ENTONCES – SINO, SI –

ENTONCES – SINO – SI, SELECCIÓN – CASO.

La forma como se estructura una condición se puede realizar de dos formas:

Condiciones Simples.

Son aquellas condiciones que utilizan operadores relacionales.

Ejemplos:

- (A + 6) > (3 + P)

- (40 * P) < 500

- (E > 20)

- (3 + (6 + R) * 2) = 60

Condiciones Compuestas.

Son aquellas condiciones que están compuestas por operadores relacionales y

agrupados a su vez por medio de operadores lógicos.

Ejemplos:

- ((A > C) and (4 > 0)) or (a > 5)

- ((E * 100) > 40) and (((4 * E) < 500) or (8 = B))

- ((E > R) and (W = 6)) or (5 = F)

- ((20 + T) > (20 + R)) or ((40 > W) and (R > 100))

III. Algoritmos de Estructura repetitiva.

Es todos los algoritmos realizados hasta este punto, cada instrucción se ha

ejecutado sólo una vez ya sea en forma secuencias o en forma selectiva. Sin

embargo, con frecuencia, cierto tipo de problemas requieren de la ejecución

reiterada o repetida de un grupo de instrucciones.

Por ejemplo, el programa que califica los exámenes de ingreso a la

Universidad consta básicamente de un grupo de instrucciones que califican sólo

una prueba. Luego, si deseamos procesar todos los exámenes, agregaremos

algunas instrucciones el número de veces que sea necesario para procesar la

totalidad de los exámenes.

Para la ejecución repetida de un conjunto de instrucciones, los lenguajes de

programación ofrecen una variedad de sentencias o códigos, los que se denominan

estructuras repetitivas, estructuras iterativas o simplemente bucles.

Tipos de estructuras repetitivas

En forma indistinta se utiliza estructuras repetitivas, estructura iterativa o

bucle para referirse a la repetición de un proceso un número fijo o variable de

veces.

En el desarrollo de los procesos iterativos se distinguen los siguientes tipos

de bucles.

Bucles variables

Son estructuras repetitivas en las que no se conoce el número de veces que

se ejecutarán las instrucciones que se encuentran dentro del bucle. Por ejemplo, si

se trata se contar el número de dígitos de un número entero positivo no sabemos

cuántos dígitos tendrá el número; consiguientemente no se sabe cuántas veces se

realizara el proceso de contar. Otro ejemplo es el número de clientes que debe

atender un cajero de banco, quien no sabe a priori cuantas personas existen e cola

para ser atendidos.

Bucles fijos

Son estructuras repetitivas en que se conoce a priori el número de veces

que se ejecutaran las instrucciones que se encentran dentro del bucle. Ejemplo si

se trata de ingresar 5 notas a priori se sabe que se debe leer repetidamente 5

notas; consiguientemente el proceso de leer se repetirá 5 veces.

B. LOS DATOS

1. Concepto de datos:

Conjunto de valores que se utiliza en un algoritmo. Los datos son símbolos que se convierten en condiciones, hechos, situaciones o valores. Un dato puede significar un número, una letra, un signo ortográfico o cualquier símbolo que represente una cantidad, una medida, una palabra o una descripción.

2. Procesamiento de la Información

Todo algoritmo debe obedecer a la estructura básica de un sistema, es decir: entrada, proceso y salida.

Entrada: Toma un dato del dispositivo de entrada

Leer (Variable)

Proceso: Pasos necesarios para obtener la solución del problema o la situación planteada es decir procesar los datos que se ha leído.

Salida Devuelve un dato al dispositivo de salida

Imprimir (variable)

Ejemplo: calcular el área de un rectángulo

• Análisis del problema

El cálculo del área del rectángulo se puede dividir en:

• Entrada de datos (altura, base) • Proceso: Cálculo del área (= base x altura) • Salida de datos (base, altura, área)

3. Tipos de datos

Las cosas se definen en la computadora mediante datos, los algoritmos que vamos a diseñar van operar sobre ellos. Los tipos de datos que vamos a manejar son:

Numéricos y carácter (también llamados alfanuméricos), existen además, Los datos de tipo lógicos que solo pueden tener uno de dos valores: verdadero

o falso.

Los datos numéricos pueden ser de varias clases:

Enteros. Enteros largos. De doble precisión. De simple precisión. De coma flotante. Reales.

Cuya definición depende del lenguaje de programación utilizado. Los datos de tipo carácter o alfanuméricos están compuestos por el conjunto finito y ordenado de caracteres que la computadora reconoce:

Caracteres alfabéticos: A, B, C,.......Z; a, b, c,.......z Caracteres numéricos: 0, 1,2,......9 (que no son números) caracteres especiales : +, /, *, ?,%,$, #, !, <, >,ä,¦,{},~,etc.

Sobre un dato alfanumérico no se puede realizar ninguna operación como sumar, restar, etc.

Una clasificación similar es la siguiente:

Existen dos tipos de datos: los simples (sin estructura) y los compuestos (estructurados)

Los tipos de datos simples (sin estructura): a) Numéricos (Entero y Real). b) Lógicos o boolean. c) Carácter. Entre los tipos de datos compuestos se tiene: cadena de caracteres.

a) Datos numéricos. Conjunto de los valores numéricos. Pueden representarse en dos formas:

1. Numérico entero (de punto o coma fijo) es un subconjunto de los números enteros (+ o -).

Ejm: 5 -56 1340 17 -14

Los máximos y mínimos suelen ser: -32768 a 32767

2. Numérico real (punto o coma flotante) es un subconjunto de los números reales (+ o -)

Ejm: 0.08 3.7456 -53.456 3.0

b) Datos Lógicos (o booleanos)

Dato que sólo puede tomar dos valores: true (verdadero o 1) y false (falso o 0). Se usa para representar las alternativas a determinadas condiciones:

Ejm:

Ejm Datos:

Opcion_continuar Verdadero Falso

Condición_de_recepción_de_carta Falso Verdadero

Estado_cancelación_de_factura Verdadero Falso

Mayoria_de_edad Falso Verdadero

Empleado_de_licencia Verdadero Falso

c) Datos carácter

Conjunto finito y ordenado de caracteres que la computadora reconoce. Pueden ser:

Pueden ser: Datos:

Alfabéticos: 'A' 'B' 'c' 'E' 'K' 'a' .... 'z' 'Z'

Numéricos: '0' '1' '2' '3' '4' '5' ... '8' '9'

Especiales: ' * ' ' - ' ' / ' ' + ' ' $ ' '< ' ' # ' '@'

Tabla 5. Datos carácter que la computadora reconoce (códigos ASCII)

Datos Compuestos:

Una cadena de caracteres (cadena o string) sucesión de caracteres, que se encuentran delimitados por apostrofes simples (‘) o dobles (“).

Longitud de una cadena, es el número de caracteres comprendidos entre los separadores o delimitadores.

Ejm: ‘HOLA AMIGOS’ Longitud = 11

Ejm: “MIURA FERNÁNDEZ” Longitud = 15

4. ASIGNACIÓN Y VARIABLE.

Asignación: La asignación consiste, en el paso de valores o resultados a una zona de la memoria. Dicha zona será reconocida con el nombre de la variable que recibe el valor. La asignación se puede clasificar de la siguiente forma:

Simples: Consiste en pasar un valor constate a una variable (a=15) Contador: Consiste en usarla como un verificador del número de veces que se

realiza un proceso (a=a+1) Acumulador: Consiste en usarla como un sumador en un proceso (a=a+b) De trabajo: Donde puede recibir el resultado de una operación matemática

que involucre muchas variables (a=c+b*2/4).

Variable.

Área de memoria en la que se almacena un dato cuyo valor puede cambiar durante el proceso. Toda variable debe tener un nombre que la identifique.

Las variables son espacios de memoria reservado que sirven para guardar los datos que varían o cambian durante la ejecución de un programa.

Para acceder a una variable hacemos uso de palabras o letras que identifique a la variable, a estas palabras o letras se les conoce como identificadores; para asignar un dato a una variable hacemos uso de los dos puntos con igual (:=) y para indicarle al compilador que queremos crear una variable en memoria hacemos uso de la palabra reservada Var.

Se le identifica por los siguientes atributos: El Nombre (o identificador) que se le asigna, El tipo que describe el uso de la variable y El valor de la variable que es la cantidad que tiene asociada en un determinado

momento

Es decir, la variable que representa la edad de una persona se identifica por el nombre Edad; los datos que guardan son de tipo real y su valor en un momento determinado puede ser 25.

Nota: Los nombres de las variables deben ser significativos, y tener relación con el objeto que representan. Así si se desea almacenar pesos, a dicha variable se le asignará el nombre de pesos.

Una variable de un tipo determinado solo puede tomar valores de ese tipo.

Existen dos tipos de variables:

Según el tipo de dato que contienen:

a) NUMERICAS: solo contienen números.

Ejemplos: EDAD = 28

ACUMULACIÓN = 36000 X = -47,2

b) ALFANUMERICAS: pueden contener letras, números y caracteres especiales.

Ejemplos: NOMBRE = “LUIS”

DIRECCION = “Colón 486 c/oliva”

Tipo de variable según su utilización.

Cuando se diseñan algoritmos que incluyen estructuras de control repetitivas, existen ciertas variables que cumplen una función específica en cada iteración del ciclo y se utiliza teniendo en cuenta ciertas reglas que se deben respetar; las más comunes son: las variables contadoras, las variables acumuladoras y las variables bandera.

A continuación los tipos de variables más comunes.

a. CONTADOR

Es una variable a la que se suma constantes y se utiliza para realizar un conteo por lo tanto deben ser de tipo entero. Siempre debe ser inicializado (generalmente el valor inicial del contador es cero). También se puede utilizar para realizar una cuenta regresiva, restándole la constante al contador, es decir que una variable contadora se incrementa (o decrece) en un valor constante en cada iteración del ciclo.

Un ejemplo de este tipo de variables es la variable de control en un ciclo para.

Sintaxis: CONTADOR = CONTADOR + CONSTANTE

Ejemplo: En un colegio se almacena los datos de los alumnos en un archivo. Para cada alumno se graba un registro con los siguientes campos: CODIGO, NOMBRE, DIRECCION, CURSO.

Imprimir la cantidad de alumnos que estudian en el colegio.

o Incógnita: cantidad de alumnos o Datos: archivo con datos de alumnos. o Condiciones: cada alumno tiene un registro

Solución

Inicio CA=0 Leer COD, NOM, DIR, CURSO Mientras not eof CA=CA + 1 Leer COD, NOM, DIR, CURSO Fin mientras

Imprimir “Cantidad de alumnos:”& CA

Fin

Ejemplo. Desarrollar un algoritmo que imprima los números impares en orden descendente que hay entre 1 y 100.

Algoritmo Solución

i: entero

i := 99

mientras (i >=1) hacer

escribir(i) escribir(‘,’) i := i – 2

fin_mientras

b. ACUMULADOR

Es una variable a la que se le suma otra variable y se utiliza para realizar una sucesión de sumas, por lo tanto la variable debe ser de tipo entero o real. Al igual que el contador, el acumulador siempre debe ser inicializado.

Por ejemplo la variable suma es una variable contadora.

Sintaxis: ACUMULADOR = ACUMULADOR + VARIABLE

En este caso suma es una variable acumuladora mientras que la variable i es contadora.

Ejemplo: una empresa comercial tiene grabado los datos de las ventas en un archivo. Por cada venta se graba un registro que contiene: NRO. FACTURA, CLIENTE, FECHA, IMPORTE DE VENTA.

Imprimir el monto total de ventas.

o Incógnita: monto total de ventas o Datos: archivo con datos de venta o Condiciones: cada registro corresponde a una venta.

Solución:

Inicio

TV=0 Leer NROFAC, CLIENTE, FECHA, IMPORTE mientras not eof TV = TV + IMPORTE Leer NROFAC, CLIENTE, FECHA, IMPORTE Fin mientras Imprimir “Monto total de ventas: “, TV, fin

c. BANDERAS

Una variable bandera es utilizada dentro de la condición del ciclo, ya sea sin negar, negada o conectada con una expresión booleana, para determinar cuándo un ciclo se sigue iterando o cuando no. De esta manera una variable bandera debe ser de tipo booleano (es decir que solo admite dos estados posibles: 0 o 1)

Si la bandera es igual a 0, significa que está inactiva o apagado Si la bandera es igual a 1, significa que está activa, encendida o

levantada.

Las utilizaciones más comunes de la bandera son:

a. Saber si el programa ha pasado o no por un punto determinado. b. Terminar un ciclo cuando se produce determinada condición que

modifica el estado de la bandera. c. Ejecutar procesos diferentes según el estado de la bandera.

Sintaxis: BANDERA = VALOR BOOLEANO

Ejemplo: en un hipódromo, se controlan los resultados de las carreras de caballos por computador. Por cada apuesta que se realiza contiene: Nº CARRERA, APOSTADOR, MONTO, CABALLO ELEGIDO.

Hacer un proceso que permita ingresar el nombre del caballo que gano la carrera, e imprima el nombre de los apostadores ganadores, si no hubo ganadores, imprimir un mensaje aclaratorio.

o Incógnita: nombre de los apostadores ganadores o Datos: caballo ganador y registro de cada apostador. o Condiciones: un apostador ganó si el caballo que eligió es el

ganador. No hubo ganadores si ninguno aposto por el caballo ganador.

Solución

Inicio BAN=0 Ingresar CAB_GANADOR Leer NRO_CAB, NOM_APOSTADOR, MONTO, CAB_ELEGIDO Mientras not eof Si CAB_ELEGIDO=CAB_GANADOR Imprimir= “Apostador: “, NOM_APOSTADOR BAN=1 Fin_si Leer NRO_CAB, NOM_APOSTADOR, MONTO, CAB_ELEGIDO Fin mientras Si BAN=0 Imprimir “No hubo ganadores”

Fin_si Fin

Ejemplo. Realizar un programa que lea una serie de números reales y los sume. El programa debe preguntar al usuario cuando desea ingresar un siguiente dato y si el usuario responde que no desea ingresar más datos el programa debe confirmar la respuesta. Si el usuario desea continuar ingresando datos se debe seguir solicitando datos y si el usuario confirma su deseo de salir, el programa debe mostrar la suma de los datos leídos y terminar.

Especificación:

Donde, datos es la colección de n números reales que el usuario ingresa hasta que decide no continuar ingresando datos y suma Î R es la suma de dichos números.

Algoritmo Solución

bandera: booleano suma: real dato: real c: caracter

bandera := verdadero suma := 0.0

mientras (bandera) hacer

escribir( “Ingrese un dato:” ) leer (dato) suma := suma + dato escribir( “Desea continuar ingresando datos (S/N):” ) leer( c ) si (c = ‘N’ | c = ‘n’) entonces

escribir( “Realmente desea salir (S/N):” ) leer( c ) si (c = ‘S’ | c = ‘s’) entonces

bandera := falso

fin_si

fin_si

fin_mientras

escribir( “La suma es:”) escribir( suma )

Vale la pena recordar que una variable del tipo booleano toma valores de verdad y por lo tanto, por sí sola es una expresión lógica. Adicionalmente, la expresión lógica bandera = verdadero es equivalente a la expresión lógica bandera.

d. AUXILIAR

Es una variable que se utiliza para almacenar el contenido de otra variable. El auxiliar debe ser del mismo tipo que la otra variable.

Se utiliza para:

a) Conservar el valor que tiene una variable en determinado momento, debido a que un proceso modificara ese valor.

b) Intercambiaran el contenido de dos variables c) Sintaxis: AUXILIZAR = VARIABLE d) Ejemplo: Ingresar dos números A y B, intercambiar sus valores e

imprimirlos.

Incógnitas: valores de A y B intercambiados Datos: valores originales de A y B. Condiciones: mover el valor de A a B y viceversa

Solución

Inicio Ingresar A, B AUX=A B=AUX Imprimir A, B Fin

5. Reglas para nombrar variables

Los nombres de las variables son identificadores y tradicionalmente los identificadores se han formado con caracteres alfanuméricos (esto es, letras y números) incluyendo el carácter de subrayado y excluyendo los blancos y caracteres no anglosajones (como la ‘ñ’ y las vocales acentuadas).

Otra característica de los identificadores es que no pueden empezar

por número, sólo por letra (o subrayado). En algunas notaciones (y lenguajes de programación), las mayúsculas se consideran como caracteres diferentes de las minúsculas mientras que en otros no se hace así; para simplificar las cosas nuestra notación será insensible a mayúsculas.

Reglas de construcción de los identificadores

– Un identificador debe comenzar por una letra – La primera letra puede ir seguida de:

Letras

Dígitos numéricos Carácter ‘_’

No se permiten espacios en blanco En resumen,

Ejemplos de identificadores válidos: v, aceleración, K, v1, b_n, Pot,... Ejemplos de identificadores no válidos: 1n (empieza por

número), año (incluye un carácter no válido, la ‘ñ’), aceleración (incluye un carácter no válido, la ‘ó’), p v (incluye un espacio en blanco), …