PROF. ING. JULIO CESAR CANO RAMIREZ [email protected] [email protected] Cel 3146824933...

38
PROF. ING. JULIO CESAR CANO RAMIREZ [email protected] [email protected] Cel 3146824933 Metodologia de la programación I

Transcript of PROF. ING. JULIO CESAR CANO RAMIREZ [email protected] [email protected] Cel 3146824933...

Page 1: PROF. ING. JULIO CESAR CANO RAMIREZ jcanoramirez@gmail.com jcanoramirez@hotmail.com Cel 3146824933 Metodologia de la programación I.

PROF. ING. JULIO CESAR CANO RAMIREZ

[email protected]@hotmail.com

Cel 3146824933

Metodologia de la programación I

Page 2: PROF. ING. JULIO CESAR CANO RAMIREZ jcanoramirez@gmail.com jcanoramirez@hotmail.com Cel 3146824933 Metodologia de la programación I.

FUNDAMENTOS DE ALGORITMOS

Computabilidad: Término matemático para nombrar a los estudios sobre teoría de la computación. Consiste en encontrar la representación adecuada para la descripción de un problema o un fenómeno.

Conocimiento transmisible: se da si se cierra el ciclo

Descripción Representación

Page 3: PROF. ING. JULIO CESAR CANO RAMIREZ jcanoramirez@gmail.com jcanoramirez@hotmail.com Cel 3146824933 Metodologia de la programación I.

FUNDAMENTOS DE ALGORITMOS

Modelo: Especificación, generalmente en términos de un lenguaje matemático, de los pasos necesarios para reproducir, aquí y ahora, un subconjunto determinado de la realidad descrito previamente

Pregunta: ¿Todo aquello que es descriptible es representable? ¿Habrá una representación que simule completamente lo

descrito? Cuanto más adecuada sea la descripción del proceso,

tanto mejor será el resultado que emula lo real

Page 4: PROF. ING. JULIO CESAR CANO RAMIREZ jcanoramirez@gmail.com jcanoramirez@hotmail.com Cel 3146824933 Metodologia de la programación I.

FUNDAMENTOS DE ALGORITMOS

Supongamos que se crea una máquina para producir descripciones en términos de cadenas de símbolos.

Dada una descripción cualquiera, la analiza durante un tiempo finito y después emite su dictámen (si o no) con respecto al problema

Pregunta : ¿existirá una máquina así?

DescripciónProcedimiento

Dedecisión

SI

NO

HAYSOLUCIÓN

Page 5: PROF. ING. JULIO CESAR CANO RAMIREZ jcanoramirez@gmail.com jcanoramirez@hotmail.com Cel 3146824933 Metodologia de la programación I.

FUNDAMENTOS DE ALGORITMOS

1. Definición o análisis del problema: Descripción específica y comprensible del problema a resolver

2. Diseño del algoritmo: Planteamiento de los pasos a seguir para resolver el problema

3. Transformación del algoritmo en un programa independientemente del lenguaje de programación.

4. Ejecución y validación del programa

5. Mejoras y correcciones al programa

Page 6: PROF. ING. JULIO CESAR CANO RAMIREZ jcanoramirez@gmail.com jcanoramirez@hotmail.com Cel 3146824933 Metodologia de la programación I.

FUNDAMENTOS DE ALGORITMOS

Algoritmo: Conjunto ordenado y finito de pasos u operaciones que permite hallar la solución de un problema. Es un método formal y sistemático de representar la descripción de un proceso.

CARACTERÍSTICAS:– Preciso: debe indicar el orden de la realización de cada paso y no

debe tener ambigüedad– Definido: Si se sigue dos veces o más se obtendrá e el mismo

resultado cada vez– Finito: Debe terminar en algún momento. Tiene un número

determinado de pasos

Page 7: PROF. ING. JULIO CESAR CANO RAMIREZ jcanoramirez@gmail.com jcanoramirez@hotmail.com Cel 3146824933 Metodologia de la programación I.

FUNDAMENTOS DE ALGORITMOS

