sesión 1: algoritmos prof:eridan otto programación de computadores lenguaje pascal

23
Sesión 1: Algoritmos Prof:Eridan Otto Programación de Computadores Lenguaje Pascal

Upload: maria-pilar-gutierrez-arroyo

Post on 24-Jan-2016

231 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Sesión 1: Algoritmos Prof:Eridan Otto Programación de Computadores Lenguaje Pascal

Sesión 1: Algoritmos

Prof:Eridan Otto

Programación de ComputadoresLenguaje Pascal

Page 2: Sesión 1: Algoritmos Prof:Eridan Otto Programación de Computadores Lenguaje Pascal

Sesión 1: Algoritmos

Programación de Computadores Lenguaje Pascal

TEMARIO

• El Ramo Programación de Computadores

•Análisis y resolución de problemas• Pseudocódigo

•Entrada y salida de datos•Asignación•Estructuras de control: Secuencia

Page 3: Sesión 1: Algoritmos Prof:Eridan Otto Programación de Computadores Lenguaje Pascal

El Ramo Programación de Computadores

•Es un ramo básico para la mayoría de las carreras de la Universidad•Se dicta simultáneamente a distintos cursos, éste es el Paralelo 8.•Consta de 4 horas de cátedra 2 horas de ayudantía•Tiene sesiones prácticas de Laboratorio de 2 horas semanales

Evaluación•3 certámenes (30% cada uno)•Laboratorios (10% total)•Para que estos porcentajes tengan validez deben tener sobre 55 como promedio en los certámenes y también en los laboratorios.•Fechas Importantes:

Programación de Computadores Lenguaje Pascal

Concepto Ponderación Fecha Contenidos Certamen 1 30% 07 de abril de 2003 Tema 1 – 6. Certamen 2 30% 07de mayo de 2003 Tema 7 – 8. Certamen 3 30% 11 de junio de 2003 Tema 9 – 10. Laboratorio 10% ver calendario lab. Apoyo de las clases.

Certamen Recuperativo (30%) 23 de junio de 2002 Toda la materia.

Page 4: Sesión 1: Algoritmos Prof:Eridan Otto Programación de Computadores Lenguaje Pascal

El Ramo Programación de Computadores

Información General

•Bibliografía:K. Jensen, N. Wirth. Pascal User Manual and Report:ISO Pascal Standard. Spriger Verlag, 4 edition, 1991.

•Sitio WEB del ramo:http://www.inf.utfsm.cl/~ccastro/IWI-131

•Sito WEB con las clases:http://angelfire.lycos.com/linux/eotto/

•Correo del profesor: [email protected]•Clases : Lu 1-2, C:203 ; Mi 1-2 , C:364 •Horario de consultas : por confirmar.•Horario ayudantía:por confirmar.•Horario de laboratorios: por confirmar.

Programación de Computadores Lenguaje Pascal

Page 5: Sesión 1: Algoritmos Prof:Eridan Otto Programación de Computadores Lenguaje Pascal

El Ramo Programación de Computadores

Temas de la Asignatura

1. Algoritmos: análisis y resolución de problemas, pseudocódigo.

2. Estructura de un programa PASCAL: encabezado, declaraciones, cuerpo del programa.

3. Declaraciones: identificadores, definición de constantes, declaración de variables, comentarios.

4. Tipos de datos simples: tipos estándares INTEGER, REAL, BOOLEAN, CHAR. Compatibilidad de tipos, reglas de precedencia de los operadores, tipos definidos por el usuario, tipo enumerado, tipo sub-rango.

5. Sentencias básicas: asignación, entrada de datos, salida de datos.

6. Estructuras de control: secuencia, acción simple, acciones compuestas; selección, sentencias IF THEN ELSE, IF THEN, CASE OF; repetición, sentencias WHILE, REPEAT, FOR.

Programación de Computadores Lenguaje Pascal

Page 6: Sesión 1: Algoritmos Prof:Eridan Otto Programación de Computadores Lenguaje Pascal

El Ramo Programación de Computadores

Temas de la Asignatura

7. Subprogramas: diseño y estructura de programas, PROCEDURE, FUNCTION, parámetros por valor y por referencia, variables locales y globales.

8. Tipos de datos estructurados: ARRAY, algoritmos de búsqueda, algoritmos de ordenamiento, STRING.

9. Tipos de datos estructurados: RECORD.

10. Archivos: archivos de caracteres (texto), archivos enteros/reales, archivos de registros.

Programación de Computadores Lenguaje Pascal

Page 7: Sesión 1: Algoritmos Prof:Eridan Otto Programación de Computadores Lenguaje Pascal

Algoritmos: Análisis y resolución de problemas

Programación de Computadores Lenguaje Pascal

