Está en la página 1de 63

Universidad Nacional del Santa Facultad de Ingeniera E.A.P.

de Ingeniera de Sistemas e Informtica

FUNDAMENTOS DE PROGRAMACIN

Universidad Nacional del Santa Facultad de Ingeniera E.A.P. de Ingeniera de Sistemas e Informtica

FUNDAMENTOS DE PROGRAMACIN

Universidad Nacional del Santa Facultad de Ingeniera E.A.P. de Ingeniera de Sistemas e Informtica

FUNDAMENTOS DE PROGRAMACIN

Universidad Nacional del Santa Facultad de Ingeniera E.A.P. de Ingeniera de Sistemas e Informtica

FUNDAMENTOS DE PROGRAMACIN

FUNDAMENTOS BSICOS DE ALGORITMOS


Una computadora no tiene capacidad para solucionar problemas ms que cuando se le proporcionan los pasos sucesivos a realizar, para ello elaboramos un algoritmo. Qu es un algoritmo? Es un mtodo para resolver un problema mediante una secuencia de instrucciones, cada una de las cuales especifica las operaciones que debe realizar la computadora. Caractersticas de un algoritmo Las caractersticas fundamentales que debe cumplir todo algoritmo son: Debe ser preciso e indicar el orden de realizacin de cada paso. Debe estar definido. Si se sigue un algoritmo dos o ms veces, con los mismos valores iniciales se debe obtener el mismo resultado. Debe ser finito. Si se sigue un algoritmo, se debe terminar en algn momento, es decir, debe tener un nmero finito de pasos. Tambin hay que tener en cuenta en un algoritmo: El algoritmo sirve de base para generar un programa, pero no es el programa en s. El algoritmo no es inteligible directamente por el ordenador. El mismo algoritmo puede ser implementado de forma distinta en diversos programas, es decir, dos programadores pueden obtener distintos cdigos fuente a partir del mismo algoritmo. El proceso de un algoritmo La definicin de un algoritmo debe describir tres partes: Entrada, proceso y salida.

La informacin proporcionada al algoritmo constituye su entrada, el procedimiento para la solucin del problema constituye su proceso y la informacin producida por el algoritmo constituye su salida. A continuacin ejemplos para un mejor entendimiento: Ejemplo 01: Leer la base y altura de un paralelogramo. Calcular su rea. Datos de Entrada Proceso Datos de Salida ---> ---> ---> base y altura rea = base x altura El rea del paralelogramo

Universidad Nacional del Santa Facultad de Ingeniera E.A.P. de Ingeniera de Sistemas e Informtica

FUNDAMENTOS DE PROGRAMACIN

Ejemplo 02: Leer el radio de una circunferencia. Calcular su rea y longitud. Datos de Entrada Proceso Datos de Salida ---> ---> ---> Radio de una circunferencia. rea = r2 y Longitud = 2r El rea y longitud de una circunferencia.

Verificacin del algoritmo o prueba de escritorio Una vez escrito el algoritmo es necesario asegurarse de que ste realiza las tareas para las que ha sido diseado, y que por lo tanto produce el resultado correcto y esperado. El modo ms normal de comprobar un algoritmo es mediante su ejecucin manual usando datos significativos que abarquen todo el posible rango de valores y anotando en una hoja de papel los valores que van tomando en las diferentes fases, los datos de entrada o auxiliares y, por ltimo los valores de los resultados. Este proceso se conoce como prueba del algoritmo o prueba de escritorio. Haremos una prueba de escritorio de los dos problemas anteriores: Elementos Datos de entrada

Ejercicio 01 r (radio) = 3 (pi) = 3.14 (Solo tomaremos hasta dos decimales) A = r2 L = 2r A = 28.26 L = 18.84 = 3.14 x (3)2 = 2 x 3.14 x 3

Ejercicio 02 Base = 5 Altura = 3 A = base x altura A=5x3 A = 15

Proceso

Datos de salida

Los elementos bsicos que forman parte esencial o fundamental de un algoritmo o programa son: Palabras reservadas. Identificadores. Variables. Constantes. Instrucciones.

Palabras reservadas Palabras utilizadas por los algoritmos o lenguajes de programacin para representar sentencias, rdenes, etc. Ejemplos: inicio. Fin. hacer. sientonces-sino. mientras. desde.

Universidad Nacional del Santa Facultad de Ingeniera E.A.P. de Ingeniera de Sistemas e Informtica

FUNDAMENTOS DE PROGRAMACIN

Identificadores Son nombres usados para identificar a los objetos y dems elementos de un programa: variables, constantes, operadores, funciones, procedimientos, etc. Existen reglas para construir identificadores validos y son los siguientes: El primer carcter debe ser una letra o el carcter subrayado bajo. Los caracteres siguientes pueden ser letras, nmeros o smbolos de subrayado bajo. Las letras maysculas y las letras minsculas se tratan como distintas. As suma, Suma y SUMA son tres identificadores distintos. No pueden ser iguales a ninguna palabra reservada.

Variables Una variable es un objeto a quien se le asigna un valor y cuyo valor puede cambiar durante el desarrollo del algoritmo o ejecucin del programa. Si una variable est compuesto por dos palabras, stas pueden ser juntas o unidos por el subrayado bajo, guin bajo o subguin _ . Nota: No se deben utilizar como nombres de variables (identificadores) palabras reservadas del algoritmo o del lenguaje de programacin. Ejemplos: Nota Nombre Apellidos nota_oral

Apellido_paterno apellido_materno Nota1 Contador1

precios hora prom pi

Los nombres de las variables elegidas deben ser significativos y tener relacin con el objeto que representan, como pueden ser los casos siguientes: nombre precios notas para representar nombres de personas. para representar los precios de diferentes artculos. para representar las notas de una clase.

A continuacin se muestra como ejemplos los nombres de variables no adecuados porque tienen otro significado a lo expresado: azucar pan para representar la nota de una clase. para representar la edad de una persona.

Constantes Una constante toma o recibe un valor que no cambia durante el desarrollo del algoritmo o la ejecucin del programa.

Instrucciones Las instrucciones especifican las operaciones o acciones que deben ser realizadas o ejecutadas.

Universidad Nacional del Santa Facultad de Ingeniera E.A.P. de Ingeniera de Sistemas e Informtica

FUNDAMENTOS DE PROGRAMACIN

Son combinaciones de constantes, variables, smbolos de operacin, parntesis y nombres de funciones especiales, que cumplen determinadas reglas. Ejemplos: a+(b*3)/c 5 * a * b / ( c + d) 1. EXPRESIONES ARITMTICAS Son anlogas a las formulas matemticas. Las variables y constantes son numricas (real o entera) y las operaciones son las aritmticas.

Significado Suma Resta Multiplicacin Divisin real Divisin entera Exponenciacin Modulo (resto o residuo)

Operadores Aritmticos Operador Algebraico Operador Algoritmico + + x * / / / div -,**,^ mod

Tabla 1: Operadores Aritmticos

A continuacin se mostrarn las equivalencias que debe conocer entre expresiones algebraicas y expresiones aritmticas. Ejemplos: RepresentacinAlgebraica 12 + 19 ab 5x7 6 +c 4 37 RepresentacinAlgortmica 12 + 19 a-b 5*7 (6 / 4) + c 3^7

Reglas de prioridad Las expresiones que tienen dos o ms operandos en una expresin se evalan, en general, segn el siguiente orden. 1. Las operaciones que estn encerradas entre parntesis se evalan primero. Si existen diferentes parntesis anidados (internos unos a otros), las expresiones ms internas se evalan primero. 2. Las operaciones aritmticas dentro de una expresin suelen seguir el siguiente orden de prioridad. a. b. c. d. Operador exponencial (^, o bien **) Operadores *, /, \ Operadores div y mod Operadores + , -

Universidad Nacional del Santa Facultad de Ingeniera E.A.P. de Ingeniera de Sistemas e Informtica

FUNDAMENTOS DE PROGRAMACIN

Nota: En caso coincidir varios operadores de igual prioridad en una expresin o subexpresin encerrada entre parntesis, el orden de prioridad en este caso es de izquierda a derecha. Ejemplo 1. Cul es el resultado de las siguientes expresiones? a) 15 + 9 * 2 6 * 2 ^ 2 b) -8 / 4 * 6 + 3 ^ 2 * (10 / 5)

