Libro AlLibro Algoritmica Para Programciongoritmica Para Programcion

197
Algorítmica para Programación Pág. 1 Ingeniería Informática y Sistemas - UNAMBA Ing. Francisco Cari I. ALGORÍTMICA PARA PROGRAMACIÓN I. CONCEPTOS BÁSICOS DE ALGORÍTMICA 1.1 Algorítmica La algorítmica consiste en el desarrollo de soluciones computacionales a los diferentes problemas que se plantean en el desarrollo de un programa. Dichas soluciones son independientes del lenguaje de programación utilizado, puesto que son resueltos en un nivel de abstracción mayor. Muchas soluciones algorítmicas se basan en las diferentes estructuras de datos como apoyo fundamental a la hora de resolver problemas. 1.2 Algoritmo Un algoritmo es una secuencia de actividades para efectuar paso por paso algún proceso. Es un método que se realiza paso a paso para solucionar un problema que termina en un número de finito de pasos. Ejemplo: Una receta de un libro de cocina Realizar una operación matemática Pasos para seguir un tramite documentario 1.3 Programación de Computadoras Es la ciencia que permite a una persona programar una computadora utilizando un lenguaje para que resuelva tareas de manera rápida. 1.4 Programa de Computadora Es una secuencia de instrucciones que indica las acciones o tareas que han de ejecutarse en varias etapas para dar solución a un problema determinado. Etapa de Análisis: entender el problema claramente Etapa de solución general: pseudocódigo, diagrama de flujo, diagrama de bloques, etc. Etapa de prueba: prueba escritorio Etapa de implementación específica: codificar Etapa de prueba: corrección Etapa de uso. 1.5 Lenguaje de Programación Es un conjunto de reglas o normas símbolos y palabras especiales utilizadas para construir un programa y con él, darle solución a un problema determinado. Es el intermedio entre la máquina y el usuario. 1.6 Niveles de los Lenguajes Se clasifican en: Lenguaje máquina: Eran diseñados en código binario. Lenguaje de bajo nivel: Se utiliza el lenguaje ensamblador, utilizaba algunas palabras claves. Lenguaje de alto nivel: Se desarrollaron lenguajes de programación.

