CONCEPTO DE PROGRAMA€¦ · Existen estructuras que nos permiten variar la “secuencialidad” de...

34
ESTRUCTURA GENERAL DE UN PROGRAMA

Transcript of CONCEPTO DE PROGRAMA€¦ · Existen estructuras que nos permiten variar la “secuencialidad” de...

Page 1: CONCEPTO DE PROGRAMA€¦ · Existen estructuras que nos permiten variar la “secuencialidad” de un programa, Lo deseable es que siempre esa variación sea PRECISA Y CONTROLADA.

ESTRUCTURA GENERAL DE UN PROGRAMA

Page 2: CONCEPTO DE PROGRAMA€¦ · Existen estructuras que nos permiten variar la “secuencialidad” de un programa, Lo deseable es que siempre esa variación sea PRECISA Y CONTROLADA.

CONCEPTO DE PROGRAMA� Un programa es un conjunto de instrucciones que al ser ejecutadas

resuelven un problema.� Un programa tiene 3 partes:

� Entrada de datos: Normalmente se va a ejecutar a través de instrucciones de lectura. Lo que se le pide al usuario es la información que el programa va a necesitar para ejecutarse y se hace a través de lecturas.través de lecturas.

� Acciones de un algoritmo: Parte en la que se resuelve el problema usando los datos de entrada.

� Salida: Mostrar en un dispositivo de salida los resultados de las acciones anteriormente realizadas. Son acciones de escritura.

� En la parte de las acciones a ejecutar se distinguirán dos partes:� Declaración de variables.� Instrucciones del programa.

Page 3: CONCEPTO DE PROGRAMA€¦ · Existen estructuras que nos permiten variar la “secuencialidad” de un programa, Lo deseable es que siempre esa variación sea PRECISA Y CONTROLADA.

INSTRUCCIONES Y TIPOS DE INSTRUCCIONES

� Para que una instrucción se ejecute tiene que ser llevada a memoria.

� En cuanto al orden de ejecución de las instrucciones, el programa puede ser de dos tipos:� Programas lineales: Se va ejecutando una instrucción tras otra y � Programas lineales: Se va ejecutando una instrucción tras otra y el orden de ejecución es igual al orden de escritura.

� Programas no lineales: Las instrucciones no se ejecutan en el mismo orden en el que aparecen escritas, sino que se realizan saltos que nos mandan de unas instrucciones a otras

Page 4: CONCEPTO DE PROGRAMA€¦ · Existen estructuras que nos permiten variar la “secuencialidad” de un programa, Lo deseable es que siempre esa variación sea PRECISA Y CONTROLADA.

INSTRUCCIONES Y TIPOS DE INSTRUCCIONES

� Instrucciones de Inicio y Fin. (inicio, fin)� Instrucciones de Asignación (Dar un valor a una variable: nombre� “Pedro”).

� Instrucciones de Lectura/Escritura: Introducir o sacar información por dispositivos E/S. (leer, escribir)

� Instrucciones de bifurcación: Alternan el orden de ejecución � Instrucciones de bifurcación: Alternan el orden de ejecución del programa. Salto a otra instrucción que no es la siguiente.� Bifurcación incondicional: El salto se produce siempre que el programa vaya a esa instrucción: Goto � Ir a.

� Bifurcación condicional: Se ejecutan un conjunto de instrucciones u otras dependiendo del valor devuelto al evaluar una condición.

� Bifurcación condicional es la que siempre vamos a usar.

Page 5: CONCEPTO DE PROGRAMA€¦ · Existen estructuras que nos permiten variar la “secuencialidad” de un programa, Lo deseable es que siempre esa variación sea PRECISA Y CONTROLADA.

TIPOS DE INSTRUCCIONES::ASIGNACIÓN

� Mediante la asignación, una variable recibe un valor (que proviene de una expresión).

� Una expresión puede ser: una suma, una llamada a función, una constante, un tipo numérico, caracteres,…es decir, una variable puede contener cualquier tipo de dato siempre y cuando ese tipo de dato sea acorde con el tipo de datos definido en la declaración de la variable.

