computación i: fundamentoszeus.inf.ucv.cl/~jrubio/docs/2010-2/cca 2551/unidad 3.pdf · de 5....
TRANSCRIPT
Computación I: FundamentosUnidad III-Fundamentos de la Programación de Computadores
2º Semestre, 2010M.Eng. José Miguel Rubio [email protected]
Sección 1.- Algoritmos y Programas
El objetivo de esta sección consistirá en explicar los conceptos de algoritmo, programa y lenguaje de programación. Así como explorar otros temas concurrentes.
• 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.
Temáticas
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.
1.1- Sistemas de Procesamiento de Información
Una 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.
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.
Problema
Diseño
del
algoritmo
Programa
Pasos 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.
Caracterí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.
Ejemplo Algoritmo que soluciona la entrega de un pedido a un cliente.
1. Inicio.
2. Leer el pedido.
3. Examinar el historial crediticio del cliente
4. Si el cliente es solvente, entregar el pedido. En caso contrario, rechazarlo.
5. Fin
Ejemplo Algoritmo que suma los números entre el 3 y el 30, en incrementos de 3.
1. Inicio.
2. Hacer SUMA igual cero.
3. Establecer NUMERO igual a 3.
4. Sumar NUMERO a SUMA.
5. Incrementar NUMERO en 3
6. Si NUMERO es menor o igual que 30 ir a 4; si no imprimir a SUMA.
7. Fin
Ejemplo Algoritmo que determina el mayor de tres números enteros.
1. Inicio
2. Leer los números y guardarlos en NUM1, NUM2 y NUM3 respectivamente
3. Comparar NUM1 y NUM2, el número mayor se guarda en AUX.
4. Comparar AUX y NUM3, imprimir el número mayor.
5. Fin.
1. Diseñe un algoritmo para determinar si un número es primo o no.
2. Diseñe un algoritmo que sume los números entre el 2 y el 20, en incrementos de 2.
3. Indique las modificaciones necesarias para el algoritmo 2 de tal manera que sume los números entre el 5 y el 50, en incrementos de 5.
Ejercicios
1.2 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.
Tipos 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.
Instrucciones 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.
Traductores del Lenguaje
A) Intérpretes; Toma un programa fuente
lo traduce e inmediatamente lo ejecuta.
Programa fuente IntérpreteTraducción
y ejecución
en línea
B) Compiladores; traduce un programa
fuente a código objeto.
Programa
fuente
Programa
Objeto
Programa
ejecutable
Compilador
(Compiler)
Montador
(Linker)
Traductores del Lenguaje
1.3 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:a) Numéricos (integer, real)
b) Lógicos (booleans)
c) Carácter (char, string)
1.4. 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.
1.5. 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.
Expresiones aritméticas
EnteroEnteroMódulo o resto%
EnteroEnteroDivisión enteraDiv
RealReal División/
Entero o realEntero o realMultiplicación*
Entero o realEntero o realResta-
Entero o realEntero o realSuma+
Entero o realEntero o realExponenciación^
Tipo resultadoTipo de operandosSignificadoOperador
Reglas de prioridad
( )Parentesis
+, -Más y menos
Div, % Div y Mod
*, /Multi, divide
**Exponencial
GrafoOperador
Operadores de relación
Menor<
Distinto<>,!=
Mayor o igual>=
Menor o igual<=
Igual=
Mayor>
SignificadoOperador
Expresión 2Operador de relación
Expresión 1
Operadores lógicos
disyunciónP o QOr
ConjunciónP y QAnd
NegaciónNot pNot
SignificadoExpresión lógicaOperador lógico
Funciones Intrínsecas
TruncamientoTrunc(x)
Raíz cuadradaSqrt(x)
CuadradoSqr(x)
SenoSin(x)
RedondeoRound(x)
Log decimalLog10(x)
Log neperianoLn(x)
ExponencialExp(x)
CosenoCos(x)
Tangente inversaArctan(x)
AbsolutoAbs(x)
DescripciónFunción
Operación de Asignación
Es la forma de darle valores tanto a
variables como constantes, se representa con el símbolo = o →.
Entrada y salida de información
• La operación de lectura READ/LEER permite el ingreso de los datos necesarios para los cálculos computacionales.
• La operación de escritura WRITE/ESCRIBIR imprime la información procesada por el programa y su respectivo algoritmo.
2.- Resolución de Problemas con Computadoras
El objetivo de esta sección es exponer los conocimientos indispensables para el aprendizaje de la programación.
19/10/2010 32
Temáticas
• Solución de problemas
• Análisis de problemas
• Diseño del algoritmos
• Solución de problemas mediante computadora
• Representación grafica de algoritmos
• Pseudo-código
19/10/2010 33
2.1- Solución de Problemas
Motivación:
• Problemas “Humanos”:
http://www.youtube.com/watch?v=RfeGP9QqcVI.
• Como comenzar:
http://www.youtube.com/watch?v=jLJZCU7LmqM&feature=related.
19/10/2010 34
2.1- Solución 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.
19/10/2010 35
2.2 Análisis de Problemas
• 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.
2.3 Análisis de Problemas
1. Que información debe proporcionar la solución del problema.
Solución del
Problema
Análisis del
Problema
Diseño del
algoritmo
Solución por
computadora
2. Que datos se necesitan para resolver el problema.
Análisis del
Problema
Definición del
Problema
Especificaciones
de entrada
Especificaciones
de salida
2.3 Análisis de Problemas
• Ejemplo: leer los lados de un triángulo rectángulo 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).
2.3 Análisis de Problemas
2.4 Diseño de Algoritmos
• 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 andconquer).
• 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).
2.4 Diseño de Algoritmos
Diseño del
algoritmo
Diseño
descendente
Refinamiento
por pasos
Herramientas de
programación
- diagramas de flujo
- pseudocódigo
2.4 Diseño de Algoritmos
• Ejemplo: Determine a los números menores que 90 y múltiplos de 9, asícomo su sumatoria.
Definición del
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
2.4 Diseño de Algoritmos
Diseño
descendente
Refinamiento
por pasos
Herramientas de
programación
Múltiplos de 9
Sumatoria
a) Num=9
b) Print Num
c) Num+=9
d) Num <= 90
regresar a)
Total+=Num
2.4 Diseño de Algoritmos
1. Inicio
2. Total=0, Num=9, Limite=90
3. Mientras Num <= Limite
4. Escribir Num
5. Total=Total+Num
6. Num=Num+9
7. Fin Mientras
8. Escribir Total
9. Fin
2.4 Diseño de Algoritmos
2.5 Representación de Algoritmos
Los métodos usuales para representarlo son:1. Diagrama de flujo2. Diagrama de nassi-shneiderman
3. Lenguajes de especificación de algoritmos
2.5 Representación de Algoritmos• Diagrama de nassi-shneiderman.
– Definición del problema• Identificar el mayor y menor de dos números
– Análisis del problema• Datos de entrada: num1, num2• Datos salida: mayor, menor• Proceso: comparación
– Diseño de la solución
2.6 Pseudo-código
• 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.
• Ejemplo: SL y su entorno de desarrollo SLE. (http://www.cnc.una.py/sl/)
Ejercicios
1. Calcule la superficie de un triangulo en función de la base y la altura.
2. Lea cuatro números e imprima el mayor de ellos.
3. Imprima y sume la serie de números múltiplos de 3 en el rango cerrado de 3 y 99.
4. Lea e imprima una serie de números distintos de cero. El algoritmo terminará con un valor que no se debe imprimir, es decir, cero. Finalmente obtenga la cantidad de valores leídos.
5. Determine el máximo común divisor para dos números enteros.
2.7 Solución de Problemas mediante la Computadora
Una vez diseñado el algoritmo y representado mediante una herramienta de programación se debe:
Solución del
Problema por
Computadora
Codificación
del programa
Ejecución del
programa
Comprobación
del programa
3.- Estructura General de un Programa de ComputadoraPrograma: Conjunto de instrucciones que producirán la ejecución de una determinada tarea. Esencialmente es un medio para lograr un fin.
19/10/2010 52
3.1- Proceso de Programación
Consiste en la solución de problemas y el desarrollo de programas.
19/10/2010 53
3.1.1 Fases 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.
2. Tipos de Instrucciones (acciones que resuelven un problema).
• De inicio / fin.
• De asignación.
• De lectura.
• De escritura.
• De bifurcación / repetición (bucles).
3.2 Partes de un Programa
• Palabras reservadas.
• Identificadores (nombres de variables).
• Caracteres especiales.
• Constantes.
• Variables.
• Expresiones.
• Instrucciones.
3.3 Elementos básicos de un programa
• Iteraciones,
• Contadores,
• Acumuladores,
• Interruptores,
• Estructuras:• Secuenciales,
• Selectivas,
• Repetitivas.
3.4 Otros Elementos
Es el segmento de un algoritmo o programa, cuyasinstrucciones se repiten un número determinado de veces mientras se cumple una determinadacondición. Sus partes son:
decisión
cuerpo del bucle
salida
3.4.1 Iteraciones
Un contador es una variable cuyo valor se incrementao decrementa en una cantidad constante en cadaiteración.
3.4.2 Contadores
Un Acumulador es una variable cuya misión esalmacernar cantidades distintas resultantes de sumassucesivas.
3.4.3 Acumuladores
Un interruptor (conmutador, bandera, flag) es unavariable que puede tomar diversos valores durantela ejecución de un programa y que permitecomunicar información desde una parte a otra del mismo.
3.4.4 Interruptores
Programa
Cabecera del programa
Sección de declaración
Sección de acciones
3.5 Componentes de un Programa
19/10/2010 64
4.1- Té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.
19/10/2010 65
4.1.1 Caracterí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.
Consideraciones:
La descomposición de un programa podría implementarse 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
4.1.1 Características de la Programación Modular
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.
4.1.2 Características de la Programación Estructurada
Recursos 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.
4.1.2 Características de la Programación Estructurada
Diseñ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
4.1.2 Características de la Programación Estructurada
Diseño Descendente (Top-Down Design):
• Desde el exterior.
4.1.2 Características de la Programación Estructurada
Diseño Descendente (Top-Down Design):
• Desde el interior.
4.1.2 Características de la Programación Estructurada
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.
4.1.3 Estructuras Básicas