Download Ejemplo 3. - AlgPooISandyrc

Document related concepts
no text concepts found
Transcript
TALLER 2
PRIMITIVAS ALGORÍTMICAS Y MÉTODOS DE
REPRESENTACIÓN DE ALGORITMOS
DIVINA EPIAYU URIANA
DIANNYS DAYANA MERCADO
LUIS JOSE PICHON
SANDY ROMERO CUELLO
UNIVERSIDAD DE LA GUAJIRA
FACULTADDE INGENIERIA
INGENIERIA DE SISTEMAS
SEMESTRE I
RIOHACHA LA GUAJIRA
2012
1. Que es una primitiva algorítmica
• Lea: Esta primitiva es usada para capturar los datos que el usuario
quiere asignar a las variables.
Ejemplos.
Lea x
Hace que se interrumpa la ejecución del algoritmo y que el usuario digite
un valor de cualquier tipo que será asignado a la variable x.
Generalmente se acompaña la captura de algún mensaje que indica al
usuario que objetivo tiene la captura. Por ejemplo:
Lea "mensaje". x
• Escriba: Primitiva usada para mostrarle resultados al usuario del
programa (cuando nos refiramos a algoritmo lo estamos haciendo
implícitamente a un programa ya que el objetivo final de hacer un
algoritmo es pasarlo a un programa traduciendo las primitivas en los
comandos propios del lenguaje usado).
Por ejemplo:
Escriba "mensaje" + x
Hace que se imprima el mensaje que se encuentra entre comillas
concatenando con el contenido de la variable x. En dBase hay que tener
cuidado con esta instrucción, ya que no es posible imprimir dos
variables de diferente tipo, por consiguiente hay que convertirlas al
mismo tipo para que no haya problema en la ejecución del programa.
• Si condicional: Instrucción utilizada para obligar el flujo del algoritmo a
efectuar una de dos acciones, dependiendo si la condición es verdadera
o falsa.
Ejemplo:
* ALGORITMO 1
Inicio
Lea x
┌─ Si int (x/2) * 2 = x entonces
│
│
│
Escriba x "es par"
Sino
Escriba x "es impar"
└─ Fsi
En este algoritmo el usuario le da un valor cualquiera a x,
posteriormente se ejecuta una condición en la cual si la parte entera de
x entre dos, multiplicada por dos es igual a x se concluye que x, el
número leído, es par; sino, es decir, si la condición es falsa entonces se
escribirá que x, el valor de x, es impar. Recuerde que cuando se escribe
un mensaje si este se encuentre sin comillas entonces se escribe es el
valor de la variable. Por otro lado int ( ) es una función de dBase y
muchos otros lenguajes que trunca un número decimal eliminándole la
fracción decimal y dejando su parte entera.
• Ciclo repetitivo Mientras que: Esta primitiva es usada para lograr que
un conjunto de instrucciones se ejecuten repetidamente mientras que
una condición, evaluada al principio y cada vez que se ejecuten las
instrucciones, sea verdadera.
Ejemplo:
* ALGORITMO 2
Inicio
Suma = 0
x=0
┌─ Mq x <= 100 Haga
│
┌─ Si int (x/2) * 2 = x Entonces
│
│
│
└─ Fsi
│
Suma = Suma + x
x=x+1
└─ Fmq
Escriba "La suma es:" + Suma
Este algoritmo inicializa una variable x igual a 0 y posteriormente evalúa
si x es menor o igual a 100, en caso de ser cierta la condición, se
ejecutan las instrucciones que se encuentran entre el Mq...Fmq, en este
ejemplo se evalúa si x es par, si es cierto se incrementa la variable
Suma en el valor de x; simplemente no se hace nada; posteriormente se
incrementa x en uno. Al encontrar la instrucción Fmq el flujo del
programa se devuelve al Mq a evaluar nuevamente la condición si x es
menor o igual a 100. Nótese que el punto clave en este algoritmo está
en la expresión x = x + 1, ya que se esta expresión no se ejecuta el
programa se quedará en un ciclo infinito, lo que conocemos como un
LOOP; al incrementar esta variable va a llegar un momento que sea
mayor que 100 lo que hará que al evaluar la condición Mq x <= 100
haga, esta sea falsa por consiguiente la siguiente instrucción que se
ejecute sea la que se encuentra después del Fmq. En últimas este
algoritmo suma los primeros cincuenta (50) números pares.
En resumen las primitivas algorítmicas pueden combinarse de cualquier
manera, de forma tal, que pueden lograrse todos los objetivos
deseados.
1.4. EJERCICIOS PRACTICOS.
• Haga un algoritmo que lea dos variables numéricas y escriba cual es la
mayor.
* ALGORITMO 3
Inicio
Lea x, y
┌─ Si x > y Entonces
│
│
Escriba x "es el mayor"
Sino
│
┌─ Si y > x Entonces
│
│
│
│ Sino
│
│
│
└─ Fsi
Escriba y "es el mayor"
Escriba "son iguales"
└─ Fsi
• Haga un algoritmo que sume los primeros 100 números múltiplos de 3.
* ALGORITMO 4
Inicio
Suma = 0
Cont = 1
x=3
┌─ Mq Cont <= 100 Haga
│
Suma = Suma + x
│
x=x+1
│
Cont = Cont + 1
└─ Fmq
Escriba "La suma es: " + Suma
Usted puede darse cuenta que este algoritmo podría hacer lo mismo
que el algoritmo 2 pero la lógica utilizada es completamente diferente, lo
cual nos hace ver que hay muchas formas de hacer lo mismo por medio
de diferentes algoritmos.
• Hacer un algoritmo que lea un número no definido de números y que
cuando estos se acaben diga cual es el mayor y cual es el menor. Para
hacer este algoritmo se debe primero definir cual va a ser la condición
que haga que no se lean más números, para efectos de este ejercicio
vamos a escoger que la condición de finalización va a ser el cero, esto
es cuando se lea el número cero (0) significa que no van a leerse más
número. Un punto clave en el algoritmo es también elegir cual va a ser
el menor número leído.
* ALGORITMO 5
┌─ Inicio
│
Mayor = 0
│
SW1 = 0
│
SW2 = 0
│
┌─ Mq SW2 = 0 Haga
│
│
│
│ ┌─ Si x = 0 Entonces
│
│
│
│
│
└─ Fsi
│
│
┌─ Si SW2 = 0 Entonces
│
│
│
┌─ Si SW1 = 0 Entonces
│
│
│
│
Menor = x
│
│
│
│
SW1 = 1
│
│
│
└─ Fsi
│
│
│
┌─ Si x > Mayor Entonces
│
│
│
│
│
│
│
└─ Fsi
│
│
│
┌─ Si x < Menor Entonces
│
│
│
│
│
│
│ └─ Fsi
│
│
└─ Fsi
│
└─ Fmq
Lea x
SW2 = 1
Mayor = x
Menor = x
│
Escriba " El mayor número fue:" Mayor
│
Escriba " El menor número fue:" Menor
└─ Final
2. Enúncielas y clasifíquelas
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. Estas
estructuras se clasifican
De acuerdo con su complejidad en:
Estructuras algorítmicas:
a. Secuenciale: Asignación, entrada y salida.
b. Condicionales: simples y múltiples.
c. Cíclicas: hacer para, hacer mientras, repetir hasta
3. Identifique y explique la estructura de las primitivas algorítmicas
secuenciales y condicionales
Estructuras secuenciales
La estructura secuencial es aquella en la que una acción sigue a otra
en secuencia. Las operaciones se suceden de tal modo que la salida
de una es la entrada de la siguiente y así sucesivamente hasta el fin
del proceso. La asignación de esto 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:
1. Simples: Consiste en pasar un valor constante a una variable (a
← 15)
2. Contador: Consiste en usarla como un verificador del número de
veces que se realiza un proceso (a ← a + 1)
3. Acumulador: Consiste en usarla como un sumador en un
proceso (a ← a + b)
4. De trabajo: Donde puede recibir el resultado de una operación
matemática que involucre muchas variables (a ← c + b*2/4).
Un ejemplo de estructura secuencial, como obtener el área de un
triángulo:
Inicio
...
Float b, h, a;
Printf ("Diga la base");
Scanf ("%f", &b);
Printf ("Diga la altura");
Scanf ("%f", &h);
a = (b*h)/2;
Printf ("El área del triángulo es %f", a)
...
Fin
Estructuras Condicionales o Selectivas.
La especificación formal de algoritmos tiene realmente utilidad cuando
éste requiere una descripción más complicada que una lista sencilla
de instrucciones. Este es el caso cuando existe un número de posibles
alternativas resultantes de la evaluación de una determinada
condición.
Una estructura es selectiva cuando sólo uno de los procesos
alternativos posibles se puede seleccionar tras el cumplimiento de
alguna condición determinada. Las estructuras selectivas se utilizan
para tomar decisiones lógicas, de ahí que suele denominárseles
también Estructuras de Decisión o Alternativas.
En estas estructuras se evalúa una condición y en función del
resultado de la misma, se realiza una opción u otra. Según el número
de opciones o alternativas que se pueden tomar en una estructura,
éstas se clasifican en:
Condicionales o Alternativas Simples
Alternativas Compuestas o Dobles
Alternativas Múltiples
Estructuras Condicionales Simples.
La estructura condicional simple (IF - THEN), permite realizar una
determinada acción si la condición a evaluar es verdadera; seguir el
flujo de control secuencial en el caso de que la condición sea falsa.
Su representación es la siguiente:
IF <Condición>
THEN <Acción>
Cuando al cumplirse la condición se debe realizar más de una
acción, éstas se deben encerrar entre un INICIO y un FIN, indicando
que es un bloque de instrucciones:
IF <Condición>
THEN
INICIO
Acción 1
Acción 2
Acción 3
FIN
Estructuras Condicionales Compuestas.
La estructura selectiva compuesta (IF - THEN - ELSE), permite
elegir entre dos alternativas posibles en función del cumplimiento o no
de la condición a evaluar.
Su representación es:
IF <Condición>
THEN
<Acción>
ELSE
<Acción>
Al igual que en la estructura condicional simple, cuando al cumplirse
o no la condición, hay más de una acción a evaluar, éstas serán
encerradas entre un INICIO y un FIN para indicar que es un bloque de
Instrucciones el que se ejecutará:
IF <Condición>
THEN
INICIO
Acción 1
Acción 2
Acción 3
FIN
ELSE
<Acción>
Estructuras Condicionales Múltiples.
Esta estructura permite asociar un conjunto de condiciones a un
conjunto de acciones que se excluyen mutuamente. La estructura se
conoce como CASE y permite una desviación del flujo de control
hacia múltiples procesos en función del resultado de la evaluación de
una expresión o indicador.
La representación de esta estructura es la siguiente:
CASE <Expresión> OF
INICIO
OP1:Acción1
OP2:Acción2
OP3:Acción3
ELSE
<Acción>
FIN
Al igual que en las otras estructuras alternativas, Acción1, Acción2 y
Acción3 pueden ser a su vez un bloque de instrucciones.
EJEMPLO:
Se desea diseñar un Pseudocódigo que escriba los nombres de los
días de la semana en función del valor de una variable DIA introducida
por teclado.
Pseudocódigo Semana
Variables
Dia: Entero
INICIO
LEE Dia
CASE Dia OF
INICIO
1: ESCRIBE 'Domingo'
2: ESCRIBE 'Lunes'
3: ESCRIBE 'Martes'
4: ESCRIBE 'Miércoles'
5: ESCRIBE 'Jueves'
6: ESCRIBE 'Viernes'
7: ESCRIBE 'Sábado'
ELSE
ESCRIBE 'Error'
FIN
FIN
Estructuras Condicionales Anidadas.
Las estructuras IF - THEN e IF - THEN - ELSE implican la selección
de una de dos alternativas, es posible también utilizar la instrucción IF
para diseñar estructuras de selección que contengan más de dos
alternativas. Por ejemplo, una estructura IF - THEN, puede contener
otra estructura IF - THEN y esta estructura a su vez puede contener
otra y así sucesivamente cualquier número de veces.
Las estructuras IF interiores a otras estructuras IF se denominan
ANIDADAS.
Su representación es la siguiente:
IF <Condition>
THEN
IF <Condition>
THEN
Acción1
ELSE
Acción2
ELSE
Acción3
EJEMPLO:
Una compañía de alquiler de automóviles sin conductor, desea un
programa para emitir las facturas de sus clientes, teniendo presente
los siguientes puntos:
Cantidad fija de $500 si no rebasan los 300 Kms.
Distancia recorrida mayor de 300 Kms.:
Si Dist > 300 Kms. y <= 1000 Kms. se pagará $500 + $30 por Km
extra.
Si Dist > 1000 Kms. se pagará $500 $30 por Km extra hasta los
primeros 1000 Kms. y $20 por Km.
Extra a partir del Km. 1000.
Pseudocódigo Alquiler
Variables
KmInicial, KmFinal, KMS, Suplemento, Total: Entero
INICIO
LEE KmInicial, KmFinal
KMS = KmFinal - KmInicial
IF KMS <= 300
THEN
Suplemento = 0
ELSE
IF KMS <= 1000
THEN
Suplemento = (KMS - 300) * 30
ELSE
Suplemento = (700*30) / (KMS - 1000) * 20
TOTAL = 500 + Suplemento
IMPRIME ' El importe de la factura es: ', TOTAL, ' pesos'
FIN
4.Explique los siguientes métodos de representación
algorítmicas e identifique las convenciones símbolos o
estructuras que utiliza cada una.
A) Pseudocódigo
Pseudo = falso. El pseudo código no es realmente un código
sino una imitación y una versión abreviada de instrucciones reales
para las computadoras. Es una técnica para diseño de programas que
permite definir las estructuras de datos, las operaciones que se
aplicarán a los datos y la lógica que tendrá el programa de
computadora para solucionar un determinado problema. Utiliza un
pseudolenguaje muy parecido a nuestro idioma, pero que respeta las
directrices y los elementos de los lenguajes de programación. Se
concibió para superar las dos principales desventajas de los
flujogramas: lento de crear y difícil de modificar sin un nuevo redibujo.
Ejemplo 1
Diseñar un algoritmo que lea cuatro variables y calcule e
imprima su producto, suma y media aritmética.
Inicio
Leer (a, b, c, d)
Producto <-- (a * b * c * d)
Suma <-- (a + b + c + d)
Media <-- (a + b + c + d) / 4
Escribir (producto, suma, media)
Fin
B) Diagrama de caja.
Son una herramienta que favorece la programación estructurada
y reúne características gráficas propias de diagramas de flujo y
lingüísticas propias de pseudocódigos. Constan de una serie de cajas
contiguas que se leerán siempre de arriba-abajo y sus estructuras
lógicas son las siguientes:
Estructura Secuencial
C) Diagrama de flujo
Son la representación gráfica de la solución algorítmica de un
problema. Para diseñarlos se utilizan determinados símbolos o figuras
que representan una acción dentro del procedimiento. Utilizan unos
símbolos normalizados, con los pasos del algoritmo escritos en el
símbolo adecuado y los símbolos unidos con flechas, denominadas
líneas de flujo, que indican el orden en que los pasos deben ser
ejecutados.
Para su elaboración se siguen ciertas reglas:
Se escribe de arriba hacia abajo y de izquierda a derecha
Siempre se usan flechas verticales u horizontales, jamás curvas
Evitar cruce de flujos
En cada paso expresar una acción concreta
Secuencia de flujo normal en una solución de problema
Tiene un inicio
Una lectura o entrada de datos
El proceso de datos
Una salida de información
Un final
Simbología para diseñar flujogramas.
VENTAJAS DE USAR FLUJOGRAMAS
Rápida comprensión de las relaciones
Análisis efectivo de las diferentes secciones del programa
Pueden usarse como modelos de trabajo en el diseño de nuevos
programas o sistemas
Comunicación con el usuario
Documentación adecuada de los programas
Codificación eficaz de los programas
Depuración y pruebas ordenadas de programas
DESVENTAJAS DE LOS FLUJOGRAMAS
Diagramas complejos y detallados suelen ser laboriosos en su
planteamiento y diseño
Acciones a seguir tras la salida de un símbolo de decisión,
pueden ser difíciles de seguir si existen diferentes caminos
No existen normas fijas para la elaboración de los diagramas de
flujo que permitan incluir todos los detalles que el usuario desee
introducir.
Representando el ejemplo como flujograma tenemos:
5. Proponga y realice 5 Algoritmos en Pseudocódigo con las
primitivas secuenciales básicas.
Supongamos que tenemos un algoritmo para averiguar si un
número es par, que puede ser descrito narrativamente de la
siguiente manera: “si restando consecutivamente doses del
numero 2, es par, si se obtiene el otro valor (el 1), entonces es
impar”. El algoritmo escrito en pseudocódigo seria:
Ejemplo 1.
leer=N
mientras N > 2 hacer
N←N-2
si N=2 entonces
escribe “es par”
sino
escribe “es impar”
Fin
Ejemplo 2.
Diseñar un algoritmo para volver desde el cine a la casa
considerando las diferentes situaciones, si tengo mucho dinero
para tomar un taxi o tengo poco para tomar el autobús, y si no
tengo para ninguno de los dos.
1tengo bastante dinero? Si paso2 No paso3
2tomar taxi e ir al paso6
3 tengo dinero para el autobús? Si paso4 No paso5
4 tomar el autobús e ir al paso6
5 volver paseando
6 Fin
Ejemplo 3.
Diseñar un algoritmo para hacer una llamada telefónica.
1 Buscar una caseta telefónica
2 La encontré? Si paso 3 No paso15
3 Acercarse
4 hay fila de gente? Si paso5 No paso7
5 esperar turno
6 ir al paso4
7 descolgar auricular
8 hay tono? Si paso9 No paso15
9 introducir tarjeta de créditos de llamada
10 validación de tarjeta
11 tiene crédito? Si paso12 No paso15
12 marcar numero deseado
13 esta ocupado? Si paso15 No paso13
14 dar mensaje y despedirse
15 fin
Ejemplo 4.
En un fichero tenemos las notas de 35 alumnos de una clase en un array
Nota(1), Nota(2),..., Nota(35), establecidas entre cero y 10. Se desea
desarrollar el pseudocódigo y diagrama de flujo para un programa que
determine la nota media.
1. Inicio [Algoritmo Nota Media]
2. Desde i = 1 hasta 35 Hacer
2.1 Leer Nota(i)
2.2 Sumatorio = Sumatorio + Nota(i)
Siguiente
3. Media = Sumatorio / 35
4. Mostrar “La nota media de la clase es”, Media
5. Fin
Ejemplo 5.
Diseñar el algoritmo correspondiente a un programa que lea el valor
correspondiente a una distancia en millas marinas y las escriba expresadas en
metros. Sabiendo que 1 milla marina equivale a 1852 metros.
PROGRAMA: Millas_y_metros
MÓDULO: Principal
INICIO
DATOS:
CONSTANTES
MILL_METR Numérico Entero = 1852
VARIABLES
Dmillas Numérico Entero
Dmetros Numérico Entero
ALGORITMO:
Escribir “Distancia en millas: ”
Leer Dmillas
Dmetros = Dmillas * MILL_METR
Escribir “Distancia en metros:”, Dmetros
FIN
6. Realice estos mismos algoritmos propuestos en diagrama de
flujo y caja.
Ejemplo 1.
Ejemplo 2.
Ejemplo 3.
Ejemplo 4.
Ejemplo 5.