•Un problema se define como una situación en la cual un individuo desea hacer algo, pero desconoce el curso de la acción necesaria para lograr lo que quiere (Newell y Simon, 1972).

•Una situación en la cual un individuo actúa con el propósito de alcanzar una meta, utilizando para ello alguna estrategia en particular (Chi y Glaser, 1983).

¿Qué es la programación?• Es el proceso de planificar una secuencia de instrucciones que ha de seguir

una computadora.

• Para escribir dicha secuencia debemos seguir cierto procedimiento, que se compone de dos fases:

• Fase de resolución del problema

• Fase de implementación

Page 8: Sesión 1: Algoritmos Prof:Eridan Otto Programación de Computadores Lenguaje Pascal

Algoritmos: Análisis y resolución de problemas

Programación de Computadores Lenguaje Pascal

Fase de Resolución del problema

– Análisis: Comprender el problema, establecer su ámbito y las herramientas necesarias para resolverlo.

– Solución general (Algoritmo): Desarrollar una secuencia lógica de pasos que resuelva el problema.

– Prueba: Seguir los pasos para ver si la solución resuelve verdaderamente el problema.

Fase de Implementación

– Solución específica (Programa): Traducir el algoritmo a un lenguaje de programación.

– Prueba: Hacer que la computadora siga las instrucciones. Comprobar los resultados y hacer las correcciones necesarias.

– Uso: Utilizar el programa.

Page 9: Sesión 1: Algoritmos Prof:Eridan Otto Programación de Computadores Lenguaje Pascal

Programación de Computadores Lenguaje Pascal

Algoritmos: Análisis y resolución de problemas

Análisis

Solución general(Algoritmo)

Prueba

Resolución del problema

Solución específica(Programa)

Prueba

Uso

Implementación

Page 10: Sesión 1: Algoritmos Prof:Eridan Otto Programación de Computadores Lenguaje Pascal

Algoritmos: Análisis y resolución de problemas

Programación de Computadores Lenguaje Pascal

¿Qué es un algoritmo?

Un algoritmo esencialmentes es una secuencia de pasos permitida y estructurada que permite realizar operaciones con datos, transformándolos (Ej, ordenándolos, haciendo cálculos repetitivos, obteniendo estadísticas, seleccionando, etc) para llegar al resultado.

ResoluciónProblema

Corresponde a una serie de operaciones a realizar sobre los datos, lograda por medio de una adecuada combinación de instrucciones”

Corresponde al proceso de construcción de un algoritmo para alcanzar la meta propuesta

Algoritmo

Page 11: Sesión 1: Algoritmos Prof:Eridan Otto Programación de Computadores Lenguaje Pascal

Algoritmos: Análisis y resolución de problemas

Programación de Computadores Lenguaje Pascal

¿Qué es un algoritmo?

Es importante diferenciar entre el diseño mismo del algoritmo, y su ejecución ya sea realizada por una máquina o por un ser humano.

Ejecución

Problema

Datos

EntradaEntrada Salida (resultado)Salida (resultado)

Corresponde a una serie de operaciones realizadas sobre los datos, entregando otros datos como salida. El algoritmo “dirige” el proceso de ejecución.

Datos Manipulados

Algoritmo

• Es una sucesión de acciones que hay que realizar, completamente prefijada, y su correcta ejecución lleva a una solución segura del problema como, por ejemplo, realizar una raíz cuadrada o hacer una torta.

Page 12: Sesión 1: Algoritmos Prof:Eridan Otto Programación de Computadores Lenguaje Pascal

Programación de Computadores Lenguaje Pascal

Características de una algoritmo

Ejemplo : Encender un Automóvil

Algoritmos: Análisis y resolución de problemas

• Debe ser preciso, indicando un orden de ejecución.

• Debe ser definido, es decir, debe dar el mismo resultado todas la veces que se ejecute con los mismos parámetros.

• Debe ser finito, es decir, debe terminar en algún momento según un criterio de parada.

1. Poner la llave.

2. Asegurarse que la marcha está neutra.

3. Presionar el pedal del acelerador.

4. Girar la llave hasta la posición “arranque”.

5. Si el motor arranca antes de 6 seg, dejar la llave en la posición “encendido”.

6. Si el motor no arranca antes de 6 seg, volver al paso 3 (como máximo 5 veces).

7. Si el auto no parte, llevarlo al taller.

Page 13: Sesión 1: Algoritmos Prof:Eridan Otto Programación de Computadores Lenguaje Pascal

Algoritmos:Pseudocódigo

Programación de Computadores Lenguaje Pascal

Pseudocódigo, para poder indicar, por ejemplo, a un computador que realice alguna acción sobre los datos, se debe tener una especie de lenguaje conocido previamentepor el programador y por la máquina.