� La acción de asignar es destructiva, esto implica que el valor que una � La acción de asignar es destructiva, esto implica que el valor que una variable contuviera antes de la asignación se pierde, reemplazándose por el nuevo valor, de ahí la necesidad de las “rotaciones” de variables.

� Ejemplos: � A�80 (80 se almacena en la variable A)

� nombre�”Pepe” (Los caracteres “Pepe” se almacenan en la variable nombre)

� PI� 3.141592 (La variable PI recibe el valor de una constante)

� suma� 3 + B (La variable suma recibe el valor de 3 más el valor de la variable B)

Page 6: CONCEPTO DE PROGRAMA€¦ · Existen estructuras que nos permiten variar la “secuencialidad” de un programa, Lo deseable es que siempre esa variación sea PRECISA Y CONTROLADA.

TIPOS DE INSTRUCCIONES::ASIGNACIÓN

� Ejercicio:� ¿Cual será el valor de la variable C después del siguiente fragmento de

código?A�12B�AC�B� ¿Cuál es el valor de la variable Z después del siguiente fragmento de código?� ¿Cuál es el valor de la variable Z después del siguiente fragmento de código?Z�2Z� Z + 5

� Es importante inicializar las variables para evitar errores en el contenido de las mismas:

A�0B�0C�0

Page 7: CONCEPTO DE PROGRAMA€¦ · Existen estructuras que nos permiten variar la “secuencialidad” de un programa, Lo deseable es que siempre esa variación sea PRECISA Y CONTROLADA.

TIPOS DE INSTRUCCIONES::LECTURA� Este tipo de instrucciones facilita la lectura de datos de un dispositivo de entrada (teclado, fichero,…)

� Ejemplo:leer(A, B, C) Si los valores introducidos por teclado son 17, 25, 32, esta sentencia equivaldría a:32, esta sentencia equivaldría a:

A�17

B�25

C�32

Page 8: CONCEPTO DE PROGRAMA€¦ · Existen estructuras que nos permiten variar la “secuencialidad” de un programa, Lo deseable es que siempre esa variación sea PRECISA Y CONTROLADA.

TIPOS DE INSTRUCCIONES::ESCRITURA� Estas instrucciones muestran datos en un dispositivo de salida (pantalla, fichero,…)

� Ejemplo:A�400

B�500B�500

NOMBRE�”Antonio”

Escribir (A, B, NOMBRE)

La salida sería 400, 500, Antonio

Page 9: CONCEPTO DE PROGRAMA€¦ · Existen estructuras que nos permiten variar la “secuencialidad” de un programa, Lo deseable es que siempre esa variación sea PRECISA Y CONTROLADA.

TIPOS DE DATOS Y OPERACIONES PRIMITIVAS

� Los tipos de datos que veremos al principio serán de los siguientes tipos:� Numéricos:

� Enteros y Reales

� Lógicos (o booleanos): cierto o falso (true, false)� Carácter: almacenan un solo carácter (número, letra o carácter especial)� Cadenas: conjunto de caracteres almacenados en una única variable delimitados

por “” o bien ‘’.

� Una expresión se compone de operandos y operadores, y según el tipo de datos � Una expresión se compone de operandos y operadores, y según el tipo de datos que manejan podemos encontrar cuatro tipos de expresiones:� Aritméticas: su resultado es un tipo numérico� Lógicas: su resultado es de tipo lógico (NO, Y, O)� Relacionales : su resultado es de tipo lógico (<=, >, <,…)� Carácter: : su resultado es de tipo carácter

� Existen una serie de reglas de prioridad que debemos conocer a la hora de evaluar una expresión, sea del tipo que sea.(OJO en coincidencia de precedencia� entonces orden de prioridad es de izquierda a derecha)

Page 10: CONCEPTO DE PROGRAMA€¦ · Existen estructuras que nos permiten variar la “secuencialidad” de un programa, Lo deseable es que siempre esa variación sea PRECISA Y CONTROLADA.

FLUJO DE CONTROL DE UN PROGRAMA� El flujo de control hace referencia al orden en el que se ejecutan las

instrucciones, de forma general este flujo es secuencial (una instrucción detrás de otra).

� Existen estructuras que nos permiten variar la “secuencialidad” de un programa, Lo deseable es que siempre esa variación sea PRECISA Y CONTROLADA.