– Correcto: Sin errores– Debe tener al menos una salida– Su solución debe ser concreta– Debe ser sencillo y legible– Eficiente y efectivo– Se ha de desarrollar en el menor tiempo posible

Un algoritmo debe describir tres partes:– Entrada(s) : elementos o condiciones iniciales

necesarios para resolver el problema.– Proceso : elaboración del procedimiento.– Salida(s): Resultados que se desean obtener

Page 8: PROF. ING. JULIO CESAR CANO RAMIREZ jcanoramirez@gmail.com jcanoramirez@hotmail.com Cel 3146824933 Metodologia de la programación I.

FUNDAMENTOS DE ALGORITMOS

Pseudocódigo: Representación descriptiva de las operaciones de un algoritmo. Representa una secuencia lógica de actividades, que llevarán en conjunto a la solución de un problema. Los elementos que debe llevar un algoritmo son

– Cabecera del programa o algoritmo: Existen pasos o procedimientos que se realizan para comenzar un programa. Siempre que se haga debe ponerse un encabezado de programa, en donde debe expresarse el identificador o nombre correspondiente con la palabra reservada que señale el lenguaje, generalmente ésta suele ser program que en algoritmia significa algoritmo

– Declaración de Variables: En este punto se describen todas las variables que son usadas en el algoritmo, haciendo una lista de sus nombres y especificando a qué tipo corresponde cada uno.

Page 9: PROF. ING. JULIO CESAR CANO RAMIREZ jcanoramirez@gmail.com jcanoramirez@hotmail.com Cel 3146824933 Metodologia de la programación I.

FUNDAMENTOS DE ALGORITMOS

– Declaración de Constantes: En este punto se declararán todas las constantes de carácter estándar; es decir, que tengan nombre y un valor ya conocido o valores que ya no pueden variar en el transcurso del algoritmo

– Cuerpo del algoritmo: Una vez añadidas la cabecera y la declaración de variables y constantes se procede a realizar los pasos del algoritmo

Diagrama de flujo: Es la representación gráfica de las operaciones de un algoritmo. Contiene símbolos gráficos que se encuentran estandarizados. Los símbolos más comúnes son:

Page 10: PROF. ING. JULIO CESAR CANO RAMIREZ jcanoramirez@gmail.com jcanoramirez@hotmail.com Cel 3146824933 Metodologia de la programación I.

Dia

gra

ma

s d

e f

lujo

más

co

ne

s

Page 11: PROF. ING. JULIO CESAR CANO RAMIREZ jcanoramirez@gmail.com jcanoramirez@hotmail.com Cel 3146824933 Metodologia de la programación I.

Dia

gra

ma

s d

e f

lujo

más

co

ne

s (

con

t.)

Page 12: PROF. ING. JULIO CESAR CANO RAMIREZ jcanoramirez@gmail.com jcanoramirez@hotmail.com Cel 3146824933 Metodologia de la programación I.

FUNDAMENTOS DE ALGORITMOS

Instrucciones que se le dan a la Computadora

Un algoritmo se compone de muchos pasos, todos diferentes, los que son interpretados como instrucciones (lenguaje de bajo nivel), sentencias o proposiciones (lenguaje de alto nivel). Entonces, en un programa, la secuencia de instrucciones especifica las operaciones que la computadora debe realizar.

Page 13: PROF. ING. JULIO CESAR CANO RAMIREZ jcanoramirez@gmail.com jcanoramirez@hotmail.com Cel 3146824933 Metodologia de la programación I.

FUNDAMENTOS DE ALGORITMOS

Las instrucciones básicas y comunes pueden dividirse en cuatro grupos:

– Instrucciones de Entrada /Salida: Transferencia de datos e información entre dispositivos periféricos (teclado, impresora, unidad de disco, etc.) y memoria central.

– Instrucciones Aritmético-Lógicas: Tienen la función de ejecutar operaciones aritméticas (suma, resta, multiplicación, división, potenciación), lógicas (operaciones and, or, not, etc.).