En este curso se verá PASCAL, pero antes, se debe entender que un algoritmo no depende del lenguaje mismo. El pseudocódigo es un lenguaje o una convención en español, que permite expresar lo que queremos que se haga para llegar a la meta.

En esta clase y en la próxima se realizarán y solucionarán problemas, es decir, se diseñarán Algoritmos usando pseudocódigo.

Diagramas de flujo, permiten expresar el algoritmo por medio de ciertas gráficas que ayudan a comprender mejor su mecánica.

Page 14: Sesión 1: Algoritmos Prof:Eridan Otto Programación de Computadores Lenguaje Pascal

Algoritmos:Pseudocódigo entrada y salida de datos

Programación de Computadores Lenguaje Pascal

Definición, dato: Es una estructura que se almacena en la “memoria” del computador y es representadaPor un tipo de datos. En adelante se hablará de Variables.

Definición, tipo dedato: para comenzar, antes de programar en PASCAL, usaremos sólo los siguientes tipos para variables:

- ENTERO, ej: -1, 0 ,1, 1000, -253

- REAL, ej: -1.001, 1E-10, 2.35

- CARÁCTER, ej: ‘a’,’A’,’1’

- BOOLEANO: VERDADERO,FALSO

Definición, variable: es un dato que a lo largo de la ejecución del algoritmo puede ir cambiando de valores, siempre manteniendo su tipo. Ejemplos:Contador :ENTERO (* variable de tipo ENTERO *);raizCuadrada :REAL (* variable de tipo REAL*);letraMinuscula :CARACTER (* variable de tipo CARACTER*);ValorVerdad : BOOLEANO(* variable de tipo “lógico”*);

Page 15: Sesión 1: Algoritmos Prof:Eridan Otto Programación de Computadores Lenguaje Pascal

Algoritmos:Pseudocódigo entrada y salida de datos

Programación de Computadores Lenguaje Pascal

¿Cómo comunicarnos con el computador?

Es el dispositivo estándarestándar de entrada de datos

Teclado

Pantalla

Es el dispositivo estándarestándar de salida de datos

Es

Instrucción en Pseudocódigo:ingresar(texto,variable1,variable2,....);NOTA:las variables de tipo BOOLEANA no se pueden ingresar directamente por teclado

Instrucción en Pseudocódigo:escribir(texto,variable1,variable2,....);

NOTA:las variables de tipo BOOLEANA no se pueden desplegar directamente por la pantalla

Page 16: Sesión 1: Algoritmos Prof:Eridan Otto Programación de Computadores Lenguaje Pascal

Algoritmos:Pseudocódigo entrada y salida de datos

Programación de Computadores Lenguaje Pascal

Ejemplo: Realizar un algoritmo que solicite ingresar por pantalla el valor aproximado de pi, un número entero que corresponde al radio de un círculo y despliegue por pantalla, del área del círculo.

Algoritmo

Valor de Pi

Valor radioEntrada

salida

Valor del área

ALGORITMO area;VARIABLES pi :REAL; radio:ENTERO;INICIO ingresar(‘por favor ingrese valor de pi:’,pi); ingresar(‘por favor ingrese valor del radio:’,radio); escribir(‘Area del circulo:’,pi*radio*radio);FIN.

Pantalla

por favor ingrese valor de pi:

Teclado

3.141516por favor ingrese valor del radio: 2

Area del circulo: 12.566

salida

Entrada

Page 17: Sesión 1: Algoritmos Prof:Eridan Otto Programación de Computadores Lenguaje Pascal

Algoritmos:Asignación

Programación de Computadores Lenguaje Pascal

Definición, asignación:es la operación de dar valor a una variable o modificarla. Se va a representarla con el símbolo <-- ; una flecha apuntando a la izquierda. En pseudocódigo, el formato de una asignación es:

nombre de la variable  expresiónalgunos ejemplos: A 100 ; significa que a la variable A se le ha asignado el valor 100, ahora A vale 100. suma 5+10; asigna el valor 15 a la variable suma, a través de una asignación aritmética. x  z + v ; asigna el valor de la suma de las variables z y v a la variable x. El resultado depende de los valores que se asignen PREVIAMENTE a z y a v

Toda asignación es destructiva. Esto quiere decir que el valor que tuviera antes la variable se pierde y se reemplaza por el nuevo valor asignado, así cuando se ejecuta esta secuencia:B 25B 100B 77el valor final que toma B será 77 pues los valores 25 y 100 han sido destruidos. (o reemplazados en una parte de la memoria principal del computador)

Page 18: Sesión 1: Algoritmos Prof:Eridan Otto Programación de Computadores Lenguaje Pascal

Algoritmos, pseudocódigo:Asignación