� Esto nos permite adaptar nuestro programa a diversas situaciones posibles, de forma que todas o muchas de ellas queden cubiertas cuando se den.

� Cualquier programa propio puede codificarse utilizando 3 tipos de � Cualquier programa propio puede codificarse utilizando 3 tipos de estructuras:� Secuencial.� Selectiva: bifurcaciones o condicionales� Repetitiva o iterativa: los bucles.� Además existen las sentencias de salto (break, continue, return)

� Programa propio: es aquel que tiene un único punto de entrada y un único punto de salida. Siempre existe un camino que une los puntos y todas las instrucciones son ejecutables. Además no contiene bucles infinitos.

Page 11: CONCEPTO DE PROGRAMA€¦ · Existen estructuras que nos permiten variar la “secuencialidad” de un programa, Lo deseable es que siempre esa variación sea PRECISA Y CONTROLADA.

ELEMENTOS BÁSICOS DE UN PROGRAMA

� Palabras reservadas (si-entonces, repetir, inicio, fin,…)� Identificadores (nombres de variables)� Constantes� Variables� Expresiones� Instrucciones� Instrucciones� Además:

� Bucles� Contadores� Acumuladores� Interruptores� Estructuras secuenciales, selectivas, repetitivas

Page 12: CONCEPTO DE PROGRAMA€¦ · Existen estructuras que nos permiten variar la “secuencialidad” de un programa, Lo deseable es que siempre esa variación sea PRECISA Y CONTROLADA.

ELEMENTOS BÁSICOS DE UN PROGRAMA :: CONTADORES

� Cuando necesitemos contabilizar el número de veces que ocurre algo (CUÁNTAS VECES) dentro de un bucle, utilizaremos los contadores.

� Contador es aquella variable que incrementa o decrementade manera constante su valor en cada iteración.

� Por tanto podrán ser utilizados para determinar cuando un bucle finaliza, aunque no es su único propósito. También simplemente puede ser utilizado para luego ofrecer por pantalla el número de veces que ha ocurrido algo de interés dentro del bucle.

� Ejemplos.

Page 13: CONCEPTO DE PROGRAMA€¦ · Existen estructuras que nos permiten variar la “secuencialidad” de un programa, Lo deseable es que siempre esa variación sea PRECISA Y CONTROLADA.

ELEMENTOS BÁSICOS DE UN PROGRAMA:: ACUMULADORES� Acumulador o totalizador es aquella variable utilizada para almacenar el resultado de sucesivas operaciones (sumas, restas, multiplicaciones,…) que tienen lugar con cada iteración de un bucle.

� Se diferencia del contador en que incrementa o � Se diferencia del contador en que incrementa o decrementa su valor de manera variable.

� Ejemplos

Page 14: CONCEPTO DE PROGRAMA€¦ · Existen estructuras que nos permiten variar la “secuencialidad” de un programa, Lo deseable es que siempre esa variación sea PRECISA Y CONTROLADA.

ELEMENTOS BÁSICOS DE UN PROGRAMA :: INTERRUPTORES

� Interruptor , conmutador o bandera, es aquella variable que puede tomar un determinado número de valores (normalmente dos).

� Es utilizada para comunicar un determinado hecho que puede ser de interés para la salida de un bucle, aunque puede que no ser de interés para la salida de un bucle, aunque puede que no sólo sea ese su ámbito.

� Ejemplos.

Page 15: CONCEPTO DE PROGRAMA€¦ · Existen estructuras que nos permiten variar la “secuencialidad” de un programa, Lo deseable es que siempre esa variación sea PRECISA Y CONTROLADA.

ELEMENTOS BÁSICOS DE UN PROGRAMA :: CENTINELAS

� Un centinela es un determinado valor que una variable puede tomar con el propósito de marcar el final de la entrada de datos para procesar un bucle.

� Ejemplos.

Page 16: CONCEPTO DE PROGRAMA€¦ · Existen estructuras que nos permiten variar la “secuencialidad” de un programa, Lo deseable es que siempre esa variación sea PRECISA Y CONTROLADA.

ESTRUCTURA SECUENCIAL� Una estructura secuencial es aquella en la que una instrucción sigue a otra en una secuencia, una detrás de otra.