– Instrucciones Selectivas: Estas permiten la elección de una tarea entre varias alternativas en función de los resultados de diferentes expresiones condicionales.

– Instrucciones Repetitivas: Permiten la repetición de secuencias de instrucciones, un número determinado o indeterminado de veces.

Page 14: PROF. ING. JULIO CESAR CANO RAMIREZ jcanoramirez@gmail.com jcanoramirez@hotmail.com Cel 3146824933 Metodologia de la programación I.

FUNDAMENTOS DE ALGORITMOS

CONSTANTES Y VARIABLES Las constantes son datos cuyos valores no cambian,

pero existen datos cuyos valores sí varían durante la ejecución del programa, a éstos los llamamos variables. En la mayoría de los lenguajes de programación se permiten diferentes tipos de constantes: enteras, reales, caracteres y boolean o lógicas, quienes representan datos de estos tipos.

Entonces una variable se conoce como un objeto, o partida de datos cuyo valor puede cambiar durante la ejecución del algoritmo o programa.

A las variables y a las constantes se les conoce o identifica por los atributos siguientes: nombre o identificador que lo asigna y tipo que describe el uso de la variable.

Page 15: PROF. ING. JULIO CESAR CANO RAMIREZ jcanoramirez@gmail.com jcanoramirez@hotmail.com Cel 3146824933 Metodologia de la programación I.

FUNDAMENTOS DE ALGORITMOS

Identificadores:– Deben empezar con letra, excepto ñ o Ñ, o guión bajo

y estar seguidos de cero o más letras, números o guiones bajos

– No se permiten símbolos como– $ ¡ ! ¿ ? ° | & - % # @ , . ‘ “ / \ o espacios en blanco y

tabuladores Palabras reservadas: Existe un conjunto

palabras que se utilizan tanto en pseudocódigo como en los lenguajes de programación no pueden ser utilizadas como nombres de identificadores ni de funciones.

Page 16: PROF. ING. JULIO CESAR CANO RAMIREZ jcanoramirez@gmail.com jcanoramirez@hotmail.com Cel 3146824933 Metodologia de la programación I.

FUNDAMENTOS DE ALGORITMOS

OPERACION DE ASIGNACION Se le otorgan valores a una variable. Esta operación

de asignación se conoce como instrucción o sentencia de asignación, si es que está en un lenguaje de programación

La operación de asignación es representada por un símbolo u operador:

La acción de asignar puede ser destructiva ya que puede perderse el valor que tuviera la variable antes, siendo reemplazado por el nuevo valor. Las acciones de asignación se clasifican según sea el tipo de expresiones en: Asignación aritméticas, Asignación lógica y Asignación de caracteres

Page 17: PROF. ING. JULIO CESAR CANO RAMIREZ jcanoramirez@gmail.com jcanoramirez@hotmail.com Cel 3146824933 Metodologia de la programación I.

FUNDAMENTOS DE ALGORITMOS

EXPRESIONES Son la combinación de constantes, variables, símbolos

de operación, paréntesis y nombres de funciones especiales, idea que puede ser utilizada en notaciones de matemática tradicional. Los valores de las variables nos permitirán determinar el valor de las expresiones, debido a que éstos están implicados en la ejecución de las operaciones indicadas. Estas constan de operandos y operadores.

Según el tipo de objetos que manipulan, pueden clasificarse en:

– Aritméticas -> resultado tipo numérico.– relacionales -> resultado tipo lógico.– lógicas -> resultado tipo lógico.– caracter -> resultado tipo caracter.

Page 18: PROF. ING. JULIO CESAR CANO RAMIREZ jcanoramirez@gmail.com jcanoramirez@hotmail.com Cel 3146824933 Metodologia de la programación I.

FUNDAMENTOS DE ALGORITMOS

Expresiones Aritméticas Estas expresiones son análogas a las fórmulas

matemáticas. Las variables y constantes son numéricas (real o entera) y las operaciones son las aritméticas