Solucin: a) 15 + 9 * 2 6 * 2 ^ 2 15 + 9 * 2 6 * 4 15 + 18 24 =9 b) -8 / 4 * 6 + 3 ^ 2 * (10 / 5) -8 / 4 * 6 + 3 ^ 2 * 2 -8 / 4 * 6 + 9 -2 * 6 + * 2 18 = 6

Ejemplo 2. Convertir en expresiones aritmticas algortmicas las siguientes expresiones: a) b) c) d) e) 7(a+b) 8x + 9y + 3z a2 + 2a 3 x2 y2 p+q r +s t f) a (cd) b Solucin: a) b) c) d) e) 7(a+b) 8x + 9y + 3z a2 + 2a 3 x2 y2 p+q r+s t f) a (cd) b 7 * (a + b) 8*x+9*y+3*z a^2+2*a-3 x^2y^2 (p + q) / (r + s / t)

a/b*c*d

Divisin entera (div) Es la accin de dividir dos nmeros enteros uno viene hacer el dividendo y el otro el divisor, el resultado del operador div es el valor del cociente. En esta divisin no es de mucha importancia el residuo. Recuerden que para utilizar el div solo se aplica a divisiones de nmeros enteros, veamos

Universidad Nacional del Santa Facultad de Ingeniera E.A.P. de Ingeniera de Sistemas e Informtica

FUNDAMENTOS DE PROGRAMACIN

el siguiente ejemplo: Ejemplo: 9 div 2 = 4 Dividendo 9 8 1 2 Divisor

4
Cociente

Residuo Ejemplos: a. 15 div 6 = 2 d. 7 div 9 = 0

b. 14 div 2 = 7 e. 3 div 3 = 1

c. 0 div 3 = 0 f. 2 div 5 = 0

Reglasdeladivisinrealyentera: Los operandos pueden ser enteros(E) o reales(R). Entero Real Divisinreal E/E=R E/R=R R/E=R R/R=R operandos Residuo (mod) El operador mod se utiliza para obtener el residuo o resto de una divisin entera. Igual que para el operador div, para poder hallar el residuo de una divisin utilizando el operador mod, los operandos deben ser exclusivamente enteros. Reglasdelresiduo: Residuo E mod E = E E mod R = No Vlido R mod E = No Vlido R mod R = No Vlido Ejemplos: a. 15 mod 6 = 3 d. 7 mod 9 = 7 b. 14 mod 2 = 0 e. 3 mod 3 = 0 c. 19 mod 3 = 1 f. 2 mod 5 = 2 Divisinentera E div E = E E div R = No Vlido R div E = No Vlido R div R = No Vlido

resultados

2. EXPRESIONES LGICAS Una expresin lgica es una expresin que solo puede tomar dos valores: verdad y falso. Las expresiones lgicas se forman combinando constantes lgicas, variables lgicas y otras expresiones lgicas, utilizando los operadores relacionales (de relacin o comparacin) y los operadores lgicos not, and y or. Operadores de relacin Permiten realizar comparaciones de valores de tipo numrico o carcter. Los operadores de relacin sirven para expresar las condiciones en los algoritmos. El resultado de las operaciones de comparacin ser verdadero o falso.

Universidad Nacional del Santa Facultad de Ingeniera E.A.P. de Ingeniera de Sistemas e Informtica

FUNDAMENTOS DE PROGRAMACIN

Significado Menor que Mayor que Igual que Menor o igual que Mayor o igual que Distinto de o Diferente de Ejemplos: Si P = 7 * 2 y Q = 3 ^ 2 Expresin Lgica P>Q P<Q P <> Q (P-3) = (Q+2) 15 < 14 4+6=9

Operadores de Relacin Operador Algebraico Operador Algoritmico > < < > = = <= >= <>

Tabla 2: Operadores de Relacin

Resultado Verdad Falso Verdad Verdad Falso Falso

Para realizar comparaciones de datos tipo carcter, se requiere una secuencia de ordenacin de los caracteres, similar al orden creciente o decreciente. Esta ordenacin suele ser alfabtica, tanto maysculas como minsculas, y numrica, considerndolas de modo independiente. A continuacin se mostrarn los caracteres situados en el cdigo ASCII en orden creciente: Los caracteres que representan a los digitos. 0 <1 , 1 < 2 , , 8 < 9 Las letras maysculas A a Z siguen el orden alfabtico. A < B , B < C , ..., Y < Z Las letras minsculas, siguen el mismo criterio alfabtico. a < b , b < c , .., y < z Nota Para tener completa seguridad en la ordenacin de los caracteres, ser preciso consultar el cdigo de caracteres de su computadora, normalmente el ASCII (American Standar Code for Information Interchange) o bien el EBCDIC (Extended Binary-Coded Decimal Interchange Code) utilizado en computadras IBM diferentes a los modelos PC y PS/2. Operadores lgicos Los operadores lgicos o volanos son not (no), and (y) y or(o). Las definiciones de las operaciones no, y, o se resumen en unas tablas conocidas como las tablas de la verdad. Operador Lgico no (not) y (and) o (or)
Tabla 3: Operadores Lgicos

Expresin Lgica no P PyQ PoQ

Significado negacin de P conjuncin de P y Q disyuncin de P o Q

Universidad Nacional del Santa Facultad de Ingeniera E.A.P. de Ingeniera de Sistemas e Informtica

FUNDAMENTOS DE PROGRAMACIN

Las tablas de la verdad son las siguientes: Operador No P V F no P F V Operador Y P V V F F Q V F V F PYQ V F F F Operador O P V V F F Q V F V F POQ V V V F

Nota: Siendo P y Q expresiones booleanas, V valor verdadero, F valor falso. Negacin = not Disyuncin = and Conjuncin = or Ejemplos: (7 < 12) y (9 < 21) (9 > 15) y (3 < 4) (6 = 41) o (13 > 8) (16 > 8) o (2 > 5) no (18 > 6)

verdad falso verdad verdad falso

Funciones internas
Las operaciones que se requieren en los programas exigen en numerosas ocasiones, adems de las operaciones aritmticas bsicas, ya tratadas, un nmero determinado de operadores especiales que se denominan funciones internas, incorporadas o estndar. Por ejemplo, la funcin raiz2 calcula la raz cuadrada de un nmero positivo, la funcin abs devuelve el valor absoluto de un nmero, la funcin cuadrado devuelve el valor de un nmero elevado al cuadrado. Existen otras funciones que se utilizan para determinar las funciones trigonomtricas. La siguiente tabla recoge las funciones internas ms usuales en algoritmos, siendo x el argumento de la funcin.

Universidad Nacional del Santa Facultad de Ingeniera E.A.P. de Ingeniera de Sistemas e Informtica

FUNDAMENTOS DE PROGRAMACIN

Las funciones aceptan argumentos reales o enteros y sus resultados dependen de la tarea que realice la funcin: Ejemplos:

Tabla 5: Ejemplos

Universidad Nacional del Santa Facultad de Ingeniera E.A.P. de Ingeniera de Sistemas e Informtica

FUNDAMENTOS DE PROGRAMACIN

Tipos de Datos
El primer objetivo de toda computadora es el manejo de la informacin o datos. Estos datos pueden ser las cifras de ventas de una bodega, tickets para un encuentro deportivo, ingreso diario de una empresa o las calificaciones de un saln de clase. Los algoritmos y programas correspondientes operan sobre datos. Los tipos de datos definen un conjunto de valores que puede almacenar una variable, junto con un conjunto de operaciones que se pueden realizar sobre esa variable. Los tipos de datos simples son los siguientes: Numricos (enteros, reales). Lgicos (booleanos). Carcter (char, string).

Datos numricos El tipo numrico es el conjunto de los valores numricos. Estos pueden representarse en dos formas distintas: Tipo numrico entero (int, integer) Tipo numrico real (float, double) Tipo entero Es el subconjunto finito de los nmeros enteros, no tienen componentes fraccionarios o decimales, y pueden ser negativos o positivos. Ejemplos: 6 -20 5 15 -9 11 19 -1

Tipo reales Subconjunto de los nmeros reales, siempre tiene un punto decimal y pueden ser positivos o negativos. Constan de un entero y una parte decimal. Ejemplos: 9.9 12.24 -123.11 0.89 1470.274 -0.99 54.77 3.0 Nota: Existe un tipo de representacin denominado notacin exponencial o cientfica y que se utiliza para nmeros muy grandes o muy pequeos. Ejemplo: Dado un nmero cualquiera: 367520100000000000000

Universidad Nacional del Santa Facultad de Ingeniera E.A.P. de Ingeniera de Sistemas e Informtica

FUNDAMENTOS DE PROGRAMACIN