Programación de Computadores Lenguaje Pascal

Cuando una variable aparece a ambos lados del símbolo de asignación como: C  C + 1

Significa incremento del valor que c “ya tiene” más uno. Siempre inicializar las variables al comenzar el programa con cero u otro valor (dependiendo del problema).

En una asignación, se puen hacer muchas más cosas que una suma, dependiendo del tipo de datos, se pueden combinar operadores, formando expresiones.

Para ENTERO, algunos operadores son: +,- ,*, DIV,RESTOPara REAL, algunos operadores son: +,- ,*, /,REDONDEAR(),TRUNCAR()Para CARACTER, algunos operadores son: CODIGO() ,CAR()Para BOOLEANO, algunos operadores son: AND,OR,NOT

Para agrupar operaciones, se usan: (,)Ejemplo:

C A*(B+(C DIV D))

Page 19: Sesión 1: Algoritmos Prof:Eridan Otto Programación de Computadores Lenguaje Pascal

Algoritmos, pseudocódigo:Asignación

Programación de Computadores Lenguaje Pascal

Recuerdo: no se pueden asignar valores a una variable de un tipo diferente al suyo.Entonces, qué valor aparece por pantalla en el siguiente algoritmo, si se digita en teclado 20?:

ALGORITMO incrementa;VARIABLES entrada,salida :ENTERO;INICIO ingresar(‘por favor ingrese valor inicial :’,entrada); salida---1; entrada----2*entrada; salida---salida + entrada; escribir(‘numero impar:’,salida);FIN.

Page 20: Sesión 1: Algoritmos Prof:Eridan Otto Programación de Computadores Lenguaje Pascal

Algoritmos, pseudocódigo.Estructura de control :SecuenciaDiagrama de flujo para el ejemplo anterior:

Programación de Computadores Lenguaje Pascal

Inicio

Fin

Ingresarentrada

salida---1

entrada-2*entrada

salidasalida + entrada

escribirsalida

20La ejecución un paso tras otro de un algoritmo sigue una cierta pauta o estructura, la primera a estudiar es la secuencial. Esto quiere decir que se ejecutan las instrucciones o sentencias en orden, una tras otra, empezando por la primera del algoritmo, acabando por la última.

Un conjunto de instrucciones se puede agrupar en bloques,con un comienzo y un final. La estructura de control secuencia, significa que estos bloques se van ejecutando uno tras otro.

Este enfoque se llama refinamiento sucesivo o enfoque estructurado de programación.Esto es, ir descomponiendo el algoritmo de acciones generales hasta llegar al nivel de instrucciones o sentencias.

>41>>

Page 21: Sesión 1: Algoritmos Prof:Eridan Otto Programación de Computadores Lenguaje Pascal

Algoritmos, pseudocódigo.Estructura de control :SecuenciaEj: Desarrolle un algoritmo que entregue la edad de dos hermanos,sabiendo que el padre tiene 40 años, la diferencia de edad con el primer hijo es de 35 años, y que el segundo tiene el doble de la edad de su hermano.

Una primera aproximación al problema podría ser:

•Calcular la edad del hermano menor-Calcular la edad del hermano mayor-Escribir en pantalla los resultados

A este nivel, no se ha llegado aún al pseudocódigo, solo se definen “grandes tareas” a realizar, que a su vez pueden dividirse en tareas secuenciales más simples:

-Asignar a edad hermano menor : edad del padre menos la diferencia-Asignar a edad del hermano mayor : 2*(edad hermano menor)-Escribir en pantalla edad hermano menor -Escribir en pantalla edad hermano mayor

En este segundo refinamiento se aprecian ya algunas opreaciones más precisas, y cercanas a la solución.Finalmente se formaliza el algoritmo:

Programación de Computadores Lenguaje Pascal

Page 22: Sesión 1: Algoritmos Prof:Eridan Otto Programación de Computadores Lenguaje Pascal

Algoritmos, pseudocódigo.Estructura de control :Secuencia

Programación de Computadores Lenguaje Pascal

ALGORITMO edades;

VARIABLES

edadHermanoMay, edadHermanoMen :ENTERO;

diferencia: ENTERO;

INICIO

Diferencia --35;

edadHermanoMen --- 40 - diferencia

edadHermanoMay----2* edadHermanoMen ;

escribir(‘Edad hermano menor :’, edadHermanoMen );

escribir(‘Edad hermano mayor :’, edadHermanoMay );

FIN.

Asignación

Estructura deControlSecuencial

Secuencia decálculos

Secuencia desalida

Secuencia deinicialización

Page 23: Sesión 1: Algoritmos Prof:Eridan Otto Programación de Computadores Lenguaje Pascal

Fin Clase 1