View
65
Download
10
Category
Preview:
Citation preview
INSTITUTO TECNOLÓGICO SUPERIOR “ALOASÍ”
Carrera de Tecnología en Análisis de Sistemas
Quito - Ecuador
Email:
robertocamana@yahoo.es
4 de Noviembre de 2016
Roberto Camana
Resolución de prob.
Programación Estructurada III
Algoritmos y Programas
Unidad 1
Los datos Herra. de prog. Estructura prog.
• Resolución de problemas por computadoras
• Fases de resolución del problema
– Análisis del problema
– Diseño del algoritmo
– Verificación del algoritmo
– Ejemplos de aplicación
• Datos
– Constantes
– Variables
– Expresiones
– Funciones
– Reglas para la construcción de identificadores
– Ejemplos de aplicación
• Bibliografía
Presentación: Programa
Resolución de prob. Los datos Herra. de prog. Estructura prog.
Resolución de prob.
Uso de la computadora
Las
personas
necesitan
aprender
Lenguaje de
programación
Por
intermedio de
la
computadora
Para la
resolución
de
problemas
Los datos Herra. de prog. Estructura prog.
¿Cómo se entienden los procesos?
Resolución de prob.
Análisis
del
problema
Diseño del
algoritmo
Verificación
del
algoritmo
Codificación
del
algoritmo
Ejecución
del
programa
Verificación
del
programa
Los datos Herra. de prog. Estructura prog.
Fases de Resolución del Problema
Resolución de prob.
1. Análisis del Problema
2. Diseño del Algoritmo
3. Verificación de
Algoritmos
Los datos Herra. de prog. Estructura prog.
Fases: 1. Análisis del Problema. ¿Cómo lo logro?
Resolución de prob.
Primer Paso
Examinación cuidadosa del problema
Para obtener una idea clara, sobre lo que se solicita
Determinar los datos necesarios
Datos de salida = resultados
Los datos Herra. de prog. Estructura prog.
Fase: 1. Análisis del Problema
Resolución de prob.
Ejemplo de un procedimiento paso a paso
Tarea: Hacer una llamada por teléfono publico.
Pasos:
1. Ir a un teléfono.
2. Levantar el auricular del teléfono.
3. Esperar el tono.
4. Sacar monedas exactas para hacer la llamada.
5. Meter las monedas en la ranura.
6. Marcar el número.
Los datos Herra. de prog. Estructura prog.
Fase: 1. Análisis del Problema
Enunciado:
• Definición clara y precisa
• Debe entenderse claramente lo que se solicita
Problema:
Calcular el sueldo mensual de un trabajador conociendo su sueldo básico y
bono por comisión.
Resolución de prob. Los datos Herra. de prog. Estructura prog.
Fase: 1. Análisis del Problema
¿Cuál es el método a usar?
Inicio
Leer Sueldo básico
Leer bono por comisión
Calcular Sueldo mensual = Sueldo básico + Bono por comisión
Imprimir Sueldo mensual
Fin
Resolución de prob. Los datos Herra. de prog. Estructura prog.
Fase: 2. Diseño del Algoritmo
• Desarrollo del algoritmo en base a la etapa de análisis
• Representación mediante el diagrama de flujo o el pseudocódigo
Resolución de prob.
inicio
sueldo_basico
bono_comision
Sueldo_mensual =
sueldo_basico +
bono_comision
fin
Sueldo_mensual
Los datos Herra. de prog. Estructura prog.
Fase: 2. Diseño del Algoritmo
En un algoritmo se deben considerar tres partes:
• Entrada: Información dada al algoritmo.
• Proceso: Operaciones o cálculos necesarios para encontrar la solución al
problema.
• Salida: Respuestas dadas por el algoritmo o resultados finales de los
cálculos.
Ejemplo:
Desarrollar un algoritmo que calcule la superficie de una rectángulo
proporcionándole su base y altura
PREGUNTAS
• Obtener el NOMBRE del capitán del equipo MAVORT
• Cuantos partidos ha jugado el equipo MAVORT en su campo?
• Cuantos minutos ha jugado el capitán del equipo ESPOL durante toda la liga?.
• Cual ha sido el resultado del partido ESPOL – IMPORTADORA ALVARADO,
jugado en el campo del equipo MAVORT?.
Resolución de prob. Los datos Herra. de prog. Estructura prog.
Fase: 2. Diseño del Algoritmo
Un algoritmo puede ser definido como la secuencia ordenada de pasos,
sin ambigüedades, que conducen a la solución de un problema dado y
expresado en lenguaje natural.
Todo algoritmo debe ser:
• Preciso: Indicando el orden de realización de cada uno de los pasos.
• Definido: Si se sigue el algoritmo varias veces proporcionándole los
mismos datos, se debe obtener siempre los mismos resultados.
• Finito: Al seguir el algoritmo, éste deber terminar en algún momento.
PREGUNTAS
• Obtener el NOMBRE del capitán del equipo MAVORT
• Cuantos partidos ha jugado el equipo MAVORT en su campo?
• Cuantos minutos ha jugado el capitán del equipo ESPOL durante toda la liga?.
• Cual ha sido el resultado del partido ESPOL – IMPORTADORA ALVARADO,
jugado en el campo del equipo MAVORT?.
Resolución de prob. Los datos Herra. de prog. Estructura prog.
Fase: 3. Verificación de Algoritmo
Una vez que se ha terminado de escribir un algoritmo es necesario comprobar que
realiza las tareas para las que se ha diseñado y produce el resultado correcto y
esperado
¿Pero cómo comprobar un algoritmo?
• Es mediante una ejecución manual (prueba de escritorio)
• Anotando en una hoja de papel, todos los pasos del algoritmo
Resolución de prob. Los datos Herra. de prog. Estructura prog.
Ejemplos de aplicación
1. Desarrollar un algoritmo que calcule la superficie de una rectángulo proporcionándole su base y altura.
2. Realice un algoritmo que permita realizar las 4 operaciones matemáticas.
3. Realizar un algoritmo, dado tres números, determine cual es el mayor de ellos.
Resolución de prob. Los datos Herra. de prog. Estructura prog.
Sus tipos
¿Qué son?
Se le conoce como objetos de la información que trabaja un programa o
algoritmo. Se le conoce como un rango que toma valores durante el
programa.
¿Para qué sirven?
Un tipo de dato determina la naturaleza del conjunto de valores que puede
tomar una variable.
Clasificarse en:
Resolución de prob. Los datos
Tipos de datos
Numéricos
Enteros Reales
Caracteres Lógicos
Herra. de prog. Estructura prog.
Tipo de Dato Numérico: Entero
Resolución de prob. Los datos
Características:
• Son números que no tienen fracciones o decimales.
• Pueden ser negativos o positivos.
• Se almacenan internamente en 2 o 4 bytes de memoria.
• Ejemplo: 5, 6, -15, 13456, -12122, etc.
Herra. de prog. Estructura prog.
Tipo de Dato Numérico: Real
Resolución de prob. Los datos
Características:
• Contienen un coma (punto) decimal, tal como 3.1416, -8.12, etc.
• Pueden ser positivos o negativos.
• La representación números muy grandes se emplea notación de punto
flotante como notación científica, por ejemplo el número
456529600000000000000, en notación científica, se representa por
4.565296 x 10 a la 19 o 4.5655296 E+19
• Se almacena internamente, números reales de punto flotante: 4 bytes.
Herra. de prog. Estructura prog.
Tipo de Dato Carácter
Resolución de prob. Los datos
Características:
• Su almacenamiento interno se hace en “palabras” de 8 bits (1 byte).
• Representa valores enteros entre -128 a +127
• Ejemplo de tipo carácter son: ‘H’, ‘h’, ‘9’, ‘%’, ‘a’, ‘<‘, etc.
• Una cadena de caracteres o string, es una secuencia ordenada de
datos tipo carácter delimitados por una comilla simple o apóstrofe, tanto
al inicio como al final.
• Ejemplo de cadenas de caracteres son: ‘Hola Mundo’, ‘0998176876’, ’17
de agosto de 1973’, etc.
Herra. de prog. Estructura prog.
Tipo de Dato Lógico
Resolución de prob. Los datos
Características:
• Toman dos valores, verdadero (true) y falso (falso).
• En Pascal, toman dos valores enteros, 1 verdadero y 0 falso.
• Es muy útil cuando se evalúan condiciones dentro de un algoritmo o
dentro de un programa.
Herra. de prog. Estructura prog.
¿Qué es una variable?
Resolución de prob. Los datos
Es un dato que puede cambiar durante la ejecución del programa.
¿Donde se encuentran almacenados?
Este se encuentra almacenado en la memoria y puede ser utilizado las
veces que fueran necesario.
Condición:
• Los diferentes tipos de variables, son enteros, reales, carácter y
cadenas, toman cierto tipos de datos y que corresponden cierto tipo de
datos.
• Contraindicado un diferente tipo de datos se producirá una error.
Herra. de prog. Estructura prog.
Componentes de una variable
Resolución de prob. Los datos
Toda variable utilizada en un algoritmo o en un programa de computación
se compone de tres partes esenciales:
• Nombre
• Tipo
• Valor
El nombre de una variable (identificador):
• Es el conjunto de caracteres permitidos, letras, número, con los cuales
se denomina a una variable dentro de un algoritmo o de un programa.
• El nombre de una variable debe cumplir con las siguientes reglas:
• Debe comenzar con una letra.
• Puede contener letras, números o el carácter subrayado (_).
• No debe coincidir con el nombre de alguna palabra reservada.
• La máxima longitud de un nombre depende del compilador, en
Pascal el límite es de 80 caracteres.
Herra. de prog. Estructura prog.
Componentes de una variable
Resolución de prob. Los datos
El tipo de una variable:
• Permite describir el uso que se dará a la misma dentro de un algoritmo o
de un programa.
• Dependiendo del lenguaje de programación, existen diferentes tipos de
variables.
• Para el uso de tipo de variable, se debe considerar las siguientes reglas:
• Si se intenta asignar un valor de un tipo a una variable de otro tipo se
producirá un error de tipo.
• Cuando las variables son utilizadas en expresiones debe ser de un
mismo tipo.
Herra. de prog. Estructura prog.
Componentes de una variable
Resolución de prob. Los datos
El Valor de una Variable:
• Es el contenido que tiene asociado en un determinado momento de la
ejecución de un programa o desarrollo de un algoritmo.
• El valor de una variable depende del tipo de la misma, así por ejemplo
una variables de tipo entera podrá almacenar solo valores enteros
mientras que una variable de tipo booleano podrá almacenar los valores
VERDADERO o FALSO.
Herra. de prog. Estructura prog.
¿Qué es una constante?
• Es un datos que no cambia en la ejecución de un programa, es decir son
valores fijos y no son modificados por otros usuarios.
• Este tipo de constantes, también pueden ser de tipo entero, real, carácter y cadena.
Tipos de constantes:
Resolución de prob. Los datos
Tipo de constante Descripción
Entero Son dígitos precedidos por el signo + O -. Ejemplo: 321, -322
Real Son dígitos con punto adelante, al final o en medio y seguido por un exponente. Ejemplo: 21.212, 0.32, 32.2e-05, 9.2e03
Carácter Es una constante, es decir código ASCII. Ejemplo: ‘x’, ‘y’, ‘z’
Cadena Secuencia de caracteres. Ejemplo: “897”, “Luis palacios”
Herra. de prog. Estructura prog.
Operadores
Los operadores fundamentales son: • Aritméticos
• Relacionales
• Lógicos
• Asignación ¿Qué hacen los operadores? Permiten relacionar dos o mas datos de una expresión y proporcionar el resultado de la operación
Resolución de prob. Los datos Herra. de prog. Estructura prog.
Operadores aritméticos
Características:
• Es una agrupación válida de operandos (variables y/o constantes) que se
encuentran relacionados entre si por medio de operadores aritméticos.
• Se usan en número enteros y reales.
Operador Operación Tipos de operandos Tipo de resultado
- Resta Entero o real Entero o real
+ Suma Entero o real Entero o real
* Multiplicación Entero o real Entero o real
/ División Real Real
Mod Módulo (resto) Entero Entero
Div División entera Entero Entero
Resolución de prob. Los datos Herra. de prog. Estructura prog.
Operadores relacionales
Características:
• Describe relación entre dos valores en una expresión.
• Su resultados es de tipo lógico o booleano
Pseudocódigo Pascal Significado
> > mayor que
< < menor que
= = igual que
>= > = mayor o igual que
<= < = menor o igual que
<> <> destino a
Resolución de prob. Los datos Herra. de prog. Estructura prog.
Operadores relacionales
Ejemplo de operadores relacionales
Nota: En el ejemplo A mayúscula y a minúscula, son diferentes puesto que
en código ASCII, la primera le corresponde a 65 y la segunda 97.
Pseudocódigo Pascal Resultado Valor binario
´x´ < ´y´ ´x´ < ´y´ V 1
´A´ = ´a´ ´A´ = ´a´ F 0
8 <> 4.2 8 <> 4.2 F 0
-143 < 22 -143 < 22 V 1
8.82 > 2.98 8.82 > 2.98 F 0
´A´ < ´a´ ´A´ < ´a´ V 1
Resolución de prob. Los datos Herra. de prog. Estructura prog.
Operadores lógicos
Características:
• Son expresiones lógicas para formar expresiones más complejas.
Pseudocódigo Pascal
NO not
O or
Y and
Resolución de prob. Los datos Herra. de prog. Estructura prog.
Operadores lógicos
Ejemplos de operadores lógicos
Pseudocódigo Pascal Resultado Valor binario
5>7 5>7 V 1
9<2 9<2 F 0
8>2 y 9<2 8>2 and 9<2 F 0
8<2 o 9>2 8<2 or 9>2 V 1
not 4 > 2 not (4 > 2) F 0
not 8 < 3 not (8 < 3) V 1
Resolución de prob. Los datos Herra. de prog. Estructura prog.
Funciones estándar del lenguaje Pascal
Función Descripción Tipo del argumento
Tipo del valor devuelto
abs Devuelve el valor absoluto int/real int/real
arctan Devuelve el inverso tangente int., real real
chr Devuelve el carácter asociado a un valor entero int char
cos Devuelve el coseno int, real real
exp Devuelve el exponencial de una cantidad int, real real
In Devuelve el logaritmo natural de un número int, real real
odd Permite saber si un número es par o impar int boolean
ord Devuelve el ordinal de un caracter char, boolean int
pred Devuelve el predecesor int /char int /char
round Redondea la parte decimal de un número real int
sin Devuelve el seno int., real real
sqr Devuelve el cuadros de un número int, real real
sqrt Devuelve al raíz cuadrada de un número int, real real
trunc Devuelve la parte decimal de un número real int
Resolución de prob. Los datos Herra. de prog. Estructura prog.
Prioridad de los Operadores
Características:
• Cuando se utilizan en alguna expresión mas de un operador, se evalúan conforme
a una prioridad establecida por Pascal.
• Se opera en orden de evaluación para evitar errores en nuestros programas.
• El orden que se ejecutan las operaciones son:
• *, /, DIV, MOD primeros en evaluarse, todos tienen igual prioridad.
• +, - últimos en evaluarse, ambos tienen igual prioridad.
• En caso de existir paréntesis en la expresión de evaluará primero el
contenido de los paréntesis antes que otros operadores.
• Si existen dos operadores de igual prioridad se evaluará de izquierda a
derecha.
Resolución de prob. Los datos Herra. de prog. Estructura prog.
Prioridad de los Operadores
Ejercicios de expresiones aritméticas:
A continuación, se producen a obtener el resultado de las siguientes
expresiones aritméticas.
a) 3 + 6 * 14
• Primero se efectúa la multiplicación entre 6 y 14, obteniéndose la
expresión 3 + 84.
• Finalmente se realiza la suma entre 3 y 84, obteniéndose 87.
b) -4 *7 +2 ^ 2 / 4 – 5 + 2
c) 45 / (56 – 8 div (10 mod 3) + 5)
Resolución de prob. Los datos Herra. de prog. Estructura prog.
Métodos: Diagrama N-S (Nassi – Scheneiderman)
Características:
• Son utilizadas en la programación estructurada.
• Posee gráficas propias de diagrama de flujo y lingüísticas propias de los
pseudocódigos.
• Tienen cajas contiguas que se leerán de arriba hacia abajo.
Resolución de prob. Los datos Herra. de prog. Estructura prog.
Métodos: Diagrama N-S (Nassi – Scheneiderman)
El algoritmo que lee una temperatura en grados Celsius y calcula y escribe
su valor en grados Kelvin se puede representar mediante el siguiente
diagrama N-S:
Resolución de prob. Los datos Herra. de prog. Estructura prog.
Métodos: Pseudocódigo
Características:
• Utiliza palabras reservadas y exige la indentación (sangría) al margen
izquierdo.
• El pseudocódigo, comienza con la palabra inicio y terminará con la
palabra fin.
• Para introducir un valor o serie de valores desde el dispositivo estándar y
almacenarlos en una o varias variables leer (<lista_de_variables>).
• Para imprimir en el dispositivo estándar de salida una o varias
expresiones emplearemos escribir (<lista_de_expresiones>).
Resolución de prob. Los datos Herra. de prog. Estructura prog.
Métodos: Pseudocódigo
Características:
• Las distintas estructuras se representarán de la siguiente forma:
Decisión simple: si <condición> entonces
<acciones1>
fin_si
Decisión doble: si <condición> entonces
<acciones1>
si_no
<acciones2>
fin_si
Decisión múltiple: según sea <expresión_ordinal> hacer
<lista_de_valores_ordinales>: <acciones1>
[si_no //el corchete indica opcionalidad
<accionesN>]
fin_según
Resolución de prob. Los datos Herra. de prog. Estructura prog.
Métodos: Pseudocódigo
Repetitivas: mientras <condición> hacer
<acciones>
fin_mientras
repetir
<acciones>
hasta_que <condición>
desde <variables> <- <v-inicial> hasta <v_final>
[incremento | decremento <incremento>] hacer
<acciones>
fin_desde
Inicio, fin, leer, escribir y las palabras que aparecen en negrita en las distintas
estructuras se consideran palabras reservadas y no deberán utilizarse en
su lugar otras similares.
Resolución de prob. Los datos Herra. de prog. Estructura prog.
Ejercicios resueltos
¿Cuál de los siguientes datos son válidos para procesar por una
computadora?
a) 3.14159
b) 0.0014
c) 12345.0
d) 15.0E-04
e) 2.234E2
f) 12E+6
g) 1.1E-3
h) -15E-0.4
i) 12.5E.3
j) .123E4
k) 5A4.14
l) A1.E04
Resolución de prob. Los datos Herra. de prog.
Válido
Válido
Válido
Válido
Válido
Válido
Válido
No Válido
No Válido
Válido
Válido
Válido
Estructura prog.
Escritura de algoritmos
Características:
• Partimos de el pseudocódigo, este debe ser claro y preciso, para su
posterior codificación.
• Una algoritmo, tiene las siguientes pastes: La cabecera y el cuerpo del
algoritmo.
• La cabecera, tiene el nombre del algoritmo.
• El cuerpo del algoritmo, tiene el bloque de declaraciones (variables y
constantes) y el bloque de instrucciones (acciones a ejecutar).
const
<nombre_de_constate_1> = <valor_1>
var
<tipo_de_dato1>: <lista_de_variables>
Resolución de prob. Los datos Herra. de prog. Estructura prog.
Escritura de algoritmos
Características:
• De lectura: Toma uno o varios valores desde un dispositivo de entrada y
los almacena en las variables que aparecen listadas en la propia
instrucción.
leer (<lista_de_variables>)
• De escritura: Envía datos a un dispositivo. Cuando los datos los
enviemos al dispositivo estándar en formato para la instrucción será:
escribir (<lista_de_expresiones>)
Resolución de prob. Los datos Herra. de prog. Estructura prog.
Contadores
Características:
• Es una variable cuyo valor se incrementa o decrementa en una cantidad
constante.
• Los contadores se utilizan en estructuras repetitivas, con la finalidad
contar sucesos o acciones.
• Los contadores debe realizar una operación de inicialización y
posteriormente, las sucesivas de incremento o decremento del contador.
<nombre_del _contador> <valor_de_inicialización>
• En cuanto al incremento o decremento del contador, puesto que la
operación de asignación admite que la variable que recibe el valor final de
una expresión intervenga en la misma:
<nombre_del _contador> <nombre_del_contador> + <valor_constante>
Resolución de prob. Los datos Herra. de prog. Estructura prog.
Acumuladores e Interruptores
Acumuladores:
Son variables cuyo valor se incrementa o decrementa en una cantidad
variable. Necesitan operaciones de:
• Inicialización:
<nombre_del _contador> <valor_de_inicialización>
• Acumulación:
<nombre_del _contador> <nombre_del_contador> + <valor_constante>
Interruptores:
Un interruptor, bandera o switch es una variable que puede tomas valores
verdad y falso a lo largo de la ejecución de un programa, comunicando así
información de una parte a otra del mismo. Pueden ser utilizados para el
control de bucles.
Resolución de prob. Los datos Herra. de prog. Estructura prog.
Estilo recomendado para la escritura de algoritmos
Como se dijo anteriormente, la herramienta de escritura de algoritmos mas
adecuada es el pseudocódigo, con el siguiente formato:
algoritmo <nombre_algoritmo>
const
<nombre_de_constante1> = valor1
var
<tipo_de_dato1>: <nombre_de _variable1> [nombre_variable2>, …..]
inicio
<acción1>
<acción2>
<acciónN>
fin
Resolución de prob. Los datos Herra. de prog. Estructura prog.
Ejercicios
• Se desea calcular la suma de los números pares e impares comprendidos
entre 1 y 200.
• Leer una serie de número enteros positivos distintos de 0 (el último
número de la serie debe ser el -99) obtener el número mayor.
• Calcular y visualizar la suma y el producto de los números pares
comprendidos entre 20 y 400.
• Se trata de escribir el algoritmo que permita emitir la factura
correspondiente a una compra de un artículo determinado del que se
adquieren una o varias unidades. El IVA a aplicar es del 12% y si el precio
bruto (precio de venta + IVA) es mayor de 50.000 dólares, se aplicará un
descuento de 5%.
Resolución de prob. Los datos Herra. de prog. Estructura prog.
¿Preguntas?
•Dudas
•Inquietudes
•Quejas
•Preguntas
•Y demás cosas para hablar…
Resolución de prob. Los datos Herra. de prog. Estructura prog.
Bibliografía
• Weiss, Mark Allen: "Estructuras de datos y algoritmos", Addison-Wesley Iberoamericana,
1995.
• Kruse, Robert Leroy; Tondon, Clovis L.; Leung, Bruce P: "Data structures and program
design in C'', Prentice-Hall, 1997.
• Brassard, Gilles; Bratley, Paul: "Algorithmics: theory and practice", Prentice-Hall, 1988.
• Sedgewick, Robert: "Algorithms in C++", Addison-Wesley, 1992.
• Tenenbaum, Aaron M.; Langsam, Yedidyah; Augenstein, Moshe J.: "Estructuras de datos en
C", Prentice-Hall Hispanoamericana, 1993.
• Kernighan, Brian W.; Ritchie, Dennis M.: "El lenguaje de programación C'', Prentice-Hall
Hispanoamericana, 1991.
Tutoriales:
• Introducción a la programación con C, Universidad de Jaume, España. Disponible en:
http://www.uji.es/bin/publ/edicions/c.pdf Acceso: Octubre de 2015
• Introducción al lenguaje C, José Miguel Santos Espino. Disponible en:
http://www.algoritmos7541-rw.tk/bibliografia Acceso: Octubre de 2015
• Programación en C, un wikilibro en español. Disponible en:
https://es.wikibooks.org/wiki/Programaci%C3%B3n_en_C Acceso: Noviembre de 2015
Resolución de prob. Los datos Herra. de prog. Estructura prog.
Próxima clase…
•Unidad 2: De Pseudocódigo a Pascal
Introducción
Estructura básica de un programa en Pascal
Palabras reservadas del lenguaje Pascal
Compilación de un programa en lenguaje Pascal
Tipos de datos básicos en Pascal
Operadores en Pascal
Programa Pascal
Palabras reservadas y estructura
Declaración de variables, de constantes
Equivalencias entre estructuras de Pseudocódigo y las de Pascal
Ejercicios propuestos
Resolución de prob. Los datos Herra. de prog. Estructura prog.
Recommended