se representa en notacin descomponindolo en grupo de tres digitos: 367 520 100 000 000 000 000 y posteriormente en forma de potencias de 10, es: 3.675201 x 1020 Ejemplos: 2079546000000 8927645125 0.000000032458 0.0000000009284 = = = = 2.079546 x 1012 8.927645 x 109 3.2458 x 10-8 9.284 x 10-10

Datos lgicos Es aquel dato que solo puede tomar uno de dos valores: cierto o verdadero (true) y falso (false)

Ejemplo: Cuando se le pide si un valor entero es par, la respuesta ser verdadera o falsa, segn sea impar o par. Datos tipo carcter y tipo cadena Un dato tipo carcter contiene un solo carcter y se encuentra delimitado por comilla simple. Los caracteres que reconocen las diferentes computadoras no son estndar, sin embargo la mayora reconoce los siguiente caracteres alfabticos, numricos y especiales: caracteres alfabticos caracteres numricos caracteres especiales : : : (a, b, c, ... ,z) (A, B, C, ... ,Z) (1, 2, 3, ... ,9 ,0) (+,-,*,/,{, }, ... ;,< ,> , ...)

Una cadena (string) de caracteres es una sucesin de caracteres que se encuentran delimitados por una comilla simple (apostrofo) o dobles comillas. Ejemplos: Carcter : a p Z b q Y m M N

Cadena

Hola Per 8 de Octubre de 1879 Juan Pablo II

Universidad Nacional del Santa Facultad de Ingeniera E.A.P. de Ingeniera de Sistemas e Informtica

FUNDAMENTOS DE PROGRAMACIN

Para representar un algoritmo se debe utilizar algn mtodo que permita independizar dicho algoritmo del lenguaje de programacin elegido. Ello permitir que un algoritmo pueda ser codificado indistintamente en cualquier lenguaje. Para conseguir este objetivo se precisa que el algoritmo sea representado grfica o numricamente, de modo que las sucesivas acciones no dependan de la sintaxis de ningn lenguaje de programacin, sino que la descripcin pueda servir fcilmente para su transformacin en un programa, es decir, su codificacin. Los mtodos usuales para representar un algoritmo son: Diagrama de Flujo. Diagrama estructurado o N S (Nassi Schneiderman). Pseudocdigo.

Un diagrama de flujo es una de las tcnicas de representacin de algoritmos ms antigua y a la vez ms utilizada, aunque su empleo ha disminuido considerablemente. Un diagrama de flujo es un diagrama que utiliza los smbolos (cajas) estndar y que tiene los pasos del algoritmo escritos en esas cajas unidas por flechas, denominadas lneas de flujo, que indican la secuencia en que se deben ejecutar. Los smbolos ms utilizados en un diagrama de flujo son: Smbolos Nombre Terminal Funcin Representa el inicio y fin de un algoritmo. Puede representar tambin una parada o interrupcin del algoritmo.

Entrada / Salida Sirve para cualquier ingreso de datos desde los perifricos de entrada o muestra informacin en algn perifrico de salida. Proceso Cualquier tipo de operacin que pueda originar cambio de valor, formato o posicin, operaciones aritmticas, etc. Decisin Empleado cuando el programa debe tomar una decisin con dos salidas posibles (si, no) dependiendo del valor de una condicin lgica. En funcin del resultado de la comparacin se seguir uno de los diferentes caminos de acuerdo con dicho resultado.

Decisin mltiple

Conector

Lnea de flujo

Sirve para enlazar dos partes cualesquiera de un organigrama. Se refiere a la conexin en la misma pgina deldiagrama. Indica el sentido de ejecucin de las operaciones.

Lnea conectora Sirve de unin entre dos smbolos.

Universidad Nacional del Santa Facultad de Ingeniera E.A.P. de Ingeniera de Sistemas e Informtica

FUNDAMENTOS DE PROGRAMACIN

Smbolo

Nombre Conector

Funcin Conexin entre dos puntos del organigrama situado en pginas diferentes. Es un mdulo independiente del programa principal, que recibe una entrada procedente de dicho programa, realiza una tarea determinada y regresa al terminar, al programa principal. Se utiliza en ocasiones en lugar del smbolo e E/S

Subrutina o Procedimiento

Pantalla

Impresora

Se utiliza en ocasiones en lugar del smbolo e E/S

Teclado

Se utiliza en ocasiones en lugar del smbolo e E/S

Comentario

Se utiliza para aadir comentarios al programa.

Tabla 1: Operadores Aritmticos

Los smbolos ms utilizados en un diagrama de flujo son: a. b. c. d. e. f. inicio/fin. proceso. decisin. conectores. entrada/salida. direccin del flujo.

Primeralgoritmoconundiagramadeflujo Para conocer como se resuelve un problema mediante el diagrama de flujo, resolveremos un ejemplo: Ejemplo 1: El diagrama de flujo siguiente representa la resolucin de nuestro primer programa que deduce el rea y permetro de un rectngulo, sabiendo que su base y altura tienen los valores 8cm y 2cm respectivamente.

Universidad Nacional del Santa Facultad de Ingeniera E.A.P. de Ingeniera de Sistemas e Informtica

FUNDAMENTOS DE PROGRAMACIN

Explicacin de nuestro primer algoritmo Lo primero que debemos hacer para realizar un algoritmo, es analizar el problema; reconocer las variables que representarn a los datos de entrada, dentro del proceso de clculo y los datos de salida, que vamos a utilizar, procesar y encontrar. Anlisis Para este ejemplo hemos identificado nuestras variables a trabajar: a. b. c. d. base altura rea permetro = = = = b h a p

Todo algoritmo se debe comenzar con un inicio y finalizar con un fin, para ello se utilizar el smbolo terminal. Para lograr explicar con mayor claridad nuestro algoritmo, hemos incluido nmero de lnea. Donde la explicacin por lnea es la siguiente:

La lnea 01, se utiliza el smbolo terminal junto con la palabra inicio que representa el comienzo del algoritmo. La lnea 02, se utiliza el smbolo proceso donde a las variables b y h se le asignan los nmeros 8 y 2 respectivamente. La lnea 03, se utiliza el smbolo proceso donde primero se realiza la operacin b * h y segundo, el resultado de esta operacin se asigna a la variable a (rea). La lnea 04, se utiliza el smbolo conector de pgina, donde sirve para enlazar dos partes cualesquiera en la misma pgina del diagrama. Para poder enlazar los conectores podemos utilizar nmeros o smbolos diferentes a los utilizados en el algoritmo. La lnea 05, se utiliza el smbolo proceso donde primero se realiza la operacin 2 * (b + h) y segundo, el resultado de esta operacin se asigna a la variable p (permetro). La lnea 06, se utiliza el smbolo entrada/salida, en este caso este smbolo representa la salida de la informacin obtenida por el algoritmo: el rea y el permetro. La lnea 07, se utiliza el smbolo terminal junto con la palabra fin que representa el fin del algoritmo.

Nota: El diagrama de flujo nos da una idea del orden de ejecucin de las actividades en el tiempo. Primero cargamos los datos de entrada, luego hacemos las operaciones necesarias y por ltimo mostramos los resultados. Ejemplo 2: El diagrama de flujo del ejemplo anterior tambin se puede llevar acabo sin el uso de conectores de pgina o de pginas diferentes, en el siguiente diagrama se muestra cmo sera. Pero para este ejemplo haremos una variacin en nuestro ejemplo. En el ejemplo 1, los datos de la base y altura eran conocidos 8cm y 2cm. En este ejemplo los datos de la base y altura, no se conocen y se solicitan para resolver el problema; para solicitar los datos de entrada utilizaremos el smbolo entrada/salida.

Universidad Nacional del Santa Facultad de Ingeniera E.A.P. de Ingeniera de Sistemas e Informtica

FUNDAMENTOS DE PROGRAMACIN

Nota: En el ejemplo 1, los valores de b y h se conocen, por ello se utiliza el smbolo proceso. Pero para el ejemplo 2, los valores no se conocen por tanto tienen que ser ingresados, para realizar ello en algoritmos se utiliza el smbolo entrada/salida. Para poner en prctica los nuevos conocimientos adquiridos, resolveremos los siguientes ejemplos: Ejercicios de autocomprobacin de aprendizajes Ejemplo 3: Se ingresan por teclado dos nmeros positivos. Calcular la suma, resta, multiplicacin, divisin real, divisin entera, residuo y promedio de dichos nmeros. Reportar los resultados. Ejemplo 4: Una tienda de ropa exclusiva compra en Lima 50 pantalones blueyn a un costo de S/. 45 y aqu en Chimbote los oferta a S/. 60. Cunto es la ganancia?.