Transcript of Libro AlLibro Algoritmica Para Programciongoritmica Para Programcion

  • Algortmica para Programacin Pg. 1

    Ingeniera Informtica y Sistemas - UNAMBA Ing. Francisco Cari I.

    ALGORTMICA PARA PROGRAMACIN

    I. CONCEPTOS BSICOS DE ALGORTMICA

    1.1 AlgortmicaLa algortmica consiste en el desarrollo de soluciones computacionales a losdiferentes problemas que se plantean en el desarrollo de un programa. Dichassoluciones son independientes del lenguaje de programacin utilizado, puestoque son resueltos en un nivel de abstraccin mayor. Muchas solucionesalgortmicas se basan en las diferentes estructuras de datos como apoyofundamental a la hora de resolver problemas.1.2 AlgoritmoUn algoritmo es una secuencia de actividades para efectuar paso por paso algnproceso. Es un mtodo que se realiza paso a paso para solucionar un problemaque termina en un nmero de finito de pasos.Ejemplo: Una receta de un libro de cocina Realizar una operacin matemtica Pasos para seguir un tramite documentario1.3 Programacin de ComputadorasEs la ciencia que permite a una persona programar una computadora utilizandoun lenguaje para que resuelva tareas de manera rpida.1.4 Programa de ComputadoraEs una secuencia de instrucciones que indica las acciones o tareas que han deejecutarse en varias etapas para dar solucin a un problema determinado. Etapa de Anlisis: entender el problema claramente Etapa de solucin general: pseudocdigo, diagrama de flujo, diagrama debloques, etc. Etapa de prueba: prueba escritorio Etapa de implementacin especfica: codificar Etapa de prueba: correccin Etapa de uso.1.5 Lenguaje de ProgramacinEs un conjunto de reglas o normas smbolos y palabras especiales utilizadaspara construir un programa y con l, darle solucin a un problema determinado.Es el intermedio entre la mquina y el usuario.1.6 Niveles de los LenguajesSe clasifican en: Lenguaje mquina: Eran diseados en cdigo binario. Lenguaje de bajo nivel: Se utiliza el lenguaje ensamblador, utilizaba algunaspalabras claves. Lenguaje de alto nivel: Se desarrollaron lenguajes de programacin.

  • Algortmica para Programacin Pg. 2

    Ingeniera Informtica y Sistemas - UNAMBA Ing. Francisco Cari I.

    1.7 Niveles de los lenguajes de programacinDepende de lenguaje de programacin: Secuencial: Programas que se disean con instrucciones que van de unasdetrs de otras. Estructurada: Programas que se hacen por mdulos, cada mdulo realizaalguna tarea especfica. Orientado a Objetos: Lenguajes que permiten la utilizacin de objetosdentro del diseo del programa.

    1.8 PseudocdigoEl pseudocdigo describe un algoritmo utilizando una mezcla de frases enlenguaje comn, instrucciones de programacin y palabras clave que definen lasestructuras bsicas. Su objetivo es permitir que el programador se centre en losaspectos lgicos de la solucin a un problema.1.9 Lenguaje de ProgramacinUn Lenguaje de Programacin es aqul que es utilizado para escribir programasde computadoras que puedan ser entendidos por ellas. Estos lenguajes seclasifican en tres grandes categoras: Lenguaje Mquina Lenguaje de Bajo nivel (ensamblador) Lenguaje de Alto nivel.1.9.1 Lenguaje MquinaSon aqullos que estn escritos en lenguajes directamente inteligibles por lamquina (computadora), ya que sus instrucciones son cadenas binarias(cadenas o series de caracteres de dgitos 0 y 1) que especifican una operacin ylas posiciones (direccin) de memoria implicadas en la operacin se denominaninstrucciones de mquina o cdigo mquina. El cdigo mquina es el conocidocdigo binario.Las instrucciones en lenguaje mquina dependen del hardware de lacomputadora y, por tanto, diferirn de una computadora a otra. Ventajas del Lenguaje MquinaPosibilidad de cargar (transferir un programa a la memoria) sin necesidad detraduccin posterior, lo que supone una velocidad de ejecucin superior acualquier otro lenguaje de programacin. Desventajas del Lenguaje Mquina

    Dificultad y lentitud en la codificacin. Poca fiabilidad. Gran dificultad para verificar y poner a punto los programas. Los programas solo son ejecutables en el mismo procesador (CPU).En la actualidad, las desventajas superan a las ventajas, lo que haceprcticamente no recomendables a los lenguajes mquinas.

  • Algortmica para Programacin Pg. 3

    Ingeniera Informtica y Sistemas - UNAMBA Ing. Francisco Cari I.

    1.9.2 Lenguajes de Bajo NivelSon ms fciles de utilizar que los lenguajes mquina, pero al igual que ellos,dependen de la mquina en particular. El lenguaje de bajo nivel por excelenciaes el ensamblador. Las instrucciones en lenguaje ensamblador soninstrucciones conocidas como nemotcnicos. Por ejemplo, nemotcnicostpicos de operaciones aritmticas son: en ingls: ADD, SUB, DIV, etc.; enespaol: SUM, RES, DIV, etc.Una instruccin tpica de suma sera: ADD M, N, PEsta instruccin significa "sumar el contenido en la posicin de memoria M alnmero almacenado en la posicin de memoria N y situar el resultado en laposicin de memoria P". Evidentemente es ms sencillo recordar la instruccinanterior con un nemotcnico que su equivalente en cdigo mquina.0110 1001 1010 1011Un programa escrito en lenguaje ensamblador, requiere de una fase detraduccin al lenguaje mquina para poder ser ejecutado directamente por lacomputadora.El programa original escrito en lenguaje ensamblador se denomina programafuente y el programa traducido en lenguaje mquina se conoce como programaobjeto, el cual ya es directamente entendible por la computadora. Ventajas del lenguaje ensamblador frente al lenguaje mquinaMayor facilidad de codificacin y, en general, su velocidad de clculo. Desventajas del lenguaje ensamblador

    Dependencia total de la mquina lo que impide la transportabilidad delos programas (posibilidad de ejecutar un programa en diferentesmquinas. El lenguaje ensamblador del PC es distinto del lenguajeensamblador del Apple Machintosh. La formacin de los programadores es ms compleja que lacorrespondiente a los programadores de alto nivel, ya que exige no sololas tcnicas de programacin, sino tambin el conocimiento del interiorde la mquina. Los lenguajes ensamblador tienen sus aplicaciones muy reducidas, secentran bsicamente en aplicaciones de tiempo real, control de procesosy de dispositivos electrnicos.

    1.9.3 Lenguajes de Alto NivelEstos lenguajes son los ms utilizados por los programadores. Estn diseadospara que las personas escriban y entiendan los programas de un modo muchoms fcil que los lenguajes mquina y ensambladores. Un programa escrito enlenguaje de alto nivel es independiente de la mquina (las instrucciones nodependen del diseo del hardware o de una computadora en particular), por loque estos programas son portables o transportables. Los programas escritos enlenguaje de alto nivel pueden ser ejecutados con poca o ninguna modificacin endiferentes tipos de computadoras.

  • Algortmica para Programacin Pg. 4

    Ingeniera Informtica y Sistemas - UNAMBA Ing. Francisco Cari I.

    Ventajas de los lenguajes de alto nivel El tiempo de formacin de los programadores es relativamente cortocomparado con otros lenguajes. La escritura de programas se basa en reglas sintcticas similares a loslenguajes humanos. Nombres de las instrucciones tales como READ,WRITE, PRINT, OPEN, etc. Las modificaciones y puestas a punto de los programas son ms fciles. Reduccin del coste de los programas. Transportabilidad.

    Desventajas de los lenguajes de alto nivel Incremento del tiempo de puesta a punto al necesitarse diferentestraducciones del programa fuente para conseguir el programa definitivo. No se aprovechan los recursos internos de la mquina que se explotanmucho mejor en lenguajes mquina y ensambladores. Aumento de la ocupacin de memoria. El tiempo de ejecucin de los programas es mucho mayor.Para una mejor compresin de este tema se definir el concepto deprograma, por ser este un trmino muy utilizado en el diseoestructurado de algoritmos.

    1.10 Tipos de ProgramacinDependiendo del lenguaje de programacin que se elija, se puede hablar deltipo de programacin que se va a realizar.Secuencial: Se considera programacin secuencial a los programas que sedisean con instrucciones que van unas detrs de otras. Las lneas seejecutan una a una en secuencia. Ejemplos tales como Basic, Cobol.Estructurada: Se considera programacin estructurada a la programacinque se hace por mdulos. Cada mdulo realiza alguna tarea especfica ycuando se necesite esa tarea simplemente se hace el llamado a ese mduloindependiente de que se tengan que ejecutar los dems. Ejemplos tales como:Turbo PASCAL, C, Modula, Ada.Orientada a Objetos: Se considera programacin orientada a objetosaquellos lenguajes que permiten la utilizacin de objetos dentro del diseo delprograma y el usuario puede pegar a cada objeto cdigo de programa.Ejemplos de estos lenguajes se pueden mencionar el Visual Basic o Visual C dela Microsoft, C Builder de la Borland Internacional, Java, Xml entre otros.Lgica o de lenguaje natural: Son aquellos programas que se diseancon interfaces tal que la persona o usuario puede ordenar a la mquina tareasen un lenguaje natural. Pueden interactu ar como una persona pero nuncallegan a producir conocimiento. Ejemplo como Prolog (ProgrammingLogic). Estos lenguajes se desarrollaron con base en las estructuras desus antecesores. Recorren o navegan las bases de datos obedeciendo a reglas.

  • Algortmica para Programacin Pg. 5

    Ingeniera Informtica y Sistemas - UNAMBA Ing. Francisco Cari I.

    Inteligencia Artificial: Los programas de inteligencia artificial Son programasque se acercan a la inteligencia humana. Estos programas son capaces dedesarrollar conocimiento. Este tipo de lenguajes trabajan similar a la mentehumana.1.11 Historia y Aplicacin de los Lenguajes AlgortmicosAl igual que los idiomas sirven de vehculo de comunicacin entre los sereshumanos, existen lenguajes que realizan la comunicacin entre los sereshumanos y las computadoras. Estos lenguajes permiten expresar los programaso el conjunto de instrucciones que el operador humano desea que lacomputadora ejecute.Los lenguajes de computadoras toman diferentes formas; los de las primerascomputadoras, como la ENIAC y la EDSAC, se componan en el lenguaje real delas mquinas mismas. La dificultad de programar las mquinas de esta maneralimitaba drsticamente su utilidad y proporcionaba un fuerte incentivo para quese desarrollaran lenguajes de programacin ms orientados hacia la expresinde soluciones con la notacin de los problemas mismos.Los primeros lenguajes de programacin se conocieron como LenguajesEnsambladores, un ejemplo es: TRANSCODE, desarrollado para lacomputadora FERUT. En los lenguajes ensambladores se define un cdigoespecial llamado mnemnico para cada una de las operaciones de la mquina yse introduce una notacin especial para especificar el dato con el cual deberealizarse la operacin.A mediados de los aos 60s aparecieron los primeros lenguajes de propsitogeneral como FORTRAN, FORTRAN IV, ALGOL, COBOL, BASIC, PL/I, ADA, C, C++,PASCAL, etc. pero el desarrollo de nuevas tecnologas, tanto en arquitectura decomputadoras como en lenguajes de programacin, contina a paso acelerado,cada vez con mayor velocidad, el panorama est cambiando de una etapa desistemas y lenguajes especialmente desarrollados para aplicacionesindividuales. Los lenguajes de programacin actuales son los conocidos comoLenguajes visuales, como por ejemplo Visual Fox, Visual Basic, Visual C.1.12 Definicin de AlgoritmoUn algoritmo es una lista de instrucciones para efectuar paso por paso algnproceso. Una receta en un libro de cocina sera un excelente ejemplo dealgoritmo: la preparacin de un platillo complicado se divide en pasos simplescomprensibles para cualquier persona con experiencia en cocina.Una computadora puede combinar en un clculo matemtico complicado,millones de pasos elementales, tales como adiciones y substracciones. Unacomputadora puede tambin, mediante el uso de algoritmos controlar unproceso de manufactura o coordinar las reservaciones de una lnea areaconforme se reciben de las oficinas de venta de boletos de todo el pas. Losalgoritmos para tales procesos en gran escala son muy complicados porsupuesto, pero estn construidos a base de piezas.

  • Algortmica para Programacin Pg. 6

    Ingeniera Informtica y Sistemas - UNAMBA Ing. Francisco Cari I.

    "Un algoritmo se define como un mtodo que se realiza paso a paso parasolucionar un problema que termina en un nmero finito de pasos".1.12.1 Tipos de AlgoritmosExisten dos tipos y son llamados as por su naturaleza: Cualitativos: Son aquellos en los que se describen los pasos utilizandopalabras. Cuantitativos: Son aquellos en los que se utilizan clculos numricos paradefinir los pasos del proceso.1.12.2 Lenguajes AlgortmicosUn Lenguaje algortmico es una serie de smbolos y reglas que se utilizan paradescribir de manera explcita un proceso.1.12.3 Tipos de Lenguajes Algortmicos Grficos: Es la representacin grfica de las operaciones que realiza unalgoritmo (diagrama de flujo y diagrama de bloques). No Grficos: Representa en forma descriptiva las operaciones que deberealizar un algoritmo (pseudocodigo).INICIOEdad: EnteroESCRIBA cul es tu edad?Lea EdadSI Edad >=18 entoncesESCRIBA Eres mayor de EdadFINSIESCRIBA fin del algoritmoFINLas caractersticas fundamentales que debe cumplir todo algoritmo son: Debe ser preciso. e indicar el orden de realizacin de cada paso. Debe ser definido. Si se sigue un algoritmo dos veces, se debe obtener elmismo resultado cada vez. Debe ser finito. Si se sigue un algoritmo, se debe terminar en algnmomento; o sea debe tener un nmero finito de pasos.La definicin de un algoritmo debe describir tres partes: Entrada, Proceso ySalida.1.12.4 Algoritmos CotidianosSe refiere a todos aqullos algoritmos que nos ayudan a resolver problemasdiarios, y que los hacemos casi sin darnos cuenta de que estamos siguiendo unametodologa para resolverlos.

  • Algortmica para Programacin Pg. 7

    Ingeniera Informtica y Sistemas - UNAMBA Ing. Francisco Cari I.

    Algunos ejemplos son: Disear un algoritmo para cambiar una llanta a un coche.1. Inicio.2. Traer gato.3. Levantar el coche con el gato.4. Aflojar tornillos de las llantas.5. Sacar los tornillos de las llantas.6. Quitar la llanta.7. Poner la llanta de repuesto.8. Poner los tornillos.9. Apretar los tornillos.10. Bajar el gato.11. Fin Un cliente ejecuta un pedido a una fbrica. La fbrica examina en su bancode datos la ficha del cliente, si el cliente es solvente entonces la empresaacepta el pedido, en caso contrario rechazar el pedido.

    Pasos del algoritmo:InicioLeer el pedidoExaminar ficha del clienteSi el cliente es solvente aceptar pedido, en caso contrariorechazar pedidoFin Determinar el mayor de tres nmeros enteros.Pasos del algoritmo:1.- Comparar el primero y el segundo entero, deduciendo cul es el mayor.2.- Comparar el mayor anterior con el tercero y deducir cul es el mayor. Esteser el resultado.Los pasos anteriores se pueden descomponer en otros pasos ms simples en losque se denomina refinamiento del algoritmo.1. Obtener el primer nmero (entrada), denominado NUM12. Obtener el segundo nmero (entrada), denominado NUM23. Compara NUM1 con NUM2 y seleccionar el mayor; si los dos enteros soniguales, seleccionar NUM1. Llamar a este nmero MAYOR.4. Obtener el tercer nmero (entrada), y se denomina NUM3.5. Compara MAYOR con NUM3 y seleccionar el mayor; si los dos enteros soniguales, seleccionar el MAYOR. Denominar a este nmero MAYOR.6. Presentar el valor MAYOR (salida).7. FinLa ventaja de utilizar un algoritmo es que se lo puede construir independientemente de un lenguaje de programacin, pues al momento de llevarlo a cdigo selo puede hacer en cualquier lenguaje.

  • Algortmica para Programacin Pg. 8

    Ingeniera Informtica y Sistemas - UNAMBA Ing. Francisco Cari I.

    1.13 Representacion grfica del diagrama de flujo estndar y DFD

    a) Diagrama de flujoLos diagramas de flujo (o flujogramas) son diagramas que emplean smbolos grficospara representar los pasos o etapas de un proceso. Tambin permiten describir lasecuencia de los distintos pasos o etapas y su interaccin.b) DFDDFD es un software diseado para construir y analizar algoritmos. Se puedencrear diagramas de flujo de datos para la representacin de algoritmos deprogramacin estructurada a partir de las herramientas de edicin que paraste propsito suministra el programa. Despus de haber ingresado el algoritmorepresentado por el diagrama, podr ejecutarse, analizarse y depurarse en unentorno interactivo diseado para este fin.

  • Algortmica para Programacin Pg. 9

    Ingeniera Informtica y Sistemas - UNAMBA Ing. Francisco Cari I.

    II. METODOLOGA PARA LA SOLUCIN DE PROBLEMASA fin de resolver un problema utilizando sistemas de cmputo, debe seguirseuna serie de pasos que permiten avanzar por etapas bien definidas hacia lasolucin.Estas etapas son las siguientes: Definicin del problema. Anlisis de los datos. Diseo de la solucin. Codificacin. Prueba y depuracin. Documentacin. Mantenimiento.2.1 Definicin del ProblemaEsta fase est dada por el enunciado del problema, el cual requiere unadefinicin clara y precisa. Es importante que se conozca lo que se desea querealice la computadora, "que se desea obtener al final del proceso"; mientrasesto no se conozca del todo no tiene mucho caso continuar con la siguienteetapa.2.2 Anlisis de los DatosUna vez que se ha comprendido lo que se desea de la computadora, es necesariodefinir: Los datos de entrada. Cul es la informacin que se desea producir (salida) Los mtodos y frmulas que se necesitan para procesar los datos.Una recomendacin muy prctica es el de colocarse en el lugar de lacomputadora y analizar qu es lo que se necesita que se ordene y en qusecuencia para producir los resultados esperados.Ejemplo:Leer el radio de un crculo y calcular e imprimir su superficie y circunferencia.AnlisisLas entradas de datos en este problema se concentran en el radio del crculo.Dado que el radio puede tomar cualquier valor dentro del rango de los nmerosreales, el tipo de datos radio debe ser real.Las salidas sern dos variables: superficie y circunferencia que tambin sern detipo real.Entradas: Radio del crculo (variable RADIO).Salidas: Superficie del crculo (variable AREA).Circunferencia del crculo (variable CIRCUNFERENCIA).Variables: RADIO, AREA, CIRCUNFERENCIA tipo real.2.3 Diseo de la SolucinUna computadora no tiene capacidad para solucionar problemas ms quecuando se le proporcionan los sucesivos pasos a realizar, esto se refiere a laobtencin de un algoritmo que resuelva adecuadamente el problema. En caso deobtenerse varios algoritmos, seleccionar uno de ellos utilizando criterios ya conocidos.

  • Algortmica para Programacin Pg. 10

    Ingeniera Informtica y Sistemas - UNAMBA Ing. Francisco Cari I.

    Esta etapa incluye la descripcin del algoritmo resultante en un lenguajenatural, de diagrama de flujo o natural de programacin.Como puede verse, solo se establece la metodologa para alcanzar la solucin enforma conceptual, es decir; sin alcanzar la implementacin en el sistema decmputo.2.4 Diseo del AlgoritmoLas caractersticas de un buen algoritmo son: Debe tener un punto particular de inicio. Debe ser definido, no debe permitir dobles interpretaciones. Debe ser general, es decir, soportar la mayora de las variantes que sepuedan presentar en la definicin del problema. Debe ser finito en tamao y tiempo de ejecucin. Diseo del Algoritmo Prueba de escritorio o Depuracin2.5 Prueba de EscritorioSe denomina prueba de escritorio a la comprobacin que se hace de unalgoritmo para saber si est bien hecho. Esta prueba consiste en tomar datosespecficos como entrada y seguir la secuencia indicada en el algoritmo hastaobtener un resultado, el anlisis de estos resultados indicar si el algoritmo estcorrecto o si por el contrario hay necesidad de corregirlo o hacerle ajustes.2.6 CodificacinSe refiere a la obtencin de un programa definitivo que pueda ser comprensiblepara la mquina. Incluye una etapa que se reconoce como compilacin.Si la codificacin original se realiz en papel, previo a la compilacin deberexistir un paso conocido como transcripcin.

    Programa Fuente Est escrito en un lenguaje de programacin. (pascal, C++, Visual Fox, VisualBasic, etc.). Es entendible por el programador.Programa Ejecutable Est en lenguaje mquina. Entendible por la mquina.

    Mac II Mac II

    LenguajeNatural

    CodificacinLenguaje de

    Programacin Transcripcin

    Compilacin

    En Papel

    Programa Ejecutable Programa Fuente

    En Papel

  • Algortmica para Programacin Pg. 11

    Ingeniera Informtica y Sistemas - UNAMBA Ing. Francisco Cari I.

    2.7 Prueba y DepuracinUna vez que se ha obtenido el programa ejecutable, este es sometido a prueba afin de determinar si resuelve o no el problema planteado en forma satisfactoria.Las pruebas que se le aplican son de diversa ndole y generalmente dependendel tipo de problema que se est resolviendo. Comnmente se inicia la pruebade un programa introduciendo datos vlidos, invlidos e incongruentes yobservando cmo reacciona en cada ocasin.El proceso de depuracin consiste en localizar los errores y corregirlos en casode que estos existan. Si no existen errores, puede entenderse la depuracincomo una etapa de refinamiento en la que se ajustan detalles para optimizar eldesempeo del programa.2.8 DocumentacinDebido a que el programa resultante en esta etapa se encuentra totalmentedepurado (sin errores), se procede a la utilizacin para resolver problemas deltipo que dio origen a su diseo.En vista de que esta utilizacin no podr ser supervisada en todas las ocasionespor el programador, debe crearse un manual o gua de operacin que indique lospasos a seguir para utilizar el programa.2.9 MantenimientoSe refiere a las actualizaciones que deban aplicarse al programa cuando lascircunstancias as lo requieran. Este programa deber ser susceptible de sermodificado para adecuarlo a nuevas condiciones de operacin.Cualquier actualizacin o cambio en el programa deber reflejarse en sudocumentacin.

  • Algortmica para Programacin Pg. 12

    Ingeniera Informtica y Sistemas - UNAMBA Ing. Francisco Cari I.

    III. ENTIDADES PRIMITIVAS PARA EL DISEO DE INSTRUCCIONES

    3.1 Tipos de DatosUn dato se define como la expresin general que describe los objetos con loscuales opera una computadora. Los datos de entrada se transforman por elprograma, despus de las etapas intermedias, en datos de salida.Los datos se clasifican en diversas categoras, segn el tipo de mquina o dellenguaje en uso. Generalmente podemos encontrar las siguientes categoras: Numricos Cadenas Lgicos3.1.1 Datos NumricosSon aqullos que representan una cantidad o valor determinado. Surepresentacin se lleva a cabo en los formatos ya conocidos (enteros, punto yfracciones decimales si estas existen).Estos pueden representarse en dos formas distintas: Tipo Numrico Entero (integer). Tipo Numrico Real (real).a) EnterosEs un conjunto finito de los nmeros enteros. Los enteros son nmeroscompletos, no tienen componentes fraccionarios o decimales y pueden sernegativos y positivos.Algunos ejemplos son: 3 7 -10 9 15.25 50

    b) RealesConsiste en un subconjunto de los nmeros reales. Estos nmeros siempretienen un punto decimal y pueden ser positivos o negativos. Un nmero realconsiste de un nmero entero y una parte decimal. Algunos ejemplos son: 0.52 664.32 6.579 8.0 -9.3 -47.23

    3.1.2 CadenasSon los datos que representan informacin textual (palabras, frases, smbolos,etc.). No representan valor alguno para efectos numricos. Pueden distinguirseporque son delimitados por apstrofes o comillas.Se clasifica en dos categoras: Datos tipo carcter (char) Datos tipo Cadena (string)

  • Algortmica para Programacin Pg. 13

    Ingeniera Informtica y Sistemas - UNAMBA Ing. Francisco Cari I.

    a) Datos Tipo CarcterEs un conjunto finito y ordenado de caracteres que la computadora reconoce.Un dato de este tipo contiene solo un carcter.Reconoce los siguientes caracteres: Caracteres Alfabticos (A,B,C,Z,a,b,cz) Caracteres Numricos (0,1,2,9) Caracteres Especiales (+, -, *, /, ^, . , ;, , $, .)

    b) Datos Tipo Cadena (string)Es una sucesin de caracteres que se encuentran delimitados por una comilla(apstrofe) o dobles comillas, segn el tipo de lenguaje de programacin. Lalongitud de una cadena de caracteres es el nmero de ellos comprendidosentre los separadores o delimitadores.Ejemplos: Hola Mortimer 12 de octubre de 1496 Enunciado cualquiera

    3.1.3 LgicosTambin se le denomina Booleano, es aqul dato que solo puede tomar uno dedos valores: Falso y verdadero.Se utiliza para representar las alternativas (si/no) a determinadas condiciones.Por ejemplo, cuando se pide si un valor entero sea primo, la respuesta serverdadera o falsa, segn sea.Las categoras y tipos que se mencionaron anteriormente se conocen comoTipos Simples, puesto que no poseen una estructura compleja.En forma adicional, cada lenguaje puede proporcionar la utilizacin de TiposCompuestos, siendo estos, datos que tienen una estructura predeterminada.Tipos CompuestosEntre los principales tipos compuestos se encuentran los siguientes:1. SUBRANGO: Son aqullos en los que se especifica con precisin el intervalode valores vlidos para un dato.Ejemplos:0..100 (son enumerativos de tipo entero)'A'..'Z' (son enumerativos de tipo cadena)Los Reales no son vlidos para crear enumerativos, ya que su intervalo no estdefinido.2. ENUMERATIVOS: Son aqullos en los que se definen individualmente losvalores para un dato.Ejemplos:(0,25,40,52) Siempre deben ponerse entre parntesis.3. DEFINIDOS POR EL USUARIO: Son aqullos que el programador creapara satisfacer las necesidades del programa en diseo.

  • Algortmica para Programacin Pg. 14

    Ingeniera Informtica y Sistemas - UNAMBA Ing. Francisco Cari I.

    Constantes Variables y ExpresionesUna Constante es aqulla que no cambia de valor durante la ejecucin de unprograma. Para expresar una constante se escribe explcitamente su valor, porejemplo: Numricas enteras: 12,34,-44,22234, -9837,m=12,n=44592.... Numricas reales: 12.55, -3E3, PI=3.14159..... Lgicas: Slo existen dos constantes lgicas 0,1 Carcter: n=a, k=1,..... Cadena: saludo=hola, s=si, n=no..... pi = 3.1416Una variable es un objeto cuyo valor puede cambiar. Toda variable posee dosatributos: un nombre (invariable, denominado en ocasiones identificador) quesirve para designarla y un tipo (invariable) que describe la posible utilizacin dela variable.Es un espacio en la memoria de la computadora que permite almacenartemporalmente un dato durante la ejecucin de un proceso, su contenido puedecambiar durante la ejecucin del programa.Para poder reconocer una variable en la memoria de la computadora, esnecesario darle un nombre con el cual podamos identificarla dentro de unalgoritmo.Ejemplo:rea = pi * radio ^ 2Las variables son: el radio, el rea y la constate es piEl valor de las variables puede ser modificado durante la ejecucin delprograma.Las expresiones son combinaciones de constantes, variables, smbolos deoperacin, parntesis y nombres de funciones especiales.Las expresiones se clasifican en aritmticas y booleanas.Su representacin se da a travs de letras y smbolos generalmente numricos alos que se les asigna un valor.Ejemplos: Constantes VariablesNumricos 36450.350.58 ANomEdadCiudadEstaturaCadena 'A''Juan''La Paz'Lgicos FalsoVerdadero

  • Algortmica para Programacin Pg. 15

    Ingeniera Informtica y Sistemas - UNAMBA Ing. Francisco Cari I.

    3.2 Operadores y Operandos

    3.2.1 OperadoresUn operador es el smbolo que determina el tipo de operacin o relacin quehabr de establecerse entre los operandos para alcanzar un resultado.Los operadores se clasifican en tres grupos: Aritmticos. Relacionales. Lgicos.a) Operadores AritmticosSon aqullos que permiten la realizacin de clculos aritmticos. Utilizanoperandos numricos y proporcionan resultados numricos.

    Operador Operacin+ Suma- Resta* Multiplicacin/ Divisin realDiv Divisin enteraMod Residuo^ ExponenciacinEjemplos:

    7+3 = 10 10 Div 4 = 2 7-3 = 4 20 Mod 3 = 2 7*3 = 21 5 Mod 7 = 5 10/4= 2.5 4 ^ 2 = 16En la expresin 7+3, los valores 7 y 3 se denominan operandos. El valor de laexpresin 7+3 se conoce como resultado de la expresin.Todos los operadores aritmticos no existen en todos los lenguajes deprogramacin, por ejemplo, en Fortran no existen Div y mod.

    Operadores Div y ModEl smbolo / se utiliza para la divisin real, y el operador Div representa ladivisin entera.Expresin Resultado Expresin Resultado10.5/3.0 3.5 10 Div 3 3 0.25 18 Div 2 92.0/4.0 0.5 30 Div 30 130/30 1.0 10 Mod 3 16/8 0.75 10 Mod 2 0

  • Algortmica para Programacin Pg. 16

    Ingeniera Informtica y Sistemas - UNAMBA Ing. Francisco Cari I.

    b) Operadores RelacionalesPermiten realizar comparaciones de valores de tipo numrico o carcter. Estosoperadores sirven para expresar las condiciones en los algoritmos.Proporcionan resultados lgicos.Operador Significado< Menor que> Mayor que= Igual que= Mayor o igual que Diferente de

    El formato general para las comparaciones es:expresin1 operador de relacin expresin2El resultado de la operacin ser Verdadero o Falso. As por ejemplo, si A=4 yB=3, entonces:A>B Es Verdadero(A-2) < (B-4) Es FalsoLos operadores de relacin se pueden aplicar a cualquiera de los cuatro tipos dedatos estndar: enteros, real, lgico y carcter.A < K = VerdaderoA > a = FalsoMARIA < JUAN = Falso (se considera la primera letra)JAIME > JORGE = FalsoPrioridad De Operadores Aritmticos y RelacionalesDetermina el orden en que habrn de realizarse las operaciones en unaexpresin determinada. Para obtener la prioridad se deben conocer lassiguientes reglas: Las operaciones que estn encerradas entre parntesis se evalan primero.Si existen diferentes parntesis anidados (interiores unos a otros), lasexpresiones ms internas se evalan primero. Las operaciones aritmticas dentro de una expresin suelen seguir elsiguiente orden de prioridad.

    Operador Prioridad^ Alta*, /, Div+, -, ModRelacionales Baja

  • Algortmica para Programacin Pg. 17

    Ingeniera Informtica y Sistemas - UNAMBA Ing. Francisco Cari I.

    En caso de coincidir varios operadores de igual prioridad en una expresin osub expresin encerrada entre parntesis, el orden de prioridad en este caso esde izquierda a derecha.Cuando se desea realizar una operacin con baja prioridad por adelantado, debeagruparse a los operandos involucrados.4 + 12 /2 = 10 (sin agrupar)(4 + 12) /2 = 8 (con agrupador)Ejemplo:Obtener los resultados de las expresiones:

    -4 * 7 + 2 ^ 3 / 4 - 5Solucin:-4 *7 + 2 ^ Resulta:-4 * 7+ 8/4 -5-28 + 8/4 -5-28 + 2 - 5-26 - 5-31

    Los parntesis tienen prioridad sobre el resto de las operaciones.A * (B+3) La constante 3 se suma primero al valor de B, despus esteresultado se multiplica por el valor de A.(A*B) +3 A y B Se multiplican primero y a continuacin se suma 3.A + (B/C) + D Esta expresin equivale a A+ B/C + Dc) Operadores LgicosSon aqullos que permiten la combinacin de condiciones para formar una solaexpresin lgica. Utilizan operandos lgicos y proporcionan resultados lgicostambin.

    Operador Relacinnot Negacin (No)and Conjuncin (Y)or Disyuncin (O)xor Disyuncin Exclusiva(O/SOLO)

  • Algortmica para Programacin Pg. 18

    Ingeniera Informtica y Sistemas - UNAMBA Ing. Francisco Cari I.

    Se obtiene Verdadero si:NOT El operando es falsoAND Ambos operandos sonverdaderosOR Al menos un operando esverdaderoXOR Solo uno de los operandos sonverdaderoX Y NOT(X) NOT(Y) X AND Y X OR Y X XOR YF F V V F F FV F F V F V VF V V F F V VV V F F V V F

    Prioridad De Los Operadores LgicosLos operadores aritmticos seguan un orden especfico o de prioridad cuandoexistan ms de un operador en las expresiones. De modo similar los operadoreslgicos y relacionales tienen un orden de prioridad.Ejemplos: Not 4 > 6 Produce un error, ya que el operador not se aplica a 4. Not (4 > 14) Produce un valor verdadero. (1.0

  • Algortmica para Programacin Pg. 19

    Ingeniera Informtica y Sistemas - UNAMBA Ing. Francisco Cari I.

    Las acciones de asignacin se clasifican segn sea el tipo de expresiones:Aritmticas, Lgicas y de Caracteres. Asignacin Aritmtica

    Las expresiones en las operaciones de asignacin son aritmticas:Suma =5+10+2: Se evala la expresin 5+10+2 y se asigna a la variable Suma,es decir, 17 ser el valor que toma Suma. Asignacin LgicaLa expresin que se evala en la operacin de asignacin es lgica. Supngaseque M, N, y P son variables de tipo lgico.M = 8 < 5N = M o (7 6Tras ejecutar las operaciones anteriores, las variables M,N,P toman los valores,falso, verdadero, verdadero respectivamente. Asignacin de caracteresLa operacin que se evala es de tipo carcter.x = '3 de Mayo de 1999'La accin de asignacin anterior asigna la cadena de caracteres '3 de Mayo de1999' a la variable de tipo carcter x. Entrada y Salida de InformacinLos clculos que realizan las computadoras requieren para ser tiles la Entradade los datos necesarios para ejecutar las operaciones que posteriormente seconvertirn en resultados, es decir, Salida.Las operaciones de entrada permiten leer determinados valores y asignarlos adeterminadas variables. Esta entrada se conoce como operacin de Lectura(read). Los datos de entrada se introducen al procesador mediante dispositivosde entrada (teclado, unidades de disco, etc). La salida puede aparecer en undispositivo de salida (pantalla, impresora, etc). La operacin de salida sedenomina escritura (write).En la escritura de algoritmos las acciones de lectura y escritura se representanpor los formatos siguientes

    leer ( Nom_variable )escribir (lista de variables de salida)

    Ejemplo: Obtener rea de un tringulo.Entrada

    Frmula (A= B*h/2) Datos (Base, altura)

    Proceso Multiplicar Base y altura. Dividir resultado de la multiplicacin anterior entre dos. Mostrar resultado de divisin anterior.

  • Algortmica para Programacin Pg. 20

    Ingeniera Informtica y Sistemas - UNAMBA Ing. Francisco Cari I.

    Salida Area del tringulo.

    AlgoritmoInicioleer(B)leer(h)x = B*hA = x/2escribir(A)Fin3.3 ExpresionesLas expresiones son combinaciones de constantes, variables, smbolos deoperadores, parntesis y nombres de funciones especiales. Las mismas ideasson utilizadas en notacin matemtica tradicional; por ejemplo:a + b ( b+2) Aqu los parntesis indican el orden de clculo.Cada expresin toma un valor que se determina tomando los valores de lasvariables y constantes implicadas y la ejecucin de las operaciones indicadas.Una expresin consta de operadores y operandos. Segn sea el tipo de objetosque manipulan, las expresiones se clasifican en: Aritmticas Relacionales Lgicas CarcterEl resultado de la expresin numrica es de tipo numrico; el resultado de unaexpresin relacional y de una expresin lgica es de tipo lgico; el resultado deuna expresin carcter es de tipo carcter.1. Expresiones AritmticasLas expresiones aritmticas son anlogas a las frmulas matemticas. Lasvariables y constantes son numricas (real o entera) y las operaciones son lasaritmticas. + suma- resta* multiplicacin/ divisin**, ^ exponenciacindiv divisin enteramod mdulo (resto)Los clculos que implican tipos de datos reales y enteros suelen darnormalmente resultados del mismo tipo si los operandos lo son tambin. Porejemplo, el producto de operandos reales produce un real.

  • Algortmica para Programacin Pg. 21

    Ingeniera Informtica y Sistemas - UNAMBA Ing. Francisco Cari I.

    Ejemplo :4 x 6 se representa por 4 * 639 se representa por 3 ^ 918 div 6 se representa por 18/62. Expresiones Lgicas (booleanas)Es una expresin que solo pueden tomar los valores de: verdadero y falso. Lasexpresiones lgicas se forman combinando constantes lgicas, variables lgicasy otras expresiones y otras expresiones lgicas utilizando los operadores lgicosnot, and y or, y los operadores relacionales (de relacin o comparacin) =, >,

  • Algortmica para Programacin Pg. 22

    Ingeniera Informtica y Sistemas - UNAMBA Ing. Francisco Cari I.

    IV. TCNICAS DE DISEOCon el objeto de facilitar el diseo de algoritmos y la organizacin de losdiversos elementos de los que se componen se utilizan algunas tcnicas quemuestran una metodologa a seguir para resolver los problemas. Estas tcnicashacen que los programas sean ms fciles de escribir, verificar, leer y mantener.Algunas de las tcnicas ms conocidas son: Top Down (diseo descendente) Botton Up Warnier Orr4.1 Top DownEs una tcnica para disear que consiste en tomar el problema en forma inicialcomo una cuestin global y descomponerlo sucesivamente en problemas mspequeos y por lo tanto, de solucin ms sencilla.La descomposicin del problema original (y de las etapas subsecuentes), puededetenerse cuando los problemas resultantes alcanzan un nivel de detalle que elprogramador o analista pueden implementar fcilmente.El problema se descompone en etapas o estructuras jerrquicas, de modo que sepuede considerar cada estructura como dos puntos de vista : lo que hace?, ycmo lo hace ? Si se considera un nivel n de refinamiento, las estructuras seconsideran de la siguiente forma:

    Nivel n : Vista desde el exterior."lo que hace ?"

    Nivel n+1 : Vista desde el interior."cmo lo hace ?"Ejemplo de un diseo descendente (top-down) de un control de almacn:Control de AlmacnCompra Manejo Venta

    ConseguirProveedor ConseguirCrditos Transpor-tacin Alacena-miento Inventario Etiquetas Factura-cin RepartoCapturar Reportes

    IntroducirClave IntroducirPrecio

  • Algortmica para Programacin Pg. 23

    Ingeniera Informtica y Sistemas - UNAMBA Ing. Francisco Cari I.

    4.2 Botton UpEsta tcnica consiste en partir de los detalles ms precisos del algoritmocompletando suscesivamente mdulos de mayor complejidad, se recomiendacuando ya se cuenta con experiencia y ya se sabe lo que se va a hacer.Conforme se va alcanzando el desarrollo de mdulos ms grandes se planteacomo objetivo final la resolucin global del problema.Este mtodo es el inverso del anterior y es recomendable cuando se tiene unmodelo a seguir o se cuenta con amplia experiencia en la resolucin deproblemas semejantes.La tcnica de Botton Up es frecuentemente utilizada para la realizacin depruebas a sistemas ya concluidos.4.3 Warnier OrrEs una tcnica que utiliza una representacin semejante a la de cuadrossinpticos para mostrar el funcionamiento y organizacin de los elementos queconforman el algoritmo.Bsicamente, utiliza una notacin de llaves para organizar los mdulos y seauxilia en la siguiente simbologa para indicar operaciones de control.

    Smbolo Significado+ OR (uno, otro o varios)

    XOR (uno u otro, solo uno)(x,y) Puede hacerse tantas veces desde x hasta y

    Nota: Los diagramas Warnier Orr se leen de izquierda a derecha y de arribahacia abajo.Ejemplo de un diagrama de Warnier Orr, de un control de almacn

  • Algortmica para Programacin Pg. 24

    Ingeniera Informtica y Sistemas - UNAMBA Ing. Francisco Cari I.

    (0,n) = De cero veces a n veces(1,n) = De una vez a n veces

    Conseguir ProveedorConseguir CrditoTransportacin

    Visitar Bancos (1,n)Visitar casas de crdito +Hipotecar propiedadesCompras

    ControldeAlmacn ManejoAlmacenamientoInventarioEtiquetacin

    (1,n)CapturaRepartosIntroducir claveIntroducir precios

    FacturacinReparto Cliente acude almacn+Reparto a domicilio

    Ventas(0,n)

  • Algortmica para Programacin Pg. 25

    Ingeniera Informtica y Sistemas - UNAMBA Ing. Francisco Cari I.

    V. TCNICAS PARA LA FORMULACIN DE ALGORTMOSLas tcnicas analizadas en la unidad anterior permiten un diseo global delalgoritmo, pero ocasionalmente pueden desatender detalles especficos de este.Las tres tcnicas de formulacin de algoritmos ms populares son: Diagrama de flujo Pseudocdigo Diagramas estructurados5.1 Diagramas de FlujoSe basan en la utilizacin de diversos smbolos para representar operacionesespecficas. Se les llama diagramas de flujo porque los smbolos utilizados seconectan por medio de flechas para indicar la secuencia de operacin.La simbologa utilizada para la elaboracin de diagramas de flujo es variable ydebe ajustarse a un patrn definido previamente.Dichos diagramas se construyen utilizando ciertos smbolos de uso especialcomo son rectngulos, diamantes, valos, y pequeos crculos, estos smbolosestn conectados entre s por flechas, conocidas como lneas de flujo.5.1.1 Reglas para la Construccin de Diagramas de Flujo1. La finalidad de un diagrama de flujo es describir de modo grfico laestructura lgica del programa y que posteriormente permita una fcilcodificacin en lenguaje especfico.2. Todo diagrama debe tener un principio (INICIO) y un fin, con el objeto deque pueda ser utilizado como submdulo de otro mdulo de nivel superior.3. Las lneas de conexin o de flujo deben ser siempre rectas y, que sean sloverticales y horizontales, no cruzarse; para conseguir lo anterior se recurrira conectores, numerados convenientemente y slo en los casosestrictamente necesarios.4. Las lneas que enlazan los smbolos entre s deben estar todas contectadas.Cada lnea o flecha debe entrar en un bloque, en un smbolo de decisin,terminar en o unirse a otra flecha.5. Se deben dibujar todos los smbolos de modo que se pueda seguir el procesovisualmente de arriba abajo (diseo ) y de izquierda aderecha.6. Realizar un grfico claro y equilibrado, procurando que el flujo central deldiagrama sea la parte central de la hoja de papel.7. Se debe dejar un bloque o dos de proceso libres al comienzo del diagrama,para reservar posiciones de memoria para variables, acumuladores,inicializacin, banderas.8. Indicar con comentarios al margen, las variables utilizadas y su descripcin,procurando no abusar de su uso. Diferenciar las variables del proceso de lasvariables ficticias (contadores, banderas).9. En las operaciones lgicas recurrir preferentemente a la lgica positiva que ala lgica negativa (es ms claro > que >.10. A cada bloque o smbolo se accede por arriba y/o por la izquierda y se salepor abajo y/o por la derecha.

  • Algortmica para Programacin Pg. 26

    Ingeniera Informtica y Sistemas - UNAMBA Ing. Francisco Cari I.

    11. Las entradas a un smbolo pueden ser varias, pero la salida es nica exceptopara el smbolo de decisin.12. Debe de indicar claramente dnde inicia y dnde termina el diagrama.13. Organizar los smbolos de tal forma que siga visualmente el flujo de arribahacia abajo y de izquierda a derecha.14. Las lneas deben ser verticales u horizontales, nunca diagonales.

    15. No cruzar las lneas de flujo empleando los conectores adecuados sin haceruso excesivo de ellos.

    16. No fraccionar el diagrama con el uso excesivo de conectores.17. Solo debe llegar una sola lnea de flujo a un smbolo. Pero pueden llegarmuchas lneas de flujo a otras lneas.

  • Algortmica para Programacin Pg. 27

    Ingeniera Informtica y Sistemas - UNAMBA Ing. Francisco Cari I.

    18. Las lneas de flujo deben de entrar a un smbolo pro la parte superior y/oizquierda y salir de l por la parte inferior y/o derecha.19. Evitar que el diagrama sobrepase una pgina; de no ser posible, enumerar yemplear los conectores correspondientes.5.1.2 Comprobacin de DiagramasTerminado el diagrama de flujo, se deben tomar un conjunto de datossignificativos y comenzar la lectura del mismo en el orden arriba abajo /izquierda derecha y seguir paso a paso todos los smbolos con sus operacionescorrespondientes, introduciendo los datos tomados inicialmente en losmomentos oportunos y ver cmo responde el diagrama de flujo y si losresultados obtenidos son correctos y coherentes.

  • Algortmica para Programacin Pg. 28

    Ingeniera Informtica y Sistemas - UNAMBA Ing. Francisco Cari I.

    SIMBOLOGIA UTILIZADA EN LOS DIAGRAMAS DE FLUJO

    Smbolo FuncinTerminal (representa el inicio y el final, de unprograma, puede representar tambin unapara o interrupcin programada que seanecesario realizar en un programaEntrada/Salida (cualquier tipo deintroduccin de datos)Proceso (cualquier tipo de operacin quepueda originar cambio de valor, formato oposicin de la informacin almacenada enmemoria, operaciones aritmticas)Decisin (indica operaciones lgicas o decomparacin entre datos normalmente dosy en funcin del resultado de la mismadetermina cual de los distintos caminosalternativos del programa se debe seguir).Decisin mltiple (en funcin del resultadode la comparacin se seguir uno de losdiferentes caminos de acuerdo con dichoresultado).Conector (Sirve para enlazar dos partescualesquiera de un organigrama a travs deun conector en la entrada y otro conector enla salida)Indicador de direccin o lnea de flujo (indicael sentido de ejecucin de las operaciones)Lnea conectora (sirve de unin entre dossmbolos).

    SINO

  • Algortmica para Programacin Pg. 29

    Ingeniera Informtica y Sistemas - UNAMBA Ing. Francisco Cari I.

    Conector (conexin entre dos puntos delorganigrama situado en pginasLlamada a subrutina o a un procesopredeterminado (una subrutina es unmdulo independiente del programa).Pantalla (se utiliza en ocasiones en lugardel smbolo de E/S).Impresora (se utiliza en ocasiones enlugar del smbolo de E/S).Teclado (se utiliza en ocasiones lugar delsmbolo de E/S).

  • Algortmica para Programacin Pg. 30

    Ingeniera Informtica y Sistemas - UNAMBA Ing. Francisco Cari I.

    Ejemplo:Calcular el salario neto de un trabajador en funcin del nmero de horas trabajadas,precio de la hora de trabajo y considerando unos descuentos fijos al salario bruto enconcepto de impuestos (20 por 100).Inicio

    Leer nombre, horasprecio

    Salario_brutohoras*precioImpuesto0.20*salario_neto

    Salario_netosalario_bruto impuesto

    Escribir nombre,salario_bruto,salario_netoFin

  • Algortmica para Programacin Pg. 31

    Ingeniera Informtica y Sistemas - UNAMBA Ing. Francisco Cari I.

    Ejemplo:Realizar un diagrama de flujo que permita mostrar en pantalla un mensaje demayora o minora de edad segn sea el caso para un nombre especfico.

    Nom, eres

    InicioNombre:

    Fin

    nomEdad:

    ed

    Ed >= 18

    Nom, eres

    falso verdadero

  • Algortmica para Programacin Pg. 32

    Ingeniera Informtica y Sistemas - UNAMBA Ing. Francisco Cari I.

    5.2 PseudocdigoOtra herramienta muy til en el anlisis de programacin es el pseudocdigo.Pseudo o seudo, significa , y cdigo se refiere a lasinstrucciones escritas en un lenguaje de programacin: pseudocdigo no esrealmente sin cdigo sino una imitacin y una versin abreviada deinstrucciones reales para las computadoras.Las tres herramientas que utilizan los programadores son: diagramas de flujo,tablas de decisin y pseudocdigos. Aunque se utilizan las tres sin duda las msutilizadas son los diagramas de flujo y los pseudocdigos.El pseudocdigo es una tcnica para expresar en lenguaje natural la lgica deun programa, es decir, su flujo de control. El pseudocdigo no es un lenguaje deprogramacin sino un modo de plantear un proceso de forma que su traduccina un lenguaje sea sencilla para un programador.Ejemplo:Preparar un algoritmo que represente la receta que se muestra a continuacin:Ingredientes:1. 1 taza de almendras picadas.2. de libra de chocolate en bloque para hornear3. de libra de malvaviscos cortados a la mitad4. 3 tazas de azcar5. taza de leche evaporada6. taza de miel de maz7. 1 cucharadita de vainilla8. libra de mantequilla9. cucharadita de salVirtase la leche y aada la miel de maz, el azcar, el chocolate y la sal en unrecipiente de 1 litro, y cocnese en flama alta, mezclando constantemente hastaque hierva la mezcla. Redzcase, a flama moderada y continese hirviendo yrevolviendo hasta que una gota de la miel forme una pelota suave en un vaso deagua fra. Qutese de la flama y djesele enfriar durante 10 minutos. Mzclese lamantequilla y la vainilla hasta que estn completamente incorporadas.Agrguense las almendras. Distribyanse las mitades de malvavisco en el fondode una charola de horneado, de 30 centmetros por lado, engrasada. Virtase lamiel sobre los malvaviscos. Djesele enfriar durante 10 minutos. Crtese encuadros y srvase.La ventaja del pseudocdigo es que en su uso en la planificacin de unprograma, el programador se puede concentrar en la lgica y en las estructurasde control y no preocuparse de las reglas de un lenguaje especfico. Es tambinfcil modificar el pseudocdigo si se descubren errores o anomalas en la lgicadel programa, adems de todo esto es fcil su traduccin a lenguajes comopascal, COBOL, C, FORTRAN o BASIC.

  • Algortmica para Programacin Pg. 33

    Ingeniera Informtica y Sistemas - UNAMBA Ing. Francisco Cari I.

    El pseudocdigo utiliza para representar las acciones sucesivas palabrasreservadas en ingls (similares a sus homnimos en los lenguajes deprogramacin), tales como star, begin, end, stop, if-then-else, while, repeat-until.etcLas principales caractersticas de los pseudocdigos son:1. Utilizan los operadores Aritmticos, Relacionales y Lgicos.2. Los nombres de sus identificadores (variables, constantes, nombre delpseudocdigo, etc.), deben cumplir con las reglas para la creacin de losmismos.3. Se pueden incluir comentarios dentro del pseudocdigo para hacerlo msentendible, utilizando dos diagonales invertidas [\\].4. Se debe dejar una indentacin (sangra o margen) en los bloques deinstrucciones.5. Usa ciertas palabras claves (reservadas) utilizadas de modo general en losdiferentes lenguajes de programacin:PSEUDOCDIGO, VARIABLES, INICIO, FIN, LEE, ESCRIBE, IMPRIME,IF_THEN_ELSE, CASE OF, FOR DO, WHILE DO REPEAT UNTIL, ARRAY.6. Deben iniciar con el nombre del pseudocdigo, seguido de la declaracin devariables y luego el cuerpo del pseudocdigo:

    Ejemplo:Disee un pseudocdigo que lea 3 nmeros, los sume e imprima su resultado.Pseudocdigo sumatoriavariablesen1, en2, en3, esuma: enteroinicioescribe ?dame tres nmeros:?lee en1, en2, en3esuma = en1 + en2 + en3escribe ?el resultado de la suma es: ?, esumafinEjemplo:Se requiere preguntar dos valores, y a continuacin ofrecer un men con lasoperaciones bsicas (+, -, *, /). Despus de presentar el resultado se ofrecer laposibilidad de una nueva operacin.Declaracin de variables:Real : X, Y, RESPUESTAEntero : OPCIONCarcter : OP

    Pseudocdigo nombreDeclaraciones de variablesInicio\\ Cuerpo del pseudocdigoFin

  • Algortmica para Programacin Pg. 34

    Ingeniera Informtica y Sistemas - UNAMBA Ing. Francisco Cari I.

    InicioRepetir

    escribir(Primer valor : )leer(X)escribir(Segundo valor : )leer(Y)escribir(1) Suma )escribir(2) Resta )escribir(3) Multiplicacin )escribir(4) Divisin )escribir(Qu operacin deseas realizar ? : )leer(OPCION)casos OPCION de1 : RESULTADO = X+Y2 : RESULTADO = X-Y3 : RESULTADO= X*Y4 : si Y=0 entonces

    escribir( Error )RESULTADO 0en caso contrarioRESULTADO = X/Y

    escribir (Resultado : ,RESULTADO)escribir(Deseas otro clculo : [S/N] )leer(OP)

    Hasta que RES = NFin

    Ejemplo:Preguntar un nombre y repetirse en pantalla tantas veces como se desee.(preguntar cantidad de repeticiones), indicando el nmero de repeticin.Declaracin de variablesCadena : nomentero : x, nInicioescribir(Nombre : )leer(nom)escribir(Cuntas veces quieres repetirlo ? : )leer(n)para x 1 hasta n hacer

    escribir(x.- , nom)Fin

  • Algortmica para Programacin Pg. 35

    Ingeniera Informtica y Sistemas - UNAMBA Ing. Francisco Cari I.

    5.3 Diagramas Estructurados (nassi-schneiderman)El diagrama N-S de Nassi-Schneiderman, tambin conocido como diagrama deChapin, es como un diagrama de flujo en el que se omiten las flechas de unin ylas cajas son contiguas. Las acciones sucesivas se escriben en cajas sucesivas, y,como en los diagramas de flujo, se pueden escribir diferentes acciones en unacaja.Los Diagramas Estructurados, son una tcnica que permite formular algoritmosmediante una representacin geomtrica y de asignacin de espacios de unbloque especfico.Un algoritmo se representa de la manera siguiente:Nombre del algoritmoFinUna estructura condicional en N-S se representa de la siguiente manera:

    Condicin?Si No

    Ejemplo: Se desea calcular el salario neto semanal de un trabajador en funcindel nmero de horas trabajadas y la tasa de impuestos.LeerNombre horas * precioCalcularSalario horas * precioCalcularSalario 0.25*salarioCalcularNeto salario impuestoEscribirNombre, Salario, impuesto, neto

  • Algortmica para Programacin Pg. 36

    Ingeniera Informtica y Sistemas - UNAMBA Ing. Francisco Cari I.

    VI. ESTRUCTURAS ALGORTMICAS

    6.1 Estructura SecuencialEs aqulla en la que una accin (instruccin) sigue a otra en secuencia. Lastareas se suceden de tal modo que la salida de una es la entrada de la siguiente yas sucesivamente hasta el fin del proceso. La estructura secuencial tiene unaentrada y una salida. Su representacin grfica es la siguiente:Estructura Secuencial

    Diagrama N-S de una Estructura SecuencialAccin 1Accin 2...Accin n

    Pseudocodigo de una Estructura SecuencialInicio::acciones::fin

    Accin 1

    Accin 1

    Accin 1

    .

  • Algortmica para Programacin Pg. 37

    Ingeniera Informtica y Sistemas - UNAMBA Ing. Francisco Cari I.

    Inicio

    Leer nombre, horasprecioSalario_brutohoras*precio

    Impuesto0.20*salario_netoSalario_netosalario_bruto impuesto

    Escribir nombre,salario_bruto,salario_netoFin

    Ejemplos:1. Calcular el salario neto de un trabajador en funcin del nmero de horastrabajadas, precio de la hora de trabajo y considerando unos descuentos fijosal sueldo bruto en concepto de impuestos (20 por 100).PseudocdigoInicio{clculo salario neto}leer nombre, horas, precio_horasalario_bruto = horas * precioimpuestos = 0.20 * salario_brutosalario_neto = salario_bruto_impuestosescribir nombre, salario_bruto, salario_neto_bruto, salario_netoFinDiagrama de flujo

    Diagrama N-S

    LeerNombre, horas, precioClculo de salario_brutohoras * precioImpuesto 0.20 * salario_netoSalario_neto salario_bruto impuestoEscribirNombre, salario_bruto, salario_neto

  • Algortmica para Programacin Pg. 38

    Ingeniera Informtica y Sistemas - UNAMBA Ing. Francisco Cari I.

    2. identificada como C (esta operacin se representar en el smbolo de proceso) ypor ltimo, el valor de respuesta almacenado en la variable C, ser escrito en lapantalla (esta operacin se representa en el smbolo de escritura). Vea eldiagrama siguiente.Seudo lenguaje Diagrama de FlujoInicioLeer un valor y guardarlo en la variable A y leerun segundo valor y guardarlo en el identificador BRealizar la suma de A con B y guardar su valor enla variable CEscribir el valor de CFinPseudocdigoInicioLeer(A,B)C=A+BEscribir(C)FinCdigo Lenguaje C+ +:#include "conio.h"#include "stdio.h"int A,B,C;main(){clrscr();gotoxy(10,10 );printf("Digite un nmero entero ");scanf("%d",&A);gotoxy(10,11);printf("Digite un nmero entero ");scanf("%d",&B);C= A+B;gotoxy(10,12);printf("La suma es: %d ",C);getch()}En el ejercicio anterior se hubiera podido escribir directamente el valor de lasuma sin necesidad de almacenarlo previamente en la variable C utilizandopara ello la siguiente sentencia.

    Write(La suma es: ,A+B); gotoxy(10,12);Repeat until keypressed; printf("La suma es: %d ",A+B);Tenga en cuenta que si lo hace de esta manera, no estar utilizando estructurade asignacin alguna.

    Inicio

    A, B

    C = A + B

    C

    Fin

  • Algortmica para Programacin Pg. 39

    Ingeniera Informtica y Sistemas - UNAMBA Ing. Francisco Cari I.

    3. Desarrolle un algoritmo que le permita leer un valor entero, calcular sucuadrado y escribir dicho resultado.Anlisis:En el ejercicio planteado, se puede identificar como tareas a realizar tres, es decircada una de las tres acciones solicitadas. Leer, Calcular y Escribir.Cada uno de los procesos mencionados se describen en smbolo respectivoquedando el diagrama deflujo de la siguiente manera.Es necesario aclarar que cada proceso corresponde a una estructura deAsignacin. En el caso del ejercicio el calcular el cuadrado.Algoritmo:Seudo lenguaje Diagrama de flujo:InicioLeer el valor nmero entero y almacenarlo en la variable N.Calcula el cuadrado del nmero ledo y que est almacenado enla variable N, y su resultado almacenarlo en la variable R.Escriba el valor encontrado delCuadrado que est almacenado en la variable R.Fin

    Seudo cdigo:InicioLeer( N);R = N;Escribir (R)FinCodigo Pascal Cdigo Lenguaje C++:#include"math.h"Program cuadrado; #include"conio.h"uses crt; #include"stdio.h"N,R:real; int N,R;begin main()crscr; {gtoxy(10,10); clrscr();wite( Digite un nmero entero N); gotoxy(10,10);radln(N); printf("Digite un nmero enteroN"); R=exp(2*ln(N)); scanf("%d",&N);gotoxy(10,12); R=pow(N,2);write( El cuadrado del numero es: ,R); gotoxy(10,12);repeat until keypressed; printf("El cuadrado es: %d ",R);getch()end }

    Inicio

    N

    R =N2

    R

    Fin

  • Algortmica para Programacin Pg. 40

    Ingeniera Informtica y Sistemas - UNAMBA Ing. Francisco Cari I.

    4. Desarrolle un algoritmo que le permita leer un valor para radio (R), calcular elrea (A) de un crculo A =*R y escribir su valor.Anlisis: En el ejercicio se identifican como tareas las tres acciones solicitadas. Leer,Calcular y Escribir. Cada uno de los procesos mencionados se describen en elsmbolo respectivo quedando el diagrama de flujo de la siguiente manera.Algoritmo:Seudo lenguaje: Diagrama de flujo:InicioLeer el valor del radio y guardarlo en la variable R Calcular elvalor del rea aplicando la formula *R y almacenar dichovalor en la variable A Escribir el valor encontrado para elreaguardado en la variable A.FinSeudo cdigo:InicioLeer( R)A =*REscribir (A)Finalizar

    Cdigo Turbo Pascal: Cdigo Lenguaje C++:#include"math.h"Program rea; #include"conio.h"Uses crt;Const pi=3.1415926; #include"stdio.h"Var R,A:real; float R, A;Begin main()clrscr; { clrscr;gotoxy(10,10); clrscr();write(Digite el valor de Radio R); gotoxy(10,10);readln(R); printf("Digite el RadioR"); A = pi*exp(2*ln(R)); scanf("%f",&R);gotoxy(10,12); A = pi*pow(R,2);write( El valor del rea es: ,A); gotoxy(10,12);repeat until keypressed; printf("El rea es: %f ", A);getch();End. }

    Inicio

    A, B

    A = *R2

    A

    Fin

  • Algortmica para Programacin Pg. 41

    Ingeniera Informtica y Sistemas - UNAMBA Ing. Francisco Cari I.

    5. Desarrolle un algoritmo que le permita calcular el rea de un tringulo enfuncin de las longitudes de sus lados previamente ledos desde el teclado.Anlisis:Para darle solucin al problema planteado primero se leen los valores de los treslados del tringulo, luego se procede a calcular el valor de su rea en funcin delos valores ledos, aplicando la frmula correspondiente y por ltimo se da ordende escribir el valor calculado.

    Diagrama de flujoPseudocdigoInicioLeer(a,b,c)Hacer p=(A+B+C)/2Calcular el valor del rea dada por la frmulaEscribir (a)FinCdigo Lenguaje C++:#include "conio.h"#include "stdio.h"float A,B,C,AREA,p;main(){ clrscr();gotoxy(10,10);printf("Digite el valor de A ");Scanf(&A);gotoxy(10,12)printf("Digite el valor de B");Scanf(&B);gotoxy(10,14)printf("Digite el valor de C");Scanf(&C);p=(A+B+C)/2AREA= sqrt (p* (p - A)*(p -B) * (p -C ))gotoxy(10,16);printf("El valor del rea es: %f ", AREA);getch();}

    FIN

    C

    P=(A+B+C)/2

    A,B,C

    INICIO

    AREA= C)-B)(p-A)(p-p(p

  • Algortmica para Programacin Pg. 42

    Ingeniera Informtica y Sistemas UNAMBA Ing. Francisco Cari I.

    6.2 Estructura de Repeticin o IteracinLas estructuras que repiten una secuencia de instrucciones un nmerodeterminado de veces se denominan Bucles y se denomina Iteracin al hechode repetir la ejecucin de una secuencia de acciones.Un bucle es un proceso en el que se ejecutan una serie de operaciones unnmero determinado de veces; las operaciones sern siempre las mismas, perocon datos y resultados diferentes. En el caso de un programa de computadora, elbucle o lazo es un conjunto de instrucciones que deben ser ejecutadas un ciertonmero de veces, en un proceso iterativo o repetitivo; el bucle constar de unaentrada y una salida; la entrada se producir con una o varias instrucciones y lasalida del bucle -fin del proceso repetitivo- se producir cuando se cumple unacondicin.Una iteracin es la repeticin controlada de la secuencia de acciones internas albucle.En general un bucle constar de las siguientes partes: Preparacin o arranque del bucle: una o ms instrucciones que puedenser: asignacin de valores a constantes, contadores a cero, dimensionandolistas, etc. Cuerpo del bucle: grupo de instrucciones que integran realmente el buclepara cumplir el objetivo especificado y que se repiten mientras no se cumplela condicin. Modificacin del bucle: conjunto de instrucciones que modifican el bucle,haciendo progresar su ejecucin hasta su terminacin final; se suele realizarcon contadores o totalizadores. Comprobacin de la condicin: suele constar de una instruccin paraaveriguar si se ha producido la condicin que determinar la salida del bucle.Entre las estructuras repetitivas se encuentran: Desde (for) Mientras (while) Hacer mientras (do while)6.2.1 Ciclo forRealiza la accin un nmero finito de veces. Es una repeticin controlada por uncontador.La sintaxis de la estructura for en C++ es la siguiente:for (contador = lim_inf; contador < lim_sup; contador++){ /*Conjunto de instrucciones*/}

  • Algortmica para Programacin Pg. 43

    Ingeniera Informtica y Sistemas UNAMBA Ing. Francisco Cari I.

    Si el encabezado del for es for(contador = lim_inf; contador < lim_sup;contador++) entonces el lmite superior es lim_sup-1 porque hay un operador

  • Algortmica para Programacin Pg. 44

    Ingeniera Informtica y Sistemas UNAMBA Ing. Francisco Cari I.

    3. Calcular la serie 2i, donde i vara de 1 hasta n#include"iostream.h"#include"math.h"main(){ int i,v, n;coutn;for(i=0;i

  • Algortmica para Programacin Pg. 45

    Ingeniera Informtica y Sistemas UNAMBA Ing. Francisco Cari I.

    7. Juan quiere saber qu valores divisibles en 11 y en 15 existen en el rango de0 a 1000 con el fin de ayudarle a hacer la tarea a su hermanita que est enprimaria. Juan desea adquirir un programa que calcule dichos nmeros y losimprima en pantalla.#include #include int main(){ int valor; /* variable de control del for */cout

  • Algortmica para Programacin Pg. 46

    Ingeniera Informtica y Sistemas UNAMBA Ing. Francisco Cari I.

    Ejemplo:Contar los nmeros enteros positivos introducidos por teclado. Se considerandos variables enteras NUMERO y CONTADOR (contar el nmero de enterospositivos). Se supone que se leen nmeros positivos y se detiene el buclecuando se lee un nmero negativo o cero.Pseudocdigo

    Iniciocontador 0Leer (numero)Mientras numero > 0 hacercontador contador+1

    Leer (numero)Fin_MientrasEscribir('El nmero de enteros positivos es : ', contador)Fin

    Diagrama de Flujo

    Inicio

    C 0

    Leer

    Nmero > 0

    Escribir

    NmerosLeer

    Nmero

    no

    siC C+1

    Fin

  • Algortmica para Programacin Pg. 47

    Ingeniera Informtica y Sistemas UNAMBA Ing. Francisco Cari I.

    Representacin en N-S

    InicioC 0Leer nmeroMientras nmero > 0Escribir (nmero enteros, C)

    Realiza una accin un nmero finito de veces mientras algunacondicin es verdadera.La sentencia de control while se encarga de repetir un bloque decdigo mientras se cumpla una condicin. El bloque de cdigo se debede encontrar entre llaves, excepto si es una sola lnea.Todo for puede especificarse con un while:

    for (j = 0; j 5){ /*Conjunto de instrucciones */j -= 5; /* j = j -5 */}

    for (j = 2; j

  • Algortmica para Programacin Pg. 48

    Ingeniera Informtica y Sistemas UNAMBA Ing. Francisco Cari I.

    Ejemplos:1. Calcular el promedio de n nmeros ingresados por el teclado#include "iostream.h"main(){ int N, i, Num;float Media, S;coutN; S=0; i=1;while (i

  • Algortmica para Programacin Pg. 49

    Ingeniera Informtica y Sistemas UNAMBA Ing. Francisco Cari I.

    2. Calcular el promedio de n notas considerando las siguientesespecificaciones:Mayor que 10.5 aprobadoEntre 08-10.4 desaprobadoMenor que 08 reprobado#include "iostream.h"main(){ int N, i, Num;float Media, S;coutN;S=0;for(i=1;iNum;S=S + Num;}Media=S/N;cout

  • Algortmica para Programacin Pg. 50

    Ingeniera Informtica y Sistemas UNAMBA Ing. Francisco Cari I.

    //programa de las cuatro operaciones#include "iostream.h"main(){ int opc;double a, b, resul;cout

  • Algortmica para Programacin Pg. 51

    Ingeniera Informtica y Sistemas UNAMBA Ing. Francisco Cari I.

    1. Desarrollar un programa que permita ingresar n notas. El programa debecalcular: el numero de aprobados y el numero de desaprobados, el % deaprobados y el % de desaprobados.#include"iostream.h"main(){ int n,i,Aprobado=0,desaprobado=0;float A[100],porcentaje;coutn;for(i=1;i

  • Algortmica para Programacin Pg. 52

    Ingeniera Informtica y Sistemas UNAMBA Ing. Francisco Cari I.

    6.3.1 Alternativa Simple if (si)La estructura alternativa simple si-entonces (en ingls if-then o bien IF-THEN)ejecuta una determinada accin cuando se cumple una determinada condicin.La seleccin si-entonces evala la condicin y . . . Si la condicin es verdadera, entonces ejecuta la accin S1 (o acciones casode ser S1 una accin compuesta y constar de varias acciones). Si la condicin es falsa, entonces no hacer nada.Realiza una accin si la condicin es verdadera, o evita una accin si lacondicin es falsa.La sintaxis de un if es la siguiente:if (condicin_es_verdadera){ /*Bloque de instrucciones*/}Ejemplo:if (n % 2 == 0){ cout

  • Algortmica para Programacin Pg. 53

    Ingeniera Informtica y Sistemas UNAMBA Ing. Francisco Cari I.

    If anidada#include #include void main() /*main no retorna ningn valor (no es necesario "return 0;") */{ int numero; /* Variable de entrada */cout > numero;

    if (numero == 1){ cout

  • Algortmica para Programacin Pg. 54

    Ingeniera Informtica y Sistemas UNAMBA Ing. Francisco Cari I.

    Ejemplos:1. Un nio de la I.E. Miguel Grau desea calcular el nmeros mayor de losdos nmeros ingresados por el teclado.if (a>b)cout

  • Algortmica para Programacin Pg. 55

    Ingeniera Informtica y Sistemas UNAMBA Ing. Francisco Cari I.

    4. Una empresa comercializadora contrata vendedores a los cuales les paga unsalario que va de acuerdo al total de las ventas realizadas en el mes. Lasiguiente tabla es tomada como referencia para calcular el sueldo de cadavendedorVenta ($) Sueldo ($)0 500000 80.000500001-1000000 160.0001000001-1500000 320.0001500001-2500000 450.0002500001-4000000 550.000Ms de 4000000 20 % de las ventasRealizar un programa en C++ que sistematice este procedimiento y al ingresarlas ventas de un empleado inmediatamente muestre el sueldo que lecorresponde.#include #include void main() /*main no retorna ningn valor (no es necesario "return 0;") */{

    int ventas; /* Variable de entrada */int salario; /* Variable de salida */cout >ventas;if (ventas

  • Algortmica para Programacin Pg. 56

    Ingeniera Informtica y Sistemas UNAMBA Ing. Francisco Cari I.

    La estructura de decisin mltiple evaluar una expresin que podr tomar nvalores distintos 1, 2, 3, 4, .. n . Segn que elija uno de estos valores en lacondicin, se realizar una de las n acciones, o lo que es igual, el flujo delalgoritmo seguir un determinado camino entre los n posibles.La representacin grfica se muestra a continuacin:Diagrama de Flujo

    Diagrama N-SModelo 1 Modelo 2

    PseudocdigoEn ingls la estructura de decisin mltiple se representaCase expresin of[e1]: accin S1[e2]: accin S2:[en]: accin Snelseaccin Sxend_case

    Accin

    S1

    Accin

    S2

    Accin

    S3

    Accin

    S4

    Accin

    Sn

    21 3 4 n

  • Algortmica para Programacin Pg. 57

    Ingeniera Informtica y Sistemas UNAMBA Ing. Francisco Cari I.

    Ejemplo:1. Se desea disear un algoritmo que escriba los nombres de los das de lasemana en funcin del valor de una variable DIA introducida por teclado.Los das de la semana son 7; por consiguiente, el rango de valores de DIA ser1..7, y caso de que DIA tome un valor fuera de este rango se deber producir unmensaje de error advirtiendo la situacin anmala.InicioLeer DIASegn_sea DIA hacer1: escribir('Lunes')2: escribir('Martes')3: escribir('Mircoles')4: escribir('Jueves')5: escribir('Viernes')6: escribir('Sabado')7: escribir('Domingo')elseescribir('Error')fin_segnfinEstructura de seleccin mltiple. Se selecciona la accin a realizar, a partir demuchos estados diferentes, dependiendo del valor de una expresin entera.La sintaxis de un switch es la siguiente:

    switch (expresion) {case constante1:/*Conjunto de instrucciones*/break;case constante2:/*Conjunto de instrucciones*/break;case constante3:/*Conjunto de instrucciones*/break;...Default :/*Conjunto de instrucciones*/}

    switch (numero){ case 1:cout

  • Algortmica para Programacin Pg. 58

    Ingeniera Informtica y Sistemas UNAMBA Ing. Francisco Cari I.

    Ejemplo:1. Leer un nmero entero 1 y 7 e imprime las siete maravillas del Per haciendouso de la sentencias switch.#include"iostream.h"main(){ int op;cout>op;switch(op){case 1:cout

  • Algortmica para Programacin Pg. 59

    Ingeniera Informtica y Sistemas UNAMBA Ing. Francisco Cari I.

    #include #include void main(){ system ("CLS"); //limpiar pantalla

    int hora; //Guarda la hora de llegada del clientefloat legumbres, aseo, carnes, ropa, abarrotes;float valorReal, valorNeto;float ahorro;cout > legumbres;cout > aseo;cout > carnes;cout > ropa;cout > abarrotes;cout

  • Algortmica para Programacin Pg. 60

    Ingeniera Informtica y Sistemas UNAMBA Ing. Francisco Cari I.

    VII. ARREGLO UNIDIMENSIONAL

    7.1 ARREGLOSUn arreglo es una coleccin de variables del mismo tipo que se referencian porun nombre comn. Para acceder a un elemento especfico se utiliza un ndiceque indica la posicin del elemento.Un arreglo es una estructura homogenia compuesta por varios componenetes,todas del mimo tipo y almacenados consecutivamente en memoria. Cadacomponente puede ser accedido directamente por el nombre de la variablearray seguido de un subndice encerrado entre corchetes.7.1.1 Declaracin de un arregloSe debe especificar el tipo, el nombre y el tamao del mismo entre parntesiscuadrados ([ ]).Sintaxis:Nombre_del_tipo Nombre_del_arreglo[tamao_declarado];int A[n + 5] = 8

    El tamao del arreglo debe especificarse de forma explicita, es decir, su valordebe definirse en tiempo de codificacin y no en tiempo de ejecucin.Existen dos tipos de arrays: unidimensionales y multidimensionales.7.1.2 Arreglos UnidimensionalesUn arreglo unidimensional es un tipo de datos estructurado que est formadode una coleccin finita y ordenada de datos del mismo tipo. Es la estructuranatural para modelar listas de elementos iguales.El tipo de acceso a los arreglos unidimensionales es el acceso directo, es decir,podemos acceder a cualquier elemento del arreglo sin tener que consultar aelementos anteriores o posteriores, esto mediante el uso de un ndice para cadaelemento del arreglo que nos da su posicin relativa.Para implementar arreglos unidimensionales se debe reservar espacio enmemoria, y se debe proporcionar la direccin base del arreglo, la cota superior yla inferior.E1 E2 E3 E4 E5 E6 E7 E8Pos 0 Pos 1 Pos 2 Pos 3 Pos 4 Pos 5 Pos 6 Pos 7Arreglo[0] = E1 Arreglo[1] = E2 Arreglo[2] = E3 Arreglo[3] = E4Arreglo[4] = E5 Arreglo[5] = E6 Arreglo[6] = E7 Arreglo[7] = E8

    Valor de unavariable indizada

    Nombre del arreglo variable del arreglo

    Nombre del tipo

    ndice o subindice

  • Algortmica para Programacin Pg. 61

    Ingeniera Informtica y Sistemas UNAMBA Ing. Francisco Cari I.

    El ndice de un arreglo siempre debe ser un valor entero.El sexto elemento de un arreglo equivale al elemento ubicado en la posicin n-1El elemento 6 del arreglo tiene indice 6 y es el sptimo elemento del arreglo.7.1.3 Inicializacin de arreglosSi se desea inicializar un arreglo en tiempo de codificacin se debe hacer de lasformas siguientes:int arreglo[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };int arreglo[5] = { 0 };/* todos los elementos del arreglo se inicializan con 0 */int arreglo[10] = { 5 }; /* arreglo = { 5, 0, 0, 0, 0, 0, 0, 0, 0, 0 } */int arreglo[6] = { 5, 4, 3 }; /* arreglo = { 5, 4, 3, 0, 0, 0 } */int num[3][4]={0,1,2,3,4,5,6,7,8,9,10,11};char cadena[5]=hola;A continuacin se muestra dos maneras de definir arreglos:

    #include #include #define TAM 10int main(){

    int tamanio;int arreglo[TAM];do {cout > tamanio;} while (tamanio < 1 || tamanio > 10);system("PAUSE");return 0;}

    #include #include int main(){

    const int TAM = 10;int tamanio;int arreglo[TAM];do {cout > tamanio;} while (tamanio < 1 || tamanio > 10);system("PAUSE");return 0;}

  • Algortmica para Programacin Pg. 62

    Ingeniera Informtica y Sistemas UNAMBA Ing. Francisco Cari I.

    Ejemplos sobre arreglos

    1. Desarrollar un algoritmo para leer datos en una Array y luegoimprimir inicioleer ningresando elementos para el arrayhacer para i=0 mientras i

  • Algortmica para Programacin Pg. 63

    Ingeniera Informtica y Sistemas UNAMBA Ing. Francisco Cari I.

    3. Desarrollar un algoritmo para multiplicar dos vectores numricos en untercer vector

    inicioleer ningresando elementos para el arrayhacer para i=0 mientras i

  • Algortmica para Programacin Pg. 64

    Ingeniera Informtica y Sistemas UNAMBA Ing. Francisco Cari I.

    5. Inicializar e imprimir un arreglo a un valor dado por el usuario usandofor y while /* Solucin del problema usando for */#include #include #define TAM 10int main(){

    int arreglo[TAM]; /*Arreglo de enteros */int valor; /*Valor de inicializacin del arreglo */int indice; /*Variable de control ciclo for */cout > valor;//INICIALIZAR EL ARREGLOfor (indice = 0; indice < TAM; indice++){ arreglo[indice] = valor;}//IMPRIMIR EL ARREGLOfor (indice = 0; indice < TAM; indice++){ cout

  • Algortmica para Programacin Pg. 65

    Ingeniera Informtica y Sistemas UNAMBA Ing. Francisco Cari I.

    /* Solucin del problema usando while */#include #include #define TAM 10int main(){ int arreglo[TAM]; /*Arreglo de enteros */

    int valor; /*Valor de inicializacin del arreglo */int indice; /*Variable de control ciclo for */cout > valor;//inicializar el arregloindice = 0;

    while (indice < TAM){ arreglo[indice] = valor;indice++;}//IMPRIMIR EL ARREGLOindice = 0;while (indice < TAM){ cout

  • Algortmica para Programacin Pg. 66

    Ingeniera Informtica y Sistemas UNAMBA Ing. Francisco Cari I.

    system("CLS"); //Limpiar pantallacout

  • Algortmica para Programacin Pg. 67

    Ingeniera Informtica y Sistemas UNAMBA Ing. Francisco Cari I.

    8. Desarrollar un programa que permita ingresar n notas. El programa debecalcular: el numero de aprobados y el numero de desaprobados, el % deaprobados y el % de desaprobados.#include"iostream.h"main(){ int n,i,Aprobado=0,desaprobado=0;float A[100],porcentaje;coutn;for(i=1;i

  • Algortmica para Programacin Pg. 68

    Ingeniera Informtica y Sistemas UNAMBA Ing. Francisco Cari I.

    { encontrado=encontrado+1;indice=i;cout

  • Algortmica para Programacin Pg. 69

    Ingeniera Informtica y Sistemas UNAMBA Ing. Francisco Cari I.

    10. Desarrollar un programa que permita ingresar n nmeros en un arreglo yluego imprimir los elementos del arreglo tal como se ingreso en forma inversa.#include"iostream.h"main(){ int n,i,v=0,x=0,A[100];coutn;for(i=1;i

  • Algortmica para Programacin Pg. 70

    Ingeniera Informtica y Sistemas UNAMBA Ing. Francisco Cari I.

    7.3 Bsqueda binaria o dicotmicaPara utilizar este algoritmo, el array debe estar ordenado. La bsqueda binariaconsiste en dividir el array por su elemento medio en dos subarrays mspequeos, y comparar el elemento con el del centro. Si coinciden, la bsqueda setermina. Si el elemento es menor, debe estar (si est) en el primer subarray, y sies mayor est en el segundo.Ejemplo:#include"iostream.h"main(){ int n,A[100],i,j,central,nbuscar,encontrado=0,primero=0,ultimo,temp;coutn;for(i=1;i

  • Algortmica para Programacin Pg. 71

    Ingeniera Informtica y Sistemas UNAMBA Ing. Francisco Cari I.

    7.4 OrdenamientoEs la operacin de arreglar los registros de una tabla en algn orden secuencial deacuerdo a un criterio de ordenamiento. El ordenamiento se efecta con base en elvalor de algn campo en un registro. El propsito principal de un ordenamiento es elde facilitar las bsquedas de los miembros del conjunto ordenado.El ordenar un grupo de datos significa mover los datos o sus referencias para quequeden en una secuencia tal que represente un orden, el cual puede ser numrico,alfabtico o incluso alfanumrico, ascendente o descendente.7.4.1 Mtodos de Ordenamiento

    o Bubble Sorto Selection sorto Insertion Sorto Shell Sorto Quick Sorto Heap SortPara todos los algoritmos se cuenta con la siguiente estructura de datosConst MAX = 100A = arreglo[1..MAX] de enterosVariable N:entero

    a) Bubble Sort (Mtodo de Burbuja)Ordena los elementos del arreglo usando el mtodo de burbuja. Transporta encada pasada el elemento ms pequeo a la parte izquierda del arreglo A de Nelementos.Algoritmo:Burbuja1(A,N)InicioDeclarar i,j,aux:enteroPara i 2 hasta N hagaPara j i hasta 2 inc (1) hagaSi (A[j-1]>A[j]) entoncesAux A[j-1]A[j-1] A[j]A[j] auxFin siFin paraFin paraFinCodigo en C++#include"iostream.h"main( ){ int n,i,j,temp,A[100];coutn;for(i=1;i

  • Algortmica para Programacin Pg. 72

    Ingeniera Informtica y Sistemas UNAMBA Ing. Francisco Cari I.

    for(i=1;i

  • Algortmica para Programacin Pg. 73

    Ingeniera Informtica y Sistemas UNAMBA Ing. Francisco Cari I.

    Codigo en C++#include#includemain( ){ int izq,der, aux,i,N,k;float A[20];coutN;k=N;izq=2;der=N;for(i=1;i

  • Algortmica para Programacin Pg. 74

    Ingeniera Informtica y Sistemas UNAMBA Ing. Francisco Cari I.

    Codigo en C++#include "iostream.h"main(){ int A[100],N,i,k,aux;coutN;for(i=1;i

  • Algortmica para Programacin Pg. 75

    Ingeniera Informtica y Sistemas UNAMBA Ing. Francisco Cari I.

    Codigo en C++#include "iostream.h"main(){ int A[100],N,i,j,menor,k;coutN;for(i=1;i

  • Algortmica para Programacin Pg. 76

    Ingeniera Informtica y Sistemas UNAMBA Ing. Francisco Cari I.

    f) Quick Sort (Mtodo Rpido de Ordenacin por Particin)Este algoritmo es el ms eficiente y veloz de los mtodos de ordenacin interna.La idea central del algoritmo es:1. Se toma un elemento X de una posicin cualquiera del arreglo2. Se trata de ubicar a X en la posicin de correcta del arreglo, de tal formaque todos los elementos que se encuentran a su izquierda sean menoreso iguales a X y todos los elementos que se encuentran a su derecha seanmayores o iguales a X.3. Se repiten los pasos anteriores, pero con los conjuntos de datos que seencuentran a la izquierda y a la derecha de la posicin correcta de X en elarreglo.4. El proceso termina cuando todos los elementos se encuentran en suposicin correcta en el arreglo.El paso 3 se puede hacer de forma iterativa o recursiva. En este ejemplo, se harde forma iterativa, dejando el mtodo recursivo para ms adelante en el curso.Se necesitan dos algoritmos. Quicksortitera y reduceitera.Algoritmo que ordena los elementos de un arreglo A de N elementos, usando elmtodo Quicksort iterativo.Algoritmo:Quicksortitera(A, N)Inicio Declarar top, ini, fin, pos: enteroPilamayor: Arreglo[1..MAX] de enteroPilamenor: Arreglo[1..MAX] de enteroTop 1Pilamenor[top] 1Pilamayor[top] NMientras Que (top>0) hagaIni pilamenor[top]Fin pilamayor[top]Top top-1Pos Reduceitera(ini, fin)Si (ini(pos+1)) entoncesTop top+1Pilamenor[top] pos+1Pilamayor[top] finFin siFin MQFin

  • Algortmica para Programacin Pg. 77

    Ingeniera Informtica y Sistemas UNAMBA Ing. Francisco Cari I.

    VIII. ARREGLO BIDIMENSIONAL MATRICES

    8.1 DefinicionEs un conjunto de datos homogneo, finito y ordenado, donde se hace referencia a cadaelemento por medio de dos ndices. El primero se utiliza para los renglones (filas) y elsegundo para las columnas. Tambin puede definirse como un arreglo de arreglos.Internamente en memoria se reservan MxN posiciones consecutivas para almacenartodos los elementos del arreglo.Una matriz es un arreglo bidimensional, es decir, que se maneja con dos ndices. EnC++ se representan sus posiciones as:Matriz M de 3x3 M[0][0] M[0][1] M[0][2]M[1][0] M[1][2] M[1][2]M[2][0] M[2][1] M[2][2]El primer ndice indica las filas y el segundo las columnas.8.1.1 Inicializar matrices

    int arreglo1[3][3] = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} };int arreglo2[3][3] = { 0 }; /* todos los elementos del arreglo se inicializan con 0 */int arreglo3[2][3] = { {2,4},{6,8} }; /* { {2, 4, 0}, {6, 8, 0} } */Ejemplo:Rellenar una matrz identidad de 4 por 4 elementos.Una matriz identidad es aquella en la que la diagonal principal est llena deunos y el resto de los elementos son cero. Para llenar la matriz identidad se debeverificar que cuando los ndices i y j sean iguales, la posicin vale 1, en casocontrario se asigna cero al elemento i,j.

    AlgoritmoInicioDesde i = 1 hasta 4 hacerDesde j = 1 hasta 4 hacerSi i=j entoncesMatriz[i,j] =1SinoMatriz[i,j] =0Fin_siFin_desdeFin_desdeFin

  • Algortmica para Programacin Pg. 78

    Ingeniera Informtica y Sistemas UNAMBA Ing. Francisco Cari I.

    Ejemplos:1. Inicializar e imprimir una matriz#include #include #define FILAS 2#define COL 3int main(){

    int matriz[FILAS][COL];/*capturar datos de la matriz */for (int fila = 0; fila < FILAS; fila++){ for (int col = 0; col < COL; col++){cout

  • Algortmica para Programacin Pg. 79

    Ingeniera Informtica y Sistemas UNAMBA Ing. Francisco Cari I.

    3. Desarrollar un programa para leer los elementos de una matriz cuadrada, yluego asignar los elementos de la diagonal principal a un vector M.#include "iostream.h"main(){ int n,m,i,j,A[100][100],M[100];cout

  • Algortmica para Programacin Pg. 80

    Ingeniera Informtica y Sistemas UNAMBA Ing. Francisco Cari I.

    { for(j=1;j

  • Algortmica para Programacin Pg. 81

    Ingeniera Informtica y Sistemas UNAMBA Ing. Francisco Cari I.

    void main(){ int votos[DPTOS][7],votantes[DPTOS],abstencion[DPTOS],total,i,j;int maximo,max_indice;system("CLS");for(i=0;i

  • Algortmica para Programacin Pg. 82

    Ingeniera Informtica y Sistemas UNAMBA Ing. Francisco Cari I.

    6. Determinante de una matriz cuadrada#include "iostream.h"#include "iomanip.h"main(){int i,j,k,l,m,n ;float a[100][100];float det;coutn;m=n-1;for(i=1;i

  • Algortmica para Programacin Pg. 83

    Ingeniera Informtica y Sistemas UNAMBA Ing. Francisco Cari I.

    float U[100][100];int i,j,k,l,m,n,tem,temporal,p;coutn;for(i=1;i

  • Algortmica para Programacin Pg. 84

    Ingeniera Informtica y Sistemas UNAMBA Ing. Francisco Cari I.

    for(l=1;l

  • Algortmica para Programacin Pg. 85

    Ingeniera Informtica y Sistemas UNAMBA Ing. Francisco Cari I.

    IX. FUNCIONES Y PROCEDIMIENTOS

    9.1 ProcedimientosSon subprogramas, es decir, mdulos que forman parte de un programa yrealizan una tarea especfica. Un procedimiento puede tener sus propiasvariables que se declaran en la seccin var del propio procedimiento. Estas sellaman variables locales. La casilla de memoria para estas variables se crea cadavez que el procedimiento es llamado y se borran al salir del mismo. Asi, lasvariables locales para un procedimiento slo se pueden usar en el cuerpo delprocedimiento y no en el cuerpo principal del programa.9.2 FuncionesLa funcin es una estructura autnoma similar a los mdulos. La diferenciaradica en que la funcin se usa para devolver un solo valor de un tipo de datosimple a su punto de referencia. La funcin se relaciona especificando sunombre en una expresin, como si fuera una variable ordinaria de tipo simple.Las funciones se dividen en estndares y definidas por el usuario. Estndar: Son funciones proporcionadas por cualquier lenguaje deprogramacin de alto nivel, y se dividen en aritmticas y alfabticas. Definidas por el usuario: son funciones que puede definirlas elprogramador con el propsito de ejecutar alguna funcin especfica, y quepor lo general se usan cuando se trata de hacer algn clculo que serrequerido en varias ocasiones en la parte principal del algoritmo.Una funcion es un modulo de un programa separado del cuerpo principal, que realizauna tarea especifica y que puede regresar un valor a la parte principal del programa uotra funcion o procedimiento que la invoque.Algoritmo:Funcin factorial (n:entero):enterovar i,factorial:enteroinicio si n

  • Algortmica para Programacin Pg. 86

    Ingeniera Informtica y Sistemas UNAMBA Ing. Francisco Cari I.

    9.3 Semejanzas entre Procedimientos y Funciones. La definicin de ambos aparece en la seccin de subprogramas de laparte de declaraciones de un programa y en ambos casos consiste enuna cabecera, una parte de declaraciones una parte de instrucciones. Ambos son unidades de programa independientes. Los parmetros,constantes y variables declarados en una funcin o procedimiento sonlocales a la funcin o al procedimiento, solamente son accesiblesdentro del subprograma. Cuando se llama a una funcin o a un procedimiento, el nmero de losparmetros reales debe ser el mismo que el nmero de los parmetrosformales y los tipos de los parmetros reales deben coincidir con lostipos de los correspondientes parmetros formales, con unaexcepcin: se puede asociar un parmetro real de tipo entero con unparmetro formal por valor de tipo real.

    9.4 Diferencias entre Procedimientos y Funciones. Mientras que a un procedimiento se le llama mediante una instruccinde llamada a procedimiento, a una funcin se la llama usando sunombre en una expresin. Puesto que se debe asociar un valor al nmero de una funcin,tambin se le debe asociar un tipo. Por tanto, la cabecera de unafuncin debe incluir un identificador de tipo que especifique el tipodel resultado. Sin embargo, no se asocia ningn valor con el nombrede un procedimiento y, por tanto, tampoco ningn tipo. Las funciones normalmente devuelven un nico valor a la unidad deprograma que la llama. Los procedimientos suelen devolver ms de unvalor, o pueden no devolver ninguno si solamente realizan algunatarea, como una operacin de salida. En los procedimientos, los valores se devuelven a travs deparmetros por variable, pero el valor de una funcin se devuelvemediante la asignacin al nombre de la funcin de dicho valor en laparte de instrucciones de la definicin de la funcin.La forma general de una funcion es:Tipodato Nomfun(parametros){cuerpo de instrucciones;return [dato,var,expresion];}Donde tipodato especifica el tipo de dato que regresara la funcion.La instruccion RETURN es quien regresa un y solo un dato a la parte delprograma que la este llamando o invocando, sin embargo es de considerarque return puede regresar un dato, una variable o una expresionalgebraica (no ecuacion o formula) como lo muestran los sigueintesEjemplos;a) return 3.1416;b) return area;c) return x+15/2;

  • Algortmica para Programacin Pg. 87

    Ingeniera Informtica y Sistemas UNAMBA Ing. Francisco Cari I.

    9.5 Instruccion ReturnDentro del cuerpo de la funcion deber haber una instruccion return cuandomenos para regresar el valor, esta instruccion permite regresar datos.Cuando tratamos de resolver un problema, resulta muy til utilizar la filosofa dedivide y vencers. Esta estrategia consiste en dividir nuestro problema en otros mssencillos1. Funcin suma#include "iostream.h"double suma(double x, double y);int main(){ double a, b, resul;couta;coutb;resul=suma(a, b);cout

  • Algortmica para Programacin Pg. 88

    Ingeniera Informtica y Sistemas UNAMBA Ing. Francisco Cari I.

    3. Desarrollar un programa que te responda tu condicin a partir de una notaobtenida: aprobado o desaprobado (considerar las notas de 0-20).#include"iostream.h"char calificacion(double nota, double notamin);main(){ double promedio, minimo;char calif;coutpromedio;coutminimo;calif=calificacion(promedio, minimo);cout

  • Algortmica para Programacin Pg. 89

    Ingeniera Informtica y Sistemas UNAMBA Ing. Francisco Cari I.

    Cuatro operaciones aritmticas#include "iostream.h"main(){ int opc;double a, b, resul;cout

  • Algortmica para Programacin Pg. 90

    Ingeniera Informtica y Sistemas UNAMBA Ing. Francisco Cari I.

    #include "iostream.h"double suma(double x, double y);double resta(double x, double y);double multiplicacion(double x, double y);double division(double x, double y);double a,b,resul,z;int main(){ int opcion;do{ cout

  • Algortmica para Programacin Pg. 91

    Ingeniera Informtica y Sistemas UNAMBA Ing. Francisco Cari I.

    El mtodo de la Burbuja haciendo uso de la Funcion#include int leer(int A[100], int n);int burbuja(int [100], int n);void imprimir(int [100],int);int n;main (){ int n, A[100];coutn;leer(A,n);burbuja(A,n);return 0;}int leer(int A[100], int n){ int i;for(i=1;i

  • Algortmica para Programacin Pg. 92

    Ingeniera Informtica y Sistemas UNAMBA Ing. Francisco Cari I.

    Burbuja con funciones en libr