Operadores aritméticos Precedencia - (operador monario) ^ (exponenciación), (radicación) *, / (división real), +, - div o / (cociente de división entera) , mod o %

(residuo de división entera)

Page 19: PROF. ING. JULIO CESAR CANO RAMIREZ jcanoramirez@gmail.com jcanoramirez@hotmail.com Cel 3146824933 Metodologia de la programación I.

FUNDAMENTOS DE ALGORITMOS

Expresiones lógicas: Su valor es siempre verdadero o falso.

Se forman combinando constantes lógicas , variables lógicas y otras expresiones lógicas, utilizando los operadores lógicos y los operadores relacionales

Operadores relacionales Precedencia >, < >=, <= = o == (igualdad) <> o != (desigualdad)

Page 20: PROF. ING. JULIO CESAR CANO RAMIREZ jcanoramirez@gmail.com jcanoramirez@hotmail.com Cel 3146824933 Metodologia de la programación I.

FUNDAMENTOS DE ALGORITMOS

Operadores lógicos Precedencia ! o ~ o not (negado) and o && or o || Nota: En C un valor

falso se toma como 0 y un valor verdadero se toma como cualquier valor diferente de cero

A NOT

F V

V F

A B AND OR

F F F F

F V F V

V F F V

V V V V

Page 21: PROF. ING. JULIO CESAR CANO RAMIREZ jcanoramirez@gmail.com jcanoramirez@hotmail.com Cel 3146824933 Metodologia de la programación I.

FUNDAMENTOS DE ALGORITMOS

ENTRADA Y SALIDA DE INFORMACION El ingreso de datos es importante para que la

computadora realice los cálculos; esta operación es la entrada, luego, estos datos se convertirán en resultados y serán la salida.

A la entrada se le conoce como operación de Lectura (read). La operación de lectura se realiza a través de los dispositivos de entrada que son (teclado, unidades de disco, CD-Rom, etc.).

La operación de salida se realiza por medio de dispositivos como (monitor, impresora, etc), a esta operación se le conoce como escritura (write).

Page 22: PROF. ING. JULIO CESAR CANO RAMIREZ jcanoramirez@gmail.com jcanoramirez@hotmail.com Cel 3146824933 Metodologia de la programación I.

INTRODUCCION A LA PROGRAMACION ESTRUCTURADA

El entendimiento de los algoritmos y luego de los programas, exige que su diseño sea fácil de comprender y su flujo lógico un camino fácil de seguir

La descomposición de programas en módulos más simples de programar se dará a través de la programación modular, y la programación estructurada permitirá la escritura de programas fáciles de leer y modificar.

Page 23: PROF. ING. JULIO CESAR CANO RAMIREZ jcanoramirez@gmail.com jcanoramirez@hotmail.com Cel 3146824933 Metodologia de la programación I.

PROGRAMACION MODULAR

Este es uno de los métodos para el diseño más flexible y de mayor performance para la productividad de un programa. En este tipo de programación el programa es dividido en módulos, cada uno de las cuales realiza una tarea específica, codificándose independientemente de otros módulos. Cada uno de éstos son analizados, codificados y puestos a punto por separado.

Los programas contienen un módulo denominado módulo principal, el cual supervisa todo lo que sucede, transfiriendo el control a submódulos (los que son denominados subprogramas), para que puedan realizar sus funciones. Sin embargo, cada submódulo devolverá el control al módulo principal una vez completada su tarea. Si las tareas asignadas a cada submódulo son demasiado complejas, se procederá a una nueva subdivisión en otros módulos más pequeños aún.

Page 24: PROF. ING. JULIO CESAR CANO RAMIREZ jcanoramirez@gmail.com jcanoramirez@hotmail.com Cel 3146824933 Metodologia de la programación I.

PROGRAMACION MODULAR

Este procedimiento se realiza hasta que cada uno de los módulos realicen tareas específicas. Estas pueden ser entrada, salida, manipulación de datos, control de otros módulos o alguna combinación de éstos. Puede ser que un módulo derive el control a otro mediante un proceso denominado bifurcación, pero se debe tomar en cuenta que esta derivación deberá ser devuelta a su módulo original.