Se trata de un mtodo de representacin de algoritmos en forma de bloque compacto. Es un diagrama algo similar a los diagramas de flujo (convencionales) en el que se omiten las flechas, y las figuras que se usan son rectngulos contiguos. La representacin del algoritmo se basa en los siguientes puntos: Un programa se representa por un solo diagrama, en el que se incluyen todas las operaciones a realizar para la resolucin del problema. La forma de conectar una pgina con la siguiente es similar al mtodo anterior, es decir, mediante un nmero o un nombre encerrados en uno de los rectngulos que componen el algoritmo. Todo diagrama comienza con un rectngulo que tiene la palabra inicio y al ltimo del algoritmo un rectngulo con la palabra fin. Las acciones sucesivas se escriben en rectngulos sucesivos.

Universidad Nacional del Santa Facultad de Ingeniera E.A.P. de Ingeniera de Sistemas e Informtica

FUNDAMENTOS DE PROGRAMACIN

En un solo rectngulo se pueden escribir diferentes acciones. Un proceso puede ser un subprograma. La lectura del diagrama se hace de arriba hacia abajo.

La forma grfica de representar un algoritmo en diagrama estructurado o N S es el siguiente:

Primer algoritmo con un diagrama estructurado o N-S Para conocer cmo se realiza un diagrama estructurado, resolveremos el ejemplo 1 planteado en la parte de diagrama de flujo:

Como se ve en la solucin del ejemplo 1, en este diagrama se utilizan slo rectngulos. Si se dan cuenta, en un diagrama estructurado existe un rectngulo de declaracin de variables, donde se colocan las variables que se utilizarn en el algoritmo y a la vez tambin podemos inicializar variables con sus valores dados. A continuacin, la solucin del ejemplo 2, de la parte de diagrama de flujo:

Para poner en prctica los nuevos conocimientos adquiridos, resuelvan los ejemplos 3 y 4 de la parte de diagrama de flujo.

Universidad Nacional del Santa Facultad de Ingeniera E.A.P. de Ingeniera de Sistemas e Informtica

FUNDAMENTOS DE PROGRAMACIN

El pseudocdigo es una herramienta de programacin que naci como un lenguaje en que las instrucciones se escriben en palabras similares al ingles o espaol, que facilitan tanto la escritura como la lectura de programas. En esencia el pseudocdigo se puede definir como un lenguaje de especificacin (descripcin) de algoritmos. La ventaja del pseudocdigo es que en su uso, es decir durante la planificacin de un programa, el programador se puede concentrar en la lgica y en las estructuras de control, sin preocuparse por las reglas de un determinado lenguaje de programacin. La escritura del pseudocdigo exige normalmente la identacin (sangra en el margen izquierdo) de diferentes lneas. La lnea precedida por // se denomina comentario, que viene hacer informacin para el programador o el lector del programa, y no realiza ninguna instruccin ejecutable. El uso de pseudocdigo se ha extendido en la comunidad hispana con trminos en espaol como: inicio, fin, leer, escribir, si_entonces_sino, mientras, fin_mientras, etc. Estilo de escritura de algoritmos en pseudocdigo algoritmo nombre_del_programa var tipo_de_datos : Lista_de_identificadores const Lista_de_identificadores = valor Inicio Instruccin 1 Instruccin 2 Instruccin 3 . . . . Instruccin n fin // cuerpo del programa // cabecera // seccin de declaraciones

Universidad Nacional del Santa Facultad de Ingeniera E.A.P. de Ingeniera de Sistemas e Informtica

FUNDAMENTOS DE PROGRAMACIN

Primer algoritmo con un pseudo cdigo Para conocer cmo se realiza un pseudo cdigo, resolveremos el mismo ejemplo 1 planteado en la parte de diagrama de flujo:

algoritmo Ejemplo 1 var entero : b, h, a, p Inicio b =8 h =2 a = b * h p = 2*(b+h) escribir ( a, p ) fin Como se ve en esta solucin del ejemplo 1, en pseudo cdigo, se coloca el nombre del algoritmo, en la seccin de declaracin de variables se escriben a la parte izquierda los tipos de datos y a la derecha las variables que pertenecen a ese tipo de dato. Para este ejemplo solo tenemos el tipo de dato entero. Se tiene un cuerpo del programa donde se escriben todas las instrucciones necesarias para resolver el problema. A continuacin la solucin del ejemplo 2, de la parte de diagrama de flujo: algoritmo Ejemplo 2 var entero : b, h, a, p Inicio leer (b) leer (h) a = b * h p = 2*(b+h) escribir ( a, p ) fin

Universidad Nacional del Santa Facultad de Ingeniera E.A.P. de Ingeniera de Sistemas e Informtica

FUNDAMENTOS DE PROGRAMACIN

L
Un algoritmo o programa puede ser escrito utilizando solamente tres tipos de estructuras de control, a las cuales se les conocen como estructuras bsicas de control, y son las siguientes: Estructuras Secuenciales. Estructuras Selectivas. a. Simples (si entonces - fin_si / if then end_if) b. Dobles (si entonces sino fin_si / if then else end_if) c. Mltiples Estructuras Repetitivas. a. Mientras (while) b. Hacer_Mientras (do - While) c. Desde / Para (for)

La estructura secuencial es aquella en la que una instruccin (accin) sigue a otra en secuencia. Las tareas a realizar en cada instruccin se suceden de tal modo que la salida de una es la entrada de la siguiente y as sucesivamente hasta el final del proceso. La representacin grfica de una estructura secuencial se muestra en las siguientes figuras en Diagrama de Flujo, Diagrama Estructurado y Pseudocdigo.

Universidad Nacional del Santa Facultad de Ingeniera E.A.P. de Ingeniera de Sistemas e Informtica

FUNDAMENTOS DE PROGRAMACIN

inicio Instruccin 1 Instruccin 2 Instruccin 3 . . . . Instruccin n fin

Para poder conocer cmo se realiza un algoritmo utilizando los mtodos para representar algoritmos, procederemos a realizar tres ejercicios. EJERCICIOS 1. Escribir un algoritmo que determine el pago por la compra de dos televisores LCD de 21'' marca SONY, si cada uno cuesta 2 400 soles. 2. Encontrar el valor de la funcin: x = 3y + z 3. Escribir un algoritmo en el cual se ingresen dos nmeros. Se desea calcular y mostrar la suma y resta. Solucin de los ejemplos Ejercicio01: Inicio CostoTV = 2400 CantidadTV = 2

Pago = CostoTV * CantidadTV

Escribir (Pago)

Fin

Universidad Nacional del Santa Facultad de Ingeniera E.A.P. de Ingeniera de Sistemas e Informtica

FUNDAMENTOS DE PROGRAMACIN

Ejercicio 01 Inicio CostoTV=2400, CantidadTV=2, Pago

Pago = CostoTV * CantidadTV Escribir (Pago) Fin

algoritmo Ejercicio 01 var // seccin de declaraciones de variables entero: CantidadTV real: CostoTV, Pago Inicio // cuerpo del programa CostoTV = 2400 CantidadTV = 2 Pago = CostoTV * CantidadTV Escribir (Pago) fin

Ejercicio02:

Inicio

Leer (y,z)

x=3*y+z

Escribir (x)

Fin

Universidad Nacional del Santa Facultad de Ingeniera E.A.P. de Ingeniera de Sistemas e Informtica

FUNDAMENTOS DE PROGRAMACIN

Ejercicio 02 Inicio x, y, z

Leer (y,z) x=3*y+z Escribir (x) Fin

algoritmo Ejercicio 02 var entero: x, y, z Inicio Leer ( y , z ) x=3*y+z Escribir ( x ) fin

// seccin de declaraciones de variables // cuerpo del programa

Ejercicio03:

Inicio

Leer (num1,num2) Dentro del grfico de proceso, se pueden realizar como mximo tres procesos. Si hay ms procesos, utilizar otro diagrama de proceso

Suma = num1 + num2 Resta = num1 - num2

Escribir ('La suma es : ',Suma) Escribir ('La resta es : ',Resta) Fin

Universidad Nacional del Santa Facultad de Ingeniera E.A.P. de Ingeniera de Sistemas e Informtica

FUNDAMENTOS DE PROGRAMACIN

Ejercicio 03 Inicio num1, num2, Suma, Resta

