Title: Algoritmos y Programas
1Algoritmosy Programas
2Introducción
- El objetivo de esta sesión consistirá en explicar
los conceptos de algoritmo, programa y lenguaje
de programación. Asà como explorar otros temas
concurrentes.
3Temática
- Sistemas de procesamiento de información.
- Concepto de Algoritmo.
- Lenguaje de programación.
- Datos, tipos de datos y operaciones primitivas.
- Constantes y variables.
- Expresiones.
- Funciones intrÃnsecas.
- Asignación.
- Entrada y salida de información.
41. Sistemas de procesamiento de la información
- Un sistema de esta clase se define como un
conjunto de componentes interconectados entre sÃ
que transforman datos en información organizada,
significativa y útil.
5Esquemáticamente
Datos
Procesador
Información
6Una primera definición
- Un algoritmo consiste en el grupo de
instrucciones que definen la secuencia de
operaciones a realizar para resolver un sistema
especÃfico o clase de problema.
7Conceptos importantes
- Hardware grupo de componentes fÃsicos de una
computadora. - Software conjunto de programas que controlan el
funcionamiento de una computadora
82. Concepto de Algoritmo
- La metodologÃa de la programación es aquella que
es necesaria para resolver problemas mediante
programas, su eje es el algoritmo.
Diseño del algoritmo
Problema
Programa
9Pasos para la solución de un problema
- El diseño del algoritmo describe el análisis del
problema y desarrollo del algoritmo. - Expresar el algoritmo como un programa en un
lenguaje de programación. - Ejecutar y validar el programa por la computadora.
10CaracterÃsticas de los algoritmos
- Preciso, indicará el orden de cada paso.
- Definido, el mismo resultado se obtendrá al
ejecutar el algoritmo n ocasiones. - Finito, deberá terminar en algún momento.
11Ejemplo 2.1 Genere un algoritmo que solucione la
entrega de un pedido a un cliente
- Inicio.
- Leer el pedido.
- Examinar el historial crediticio del cliente
- Si el cliente es solvente, entregar el pedido. En
caso contrario, rechazarlo. - Fin
12Ejemplo 2.2 Genere un algoritmo que sume los
números entre el 3 y el 30.
- Inicio.
- Hacer SUMA igual cero.
- Establecer NUMERO igual a 3.
- Sumar NUMERO a SUMA.
- Incrementar NUMERO en 3
- Si NUMERO es menor o igual que 30 ir a 4 si no
imprimir a SUMA. - Fin
13Ejemplo 2.3 Genere un algoritmo que determine al
mayor de tres números enteros.
- Inicio
- Leer los números y guardarlos en NUM1, NUM2 y
NUM3 respectivamente - Comparar NUM1 y NUM2, el número mayor se guarda
en AUX. - Comparar AUX y NUM3, imprimir el número mayor.
- Fin.
14Tarea 2.1 Diseñe un algoritmo para determinar si
un número es primo o no. Tarea 2.2 Genere un
algoritmo que sume los números entre el 2 y el
20. Tarea 2.3 Genere un algoritmo que sume los
números entre el 5 y el 50.
153. Los lenguajes de programación
- Cuando el procesador de datos es una computadora
entonces el algoritmo de solución se expresa en
un programa. - Por tanto, un programa es escrito en un lenguaje
de programación. - Luego, la programación consiste en expresar las
operaciones en forma de programa de un algoritmo.
16Tipos de lenguajes
- Máquina escritos en código binario.
- Bajo nivel (ensamblador) escrito en
nemotécnicos. - Alto nivel diseñados para ser entendidos por el
ser humano.
17Instrucciones básicas
- Entrada/Salida transferencia de información
entre dispositivos periféricos y memoria central. - Aritmético/Lógicas ejecutan operaciones de éstos
tipos. - Selectivas seleccionan tareas en función de los
resultados - Repetitivas permiten la iteración de secuencias
de instrucciones un número dado de veces
18Traductores del Lenguaje
- A) Intérpretes Toma un programa fuente lo
traduce e inmediatamente lo ejecuta.
Programa fuente
Intérprete
Traducción y ejecución en lÃnea
19Traductores del Lenguaje (cont.)
- B) Compiladores traduce un programa fuente a
código objeto.
Programa fuente
Programa Objeto
Programa ejecutable
Montador (Linker)
Compilador (Compiler)
204. Datos, Tipos de Datos y Operaciones Primitivas
- Un dato es la expresión general que describe los
objetos con los cuales opera la computadora - Los tipos son simples (no estructurados) y
compuestos (estructurados). Aquellos se
subdividen en - Numericos (integer, real)
- Lógicos (booleans)
- Carácter (char, string)
21Datos primitivos
Datos
Carácter
Numérico
Lógico
Entero
Real
225. Constantes y Variables
- Constantes valores que durante la ejecución de
un programa no cambian su valor. - Variables valores que cambiarán durante la
ejecución del programa
236. Expresiones
- Se definen como una combinación de constantes,
variables, sÃmbolos de operación, paréntesis, y
nombres de funciones especiales. - Una expresión consta de operandos y operadores.
- Las expresiones se clasifican en aritméticas,
lógicas y carácter.
24Expresiones aritméticas
25Reglas de prioridad
26Operadores de relación
27Operadores lógicos
287. Funciones IntrÃnsecas
298. Operación de Asignación
- Es la forma de darle valores tanto a variables
como constantes, se representa con el sÃmbolo
30Tipos de asignación
- Aritmética
- Lógica
- Cadena de carácteres
319. Entrada y salida de información
- La operación de lectura READ permite el ingreso
de los datos necesarios para los cálculos
computacionales. - La operación de escritura WRITE imprime la
información procesada por el programa y su
respectivo algoritmo.
32PROBLEMAS RESUELTOS CON COMPUTADORAS Y
HERRAMIENTAS DE PROGRAMACION
33INDICE
- OBJETIVO
- SOLUCION DE PROBLEMAS
- ANALISIS DEL PROBLEMA
- DISEÑO DEL ALGORITMO
- SOLUCION DEL PROBLEMA MEDIANTE COMPUTADORA
- REPRESENTACION GRAFICA DE ALGORITMOS
- PSEUDOCODIGO
342.1 OBJETIVO
- EXPONER LOS CONOCIMIENTOS INDISPENSABLES PARA EL
APRENDIZAJE DE LA PROGRAMACION.
352.2 SOLUCION DE PROBLEMAS
- Fases de fragmentación
- Análisis del problema definición concisa a fin
de que sea analizado en todo detalle. - Diseño del algoritmo procedimiento, paso a paso,
para la solucionar el problema dado. - Solución del algoritmo con la computadora
codificación del algoritmo en un lenguaje de
programación
362.3 ANALISIS DEL PROBLEMA
- El propósito es ayudar al programador a llegar a
un cierto grado de comprensión de la naturaleza
del problema. - Una buena definición del problema, junto con una
descripción detallada de entrada y salida, son
los requisitos más importantes para una solución
eficaz.
372.3 ANALISIS DEL PROBLEMA cont.
- Que información debe proporcionar la solución del
problema.
382.3 ANALISIS DEL PROBLEMA cont.
- 2. Que datos se necesitan para resolver el
problema.
392.3 ANALISIS DEL PROBLEMA cont.
- Ejemplo leer los lados de un triángulo
rectangulo e imprima la hipotenusa. - Entradas valores de los lados (variable LADO1 y
variable LADO2). - Salida valor de la hipotenusa (variable LADO3).
- Variables LADO1, LADO2 y LADO3 (tipo reales).
402.4 DISEÑO DEL ALGORITMO
- La información proporcionada al algoritmo
constituye su entrada y la información producida
constituye su salida. - Los problemas complejos se resuelven eficazmente
si se fragmentan en subproblemas que sean más
sencillos de solucionar que el original. Esta
técnica es conocida como divide y vencerás
(divide and conquer).
412.4 DISEÑO DEL ALGORITMO cont.
- La descomposición del problema original en
subproblemas cuya solución puede implementarse a
través de la computadora se le denomina diseño
descendente (top down design) - La descripción detallada de la solución mediante
pasos especÃficos se le denomina refinamiento del
algoritmo (stepwise refinement).
422.4 DISEÑO DEL ALGORITMO cont.
432.4 DISEÑO DEL ALGORITMO cont.
- Ejemplo Determine a los números menores que 90 y
múltiplos de 9, asà como su sumatoria.
Definicióndel Problema
Especificaciones de entrada
Especificaciones de salida
Imprimir múltiplos de 9 y su suma siempre y
cuando sea menor que 90
TOTAL 0 NUM 9 LIMITE 90
NUM, TOTAL
442.4 DISEÑO DEL ALGORITMO cont.
Diseño descendente
Refinamiento por pasos
Herramientas de programación
Múltiplos de 9
- Num9
- Print num
- Num lt 90 regresar a)
- Num9
Sumatoria
Totalnum
452.4 DISEÑO DEL ALGORITMO cont.
- Inicio
- Total0, Num9, Limite90
- Print Num
- TotalTotalNum
- Si Num lt Limite entonces NumNum9 y regresar a
3 - Print Total
- Fin
46tarea
- Determine si una palabra es un palÃndromo.
- Determine el máximo común divisor para dos
números enteros. - Lea e imprima una serie de números distintos de
cero. El algoritmo terminará con un valor que no
se debe imprimir . Finalmente obtenga la cantidad
de valores leÃdos.
47tarea
- 4. Imprima y sume la serie de números múltiplos
de 3 en el rango cerrado de 3 y 99. - 5. Lea cuatro números e imprima el mayor de
ellos. - 6. Calcule la superficie de un triangulo en
función de la base y la altura.
482.5 SOLUCION DE PROBLEMAS MEDIANTE LA COMPUTADORA
- Una vez diseñado el algoritmo y representado
mediante una herramienta de programación se debe
492.6 REPRESENTACION GRAFICA DE LOS ALGORITMOS
- Los métodos usuales para representarlo son
- Diagrama de flujo
- Lenguaje de especificación de algoritmo
502.6 REPRESENTACION GRAFICA DE LOS ALGORITMOS cont
512.7 PSEUDOCODIGO
- Es un lenguaje de especificación de algoritmos
que permite una codificación rápida y simple. - Su ventaja radica en que el programador no debe
preocuparse por la sintaxis de un lenguaje de
programación en particular. - Utiliza palabras sencillas de entender para
codificar programas.
52ESTRUCTURA DE UN PROGRAMA
53Concepto de Programa
- Conjunto de instrucciones que producirán la
ejecución de una determinada tarea. Esencialmente
es un medio para lograr un fin.
54PROCESO DE PROGRAMACION
- Consiste en la solución de problemas y el
desarrollo de programas
55Fases del proceso de programación
- Definiciòn y análisis del problema.
- Diseño de algoritmos
- Diagrama de flujo.
- Diagrama (N-S).
- Pseudocódigo
- Codificación del programa.
- Depuración y verificación del programa.
- Documentación.
- Mantenimiento.
56Partes de un programaconcepto de caja negra
Entrada
Algoritmo
Salida
57Tipos de Instrucciones (acciones que resuelven un
problema)
- De inicio / fin.
- De asignación.
- De lectura,
- De escritura.
- De bifurcación.
58Elementos básicos de un programa
- Palabras reservadas.
- Identificadores (nombres de variables).
- Caracteres especiales.
- Constantes.
- Variables.
- Expresiones.
- instrucciones.
59Otros elementos
- Iteraciones,
- Contadores,
- Acumuladores,
- Interruptores,
- Estructuras
- Secuenciales,
- Selectivas,
- Repetitivas.
60Iteraciones
Es el segmento de un algoritmo o programa,
cuyas instrucciones se repiten un número
determinado de veces mientras se cumple una
determinada condición. Sus partes
son decisión cuerpo del bucle salida
61Contadores
- Un contador es una variable cuyo valor se
incrementa o decrementa en una cantidad constante
en cada iteración.
62Acumuladores
- Un Acumulador es una variable cuya misión es
almacernar cantidades distintas resultantes de
sumas sucesivas.
63Interruptores
- Un interruptor ( conmutador, bandera, flag) es
una variable que puede tomar diversos
valoresdurante la ejecución de un programa y que
permite comunicar información desde una parte a
otra del mismo.
64Componentes de un algoritmo
Algoritmo Cabecera del programa Sección de
declaración Sección de acciones
65PROGRAMACIÓN ESTRUCTURADA
66Técnicas de Programación...
- Programación modular Descomposición del problema
en módulos. - Programación estructurada Programación de cada
módulo mediante métodos estructurados.
67CaracterÃsticas de la programación modular
- Todo programa tiene un módulo principal.
- Dicho módulo primario se divide en submódulos,
que a su vez ejecutan una tarea única y podrán
codificarse de manera independiente de cualquier
otra actividad. Sin embargo, al finalizar su
función devolverán el control al módulo
principal. - Esta independencia alude a que ningún otro módulo
podrá accesarlo directamente, a excepción de sus
propios subsubmódulos y al módulo principal.
68Consideraciones .
- La descomposición de un programa podrÃa
implemetarse asà - Módulo principal.
- Submódulo impresión de tÃtulos
- Submódulo de lectura de datos
- Submódulo ejecución de procesos
- Submódulo impresión de resultados
69CaracterÃsticas de la programación estructurada
- Conjunto de técnicas que reducen el tiempo
requerido para escribir, verificar, depurar y
mantener los programas. - Mediante el uso de
- recursos abstractos,
- diseño descendente,
- estructuras básicas.
70Recursos Abstractos
- Consiste en descomponer una determinada acción
compleja en un número de acciones más simples,
capaces de ser ejecutada por una computadora y
sus respectivas instrucciones.
71Diseño Descendente TOP-DOWN DESIGN
- Esta metodologÃa efectúa una relación de
refinamiento entre las distintas etapas de
estructuración, de modo que se relacionen unas
con otras, mediante entradas y salidas de
información. - Descompone el problema en etapas o estructuras
jerárquicas, de modo que se pueda considerar cada
estructura desde dos puntos de vista qué hace y
cómo lo hace
72Diseño Descendente Desde el exterior ..
73Diseño Descendente Desde el interior ..
74- Estructuras básicas
- Teorema de la programación estructurada
- Un programa propio es aquel que cumple las
siguientes caracterÃsticas - secuenciales,
- selectivas, y
- repetitivas.
- posee un solo punto de entrada y salida.
- se puede recorrer toda la estructura del programa
modular. - todas las instrucciones son ejecutables y no
existen bucles infinitos.
75Instrucciones Secuenciales
76Instrucción Selectiva Simple
77Instrucción Selectiva Compuesta
78Instrucción Selectiva Múltiple
79Instrucción Repetitiva While
80Instrucción Repetitiva Repeat
81Instrucción Repetitiva For
82F I N