Los módulos son independientes, de modo que ningún módulo puede tener acceso directo a cualquier otro módulo, excepto el módulo al que llama y sus submódulos correspondientes. Sin embargo, los resultados producidos por un módulo pueden ser utilizados por otro módulo cuando se transfiera a ellos el control.

Page 25: PROF. ING. JULIO CESAR CANO RAMIREZ jcanoramirez@gmail.com jcanoramirez@hotmail.com Cel 3146824933 Metodologia de la programación I.

PROGRAMACION MODULAR

Page 26: PROF. ING. JULIO CESAR CANO RAMIREZ jcanoramirez@gmail.com jcanoramirez@hotmail.com Cel 3146824933 Metodologia de la programación I.

PROGRAMACION ESTRUCTURADA

Cuando hablamos de Programación Estructurada, nos referimos a un conjunto de técnicas que con el transcurrir del tiempo han evolucionado. Gracias a éstas, la productividad de un programa se ve incrementada de forma considerable y se reduce el tiempo de escritura, de depuración y mantenimiento de los programas. Aquí se hace un número limitado de estructuras de control, se reduce la complejidad de los problemas y se minimiza los errores.

Gracias a la programación estructurada, es más fácil la escritura de los programas, también lo es su verificación, su lectura y mantenimiento. Esta programación es un conjunto de técnicas que incorpora:

– diseño descendente (top-down)– recursos abstractos– estructuras básicas

Page 27: PROF. ING. JULIO CESAR CANO RAMIREZ jcanoramirez@gmail.com jcanoramirez@hotmail.com Cel 3146824933 Metodologia de la programación I.

PROGRAMACION ESTRUCTURADA

Los recursos abstractos son utilizados como un apoyo en la programación estructurada, en vez de los recursos concretos de los que se dispone (lenguaje de programación determinado).

Para separar un programa en términos de recursos abstractos debemos descomponer acciones complejas en acciones más simples, las que son capaces de ejecutar o constituyen instrucciones de computadora disponible.

Page 28: PROF. ING. JULIO CESAR CANO RAMIREZ jcanoramirez@gmail.com jcanoramirez@hotmail.com Cel 3146824933 Metodologia de la programación I.

PROGRAMACION ESTRUCTURADA

Diseño descendente (Top-Down) Este es un proceso en el cual el problema se

descompone en una serie de niveles o pasos sucesivos (stepwise). Esta metodología consiste en crear una relación entre las etapas de estructuración, las que son sucesivas, de tal forma que se interrelacionen mediante entradas y salidas de información. Considerando los problemas desde dos puntos de vista: ¿que hace? y ¿cómo lo hace?

Page 29: PROF. ING. JULIO CESAR CANO RAMIREZ jcanoramirez@gmail.com jcanoramirez@hotmail.com Cel 3146824933 Metodologia de la programación I.

PROGRAMACION ESTRUCTURADA

Page 30: PROF. ING. JULIO CESAR CANO RAMIREZ jcanoramirez@gmail.com jcanoramirez@hotmail.com Cel 3146824933 Metodologia de la programación I.

FUNDAMENTOS DE ALGORITMOS

Estructuras básicas de control En un programa estructurado, el flujo lógico se

gobierna por las estructuras de control básicas:– Secuenciales– Selectivas o de selección– Repetitivas

Teorema de la Programación Estructurada: Un programa propio puede ser escrito utilizando

sólo los tres tipos de estructuras de control antes mencionadas

Page 31: PROF. ING. JULIO CESAR CANO RAMIREZ jcanoramirez@gmail.com jcanoramirez@hotmail.com Cel 3146824933 Metodologia de la programación I.

PROGRAMACION ESTRUCTURADA

ESTRUCTURA SECUENCIAL Es la estructura en donde una acción (instrucción) sigue

a otra de manera secuencial. Las tareas se dan de tal forma que la salida de una es la

entrada de la que sigue y así en lo sucesivo hasta cumplir con todo el proceso.