A�5B�6Escribir(A*B)Escribir(A*B)

Page 17: CONCEPTO DE PROGRAMA€¦ · Existen estructuras que nos permiten variar la “secuencialidad” de un programa, Lo deseable es que siempre esa variación sea PRECISA Y CONTROLADA.

ESTRUCTURA SELECTIVA� La estructura secuencial de un programa se puede alterar mediante las instrucciones de

bifurcación o selectivas.� Las bifurcaciones tendrán lugar en función del resultado del cumplimiento de una

condición.� Las instrucciones de bifurcación, son aquellas que nos permiten evaluar si una o más

condiciones se cumplen, para decir qué acción vamos a ejecutar. � La evaluación de condiciones, sólo puede arrojar 1 de 2 resultados: verdadero

o falso (True o False).o falso (True o False).� En la vida diaria, actuamos de acuerdo a la evaluación de condiciones, de manera mucho

más frecuente de lo que en realidad creemos: Si el semáforo está en verde, cruzar la calle. Si no, esperar a que el semáforo se ponga en verde.

� A veces, también evaluamos más de una condición para ejecutar una determinada acción: Si llega la factura de la luz Y tengo dinero, pagar la factura

� Tipos de estructuras selectivas:� Simples� Dobles� Múltiples

Page 18: CONCEPTO DE PROGRAMA€¦ · Existen estructuras que nos permiten variar la “secuencialidad” de un programa, Lo deseable es que siempre esa variación sea PRECISA Y CONTROLADA.

ESTRUCTURA SELECTIVA� Simple:

� Doble:

Page 19: CONCEPTO DE PROGRAMA€¦ · Existen estructuras que nos permiten variar la “secuencialidad” de un programa, Lo deseable es que siempre esa variación sea PRECISA Y CONTROLADA.

ESTRUCTURA SELECTIVA� Múltiple:

Su uso es adecuado cuando el número de posibles condicionesa evaluar es grande y queremos evitar “anidar” o “poner es cascada”Estructuras selectivas simples o múltiples(si-fin_si o si-si_no-fin_si)

Por cada valor de la expresión e1, e2, e3,… se pueden realizaruna o varias acciones (necesidad de inicio…fin)

Page 20: CONCEPTO DE PROGRAMA€¦ · Existen estructuras que nos permiten variar la “secuencialidad” de un programa, Lo deseable es que siempre esa variación sea PRECISA Y CONTROLADA.

ESTRUCTURA SELECTIVA

Ejemplo de selección múltiple con sentencia de salto break .En este

Page 21: CONCEPTO DE PROGRAMA€¦ · Existen estructuras que nos permiten variar la “secuencialidad” de un programa, Lo deseable es que siempre esa variación sea PRECISA Y CONTROLADA.

ESTRUCTURAS SELECTIVAS ANIDADAS� Es posible que dentro del bloque de acciones de una decisión meter otra posible decisión.

� A esta técnica se le conoce como “anidamiento” o estructuras de decisión “en escalera”, debido a la indentación que tenemos que realizar para aumentar la claridad y legibilidad.tenemos que realizar para aumentar la claridad y legibilidad.

Es importante la indentación para ver que unas estructuras o bloques de decisión son interiores a otros

Page 22: CONCEPTO DE PROGRAMA€¦ · Existen estructuras que nos permiten variar la “secuencialidad” de un programa, Lo deseable es que siempre esa variación sea PRECISA Y CONTROLADA.

ESTRUCTURAS SELECTIVAS::EVALUACIÓN DE CONDICIONES

� Prioridad de operadores� ( ) � -,+, no (“-” y “+” no son suma y resta, son para poner +5 o -3)� *, /, div, mod, and� +, -, or� &, + (concatenación de cadenas)� &, + (concatenación de cadenas)� =, <, >, <=, >=, <>