Suma = num1 + num2 Resta = num1 - num2 Escribir ('La suma es : ', Suma) Escribir ('La resta es : ', Resta) Fin

algoritmo Ejercicio 03 var // seccin de declaraciones de variables entero: num1, num2, Suma, Resta Inicio // cuerpo del programa Leer ( num1, num2 ) Suma = num1 + num2 Resta = num1 - num2 Escribir ('La suma es : ', Suma) Escribir ('La resta es : ', Resta) fin

Universidad Nacional del Santa Facultad de Ingeniera E.A.P. de Ingeniera de Sistemas e Informtica

FUNDAMENTOS DE PROGRAMACIN

No todos los problemas pueden resolverse empleando estructuras secuenciales. Cuando hay que tomar una decisin aparecen las estructuras selectivas. En nuestra vida diaria se nos presentan situaciones donde debemos decidir: Elijo la carrera A o la carrera B? Me pongo este pantaln? Para ir al trabajo, elijo el camino A o el camino B? Al cursar una carrera, elijo el turno maana, tarde o noche? Las estructuras selectivas se utilizan para tomar decisiones lgicas; de ah que se suelen denominar tambin estructuras condicionales, de decisin o alternativas. En las estructuras selectivas se evala una condicin y en funcin del resultado se realiza una opcin u otra. Las condiciones se especifican usando expresiones lgicas. Las estructuras selectivas pueden ser: 1. 2. 3. 4. Simples. Dobles. Mltiples. Anidadas.

La estructura selectiva simple ejecuta una determinada accin o acciones cuando se cumple una determinada condicin, es decir, tenemos la opcin de realizar una actividad o varias si la condicin es verdadero y si es falso no se realizar ninguna actividad. La representacin grfica de la estructura selectiva simple en un Diagrama de Flujo es la siguiente:

En la figura anterior se puede observar lo siguiente: el rombo representa la condicin. Hay dos opciones que se pueden tomar. Si la condicin es verdadera se sigue el camino del verdadero, si la condicin es falsa se sigue el camino del falso. Por el camino del verdadero pueden existir varias operaciones, entradas y salidas que se pueden realizar, inclusive ya veremos que pueden haber otras estructuras condicionales o selectivas.

Universidad Nacional del Santa Facultad de Ingeniera E.A.P. de Ingeniera de Sistemas e Informtica

FUNDAMENTOS DE PROGRAMACIN

La representacin grfica de la estructura selectiva simple en el diagrama estructurado y pseudocdigo son las siguientes:

si condicin entonces instruccin 1 instruccin 2 . . instruccin n fin_si

Ahora pondremos en prctica los nuevos conocimientos adquiridos solucionando el siguiente ejemplo: Ejemplo1: Ingresar el sueldo de una persona, si supera los S/. 3000 soles, mostrar un mensaje en pantalla indicando que debe abonar impuestos.

Universidad Nacional del Santa Facultad de Ingeniera E.A.P. de Ingeniera de Sistemas e Informtica

FUNDAMENTOS DE PROGRAMACIN

algoritmo Ejemplo1 var real: sueldo inicio leer (sueldo) si (sueldo > 3000) entonces escribir(Esta persona debe abonar impuestos) fin_si fin

Observacin del Pseudocdigo Obsrvese que las palabras del pseudocdigo si y fin_si se alinean verticalmente identando (sangrando) la instruccin o bloque de instrucciones.

Universidad Nacional del Santa Facultad de Ingeniera E.A.P. de Ingeniera de Sistemas e Informtica

FUNDAMENTOS DE PROGRAMACIN

Ejemplo2: Realizar un algoritmo que permita el ingreso de un nmero entero, si es positivo debe mostrar el mensaje que es un nmero positivo, elevarlo al cuadrado y mostrar dicho resultado. Al terminar el algoritmo debe decir fin del algoritmo.

inicio

leer (num)

num > 0 mostrar 'Numero positivo'

Cuad = num ^ 2

mostrar (Cuad)

mostrar ('Fin del algoritmo')

fin

Universidad Nacional del Santa Facultad de Ingeniera E.A.P. de Ingeniera de Sistemas e Informtica

FUNDAMENTOS DE PROGRAMACIN

Ejemplo 2 Inicio num, Cuad

Leer (num) num > 0 V Mostrar ('Nmero positivo') Cuad = num ^ 2 Mostrar (Cuad) Mostrar ('Fin del algoritmo') Fin F

algoritmo Ejemplo 2 var entero: num, Cuad inicio leer (num) si ( num > 0 ) entonces mostrar(Nmero positivo) Cuad = num ^ 2 mostrar ( Cuad ) fin_si Mostrar ('Fin del algoritmo') fin

Universidad Nacional del Santa Facultad de Ingeniera E.A.P. de Ingeniera de Sistemas e Informtica

FUNDAMENTOS DE PROGRAMACIN

La estructura selectiva doble permite elegir entre dos opciones o alternativas, en funcin del cumplimiento de una determinada condicin, de tal forma que, si se cumple, se ejecutan las acciones del primer bloque; si no se cumple, se ejecutan las acciones del segundo bloque. La representacin grfica de una estructura selectiva doble en los mtodos para representar a los algoritmos es el siguiente:

si condicin entonces instruccin 1 instruccin 2 . . instruccin n si_no instruccin 1 instruccin 2 . . instruccin m fin_si

De acuerdo a la condicin podemos realizar actividades por el lado verdadero o por el lado falso, PERO NUNCA se realizan las actividades de ambos lados al mismo tiempo.

Universidad Nacional del Santa Facultad de Ingeniera E.A.P. de Ingeniera de Sistemas e Informtica

FUNDAMENTOS DE PROGRAMACIN

Ahora pondremos en prctica los nuevos conocimientos adquiridos solucionando el siguiente ejemplo: Ejemplo 3: Realizar un algoritmo que lea dos nmeros enteros distintos entre s y mostrar por pantalla el mayor y el menor. Al final del algoritmo mostrar tambin el nombre del creador del algoritmo.

Universidad Nacional del Santa Facultad de Ingeniera E.A.P. de Ingeniera de Sistemas e Informtica

FUNDAMENTOS DE PROGRAMACIN

algoritmo Ejemplo3 var entero : num1, num2 inicio leer (num1, num2) si (num1 > num2) entonces escribir(El mayor es, num1, y el menor es, num2) si_no escribir(El mayor es, num2, y el menor es, num1) fin_si escribir(Mi nombre es Maverick) fin

Ejemplodeautoaprendizaje: Resuelva en diagrama de flujo, estructurado y pseudocdigo. Ejemplo 4: Realizar un algoritmo que permita el ingreso de tres notas de un alumno. Calcular la nota promedio y si el promedio es mayor o igual a 10.5 mostrar un mensaje Aprobado Desaprobado.

Universidad Nacional del Santa Facultad de Ingeniera E.A.P. de Ingeniera de Sistemas e Informtica

FUNDAMENTOS DE PROGRAMACIN

Con frecuencia en la prctica se presentan ms de dos elecciones posibles de una cierta condicin. La estructura selectiva mltiple se utiliza para este tipo de problemas, es decir, que la estructura selectiva mltiple evaluar una expresin que podr tomar n valores distintos;: 1, 2, 3, 4,..., n. Segn qu elija uno de estos valores en la condicin, se realizar una de las n acciones, o lo que es igual, el flujo del algoritmo seguir un determinado camino entre los n posibles. La representacin grfica de una estructura selectiva doble en las tres herramientas de programacin es la siguiente:

Universidad Nacional del Santa Facultad de Ingeniera E.A.P. de Ingeniera de Sistemas e Informtica

FUNDAMENTOS DE PROGRAMACIN

en caso expresin hacer valor 1: instruccin 1 instruccin 2 ........ valor 2: instruccin 1 instruccin 2 ........ valor 3: instruccin 1 . instruccin 2 . ........ . valor n: instruccin 1 instruccin 2 ........ otros : instruccin 1 instruccin 2 ........ fin_caso

En el lugar donde aparece la palabra expresin pondremos lo que nosotros queremos evaluar; puede ser una variable, una instruccin o cualquier cosa que tome diferentes valores. En el lugar de <valor1> o <caso1>, <valor2> o <caso2>, ..., <valor n> o <caso n> pondremos los diferentes valores que pueda tomar la decisin, segn los cuales el programa debe hacer una u otra cosa. Pueden existir tanto valores como a nosotros nos convenga. Esta estructura es muy til en el momento en el que debemos tomar diferentes decisiones de una misma condicin. Ejemplo5: Realizar un algoritmo que lea un nmero que represente el da de la semana y diga qu da es, teniendo en cuenta lo siguiente: (Lunes=1, Martes=2, ..., Domingo=7).