Decisión: Elegir una alternativa o camino en el flujo del algoritmo cuando se cumpla o no una determinada condición.

El resultado de la condición se evalúa como falso o verdadero y se obtiene al comparar dos expresiones mediante operadores relacionales. De ser necesario realizar más de una comparación al mismo tiempo se asocian con operadores lógicos

Page 32: PROF. ING. JULIO CESAR CANO RAMIREZ jcanoramirez@gmail.com jcanoramirez@hotmail.com Cel 3146824933 Metodologia de la programación I.

PROGRAMACION ESTRUCTURADA

Estructuras de controlDecisiones (cont.)En algunas ocasiones para realizar

las comparaciones también se hace uso de una variable booleana o bandera (flag). Una bandera es una variable que sólo puede tener dos valores: falso o verdadero

Page 33: PROF. ING. JULIO CESAR CANO RAMIREZ jcanoramirez@gmail.com jcanoramirez@hotmail.com Cel 3146824933 Metodologia de la programación I.

PROGRAMACION ESTRUCTURADA

Estructuras de control Ciclo, loop, lazo o bucle: Repetir un conjunto de

instrucciones varias veces con base en que se cumpla o no una determinada condición.

A cada ejecución del conjunto de instrucciones en un ciclo se le llama iteración

Tipos de ciclos: – Mientras (while): Se lleva a cabo mientras se cumpla una

condición. Primero evalúa la condición y luego ejecuta el conjunto de instrucciones. De no cumplirse la condición desde el inicio, no hace nada y sigue con el flujo normal del algoritmo

– Hacer mientras (do while): Realiza un conjunto de instrucciones y continua mientras se cumpla una condición. A diferencia del anterior, este ciclo se ejecuta por lo menos una vez

– Desde hasta (for): Se utiliza cuando se conoce el número de veces que se va a repetir un conjunto de instrucciones. Requiere de un valor inicial, un valor final y un contador

Page 34: PROF. ING. JULIO CESAR CANO RAMIREZ jcanoramirez@gmail.com jcanoramirez@hotmail.com Cel 3146824933 Metodologia de la programación I.

PROGRAMACION ESTRUCTURADA

Contador: variable que almacena el número de veces que se ha repetido un conjunto de instrucciones en un ciclo; en otras palabras, indica el número de veces que se ha ejecutado el ciclo

En un ciclo, también hay otro tipo de que se hacer usa frecuentemente

Acumulador: aquella variable que almacena el resultado de una operación anterior y se utiliza para obtener el siguiente resultado

Page 35: PROF. ING. JULIO CESAR CANO RAMIREZ jcanoramirez@gmail.com jcanoramirez@hotmail.com Cel 3146824933 Metodologia de la programación I.

PROGRAMACION ESTRUCTURADA

Decisiones anidadasCuando se tiene una serie de

estructuras de control de la forma

Page 36: PROF. ING. JULIO CESAR CANO RAMIREZ jcanoramirez@gmail.com jcanoramirez@hotmail.com Cel 3146824933 Metodologia de la programación I.

PROGRAMACION ESTRUCTURADA

si condición1 entonces– si condición2 entonces…

si condiciónN entoncessinofin_si

– sino– fin_si

sinofin_si

Page 37: PROF. ING. JULIO CESAR CANO RAMIREZ jcanoramirez@gmail.com jcanoramirez@hotmail.com Cel 3146824933 Metodologia de la programación I.

PROGRAMACION ESTRUCTURADA

Decisión múltiple o alternativa selectiva múltiple (según_sea, caso de/case)

Cuando una variable puede tomar varios valores, generalmente de tipo entero o caracter, se puede hacer uso de la decisión anidada para evaluar los distintos casos, sin embargo, se puede simplificar al poner una estructura del tipo

Page 38: PROF. ING. JULIO CESAR CANO RAMIREZ jcanoramirez@gmail.com jcanoramirez@hotmail.com Cel 3146824933 Metodologia de la programación I.

PROGRAMACION ESTRUCTURADA