� Ejercicios:� A � (3*2^5 mod 1 + 8*(3-5) < (2+8-1 mod 1)� A �A o (3+5*8) < 3 y ((-6/3 div 4)*2 < 2)� B � 3 mod 2 div 3� A � C o no (3=5) y (8 <> 3+B)

Page 23: CONCEPTO DE PROGRAMA€¦ · Existen estructuras que nos permiten variar la “secuencialidad” de un programa, Lo deseable es que siempre esa variación sea PRECISA Y CONTROLADA.

ESTRUCTURAS REPETITIVAS� A veces puede que sea necesario repetir un conjunto de acciones para

llevar a cabo una tarea en nuestro algoritmo o programa: procesar todos los trabajadores de una empresa, sacar una nota media de la clase.

� Para ello tenemos disponibles las estructuras repetitivas, también llamadas iterativas o bucles.

� Tenemos tres tipos, dependiendo de las necesidades que tengamos:Tenemos tres tipos, dependiendo de las necesidades que tengamos:� mientras� repetir� desde

� Partes de una estructura repetitiva (bucle):� Decisión� Cuerpo del bucle� Salida del bucle

Page 24: CONCEPTO DE PROGRAMA€¦ · Existen estructuras que nos permiten variar la “secuencialidad” de un programa, Lo deseable es que siempre esa variación sea PRECISA Y CONTROLADA.

ESTRUCTURAS REPETITIVAS:: CASOS DE USO

� Si la condición de salida del bucle se evalúa al principio del mismo� mientras

� Si la condición de salida del bucle se evalúa al final del bucle� repetir

� Si la condición de salida se evalúa en función del valor de un � Si la condición de salida se evalúa en función del valor de un contador que incrementa su valor� desde

Page 25: CONCEPTO DE PROGRAMA€¦ · Existen estructuras que nos permiten variar la “secuencialidad” de un programa, Lo deseable es que siempre esa variación sea PRECISA Y CONTROLADA.

ESTRUCTURAS REPETITIVAS::mientrasLa condición del bucle se evalúa al principio, antes de entrar en él.

Si la condición es verdadera, comenzamos a ejecutar las acciones del bucle y después de laúltima volvemos a preguntar por la condición.

En el momento en el que la condición sea falsa nos salimos del bucle yejecutamos la siguiente instrucción al bucle.

Si al evaluarse la condición antes de entrar en el bucle por primera vez, resulta ser falsa,no entraremos nunca en el bucle, el bucle puede que se ejecute 0 veces:por tanto usaremos obligatoriamente este tipo de bucle en el caso de quepor tanto usaremos obligatoriamente este tipo de bucle en el caso de queexista la posibilidad de que el bucle pueda ejecutarse 0 veces.

Page 26: CONCEPTO DE PROGRAMA€¦ · Existen estructuras que nos permiten variar la “secuencialidad” de un programa, Lo deseable es que siempre esa variación sea PRECISA Y CONTROLADA.

ESTRUCTURAS REPETITIVAS::repetirSe repite el bucle hasta que la condición de salida sea verdadera. La condición se evalúa siempre alfinal del bucle, y si es falsa volvemos a ejecutar las acciones.

Como la condición se evalúa al final, incluso aunque la primera vez ya sea verdadera, habremospasado al menos una vez por el bucle, se ejecutará siempre al menos una vez

Este bucle se repite mientras el valor de la expresión booleana de la condición seafalsa, esto es, justo al revés que en el bucle mientrasCuando un bucle se tenga que ejecutar como mínimo una vez, podremos usar unaestructura repetir o mientras, la única diferencia que habrá entre las dos, es que para hacer loestructura repetir o mientras, la única diferencia que habrá entre las dos, es que para hacer lomismo, las condiciones tienen que ser contrarias.

Page 27: CONCEPTO DE PROGRAMA€¦ · Existen estructuras que nos permiten variar la “secuencialidad” de un programa, Lo deseable es que siempre esa variación sea PRECISA Y CONTROLADA.

ESTRUCTURAS REPETITIVAS::repetir y hacer-mientras� Existe una estructura repetitiva equivalente al repetir, con las mismas características, excepto en que la condición de salida debe ser falsa para salir del bucle.

Page 28: CONCEPTO DE PROGRAMA€¦ · Existen estructuras que nos permiten variar la “secuencialidad” de un programa, Lo deseable es que siempre esa variación sea PRECISA Y CONTROLADA.

ESTRUCTURAS REPETITIVAS :: repetir y mientras equivalentes

� Ejercicio:� Realizar un bucle de tipo mientras y realizar su equivalente con un bucle repetir y hacer-mientras.

Page 29: CONCEPTO DE PROGRAMA€¦ · Existen estructuras que nos permiten variar la “secuencialidad” de un programa, Lo deseable es que siempre esa variación sea PRECISA Y CONTROLADA.

ESTRUCTURAS REPETITIVAS::desde� Este tipo de bucles se utiliza cuando se sabe ya antes de ejecutar el bucle el número

exacto de veces que hay que ejecutarlo.

� Para ello el bucle llevará asociado una variable que denominamos variable índice, a la que le asignamos un valor inicial y determinamos cual va a ser su valor final y además se va a incrementar o decrementar en cada iteración de bucle en un valor constante, pero esto se va a hacer de manera automática.

� El programador no se tiene que ocupar de incrementar o decrementar esta variable en � El programador no se tiene que ocupar de incrementar o decrementar esta variable en cada iteración, sino que va a ser una operación implícita (lo hace por defecto).

� Por tanto en cada iteración del bucle, la variable índice se actualiza automáticamente y cuando alcanza el valor que hemos puesto como final se termina la ejecución del bucle.

Page 30: CONCEPTO DE PROGRAMA€¦ · Existen estructuras que nos permiten variar la “secuencialidad” de un programa, Lo deseable es que siempre esa variación sea PRECISA Y CONTROLADA.

ESTRUCTURAS REPETITIVAS::desde

Page 31: CONCEPTO DE PROGRAMA€¦ · Existen estructuras que nos permiten variar la “secuencialidad” de un programa, Lo deseable es que siempre esa variación sea PRECISA Y CONTROLADA.

ESTRUCTURAS REPETITIVAS :: desde y mientras equivalentes

� Ejercicio:� Realizar un bucle de tipo desde y realizar su equivalente con un bucle mientras.

� Alternativas (vi es “valor inicial”, vf es “valor final” y v es “índice” del desde):� mientras equivalente a desde con incremento de índice:mientras equivalente a desde con incremento de índice:

� mientras equivalente a desde con decremento de índice:

Page 32: CONCEPTO DE PROGRAMA€¦ · Existen estructuras que nos permiten variar la “secuencialidad” de un programa, Lo deseable es que siempre esa variación sea PRECISA Y CONTROLADA.

ESTRUCTURAS REPETITIVAS :: equivalencias de desde con mientras y

repetirRealizar la traza de estas estructuras para determinar qué hacen y qué equivalencia tienen:

Page 33: CONCEPTO DE PROGRAMA€¦ · Existen estructuras que nos permiten variar la “secuencialidad” de un programa, Lo deseable es que siempre esa variación sea PRECISA Y CONTROLADA.

ESTRUCTURAS REPETITIVAS :: anidamiento

� Al igual que podemos colocar unas expresiones dentro de otras, unos bucles pueden estar dentro de otros, pero nunca pueden “cruzarse”.

� Al anidar bucles hay que tener en cuenta que � el bucle interno funciona como una sentencia más del bloque externo (hasta que no acabe no se ejecuta la sentencia siguiente externo (hasta que no acabe no se ejecuta la sentencia siguiente dentro de esa iteración del bucle externo)

� �por tanto en cada iteración del bucle externo se van a ejecutar todas las iteraciones del bucle interno, esto ocurrirá por cada iteración del bucle externo.

� Si el bucle externo se repite n veces y el interno se repite m veces, el número total de iteraciones será m*n.

Page 34: CONCEPTO DE PROGRAMA€¦ · Existen estructuras que nos permiten variar la “secuencialidad” de un programa, Lo deseable es que siempre esa variación sea PRECISA Y CONTROLADA.

ESTRUCTURAS REPETITIVAS :: anidamiento

Los bucles que se anidan pueden ser de igual o distinto tipo.

Ejemplo:

desde i=1 hasta 8

desde j=1 hasta 5

escribir(“Profesor ”i”, introduzca su asignatura nº ”j)escribir(“Profesor ”i”, introduzca su asignatura nº ”j)

leer (asignatura)

fin_desde

fin_desde