Universidad Nacional del Santa Facultad de Ingeniera E.A.P. de Ingeniera de Sistemas e Informtica

FUNDAMENTOS DE PROGRAMACIN

algoritmo Ejemplo5 var entero : da inicio leer (da) en caso (da) hacer 1: escribir(Lunes) 2: escribir(Martes) 3: escribir(Mircoles) 4: escribir(Jueves) 5: escribir(Viernes) 6: escribir(Sabado) 7: escribir(Domingo) fin_caso fin

Ejemplodeautoaprendizaje: Resuelva en diagrama de flujo, estructurado y pseudocdigo. Ejemplo6: Escribir un algoritmo que solicite el ingreso de dos nmeros y a continuacin un operador aritmtico (+, -, *, /). El algoritmo debe calcular el resultado de la operacin seleccionada.

Universidad Nacional del Santa Facultad de Ingeniera E.A.P. de Ingeniera de Sistemas e Informtica

FUNDAMENTOS DE PROGRAMACIN

La estructura selectiva anidada llamada tambin estructura de decisin anidada, viene hacer una estructura si-entonces que puede contener otra estructura si-entonces, y sta a su vez a otra estructura si-entonces, y as sucesivamente cualquier nmero de veces; dentro de cada estructura pueden existir diferentes instrucciones o acciones.

Universidad Nacional del Santa Facultad de Ingeniera E.A.P. de Ingeniera de Sistemas e Informtica

FUNDAMENTOS DE PROGRAMACIN

si condicin entonces si condicin entonces instruccin 1 instruccin 2 ...... instruccin n fin_si si_no si condicin entonces instruccin 1 instruccin 2 ...... instruccin m si_no instruccin 1 instruccin 2 ...... instruccin m fin_si fin_si

Ejemplo7: Realizar un algoritmo que permita el ingreso de tres notas de un alumno. Calcular la nota promedio e imprima alguno de estos mensajes: a. Si el promedio est entre 20 y 16 mostrar Alumno Excelente b. Si el promedio est entre 15 y 11 mostrar Alumno Regular c. Si el promedio est entre 10 y 6 mostrar Alumno Malo d. Si el promedio est entre 5 y 0 mostrar Alumno Psimo

Universidad Nacional del Santa Facultad de Ingeniera E.A.P. de Ingeniera de Sistemas e Informtica

FUNDAMENTOS DE PROGRAMACIN

algoritmo Ejemplo7 var entero : n1, n2, n3, prom inicio leer (n1, n2, n3) prom = (n1+n2+n3) / 3 si (prom<=5 y prom>=0) entonces escribir(Alumno Pesimo) else si (prom<=10) entonces escribir(Alumno Malo) else si (prom<=15) entonces escribir(Alumno Regular) else si (prom<=20) entonces escribir(Alumno Excelente) else escribir(Promedio desconocido) fin_si fin_si fin_si fin_si fin

Universidad Nacional del Santa Facultad de Ingeniera E.A.P. de Ingeniera de Sistemas e Informtica

FUNDAMENTOS DE PROGRAMACIN

Las computadoras estn diseadas para aquellas aplicaciones en las cuales una operacin o conjunto de ellas deben repetirse muchas veces. Un tipo muy importante de estructura es el algoritmo necesario para repetir una o varias acciones por un nmero determinado de veces, a est estructura se la llama Estructura Repetitiva. Las estructuras repetitivas se utilizan cuando se desea que una instruccin o bloque de instrucciones se repita un nmero determinado de veces o hasta que una condicin de terminacin se cumpla. Las estructuras que repiten una secuencia de instrucciones un nmero determinado de veces se denominan bucles, y se llama iteracin al hecho de repetir la ejecucin de una secuencia de acciones. Iterar es repetir una vez el bucle. Se debe tener en cuenta lo siguiente para la construccin de una estructura repetitiva: El cuerpo del bucle: Es el grupo de instrucciones que se van a repetir. Dentro del cuerpo del bucle debe existir una instruccin que modifique la condicin lgica de terminacin. Las sentencias de inicializacin. Son instrucciones que inicializan contadores y acumuladores. Las condiciones para la terminacin del bucle: Expresiones lgicas que controlan la terminacin del bucle. A continuacin se detallan tres estructuras repetitivas bsicas: 1. 2. 3. Estructura Repetitiva Desde / Para. (FOR) Estructura Repetitiva Hacer Mientras. (DO WHILE) Estructura Repetitiva Mientras. (WHILE)

Para poder entender cmo funciona un proceso repetitivo, se necesita conocer el concepto de dos expresiones: Qu es un contador? y Qu es un acumulador? CONTADOR En un proceso repetitivo cuya funcin es contar los sucesos o acciones internas del bucle, como pueden ser el nmero de iteraciones del bucle, la cantidad de elementos que tiene un archivo, un vector, una matriz, etc. Una forma de controlar un bucle es mediante un contador. Un contador es una variable cuyo valor se incrementa o decrementa en una cantidad constante o fija en cada iteracin. La forma de representar un contador es:

contador =

contador

La expresin anterior se debe interpretar como asignar a la variable contador el valor que tenia anteriormente ms uno o menos uno, dependiendo del caso si se quiere incrementar o decrementar.

Universidad Nacional del Santa Facultad de Ingeniera E.A.P. de Ingeniera de Sistemas e Informtica

FUNDAMENTOS DE PROGRAMACIN

Nota: En todo contador es necesario que exista una instruccin que inicializa la variable que va a tener la funcin de contador y esta variable puede ser cualquier identificador. Ejemplo 1: Contador que incrementa de uno en uno. La variable contador va a tener la funcin de ser el contador. contador = contador = 1 contador + 1 1 Ejemplo 2: Contador que decrementa de uno en uno La variable cont va a tener la funcin de ser el contador. // Inicializacin de la variable contador con el valor 1 // la variable contador incrementa a 2 por la suma

cont cont

= =

10 cont - 1 10

// Inicializacin de la variable cont con el valor 10 // la variable cont decrementa a 9 por la resta

Nota: Un contador puede ser positivo (incrementos, uno a uno) o negativo (decrementos, uno a uno). Un contador tambin puede incrementar o decrementar de dos en dos, tres en tres, cuatro en cuatro y as sucesivamente, dependiendo de la tarea que est realizando el bucle. Ejemplo 3: Contador que incrementa de dos en dos c c = = 0 c + 0 Ejemplo 4: Contador que decrementa de cinco en cinco contador = contador = 57 contador - 5 57 // la variable contador es igual a 57 // el contador decrementa a 52 2 // Inicializacin de la variable c con el valor 0 // la variable c incrementa a 2 por la suma

Universidad Nacional del Santa Facultad de Ingeniera E.A.P. de Ingeniera de Sistemas e Informtica

FUNDAMENTOS DE PROGRAMACIN

ACUMULADOR Un acumulador es una variable cuya misin es almacenar cantidades variables. Realiza la misma funcin que un contador pero con la diferencia de que el incremento o decremento es variable y no constante como en el contador. La forma de representar un acumulador es:

S = S + valorVariable

Nota: En todo acumulador es necesario que exista una instruccin que inicializa la variable que va a tener la funcin de acumulador y esta variable puede ser cualquier identificador. Ejemplo 5: Calcular el promedio de notas de 10 alumnos, primero debemos utilizar una variable acumulador para ir sumando las 10 notas (cantidades variables) y luego dividir este valor entre diez. La variable S va a tener la funcin de ser el acumulador. Solucin del ejemplo 5. S=0 leer(nota) S=S+nota Prom=S/10 La explicacin del algoritmo es el siguiente: S = 0 // Inicializacin de la variable S acumulador con el valor 0 // el bucle; tiene dos instrucciones.

leer (nota) S = S + nota

// 1. Se lee la 1era nota // Se suma la 1era nota + el valor de S que es cero 0 // Imaginemos que la 1era nota = 13, ahora S vale 13 // terminado regresa el bucle a su primera instruccin // // 2. Leer la 2da nota en la misma variable nota // imaginamos ahora nota=08, ahora S vale 13+8=21 // // 3. Leer nota por tercera vez // imaginamos ahora nota=17, ahora S vale 21+17=38 // 4. Leer nota por cuarta vez // nota=11, ahora S vale 38+11=49 // y asi sucesivamente hasta leer las 10 notas, // terminado en la varible acumuladora esta el total de // la suma de las 10 notas. // 5. Hallar el promedio = S / 10

Prom = S/10

Esto es la forma como trabaja un acumulador.

Universidad Nacional del Santa Facultad de Ingeniera E.A.P. de Ingeniera de Sistemas e Informtica

FUNDAMENTOS DE PROGRAMACIN

En muchas ocasiones se conoce de antemano el nmero de veces que se desean ejecutar las acciones o instrucciones de un bucle. En estos casos en los que el nmero de iteraciones es fijo, se debe usar la estructura desde/para. Por ejemplo, ingresar 10 notas, 100 nmeros, etc. La representacin grfica de la estructura repetitiva desde/para en un Diagrama de Flujo es el siguiente:

En su forma ms tpica y bsica, esta estructura requiere una variable entera que cumple la funcin de un contador de vueltas. En la seccin indicada como inicializacin, se suele colocar el nombre de la variable que har de contador, asignndole a dicha variable un valor inicial. En la seccin de condicin se coloca la condicin que deber ser verdadera para que el ciclo contine (en caso de falso el ciclo se detendr). Y finalmente, en la seccin modificacin se coloca una instruccin que permite modificar el valor de la variable que hace de contador (para permitir que alguna vez sea falsa). Ejemplo: Queremos que se repita 50 veces el bloque de instrucciones. Describiremos el siguiente ejemplo por etapas: Nota: El smbolo de la flecha apuntando a la izquierda ( ) significa = (igual) 1era Etapa (c=1): Cuando el ciclo comienza antes de dar la primera vuelta, la variable de inicializacin toma el valor indicado en la seccin de inicializacin. 1era Etapa

Universidad Nacional del Santa Facultad de Ingeniera E.A.P. de Ingeniera de Sistemas e Informtica

FUNDAMENTOS DE PROGRAMACIN

2da. Etapa (c<=50): Inmediatamente se verifica en forma automtica, si la condicin es verdadera. En caso de serlo se ejecuta el bloque de instrucciones del ciclo, es decir, si el bloque tuviera 5 instrucciones esas se realizan una por una. 2da Etapa

3era. Etapa (c=c+1): Al finalizar de ejecutarse el bloque de instruccines del bucle, la ejecucin de la estructura repetitiva se regresa a la seccin de modificacin. Se incrementa en una unidad en contador. 3era Etapa

4ta Etapa (c<=50): Seguidamente, se vuelve a comprobar la condicin si es verdadera, y si lo es, vuelve a realizar las instrucciones del ciclo, as prosigue ejecutndose todo el bucle hasta que la condicin es falsa y sale del bucle.

Universidad Nacional del Santa Facultad de Ingeniera E.A.P. de Ingeniera de Sistemas e Informtica

FUNDAMENTOS DE PROGRAMACIN

4ta Etapa

Analicemos el ejemplo: La variable c toma inicialmente el valor 1. Se controla automticamente el valor de la condicin: como c vale 1 y esto es menor que 50, la condicin da verdadero. Como la condicin fue verdadera, se ejecutan la(s) instruccion(es). Al finalizar de ejecutar todas las instrucciones, se retorna a la instruccin c = c + 1, por lo que la variable c se incrementa en uno. Se vuelve a controlar automticamente si c es menor o igual a 50. Como ahora su valor es 2 y sigue siendo menor que 50, se ejecuta nuevamente el bloque de instrucciones e incrementa nuevamente la variable del contador c. El proceso se repetir hasta que la variable c sea incrementada al valor 51. En ese momento la condicin ser falsa, el ciclo se detendr y saldr del bucle repetitivo. La variable c puede ser inicializada y finalizar en cualquier valor. Adems, no es obligatorio que la instruccin de modificacin sea un incremento de tipo contador c = c + 1. Puede ser tambin c = c + 2, en lugar de c = c + 1, el valor de c ser incrementado de a 2 en cada vuelta, y no de a uno. En este caso, esto significar que el ciclo no efectuar las 50 vueltas sino solo 25 Por qu? La instruccin de modificacin no solamente puede ser un incrementador, tambin puede ser un decrementador, es decir, la variable de inicializacin decrementar a lo que se desea, esto se puede hacer siempre y cuando la variable de inicializacin comienza en un valor mayor que el de la condicin, por ejemplo:

Universidad Nacional del Santa Facultad de Ingeniera E.A.P. de Ingeniera de Sistemas e Informtica

FUNDAMENTOS DE PROGRAMACIN

Analicemos el ejemplo: La variable c toma inicialmente el valor 100. El valor de la condicin es c >= 1. La variable c decrementa de dos en dos. Esto quiere decir que el bucle se repite 50 veces, que comienza en un valor de contador = 100, decrementa de dos en dos, hasta que la condicin es falsa. La representacin grfica de la estructura repetitiva desde/para en el diagrama estructurado y pseudocdigo son los siguientes:

estructura repetitiva desde/para

condicin inicializacin

modificacin

desde c = vi hasta vf inc|dec valor hacer instruccin 1 instruccin 2 . . instruccin n fin_desde

Universidad Nacional del Santa Facultad de Ingeniera E.A.P. de Ingeniera de Sistemas e Informtica

FUNDAMENTOS DE PROGRAMACIN

Ejemplo 1: Realizar un algoritmo que permita hallar la suma de los 10 primeros nmeros enteros positivos, y su promedio.

Cuerpo del bucle

Cuerpo del bucle

Universidad Nacional del Santa Facultad de Ingeniera E.A.P. de Ingeniera de Sistemas e Informtica

FUNDAMENTOS DE PROGRAMACIN

algoritmo Ejemplo1 var entero: c , suma real: prom inicio suma = 0 desde c = 1 hasta 10 inc 1 hacer suma = suma + c fin_desde prom = suma/10 escribir(La suma es : ,suma) escribir(El promedio es : ,prom) fin

Cuerpo del bucle

Nota: En Pseudocdigo si la instruccin de incremento es en uno, se puede obviar la instruccin inc 1, y solamente se puede colocar: desde c = 1 hasta 10 hacer . Porque en algoritmo se sobrentiende que aumenta en 1. Ejemplo2: Realizar un algoritmo que permita hallar la suma y promedio de 20 nmeros enteros ingresados por teclado.

Cuerpo del bucle

Universidad Nacional del Santa Facultad de Ingeniera E.A.P. de Ingeniera de Sistemas e Informtica

FUNDAMENTOS DE PROGRAMACIN

Cuerpo del bucle

algoritmo Ejemplo2 var entero: n, c, suma real: prom inicio suma = 0 desde c = 1 hasta 20 inc 1 leer(n) suma = suma + n fin_desde prom = suma/20 escribir(La suma es : ,suma) escribir(El promedio es : ,prom) fin

Cuerpo del bucle

Ejemplosdeautoaprendizaje: Resuelva en diagrama de flujo, estructurado y pseudocdigo. Ejemplo3: Realizar un algoritmo que me permita leer 10 nmeros positivos y negativos, e imprima solamente los nmeros positivos. Ejemplo4: Realizar un algoritmo que me permita leer 20 nmeros e imprimir cuntos son positivos, negativos y neutros. Dato: Neutro se le conoce al cero 0

Universidad Nacional del Santa Facultad de Ingeniera E.A.P. de Ingeniera de Sistemas e Informtica

FUNDAMENTOS DE PROGRAMACIN

Existen muchas situaciones en las que se desea que un bucle se ejecute al menos una vez antes de comprobar la condicin de repeticin, para ello se puede utilizar la estructura repetitiva Hacer - Mientras. Esta estructura repetitiva se utiliza cuando conocemos de antemano que por lo menos una vez se ejecutar el bloque repetitivo. Cuando una instruccin Hacer-Mientras se ejecuta, lo primero que sucede es la ejecucin del bucle (todas las instrucciones) y a continuacin se evala la expresin booleana de la condicin. Si se evala como verdadera, el cuerpo del bucle se repite y se vuelve a evaluar la condicin, si sigue siendo verdadera se seguir repitiendo el bucle hasta que la condicin sea falsa. Dentro del bucle existir una instruccin que en un cierto momento har que la condicin sea falsa. La representacin grfica de la estructura repetitiva Hacer-Mientras es la siguiente:

estructura repetitiva hacer/mientras

hacer instruccin 1 instruccin 2 . . instruccin n mientras (condicin)

Universidad Nacional del Santa Facultad de Ingeniera E.A.P. de Ingeniera de Sistemas e Informtica

FUNDAMENTOS DE PROGRAMACIN

A continuacin se presenta el siguiente ejemplo para comprender el funcionamiento de la estructura repetitiva Hacer-Mientras. Ejemplo 5: En el curso de Algoritmos y Diagramacin existen 40 alumnos, de los cuales se tiene el promedio de la Primera Unidad. Se pide realizar un algoritmo que permita hallar el promedio general de estos alumnos. Solucin

Cuerpo del bucle

Desarrollamos el ejemplo 5 en 5 pasos: 1. Se asignan valores a las variables c = 0 y suma = 0 2. Se ingresa al cuerpo del bucle (no existe ninguna instruccin que nos impida), se tiene tres instrucciones: 2.1. En la primera instruccin que se ejecuta tenemos un contador, este contador incrementa en una unidad siendo su resultado c = 1. 2.2. En la segunda instruccin se lee la nota del primer alumno (esta nota se ingresa por teclado).

Universidad Nacional del Santa Facultad de Ingeniera E.A.P. de Ingeniera de Sistemas e Informtica

FUNDAMENTOS DE PROGRAMACIN

2.3. La tercera instruccin es un acumulador; cuya funcin es acumular la suma de todas las notas (40 notas). 3. A continuacin, se evala la condicin; se pregunta: c es menor que 40? Si la respuesta es verdadera se regresa al paso 2 y se ejecutan las tres instrucciones del cuerpo del bucle nuevamente, de lo contrario se contina con el paso 4. 4. Se llega a este paso despus de finalizarse las 40 iteraciones que da el bucle. En la variable suma se tiene la suma total de las notas y ahora se ejecuta la instruccin que permite hallar el promedio. 5. Muestra en pantalla el resultado del promedio de notas.

La solucin del ejemplo 5 en el diagrama estructurado y pseudocdigo es el siguiente:

Cuerpo del bucle

algoritmo Ejemplo5 var entero: nota, c, suma real: prom inicio c=0 suma = 0 hacer c=c+1 leer(nota) suma = suma + nota mientras (c < 40) prom = suma/c escribir(El promedio general es : ,prom) fin

Cuerpo del bucle

Universidad Nacional del Santa Facultad de Ingeniera E.A.P. de Ingeniera de Sistemas e Informtica

FUNDAMENTOS DE PROGRAMACIN

Ejemplo 6: Se desea contabilizar cuntos nmeros son positivos, negativos y neutros del ingreso continuo de nmeros enteros. Este proceso re repite hasta que el usuario pulse la tecla N al mensaje en pantalla Desea Continuar[s/n]:. Solucin Para la solucin del problema se va a necesitar de tres contadores, que realizarn la accin de contar cuntos nmeros son positivos, negativos y neutros se ingresarn por teclado, de una serie de nmeros. Para ello, utilizaremos tres variables, a las que llamaremos: cc : contador de ceros cp : contador de positivos cn : contador de negativos Adems, utilizaremos estructuras selectivas anidadas, con las que haremos la comprobacin de cules nmeros son iguales a cero, positivos y negativos. Y de acuerdo al resultado de la condicin, los contadores (cc, cp y cn) incrementarn su valor. Terminadas de realizar todas las condiciones, se preguntar al usuario si Desea continuar [s/n] ingresando ms nmeros, para ello utilizaremos una variable de tipo carcter, llamado opc. El cul almacenar el carcter de s de s continuo, o n de no continuo ingresando valores. De acuerdo a la respuesta seguiremos o terminamos el bucle. Al responder en 'n' de no continuo el algoritmo debe reportar lo siguiente: Cantidad de nmeros ceros. Cantidad de nmeros positivos. Cantidad de nmeros negativos.

Universidad Nacional del Santa Facultad de Ingeniera E.A.P. de Ingeniera de Sistemas e Informtica

FUNDAMENTOS DE PROGRAMACIN

Universidad Nacional del Santa Facultad de Ingeniera E.A.P. de Ingeniera de Sistemas e Informtica

FUNDAMENTOS DE PROGRAMACIN

algoritmo Ejemplo6 var entero: n, cc, cp, cn caracter: opc inicio cc = 0 cp = 0 cn = 0 hacer leer (n) si (n=0) entonces cc = cc + 1 sino si (n>0) entonces cp = cp + 1 sino cn = cn + 1 fin_si fin_si escribir(Desea continuar : [s/n] :) escribir(opc) mientras (opc = s) escribir(Cantidad de ceros : ,cc) escribir(Cantidad de positivos : ,cp) escribir(Cantidad de ceros : ,cn) fin

Universidad Nacional del Santa Facultad de Ingeniera E.A.P. de Ingeniera de Sistemas e Informtica

FUNDAMENTOS DE PROGRAMACIN

Ejemplo de autoaprendizaje: Resuelva en diagrama de flujo, diagrama estructurado y pseudocdigo. Ejemplo 7: En una campaa mdica de medicin de presin, se pide que se ingresen todas las edades de los pacientes que sern atendidos. Se solicita que se calcule la mayor y menor edad ingresada. El

Universidad Nacional del Santa Facultad de Ingeniera E.A.P. de Ingeniera de Sistemas e Informtica

FUNDAMENTOS DE PROGRAMACIN

El proceso de una estructura repetitiva Mientras es el siguiente: para que ingrese al cuerpo del bucle tiene que evaluarse una condicin, si sta es verdadera se ingresa y se realizan todas las instrucciones que estn dentro del cuerpo del bucle; terminado la ltima instruccin se vuelve a comprobar la condicin; se seguir realizando el bucle mientras la condicin siga siendo verdadera y si en un momento es falsa sale del bucle. Es decir, la estructura repetitiva Mientras es aquella en que el cuerpo del bucle se repite mientras se cumpla una determinada condicin, y termina cuando ya no se cumple. Si al querer ingresar al cuerpo del bucle por primera vez y la condicin es falsa, no ingresa al bucle, ninguna accin se realiza y el algoritmo prosigue en la siguiente instruccin fuera del bucle. La representacin grfica de la estructura repetitiva Mientras es la siguiente:

Universidad Nacional del Santa Facultad de Ingeniera E.A.P. de Ingeniera de Sistemas e Informtica

FUNDAMENTOS DE PROGRAMACIN

mientras (condicin) hacer instruccin 1 instruccin 2 . . instruccin n fin_mientras


Pseudocdigo

A continuacin se presenta el siguiente ejemplo para comprender el funcionamiento de la estructura repetitiva Mientras. Ejemplo 8: Escribir un algoritmo que lea las 40 notas finales del curso de Fundamentos de Programacin, e informe cuntos alumnos han aprobado y cuntos desaprobaron. Dato: (Nota >= 10.5 Aprobado)

Universidad Nacional del Santa Facultad de Ingeniera E.A.P. de Ingeniera de Sistemas e Informtica

FUNDAMENTOS DE PROGRAMACIN

algoritmo Ejemplo8 var entero: c, ca, cd real: notaFinal inicio c=0 ca = 0 cd = 0 mientras ( c < 40 ) hacer c=c+1 leer (notaFinal) si (notaFinal >= 10.5) entonces ca = ca + 1 sino cd = cd + 1 fin_si fin_mientras escribir(Aprobados : ,ca) escribir(Desaprobados : ,cd) fin

Universidad Nacional del Santa Facultad de Ingeniera E.A.P. de Ingeniera de Sistemas e Informtica

FUNDAMENTOS DE PROGRAMACIN

Ejemplo 9: Realizar un algoritmo que permita calcular la suma de los nmeros enteros comprendidos entre dos cantidades ingresadas por teclado. Hallar adicionalmente el promedio de la suma.

Universidad Nacional del Santa Facultad de Ingeniera E.A.P. de Ingeniera de Sistemas e Informtica

FUNDAMENTOS DE PROGRAMACIN

algoritmo Ejemplo9 var entero: Pnum, Snum, c, suma, aux real: prom inicio leer( Pnum , Snum ) c =0 suma = 0 si (Pnum>Snum) entonces aux = Pnum Pnum = Snum Snum = aux fin_si mientras ( Pnum <= Snum ) hacer c=c+1 suma = suma + Pnum Pnum = Pnum + 1 fin_mientras prom = suma / c escribir(La suma es : ,suma) escribir(El promedio es : ,prom) fin

Universidad Nacional del Santa Facultad de Ingeniera E.A.P. de Ingeniera de Sistemas e Informtica

FUNDAMENTOS DE PROGRAMACIN