M Algoritmos

download M Algoritmos

of 127

Transcript of M Algoritmos

  • 8/14/2019 M Algoritmos

    1/127

    MODULO

    CURSO ALGORITMOS

    IVAN ARTURO LOPEZ [email protected]

    [email protected]

    UNIVERSIDAD NACIONAL ABIERTA Y ADISTANCIA UNADFACULTAD DE CIENCIAS BSICAS E

    INGENIERAPROGRAMA INGENIERIA DE SISTEMAS

    BOGOT D.C., 2005

  • 8/14/2019 M Algoritmos

    2/127

    PROTOCOLO ACADEMICO Y GUA DIDCTICACURSO: ALGORITMOS

    @CopyRigthUniversidad Nacional Abierta y a Distancia

    ISBN

    2005Centro Nacional de Medios para el Aprendizaje

  • 8/14/2019 M Algoritmos

    3/127

    TABLA DE CONTENIDO

    1.-Ficha Tecnica.................................................................................................. 5

    Planificacin De Las Unidades Didcticas. ......................................................... 6

    Introduccion.........................................................................................................7

    1. Primera Unidad ............................................................................................... 5

    GENERALIDADES,CONCEPTOS,ANTECEDENTES YDESARROLLO DE LOS ALGORITMOS............................................................................................................................ 5

    INTRODUCCIN ...................................................................................................... 51.1INTENCIONALIDADES FORMATIVAS: .................................................................... 61.2GENERALIDADES.............................................................................................. 71.2.1LECTURA 1.INTRODUCCIN ALA INFORMTICA ...............................................81.3PROGRAMACIN DE COMPUTADORAS..............................................................181.3PROGRAMACIN DE COMPUTADORAS..............................................................181.3.1LENGUAJES DE PROGRAMACIN ..................................................................18Lectura # 2: Lenguajes De Programacin.........................................................191.3.2LA LGICA DE LA PROGRAMACIN ...............................................................221.3.3 TCNICAS DE PROGRAMACIN ...................................................................231.4 TIPOS DE DATOS YOPERADORES ..................................................................28

    1.4.1.VARIABLES YCONSTANTES ........................................................................ 281.3.2EJERCICIOS DE VERIFICACIN ..................................................................... 31

    2. Segunda Unidad:........................................................................................... 33

    ESTRUCTURA GENERAL DE UN ALGORITMO........................................................... 33INTRODUCCIN ....................................................................................................332.1INTENCIONALIDADES FORMATIVAS: ..................................................................332.2DIAGRAMAS DE FLUJO ................................................................................... 342.2.1 EJERCICIOS DE VERIFICACIN..................................................................... 40

    2.3ALGORITMOS .................................................................................................422.3.1ESTRUCTURAS DE SELECCIN ..................................................................... 452.3.1.1 Ejercicios De Verificacin ...................................................................... 472.3.2ESTRUCTURAS DE SECUENCIA CICLOS OBUCLES.........................................482.3.2.1 Ciclo Para O Desde ............................................................................492.3.2.1.1 Ejercicios De Verificacin................................................................... 522.3.2.2 Ciclo Mientras........................................................................................542.3.2.3 Ciclo Repita Hasta Que.........................................................................552.2.3.4 Ejercicios De Verificacin ...................................................................... 562.3.3SUBPROGRMA OMODULO ...........................................................................58

  • 8/14/2019 M Algoritmos

    4/127

    3. Tercera Unidad..............................................................................................61

    LENGUAJE DE PROGRAMACIN C++ .................................................................... 61INTRODUCCIN ....................................................................................................613.2 LENGUAJE DE PROGRAMACIN C++............................................................... 623.2.2EJECUCIN DEL PROGRAMA ........................................................................ 643.2.3EJERCICIOS DE VERIFICACIN ..................................................................... 713.2.4C++,CICLOS .............................................................................................. 753.2.4.1 Ciclo For................................................................................................753.2.4.1.1 Ejercicios De Verificacin................................................................... 773.2.4.2 Ciclos While Y Do While........................................................................ 773.2.4.2.1 Ejercicios De Verificacin................................................................... 793.1.5.1 Funciones Incorporadas........................................................................ 82

    3.1.5.2.-Nuestras Propias Funciones ................................................................83

    Fuentes Documentales .....................................................................................89

    Sitios Web ......................................................................................................... 89

    Anexos ..............................................................................................................91

    ANEXO 1MAPA CONCEPTUAL ............................................................................92ANEXO2GUIA PARA LA CONSTRUCCION DE PORTAFOLIO.......................................95

    ANEXO 3FICHA DE SEGUIMIENTO ....................................................................... 100ANEXO 4FORMATO PARA LA AUTOEVALUACIN DEL GRUPO COLABORATIVO ........102ANEXO 5COMAPAR YCONTRASTAR ...................................................................103ANEXO 7HABILIDAD DE OBSERVAR .................................................................... 104ANEXO 8NDICE DE FUNCIONES ......................................................................... 105

  • 8/14/2019 M Algoritmos

    5/127

    1.-FICHA TECNICA

    NOMBRE DEL CURSO ALGORITMOS.

    PALABRAS CLAVE

    Computadora, Hardware, Software, Informtica,Cdigo binario, Perifricos, Memoria, Programacinde computadoras, programador, Programacinestructurada, Lenguaje de programacin, Interprete,Compilador, Variable, Constante, Diagrama de flujo,Diagramas de flujo, Algoritmos, Toma de decisin,Ciclos, Funciones

    INSTITUCIONUNIVERSIDAD NACIONAL ABIERTA Y A

    DISTANCIAUNAD

    CIUDAD SANTA FE DE BOGOTAUTOR DEL

    PROTOCOLOACADEMICO

    IVAN ARTURO LOPEZ [email protected]@gmail.com

    AO 2005UNIDAD ACADEMICA FACULTAD DE CIENCIAS BASICAS E INGENIERIA

    CAMPO DEFORMACION

    PROFESIONAL

    AREA DECONOCIMIENTO INGENIERIA DE SISTEMAS Y AFINES

    CREDITOSACADEMICOS TRES (3)

    TIPO DE CURSO TEORICO PRCTICODESTINATARIOS Estudiantes de diversos programas de la UNAD,

    COMPETENCIAGENERAL DEAPRENDIZAJE

    El estudiante se inicia en los fundamentos esenciales delas tcnicas y destrezas del diseo, anlisis y

    construccin de algoritmos y programas informticosMETODOLOGIA DE

    OFERTAA DISTANCIA

    FORMATO DECIRCULACION

    Documentos impresos en papel con apoyo en Web;CD-ROM.

    DENOMINACION DELAS UNIDADES

    DIDACTICAS

    1. Conceptos, antecedentes y desarrollo dealgoritmos

    2. Estructura general de un algoritmo3. Herramienta de programacin

  • 8/14/2019 M Algoritmos

    6/127

    PLANIFICACIN DE LAS UNIDADES DIDCTICAS.

    Unidades didcticas, captulos, temas, secciones, fragmentosUnidadesDidcticas

    captulos temas secciones

    Generalidades Caractersticas Introduccin a lainformtica

    Programacin DECOMPUTADORAS

    Tcnicas Programacin modular Programacin

    estructurada

    Lenguajes de mquina,bajo y alto nivel Lenguajes de

    programacin Traductores

    Interpretes compiladores

    tipos de datos yoperaciones

    Numricos Alfanumricos Lgicos

    EnterosRealesCarcterBooleano

    Variables y constantes concepto identificadores Manipulacin

    Reglas de prioridad

    Unidad 1:Conceptos,antecedentes ydesarrollo de los

    algoritmos

    Expresiones Aritmticas Lgicas(booleanas) Operadores lgicos

    Conceptos generalesDiagramas de flujoAlgoritmos

    SimbologaConceptualizacin

    Sentencias enAlgoritmos

    De asignacin De lectura(entrada) De escritura(salida) Decisin

    Bucles (ciclos) Desde (para) Mientras que Repetir - hasta que Elementos bsicos

    Contadores Acumuladores

    Unidad 2:EstructuraGeneral de unAlgoritmo

    Subprogramas

    Subalgoritmos Variables locales y

    globales Comunicacin

    Unidad 3:Herramienta deprogramacin

    Introduccin al lenguajede programacin C oC++

    Conceptos Generales Instalacin Estructura de un

    programa Estructuras de control Funciones

  • 8/14/2019 M Algoritmos

    7/127

    INTRODUCCION

    El curso de Algoritmos, esta adscrito a la facultad de Ciencias Bsicas eIngeniera de la UNAD y corresponde al programa de Ingeniera de Sistemas,esta constituido por tres crditos acadmicos, correspondientes a 38 deacompaamiento y 106 de estudio independiente, de acuerdo al contenidoprogramtico establecido por la facultad de ciencias bsicas e ingeniera, estadirigido inicialmente a alumnos de la UNAD de segundo semestre o periodoacadmico, sin que esto implique que lo puedan tomar otros participantesdeseosos de adquirir conocimientos en el arte de la programacin decomputadoras. Este curso corresponde a la formacin bsica del programa y norequiere que el participante posea conocimientos iniciales para el desarrollo dellos temas planteados; el temario pretende que los participantes adquieran yapliquen conocimientos bsicos necesarios para la construccin de soluciones

    informticas, utilizando para ello diversas estrategias de aprendizaje, propiasdel modelo de educacin a distancia, permitiendo activar las habilidadescognitivas y metacognitivas en el estudiante.

    El presente modulo no pretende ser un libro especializado en la construccin dealgoritmos; es un material de consulta que pretende llevar al estudiante alaprendizaje de los conceptos bsicos necesarios para adquirir conocimientosprevios en la programacin de computadoras, los cuales le ayudarn aenfrentarse a la solucin de supuestos problemicos y de problemticas realesen su entorno.

    Toma la premisa de Luis Joyanes Aguilar1

    , pues construye y recopila una cantidadde ejercicios prcticos que brindan la posibilidad de adquirir destreza y habilidaden el abordaje, anlisis y resolucin de los mismos.

    Esta dividido en tres unidades didcticas, que van desde la adquisicin deconocimientos previos en el diseo de algoritmos, hasta la solucin de losmismos mediante el lenguaje de programacin C++.

    La primera Unidad comprende, una introduccin a hardware, software, tcnicasde programacin, lenguajes de programacin, tipos de datos, operadores,variables, constantes, expresiones (aritmticas, Lgicas, carcter);

    La segunda inicia con una conceptualizacin de los diagramas de flujo,simbologa y utilidad, luego se realiza el abordaje de la estructura como tal delos algoritmos, su evolucin, sentencias de asignacin, entrada, salida dedatos, instrucciones de decisin, cada uno de los ciclos empleados en laprogramacin de computadoras, as mismo se trabajara con contadores yacumuladores; finalizaremos la unidad con un vistazo a los subprogramas.

    1Madrid, 1996 "Todos los cursos de programacin deben apoyarse en la resolucin de gran

    nmero de problemas que permitan al alumno adquirir prctica que le facilite el aprendizaje."

  • 8/14/2019 M Algoritmos

    8/127

    La tercera unidad, procura llevar a la prctica lo realizado con cada algoritmo,en esta unidad se utilizara el lenguaje de programacin C++, como herramientade programacin, al igual que en las anteriores unidades, sta inicia con unafundamentacin terica, contina con la estructura de un programa, lasestructuras de control y finaliza con la practica de funciones.

    Cada una de las unidades con sus correspondientes temas y secciones seabordara mediante recopilacin de lecturas, complementadas con diferentestalleres para ser abordados en forma individual, grupo colaborativo y grangrupo. Evidenciada permanentemente en las fichas de seguimiento que sellevan en el portafolio.

    Es importante destacar que para este curso los estudiantes tengan algunashabilidades de dominio del computador, las cuales se dieron en el curso deherramientas informticas, al igual se sugiere tomar el curso de mantenimientoy ensamble de computadoras, que aportara grandes referentes para entender la

    arquitectura bsica de un computador.

  • 8/14/2019 M Algoritmos

    9/127

  • 8/14/2019 M Algoritmos

    10/127

    5

    1. PRIMERA UNIDAD

    Generalidades, Conceptos, antecedentes y desarrollo de los algoritmos

    Introduccin

    La primera unidad del curso de algoritmos, esta dirigida esencialmente a laconceptualizacin de trminos bsicos necesarios para el abordaje del presentecurso.

    Entre los aspectos fundamentales se encuentran, las generalidades de laprogramacin, las tcnicas de programacin, evolucin histrica de laprogramacin, lenguajes de programacin, traductores (compiladores einterpretes), tipos de datos (numricas, alfanumricas, lgicas) y operaciones,

    manejo de variables y constantes lo mismo que expresiones aritmticaslgicas, todo esto acompaado de procesos pedaggicos, propios del modelode la educacin a distancia apropiada en el uso de las nuevas tecnologas

    Esta unidad se trabaja mediante lecturas que permiten la apropiacin delconocimiento y se evidencian en diferentes productos que le ofrecen laoportunidad de aplicar las diferentes herramientas, adquiridas en los primeroscursos acadmicos; tambin se desarrollarn una serie de ejercicios prcticos,tendentes a adquirir habilidades en la resolucin de problemticas supuestas,para pasar a problemticas reales.

    Igualmente estn implcitas diferentes estrategias de pensamiento de ordensuperior que el estudiante ir descubriendo gracias al apoyo permanente deltutor, quien en es el mediador del proceso de aprendizaje.

    Al final de la unidad, se plantean una serie de actividades que buscandeterminar el grado de apropiacin del conocimiento, adems de dar soportevalorativo a la nota definitiva

    **

  • 8/14/2019 M Algoritmos

    11/127

    6

    1.1 INTENCIONALIDADES FORMATIVAS:

    Propsitos de la unidad

    Motivar al estudiante en el abordaje de los temas referentes a la evolucin y

    desarrollo de los algoritmosRealizar lecturas que permitan conceptualizar lo referente a hardware ysoftware

    Objetivos de la unidad

    Conceptualizar los aspectos fundamentales referentes a los antecedentes,desarrollo y evolucin de los algoritmos.Determinar las tcnicas de programacin, lo mismo que los lenguajes deprogramacinConocer tipos de operadores

    Diferenciar y aplicar variables y constantesJerarquizar las expresiones mediante las reglas de prioridadConocer diferentes tipos de lenguajes de programacin

    Competencias de la unidad:

    El estudiante domina los conceptos previos necesarios para el desarrollo dealgoritmos

    Metas de aprendizaje

    El estudiante mediante lecturas y acompaamiento tutorial mediado es capazde comprender los conceptos fundamentales para el desarrollo de unalgoritmo.

    Unidades Didcticas:

    Palabras claves:

    HardwareSoftware

    InformticaCdigo binarioPerifricosMemoriaProgramacin de computadorasprogramadorProgramacin estructuradaLenguaje de programacinInterpreteCompiladorVariable

    ConstanteDiagrama de flujo

  • 8/14/2019 M Algoritmos

    12/127

    7

    1.2 GENERALIDADES

    Es importante que los estudiantes del curso de algoritmos, adquieranconocimientos bsicos en temas referentes a la informtica como el

    funcionamiento bsico de los computadores, sus dispositivos hardware, lascaractersticas esenciales del software y esencialmente se adquieraconocimiento en lenguajes de programacin, caractersticas, evolucin, lastendencias y tcnicas de programacin y en fin todo aquello que aporte aldesarrollo habilidades que permitan un conocimiento inicial necesario paraabordar temas primordiales en la programacin de computadoras, para lo cualse propone la siguientes lecturas

  • 8/14/2019 M Algoritmos

    13/127

    8

    1.2.1 Lectura 1. Introduccin a la Informtica2

    Es necesario que el alumno determine y diferencie claramente aspectos bsicossobre Informtica, hardware, software, para lo cual se sugiere al estudiante se

    apoye en la lectura nmero 1, 2 y 3, a partir de ella debe realizar la actividadesprogramadas para estas lecturas.

    INTRODUCCIN A LA INFORMTICA

    Desde sus orgenes, el hombre ha tenido necesidad de la informacin. Estainformacin, que en principio se recoga de forma oral, con el surgimiento de laescritura, comenz a almacenarse en medios que evolucionaron desde lastablillas hasta el papel, pasando por los papiros y los pergaminos. Tambin losmedios de transmisin han ido evolucionando desde la transmisin oral, buenapara distancias cortas, hasta la transmisin a grandes distancias por cablesutilizando cdigo Morse o la propia voz mediante el telfono.

    Se puede decir que el tratamiento de la informacin es tan antiguo como elhombre y se ha ido potenciando y haciendo ms sofisticado con el transcursodel tiempo hasta llegar a la era de la electrnica. El hombre no ha parado a lolargo de la historia de crear mquinas y mtodos para procesar la informacin.Para facilitar esta tarea, en especial en el mundo actual, donde la cantidadde informacin que se procesa a diario es ingente, surge la informtica.

    DEFINICIONES BSICAS.El trmino Informtica proviene de la unin de las palabras informacin yautomtica. De una forma muy general podemos decir que la informtica seocupa del tratamiento automtico de la informacin. Concretando ms,podemos definir Informtica como la ciencia o conjunto de conocimientoscientficos que permiten el tratamiento automtico de la informacin por mediode ordenadores.

    Como se puede observar, en la definicin anterior de Informtica, intervienendos palabras

    clave: Informacin, y ordenador.Por informacin se entiende cualquier conjunto de smbolos que representehechos, objetoso ideas.

    Qu es un ordenador?. Un ordenador o computadora es bsicamente unamquina compuesta de una serie de circuitos electrnicos que es capaz derecoger unos datos de entrada, efectuar con ellos ciertos clculos, operacioneslgicas y operaciones aritmticas y devolver los datos o informacin resultantepor medio de algn medio de salida. Todas estas acciones las realiza la

    2 Documento tomado de: http://wwwdi.ujaen.es/asignaturas/fundTopo/TEMA1.pdf

  • 8/14/2019 M Algoritmos

    14/127

    9

    computadora sin necesidad de intervencin humana y por medio de unprograma de instrucciones previamente introducido en ella.

    Si tenemos en cuenta esta definicin de computadora podemos redefinir elconcepto de Informtica como la ciencia que abarca todos los aspectos del

    diseo y uso de las computadoras.

    El ordenador se diferencia del resto de la mquina con capacidad de tratarinformacin (por ejemplo, una calculadora bsica o una mquina de escribir) enlo siguiente:

    Gran velocidad de tratamiento de la informacin. Gran potencia de clculo aritmtico y lgico. Capacidad para memorizar los programas y datos necesarios para resolvercualquier problematcnico o de gestin.

    Capacidad de comunicacin con las personas y con otras mquinas ydispositivos pararecibir o transmitir datos. Posibilidad de tratamiento de datos en tiempo real. Acta sin intervencin de un operador humano y bajo el control de unprograma previamentealmacenado en la propia computadora.

    Desde el punto de vista informtico, existen dos tipos de informacin: Datos einstrucciones.Los datos son conjuntos de smbolos que utilizamos para expresar orepresentar un valorNumrico, un hecho, un objeto o una idea, en la forma adecuada para sutratamiento. Como se puede ver, este concepto es bastante ms amplio que elutilizado en otras disciplinas como la Fsica o las Matemticas, ya que enInformtica un dato no es slo una temperatura o una longitud, sino quetambin se entiende como dato una matrcula, una direccin, un nombre, etc.Estos datos los puede obtener el ordenador directamente mediantemecanismos electrnicos (detectar sonidos,Temperaturas, contornos, imgenes,...) o pueden ser introducidos mediantegrafismos (letras y nmeros) que es el medio ms utilizado (lenguaje escrito).

    Cualquier informacin (datos e instrucciones) se puede introducir al ordenadormediante caracteres (letras, dgitos, signos de puntuacin, ...). Generalmente elordenador devolver la informacin utilizando tambin esta formaEscrita.

    Las instruccionesle indican a la computadora qu es lo que debe realizar y losdatos sonlos elementos sobre los que actan o que generan las instrucciones. Visto esto,una computadora la podemos ver como un sistema que tiene como entradasdatos e instrucciones y produce en funcin de stos unos determinadosresultados. El funcionamiento bsico de un ordenador se podra describir as:

  • 8/14/2019 M Algoritmos

    15/127

    10

    Cules son las razones que de alguna forma han obligado a la automatizacindel tratamiento de la informacin?Las principales son:1. A veces es necesario realizar funciones que el hombre puede abordar por smismo, pero que leLlevaran mucho tiempo, como por ejemplo, clculos complejos como losnecesarios para el seguimiento y control de naves espaciales (clculos entiempo real).2. Es necesario realizar funciones que el hombre, por s solo no puede cubrir,

    como por ejemplo, las comunicaciones a larga distancia.3. Es necesario obtener seguridad en algunas tareas, sobre todo en las de tiporepetitivo en las que el hombre es ms propenso a cometer errores. Sinembargo, las mquinas, una vez que se les ha enseado cmo realizar lastareas correctamente, repiten el proceso una y otra vez sinCometer ningn error.4. Se puede sustituir al hombre en las tareas montonas. Este tipo de tareas noimplican el desarrollo de su actividad intelectual, con lo que al automatizarlas, elhombre puede dedicar su esfuerzo a funciones ms decisivas e importantes.

    REPRESENTACIN DE LA INFORMACIN.

    Debido a las caractersticas de las computadoras, la informacin se almacenadentro de ellas de forma codificada. La codificacines una transformacin querepresenta los elementos de un conjunto mediante los de otro, de tal forma quea cada elemento del primer conjunto le corresponde uno distinto del segundo.ejemplos de cdigos: - cdigo de barras- cdigo de circulacin- carnet de identidadDos caractersticas importantes de los cdigos son que nos permiten comprimiry estructurarla informacin.Dentro de la computadora la informacin se almacena y se transmite en base aun cdigo que slo usa dos smbolos, el 0 y el 1, y a este cdigo se denominacdigo binario. En la entrada y en la salida de la computadora se realizanautomticamente los cambios de cdigo que sean necesarios, de forma que lainformacin pueda ser entendida fcilmente por los usuarios.El BIT(BInary digiT, dgito binario) es la unidad elemental de informacin queequivale a un valor binario (0 1) y constituye, dentro de una computadora lacapacidad mnima de informacin. El bit, como unidad de informacin mnima,representa la informacin correspondiente a la ocurrencia de un suceso deentre dos posibilidades distintas.La informacin se representa por caracteres (letras, nmeros, ...), internamente

    estos caracteres se representan utilizando el cdigo binario, es decir, con bits;esto quiere decir que a cada posible carcter le corresponde una secuencia de

  • 8/14/2019 M Algoritmos

    16/127

    11

    bits. Un bytees el nmero de bits necesarios para almacenar un carcter. Estenmero va a depender del cdigo concreto usado por la computadora,Aunque generalmente se usan 8, esto es, podemos asumir que un byteequivale a 8 bits.La capacidad de almacenamiento de una computadora o de un soporte fsico

    (como un disco)se suele dar en bytes o en unidades superiores (mltiplos), ya que el byte esuna unidad relativamente pequea. Los principales mltiplos del byte son:1 Kbyte (KB): 210 bytes.1 Megabyte (MB): 210 KB = 220 bytes.1 Gigabyte (GB): 210 MB = 230 bytes.1 Terabyte (TB): 210 GB = 240 bytes.Estos mltiplos (K,M,G y T) no solo se pueden utilizar con bytes, sino tambincon bits. PorEjemplo, 1Mb equivale a 220 bits. (B=byte y b=bit).

    ESTRUCTURA DE UN ORDENADOR.En la figura puede observarse el diagrama de bloques de una computadorabsica:

    Una computadora se compone de las siguientes unidades funcionales:- Unidad de Entrada: es el dispositivo por donde se introducen en lacomputadora tanto datos como instrucciones. La informacin de entrada setransforma en seales binarias de naturalezaelctrica. Una misma computadora puede tener distintas unidades de entrada.ej.:- teclado- scanner- una unidad de disco- ...- Unidad de Salida: es el dispositivo por donde se obtienen los resultados delos programas que se estn ejecutando en la computadora. En la mayora delos casos se transforman las seales binarias elctricas en caracteres escritos ovisualizados.ej.:

    - monitor- impresora

  • 8/14/2019 M Algoritmos

    17/127

    12

    - plotter- una unidad de disco- ...La accin combinada de estos dos tipos de unidades -de entrada y de salida-,hace que el usuario de un ordenador sea ajeno a la forma en que ste

    representa la informacin.De manera genrica, tanto a las unidades de entrada como a las de salida, seles denominaPerifricos.- Memoria: es la unidad donde se almacenan los datos y las instrucciones. Enfuncin de la velocidad y tambin de la capacidad de almacenamiento podemosdistinguir dos tipos bsicos de memorias Memoria principal o central, es la ms rpida y est estrechamente ligada alas unidades funcionales ms rpidas de la computadora (UC y ALU). Es launidad donde se almacenan tanto los datos como las instrucciones durante laejecucin de un programa.

    La memoria est constituida por una serie de posiciones numeradascorrelativamente, cada una de las cuales es capaz de almacenar un nmerodeterminado de bits. A cada una de estas celdas se le denomina posicin opalabra de memoria. Cada palabra de memoria se identifica por un nmero, sudireccin, que indica la posicin que ocupa en el conjunto. Si queremos leer oescribir en una posicin de memoria debemos dar su direccin. Por eso sesuele decir que la memoria principal es una memoria de acceso directoya queaccedemos de forma directa al dato que necesitemos sin ms que dar sudireccin. Por tanto, el tiempo de acceso a cualquier palabra de memoria esindependiente de la direccin o posicin a la que se accede.Dentro de la memoria principal podemos distinguir entre la memoria ROM(Read Only Memory) y la RAM (Random Acces Memory). La memoria ROMslo permite leer la informacin que contiene, pero no se puede escribir en ella.Las memorias ROM no se borran cuando se les deja de suministrar corriente.La memoria RAM es la memoria de lectura y escritura en la que deben estarcargados nuestros programas y sus datos para poder ejecutarse. En la memoriaRAM se puede escribir y leer, pero la informacin que contiene se pierde aldejarle de suministrar corriente (memoria voltil). Memoria auxiliar o secundaria. En contraste con la memoria principal, lamemoria auxiliar tiene una alta capacidad de almacenamiento, aunque lavelocidad de acceso es notoriamente inferior (es ms lenta). Los soportes

    tpicos de memoria auxiliar son los discos y cintas magnticas, CD-ROM,unidades ZIP, etc. Normalmente los programas y los datos se guardan en disco,evitando el tener que volver a introducirlos (por un dispositivo de entrada) cadavez que queramos utilizarlos. La informacin almacenada en la memoria auxiliarpermanece indefinidamente mientras no deseemos borrarla.- Unidad Aritmtico-Lgica (ALU): como su nombre indica se encarga derealizar las operaciones aritmticas (sumas, restas, etc.) y las operacioneslgicas (comparacin, operaciones del lgebra de Boole binaria, etc).- Unidad de Control (UC): Esta unidad se encarga de controlar y coordinar elconjunto de operaciones que hay que realizar para dar el oportuno tratamiento ala informacin. Su funcin obedece a las instrucciones contenidas en el

    programa en ejecucin: detecta seales de estadoque indican el estado de lasdistintas unidades, y en base a estas seales y a las instrucciones que capta de

  • 8/14/2019 M Algoritmos

    18/127

    13

    la memoria principal, genera las seales de controlnecesarias para la correctaejecucin de la instruccin actual. Dentro de la UC existe un relojo generadorde pulsosque sincroniza todas las operaciones elementales de la computadora.El perodo de esta seal se le denomina tiempo de ciclo. La frecuencia del reloj,medida en MegaHercios (MHz), es un parmetro que en parte determina la

    velocidad de funcionamiento de la computadora.

    El esquema de interconexin representado en la figura puede variardependiendo de la computadora. La computadora centralest constituida por laUC, la ALU y la memoria principal. Al conjunto formado por la UC y la ALU se leconoce con las siglas CPU(Central Processing Unit).Otra unidad de informacin ligada a la computadora es la palabra. Una palabraest formada por un nmero entero de bits (8, 16, 32, 64 ...) e indica el tamaode los datos con los que opera la ALU (palabra de CPU) o de los datostransferidos entre CPU y memoria (palabra de memoria). La longitud de palabradetermina, entre otras cosas, la precisin de los clculos y la variedad del

    repertorio de instrucciones. La longitud de palabra, el tiempo de ciclo del reloj yla capacidad de memoria, son factores determinantes para establecer lapotencia de una computadora. Aunque actualmente las computadoras sonbastante ms complejas, conceptualmente el esquema visto sigue siendovlido. Hace unas dcadas cada una de las distintas unidades representadasequivala a un armario independiente conectado por mangueras de cables alresto de las unidades. Actualmente, y debido fundamentalmente al desarrollo dela microelectrnico, variasunidades funcionales pueden estar en una mismatarjeta de circuitos integrados e incluso en un mismo circuito integrado. Porejemplo, actualmente, la Unidad de Control, Unidad Aritmtico Lgica y losregistros (de la CPU) estn fsicamente unidos en un chip al que se denominamicroprocesador.

    El microprocesador es el verdadero cerebro del ordenador. Desde el punto devista externo, un microprocesador es un chip cuadrado con un tamao superioral del resto de los chips de la placa base. Un microordenador (omicrocomputador) es un computador cuyo procesador central es unmicroprocesador. Conviene destacar el hecho de que el prefijo microen estecaso hace referencia al tamao de la CPU y no a las prestaciones de la misma.

    Cul es el funcionamiento bsico de un ordenador?

    La filosofa general del ordenador es muy simple: Recibe datos del usuario atravs de las unidades de entrada, los procesa con la CPU y presenta elresultado mediante las unidades de salida. Pero la CPU no recibe los datosdirectamente de la unidad de entrada ni los enva directamente a la unidad desalida. Existe una zona de almacenamiento temporal, la memoria RAM, quesirve como lugar de paso obligatorio para acceder a la CPU. Dentro de la CPU,el funcionamiento es el siguiente: Una vez almacenado el programa a ejecutar ylos datos necesarios en la memoria principal, la Unidad de Control vadecodificando (analizando) instruccin a instruccin. Al decodificar unainstruccin detecta las unidades (ALU, dispositivos de entrada, salida omemoria) implicadas, y enva seales de control a las mismas con las cuales

    les indica la accin a realizar y la direccin de los datos implicados. Lasunidades implicadas a su vez, cuando terminen de operar sobre los datos,

  • 8/14/2019 M Algoritmos

    19/127

    14

    enviarn seales a la UC indicando que la accin se ha realizado o bien elproblema que ha imposibilitado que se haga. En lneas generales podramosdecir que el funcionamiento del ordenador se rige por dos principios: La CPU es la nica que puede procesar los datos (lo cual implica que losdatos tienen que llegar de alguna forma a la CPU para ser procesados), y la

    CPU slo puede acceder a los datos almacenados en memoria RAM. Estos dosprincipios tienen un corolario muy claro que ya fue sealado anteriormente:Todos los datos, absolutamente todos, tiene que pasar por la memoria RAMpara que desde all puedan ser ledos por la CPU.

    CLASIFICACIN DE LOS ORDENADORES

    Los ordenadores se pueden clasificar atendiendo a distintos criterios.

    En funcin del uso, podemos distinguir entre:

    1. Computador de uso general: Puede utilizarse para distintos tipos deaplicaciones, tales como gestin administrativa, clculos cientficos o tcnicos.Que realice una aplicacin u otra depende del programa que el usuario quieraejecutar.

    2. Computador de uso especfico: Es aquel que nicamente puede utilizarsepara una aplicacin concreta. Ej.: Un videojuego, el computador que contieneun robot, el que contiene un misil para seguir su trayectoria o un computadorpara control del trfico. Estos computadores se caracterizan porque ejecutanuno o muy pocos programas y porque las unidades de entrada y salida estnperfectamente adaptados a la aplicacin especfica del ordenador. Por ejemplo,en un robot las unidades de entrada suelen ser sensores (de proximidad, desonido, de formas, etc.) y las unidades de salida, motores.

  • 8/14/2019 M Algoritmos

    20/127

    15

    En funcin de la potencia, capacidad o el tamao del computador2,podemos distinguir entre:1. Supercomputadores: Este tipo de computadores se caracterizan por surapidez. Son de longitud de palabra grande y estn constituidas por variosprocesadores trabajando en paralelo.

    Son multiusuario.Se utilizan para realizar clculos a gran velocidad con grandes cantidades dedatos. Por ejemplo, predicciones meteorolgicas.

    2. Macrocomputadores (mainframes): Son computadores de uso general conamplias posibilidadesde procesamiento, memoria y E/S. Son -al igual que los supercomputadores-multiusuario, es decir, que puede haber cientos de usuarios conectados ytrabajando a la vez con el mismo ordenador. Cada uno de estos usuarios puedetrabajar en un microordenador (que tiene a su vez capacidad de proceso) osimplemente en un terminal, que es una consola sin capacidad de proceso,

    destinado simplemente a enviar y recibir los mensajes en el mainframe. Suelentener velocidad y longitud de palabra inferior a la de los supercomputadores.Son ordenadores tpicos para la gestin de grandes empresas.

    3. Minicomputadores: Son mquinas muy potentes pero de menor potencia,tamao, velocidad y fiabilidad que los mainframes. Son tambin multiusuario,pero el nmero de usuarios admisibles suele ser menor que para losmacrocomputadores. Su longitud de palabra puede ser igual o inferior a la delos anteriores. En definitiva, son sistemas similares a los mainframes pero aescala reducida de prestaciones y precio. Son ordenadores usados porempresas medianas.

    4. Estaciones de trabajo (workstations): Son un tipo de ordenadores a mediocamino entre los minicomputadores y los ordenadores personales. Suelenutilizarse en forma monousuario y tienen como CPU un microprocesador degran potencia (de 32 o 36 bits). Generalmente trabajan bajo el S.O. UNIX(marca registrada de los laboratorios Bell).

    5. Computadores profesiones / personales (Pc's): Son microcomputadores delongitud de palabrade 16 o 32 bits. Su memoria principal suele tener una capacidad del orden de 4

    MBytes. Normalmente se utilizan en forma monousuario. Se caracterizan por lagran cantidad de programas disponibles para ellos y la gran compatibilidadentre unos y otros. Son, en definitiva, ordenadores de pequeo tamao y precio,cada vez ms potentes y fiables, que han hecho posible que el ordenador seintroduzca casi como electrodomstico imprescindible.

    6. Nanocomputadores: (Este tipo de ordenadores prcticamente tiende adesaparecer). Son microcomputadores de bajo coste y capacidad limitada,ideados para uso domstico con programas tales como videojuegos,contabilidad familiar o tratamiento de textos. Frecuentemente usan comopantalla de salida un monitor de TV.

  • 8/14/2019 M Algoritmos

    21/127

    16

    7. Calculadores programables de bolsillo: Se caracterizan por su pequeotamao y alimentacin a pilas. Su unidad de entrada es un teclado sencillo queincluye teclas especficas para cada instruccin y su unidad de salida estconstituida por un visualizador (display). Disponen de una capacidad dememoria y lenguaje de programacin muy limitados.

    Hay que insistir en que los lmites de esta clasificacin son muy imprecisos. Losavances tecnolgicos han conseguido, por ejemplo, que actualmente algunosordenadores personales tengan ms capacidad de proceso que algunosmainframes antiguos.

    PROGRAMAS E INSTRUCCIONES.

    La computadora necesita los programas de igual forma que stos requieren decomputadoras para poder ejecutarse. Un programa es un conjunto desentencias que se dan a una computadora indicndole las operaciones que se

    desea que realice. Es un conjunto de sentencias que ha de procesar unordenador con el objetivo de obtener unos resultados o datos de salida a partirde unos datos iniciales o de entrada. Las sentencias son conjuntos de smbolosy se clasifican en dos tipos: Sentencias imperativas o instrucciones: Representan una orden para elordenador. Sentencias declarativas: Proporcionan informacin sobre los datos que manejael programa.Las instrucciones se pueden clasificar en los siguientes tipos:- instrucciones de transferencia de datos, como pueden ser instrucciones parallevar datos de memoria a la ALU o de memoria a un dispositivo de salida, etc.- instrucciones de tratamiento, como instrucciones para sumar dos datos, paracompararlos, es decir, todo tipo de instrucciones aritmtico-lgicas.- instrucciones de bifurcacin y saltos. Este tipo de instrucciones son necesariasya que las computadoras ejecutan las instrucciones secuencialmente (unadetrs de otra) y en determinados momentos podemos necesitar instruccionespara realizar bifurcaciones o saltos que nos permitan alterar el orden deejecucin. Dentro de este tipo de instrucciones cabe resaltar las instruccionesque nos permiten interrumpir la ejecucin de un programa y saltar a otroprograma (llamado rutinao subalgoritmo) para una vez finalizado ste volver alanterior en el punto en que se dej.

    Existen otras instrucciones como esperar a que se pulse una tecla o rebobinaruna cinta, etc.Las sentencias se construyen con unos smbolos determinados y siguiendounas reglas precisas, es decir, siguiendo un lenguaje de programacin.Los circuitos electrnicos de la CPU de la computadora slo pueden ejecutarinstrucciones del lenguaje propio de la computadora, conocido como lenguaje ocdigo mquina. Estas instrucciones estn formadas por palabras de bits (cerosy unos) que usualmente tienen dos partes diferenciadas, el cdigo deoperacin, que indica cul es de entre las posibles instrucciones; y el campo dedireccin, que almacena la direccin de memoria del dato con/sobre el queopera la instruccin.

    Programar en cdigo mquina presenta inconvenientes obvios ya que es unlenguaje dependiente de la mquina y si queremos programar otra mquina

  • 8/14/2019 M Algoritmos

    22/127

    17

    deberemos aprender su cdigo mquina particular; adems el repertorio deinstrucciones suele ser muy pequeo y elemental y slo se programa usandonmeros, lo que puede resultar muy engorroso. Para paliar estos problemassurgieron los lenguajes de alto nivel(PASCAL, C, COBOL,...) que no dependende la computadora y estn pensados para facilitar la programacin. Existen

    unos programas llamados traductores que toman como datos de entradaprogramas escritos en un lenguaje de alto nivel y devuelven como datos desalida el programa en lenguaje mquina de esa computadora equivalente, de talforma que ya si puede ser ejecutado por la CPU de la computadora.

    Existen dos tipos de traductores: compiladorese intrpretes. Los compiladoresfuncionan bsicamente como se explic antes, es decir, cogen en conjunto elprograma escrito en lenguaje de alto nivel, programa fuente, lo traducen ygeneran un programa en cdigo mquina, programa objeto. Los intrpretes, sinembargo, van analizando, interpretando y ejecutando instruccin a instruccindel programa fuente y por tanto no generan programa objeto.

    Adems de estos programas, el constructor debe suministrar junto con lacomputadora otra serie de programas que permitan controlar y utilizar de formaeficiente y cmoda la computadora. A este conjunto de programas se le conocecon el nombre de sistema operativo. Para utilizar el sistema operativo seutiliza un lenguaje de control constituido por rdenes o comandos, que nossirven, por ejemplo, para grabar los programas y datos en nuestro disquete, opara editar y ejecutar programas, etc. Actualmente los sistemas operativos msdifundidos son: Windows, Linux, Unix, entre otros

    SOPORTE FSICO (HARDWARE) Y SOPORTE LGICO (SOFTWARE) DELOS ORDENADORES.

    El soporte fsico o hardware de una computadora est constituido por lamquina en s, esto es, por el conjunto de circuitos electrnicos, cables,armarios, dispositivos electromecnicos y cualquier otro componente fsico. Porextensin, tambin se considera hardware todo lo relacionado con la mquina,como son las disciplinas relativas al diseo y construccin de ordenadores.

    El soporte lgico o softwarede la computadora es el conjunto de programas(sistema operativo, utilidades y del usuario) ejecutables por la computadora. Por

    extensin tambin se considera software a las materias relacionadas con eldiseo y construccin de programas.

    No hay ordenador sin mquina (hardware) o sin programa (software).Para que un ordenador funcione es necesario usar programas; es decir, unacomputadora con slo soporte fsico no funciona. Tan necesario es el hardwarecomo el software.

  • 8/14/2019 M Algoritmos

    23/127

    18

    1.3 PROGRAMACIN DE COMPUTADORAS

    1.3.1 Lenguajes De Programacin

    Se puede definir un lenguaje de computadora como una secuencia deelementos, los cuales tienen un significado concreto y entendible. Estoselementos son: las palabras reservadas, los identificadores y los smbolos, lasintaxis del lenguaje define cmo se combinarn todos estos para producir uncdigo ejecutable por la mquina.

    El concepto de programacin estructurada como un enfoque cientfico a laprogramacin de computadoras lo introdujeron E.W.Dijkstra (izquierda) yC.A.R.Hoare (derecha) a fines de los aos sesentas. Mediante el anlisismatemtico de la estructura de los programas, ellos mostraron que podemos

    evitar muchos errores de diseo de programas mediante un enfoquesistemtico a la programacin. Es fundamental en la programacin estructuradael diseo adecuado de los algoritmos y el manejo de las estructuras de datos.

    En la siguiente lectura se pueden describir mejor algunos de los lenguajes deprogramacin que se han utilizado a lo largo de la historia de la informtica,asiendo claridad que existen muchos ms, los cuales se pueden consultar oprofundizar en diferentes sitios de interne o en la biblioteca

  • 8/14/2019 M Algoritmos

    24/127

    19

    Lectura # 2: Lenguajes de programacin

    Algunos lenguajes de Programacin3

    FORTRAN clic pra ver ejemplo

    El lenguaje fortran es uno de los lenguajes que forman el grupo de lenguajes de computadororientados a procedimientos, los cuales estn fundamentados en la estructura del lenguajeusado originalmente para describir el problema, como tambin en el procedimiento empleadopara resolverlo. Tiene por objeto descargar al programador de la tarea de reducir todos losclculos y toma de decisiones a las pasos elementales requeridos por el repertorio limitado deoperaciones ofrecido a nivel de lenguaje de maquina. FORTRAN es un acrnimo de FORmulaTRANslation (traduccin de formulas), diseado especialmente para la manipulacin deformulas cientficas y la aplicacin de mtodos numricos a la solucin de problemas.

    COBOL clic para ejemplo

    En mayo de 1959 mediante una reunin realizada en Estados Unidos por una comisindenominada CODASYL (Conference On Data Systems Languages ) integrada por fabricantesde ordenadores, empresas privadas y representantes del Gobierno; un lenguaje deprogramacin fue diseado expresamente para el procesamiento de datos administrativos. Esun lenguaje de alto nivel y como tal generalmente es independiente de la maquina. Una versinpreliminar de COBOL (Common Business Oriented Lenguaje) apareci en diciembre de 1959.Esta versin fue seguida en 1961 por la versin COBOL-61, que constituy la base para eldesarrollo de versiones posteriores. En 1968 se aprob una versin estndar del lenguaje por loque ahora se denomina ANSI y una versin revisada se aprob por ANSI en 1974. El COBOLen cualquiera de sus versiones es el lenguaje apropiado para las aplicaciones administrativasdel computador.

    LISP clic para ejemplo

    Es el lenguaje para aplicaciones como la inteligencia artificial. Es un lenguaje funcional que hadesempeado un papel especial en la definicin de lenguajes. La definicin de un lenguajedebe estar escrita en alguna notacin, llamada metalenguaje o lenguaje de definicin, y loslenguajes de definicin tienden a ser funcionales. De hecho la primera implantacin de LISP seprodujo, casi por accidente, cuando se uso LISP para definirse a s mismo. De esta manera losconceptos bsicos de programacin funcional se organizaron con LISP, diseado por JhonMcCarthy en 1968, el cul es lenguaje con mayor edad despus de Fortran. LISP significa (Lotsof Silly Parenthese montones de tontos parentesis). A comienzos de 1960 Lisp fue ultralentopara aplicaciones numricas. Ahora hay buenas implantaciones disponibles.

    PASCAL clic para ejemplo

    PACAL es un lenguaje de programacin de alto nivel de propsito general; esto es, se puedeutilizar para escribir programas para fines cientficos y comerciales. Fue diseado por elprofesor Niklaus (Nicols) Wirth en Zurich, Zuiza, al final de los aos 1960 y principios de los

    3[1]http://www.itq.edu.mx/vidatec/espacio/aisc/ARTICULOS/leng/LENGUAJESDEPROGRAMACI%D3N.htm

    [2] 1993-2003 Microsoft Corporation. Reservados todos los derechos.

  • 8/14/2019 M Algoritmos

    25/127

    20

    70s. Wirth dise este lenguaje para que fuese un buen lenguaje de programacin parapersonas comenzando a aprender a programar. Pascal tiene un nmero relativamente pequeode conceptos para aprender a denominar. Su diseo facilita escribir programas usando un estiloque esta generalmente aceptado como prctica estndar de programacin buena. Otra de lasmetas del diseo de Wirth era la implementacin fcil.

    PROLOG clic ejemplo

    Es un lenguaje de programacin de computadoras que fue inventado alrededor de 1970 porAlain Colmerauer y sus colegas de la Universidad de Marcella. A finales de 1970 comenzaron aaparecer versiones de Prolog para microcomputadoras fue el micro-prolog y se dedicaronmuchos libros de prolog a l. Pero el micro-prolog no ofrece la riqueza de predicados que ofreceun lenguaje como l turbo prolog. No existi mucho inters en el prolog, hasta que loscientficos, japoneses lanzaron su famoso proyecto de la quinta generacin con el objetivo dedisear nuevas computadoras y software, los cuales no tendran rivales en los aos 1990 yposteriores. Ala principales implementaciones de prolog le falta la habilidad para mejorarproblemas sobre nmeros o procesamiento de texto, en su lugar, prolog est diseado paramanejar problemas lgicos (es decir problemas donde se necesita tomar decisiones de un aforma ordenada). Prolog intenta hacer que la computadora razone la forma de encontrar unasolucin.

    SMALLTALK clic ejemplo

    Alan Kay cre SMALLTALK es principalmente un lenguaje interpretado, es decir smalltalk es unlenguaje compilado en forma incremental: tanto el compilador como el lenguaje son parte delambiente de programacin smalltalk, cuando se utiliza smalltalk nunca se sale del ambiente deprogramacin (incluyendo el apoyo de biblioteca, las clases y los mtodos), usted puede probarincluso el fragmento ms pequeo del programa con l interprete, o compilar solo una seccinde cdigo. Usted podra utilizar el intrprete smalltalk como una calculadora muy compleja, paraevaluar expresiones matemticas.

    OBJECT PASCAL

    Es un lenguaje de programacin muy poderoso que est si dudas a la altura de C++ y queincluso lo supera en algunos aspectos. Este lenguaje surge a partir del desarrollo de BorlandPascal 7.0, un lenguaje que ocupa un lugar muy importante en la programacin de ordenadorespersonales. El Object Pascal es totalmente compatible con el Borland Pascal 7.0, lo que permiteque programas desarrollados con este ltimo puedan ser convertidos a Delphi. Nuevosaspectos en el Object Pascal en relacin a sus predecesores son el Exceptin Handling(tratamiento y canalizacin de errores de run-time), un manejo ms sencillo de los punteros conreconocimiento automtico y referenciacin, las llamados propiedades de objetos que puedenser asignados como las variables, etc.

    DELPHI clic ejemplo

    Es una potente herramienta de desarrollo de programas que permite la creacin de aplicacionespara Windows 3.x, Windows 95 y Windows NT. De hecho, aunque el programa ANLOGA.EXEcorre perfectamente en cualquier tipo de Windows, fue desarrollado sobre una plataformaWindows NT Wokstation. Dispone de un compilador muy rpido (ms que la mayora de loscompladores de C++, como ya era tradicional en Turbo Pascal), y potentes herramientas parala creacin visual de aplicaciones, completas herramientas para la creacin y manejo de basesde datos, aplicaciones multimedia, enlace DDE, creacin de DLLs, VBX,etc. Cubre muchostemas de programacin bajo Windows: se incluye entre los mismos un completo centro decontrol para la creacin de aplicaciones multimedia, as como una gran variedad decomponentes que actan debajo del entorno, como tipos de listado muy variados ycontenedores generales de datos. Las aplicaciones terminadas estn disponibles en archivos

    ejecutables (EXE) que peden utilizarse slo con bibliotecas adicionales.

  • 8/14/2019 M Algoritmos

    26/127

    21

    JAVA clic ejemplo

    Java es un lenguaje de programacin orientado a objetos desarrollado por Sun Microsystems,una compaa reconocida por sus estaciones de trabajo UNS de alta calidad en 1991 comoparte de un proyecto de investigacin para desarrollar software para dispositivos electrnicos(televisiones, video casseteras, tostadores y otros de aparatos que se pueden comprar en

    cualquier tienda departamental). Fundamentado en C++, el lenguaje Java se diseo para serpequeo, sencillo y porttil a travs de plataformas y sistemas operativos, tanto a nivel decdigo fuente como binario, lo que significa que los programas en Java (apples y aplicaciones)pueden ejecutarse en cualquier computadora que tenga instalada una maquina virtual de Java .Es un lenguaje ideal para distribuir programas ejecutables va World Wide Web, adems de unlenguaje de programacin de propsito general para desarrollar programas que sean fciles deusar y portables en una gran variedad de plataformas. [1]

    C clic ejemplo

    Lenguaje de programacin desarrollado en 1972 por el estadounidense Dennis Ritchie en losLaboratorios Bell. Debe su nombre a que su predecesor inmediato haba sido llamado lenguajede programacin B. Aunque muchos consideran que C es un lenguaje ensamblador msindependiente de la mquina que un lenguaje de alto nivel, su estrecha asociacin con elsistema operativo UNIX, su enorme popularidad y su homologacin por el American NationalStandards Institute (ANSI) lo han convertido quiz en lo ms cercano a un lenguaje deprogramacin estandarizado en el sector de microordenadores o microcomputadoras yestaciones de trabajo. C es un lenguaje compilado que contiene un pequeo conjunto defunciones incorporadas dependientes de la mquina. El resto de las funciones de C sonindependientes de la mquina y estn contenidas en bibliotecas a las que se puede accederdesde programas escritos en C. Estos programas estn compuestos por una o ms funcionesdefinidas por el programador.

    C++.

    Una versin orientada a objetos derivada del lenguaje de programacin de aplicacin generaldenominado C, desarrollada por Bjarne Stroustrup en los Bell Laboratories de la compaaAmerican Telephone and Telegraph (AT&T); en un principio tambin fue conocido como C withClasses (C con clases, alusin a las clases de la programacin orientada a objetos). Comenz adesarrollarse en 1980 y se nombr C++ en 1983; el primer manual y su primera implementacincomo producto comercial aconteci en 1985. Versiones sucesivas se publicaron en 1989 y1990, siendo sus referencias oficiales, adems de las publicaciones de su versinestandarizada, las obras The C++ Programming Language (El lenguaje de programacin C++,1985) y Annotated C++ Reference Manual (Manual de referencia comentado de C++, 1990). [2]

    Y por supuesto todos los lenguajes visuales como Visual Basic, Visual Fox; tambin las ultimastendencias como los .net y lenguajes libres como PhP, entre otros

  • 8/14/2019 M Algoritmos

    27/127

    22

    1.3.2 La lgica de la programacin

    Uno de los aspectos importantes en la programacin de computadoras, es lalgica de la programacin, es por eso que esta actividad pretende, a parte derelajar, activar la capacidad de analizar y encontrar los mtodos adecuados desolucionar diferentes problemas

    !"#$%&&&'(""""#)

    *"+)$&)(("!"(""!""

  • 8/14/2019 M Algoritmos

    28/127

    23

    Si usted es un apasionado de los acertijos o los juegos de lgica, lo invito a queingrese a la pgina www.markelo.f2o.org, de pronto se convierta en un adicto aeste tipo de juegos.

    1.3.3 Tcnicas de Programacin

    A partir de este momento nos adentramos en el mundo de la programacin,para tal objeto, se propone la realizacin de la lectura # 3 referente a lasdiferentes tcnicas de programacin, propuesta por Justo Mndez

    ([email protected]),

    Lectura #3

    El estudio de los lenguajes de programacin agrupa tres intereses diferentes;el del programador profesional, el del diseador del lenguaje y delImplementador del lenguaje.

    Adems, estos tres trabajos han de realizarse dentro de las ligaduras ycapacidades de la organizacin de una computadora y de las limitacionesfundamentales de la propia "calculabilidad". El termino "el programador" es un

    tanto amorfo, en el sentido de que camufla importantes diferencias entredistintos niveles y aplicaciones de la programacin. Claramente el programador

    ,"--./$)0$

    0"10"'-"!"2$.3,456$!789$:$0

    9":$&;!

  • 8/14/2019 M Algoritmos

    29/127

    24

    que ha realizado un curso de doce semanas en COBOL y luego entra en elcampo del procesamiento de datos es diferente del programador que escribe uncompilador en Pascal, o del programador que disea un experimento deinteligencia artificial en LISP, o del programador que combina sus rutinas deFORTRAN para resolver un problema de ingeniera complejo, o del

    programador que desarrolla un sistema operativo multiprocesador en ADA.

    En esta investigacin, intentaremos clarificar estas distinciones tratandodiferentes lenguajes de programacin en el contexto de cada rea de aplicacindiferente. El "diseador del lenguaje" es tambin un termino algo nebuloso.Algunos lenguajes (como APL y LISP) fueron diseados por una sola personacon un concepto nico, mientras que otros (FORTRAN y COBOL) son elproducto de desarrollo de varios aos realizados por comits de diseo delenguajes.

    El "Implementador del lenguaje" es la persona o grupo que desarrolla un

    compilador o interprete para un lenguaje sobre una maquina particular o tiposde maquinas. Mas frecuentemente, el primer compilador para el lenguaje Ysobre la maquina X es desarrollada por la corporacin que manufactura lamaquina X . Por ejemplo, hay varios compiladores de Fortran en uso; unodesarrollado por IBM para una maquina IBM, otro desarrollado por DEC parauna maquina DEC, otro por CDC, y as sucesivamente. Las compaas desoftware tambin desarrollan compiladores y tambin lo hacen los grupos deinvestigacin de las universidades. Por ejemplo, la universidad de Waterloodesarrolla compiladores para FORTRAN Y PASCAL, los cuales son tiles en unentorno de programacin de estudiantes debido a su superior capacidad dediagnostico y velocidad de compilacin.

    Hay tambin muchos aspectos compartidos entre los programadores,diseadores de un lenguaje implementadores del mismo. Cada uno debecomprender las necesidades y ligaduras que gobiernan las actividades de losotros dos.

    Hay, al menos, dos formas fundamentales desde las que pueden verse oclasificarse los lenguajes de programacin: por su nivel y por principalesaplicaciones. Adems, estas visiones estn condicionadas por la visin histricapor la que ha transcurrido el lenguaje. Adems, hay cuatro niveles distintos de

    lenguaje de programacin.

    Los "Lenguajes Declarativos" son los ms parecidos al castellano o ingles en supotencia expresiva y funcionalidad estn en el nivel ms alto respecto a losotros. Son fundamentalmente lenguajes de ordenes, dominados por sentenciasque expresan "Lo que hay que hacer" en ves de "Como hacerlo". Ejemplos deestos lenguajes son los lenguajes estadsticos como SAS y SPSS y loslenguajes de bsqueda en base de datos, como NATURAL e IMS. Estoslenguajes se desarrollaron con la idea de que los profesionales pudieran

    asimilar mas rpidamente el lenguaje y usarlo en su trabajo, sin necesidad deprogramadores o practicas de programacin.

  • 8/14/2019 M Algoritmos

    30/127

    25

    Los lenguajes de " Alto Nivel" son los mas utilizados como lenguaje deprogramacin. Aunque no son fundamentalmente declarativos, estos lenguajespermiten que los algoritmos se expresen en un nivel y estilo de escriturafcilmente legible y comprensible por otros programadores. Adems, loslenguajes de alto nivel tienen normalmente las caractersticas de "

    Transportabilidad". Es decir, estn implementadas sobre varias maquinas deforma que un programa puede ser fcilmente " Transportado " (Transferido) deuna maquina a otra sin una revisin sustancial. En ese sentido se llama"Independientes de la maquina". Ejemplos de estos lenguajes de alto nivel sonPASCAL, APL y FORTRAN (para aplicaciones cientficas), COBOL (paraaplicaciones de procesamiento de datos), SNOBOL (para aplicaciones deprocesamiento de textos), LISP y PROLOG (para aplicaciones de inteligenciaartificial), C y ADA (para aplicaciones de programacin de sistemas) y PL/I(para aplicaciones de propsitos generales).

    Los "Lenguajes Ensambladores" y los "Lenguajes Maquina" son dependientes

    de la maquina. Cada tipo de maquina, tal como VAX de digital, tiene su propiolenguaje maquina distinto y su lenguaje ensamblador asociado. El lenguajeEnsamblador es simplemente una representacin simblica del lenguajemaquina asociado, lo cual permite una programacin menos tediosa que con elanterior. Sin embargo, es necesario un conocimiento de la arquitecturamecnica subyacente para realizar una programacin efectiva en cualquiera deestos niveles lenguajes.

    Los siguiente tres segmentos del programa equivalentes exponen lasdistinciones bsicas entre lenguajes maquina, ensambladores de alto nivel:

    Como muestra este ejemplo, a ms bajo nivel de lenguaje ms cerca esta delas caractersticas de un tipo e maquina particular y ms alejado de sercomprendido por un humano ordinario. Hay tambin una estrecha relacin(correspondencia 1:1) entre las sentencias en lenguaje ensamblador y susformas en lenguaje maquinan codificada. La principal diferencia aqu es que loslenguajes ensambladores se utilizan smbolos (X,Y,Z,A para " sumar", M para"multiplicar"), mientras que se requieren cdigos numricos (OC1A4, etc.) paraque lo comprenda la maquina.

    La programacin de un lenguaje de alto nivel o en un lenguaje ensamblador

    requiere, por tanto, algn tipo de interfaz con el lenguaje maquina para que elprograma pueda ejecutarse. Las tres interfaces mas comunes: un"ensamblador, un "compilador" y un "interprete". El ensamblador y elcompilador traduce el programa a otro equivalente en el lenguaje X de lamaquina "residente" como un paso separado antes de la ejecucin. Por otraparte, el intrprete ejecuta directamente las instrucciones en un lenguaje Y dealto nivel, sin un paso de procesamiento previo.

    La compilacin es, en general, un proceso mas eficiente que la interpretacinpara la mayora de los tipos de maquina. Esto se debe principalmente a que lassentencias dentro de un "bucle" deben ser reinterpretadas cada vez que se

    ejecutan por un intrprete. Con un compilador. Cada sentencia es interpretada yluego traducida a lenguaje maquina solo una vez.

  • 8/14/2019 M Algoritmos

    31/127

  • 8/14/2019 M Algoritmos

    32/127

    27

    Lo ms importante es que la historia nos permite ver la evolucin de familias delenguajes de programacin, ver la influencia que ejercer las arquitecturas yaplicaciones de las computadoras sobre el diseo de lenguajes y evitar futurosdefectos de diseo aprendido las lecciones del pasado. Los que estudian sehan elegido debido a su mayor influencia y amplio uso entre los programadores,

    as como por sus distintas caractersticas de diseo e implementacion.Colectivamente cubren los aspectos ms importantes con los que ha deenfrentarse el diseado de lenguajes y la mayora de las aplicaciones con lasque se enfrenta el programador. Para los lectores que estn interesados enconocer con ms detalle la historia de los lenguajes de programacinrecomendamos las actas de una recin conferencia (1981) sobre este tema,editadas por Richard Wexelblat. Vemos que FORTRAN I es un ascendentedirecto de FORTRAN II, mientras que FORTRAN, COBOL, ALGO 60, LISP,SNOBOL y los lenguajes ensambladores, influyeron en el diseo de PL/I.

    Tambin varios lenguajes estn prefijados por las letras ANS. Esto significa que

    el American National Standards Institute ha adoptado esa versin del lenguajecomo el estndar nacional. Una vez que un lenguaje esta estandarizado, lasmaquinas que implementan este lenguaje deben cumplir todas lasespecificaciones estndares, reforzando as el mximo de transportabilidad deprogramas de una maquina a otra. La polica federal de no comprar maquinasque no cumplan la versin estndar de cualquier lenguaje que soporte tiende a"fortalecer" el proceso de estandarizacion, puesto que el gobierno es, conmucho, el mayor comprador de computadoras de la nacin.

    Finalmente, la notacin algebraica ordinaria, por ejemplo, influyo fuertemente enel diseo de FORTRAN y ALGOL. Por otra parte, el ingles influyo en eldesarrollo del COBOL. El lambda clculo de Church dio los fundamentos de lanotacin funcional de LISP, mientras que el algoritmo de Markov motivo el estilode reconocimiento de formas de SNOBOL. La arquitectura de computadoras deVon Neumann, la cual fue una evolucin de la maquina mas antigua de Turing,es el modelo bsico de la mayora de los diseos de computadoras de lasultimas tres dcadas. Esta maquina no solo influyeron en los primeros lenguajessino que tambin suministraron el esqueleto operacional sobre el queevoluciono la mayora de la programacin de sistemas.

    Una discusin ms directa de todos estos primeros modelos no estn entre los

    objetivos de este texto. Sin embargo, es importante apuntar aqu debido a sufundamental influencia en la evolucin de los primeros lenguajes deprogramacin, por una parte, y por su estado en el ncleo de la teora de lacomputadora, por otra. Mas sobre este punto, cualquier algoritmo que puedadescribirse en ingles o castellano puede escribirse igualmente como unamaquina de Turing (maquina de Von Neumann), un algoritmo de Markov o unafuncin recursiva. Esta seccin, conocida ampliamente como "tesis de Church",nos permite escribir algoritmos en distintos estilos de programacin (lenguajes)sin sacrificar ninguna medida de generalidad, o potencia de programacin, en latransicin.

  • 8/14/2019 M Algoritmos

    33/127

    28

    1.4 TIPOS DE DATOS Y OPERADORES

    Como se ha podido ver a lo largo de las lecturas, para que una computadoratenga una razn de ser, se hace necesario la programacin de las mismas, esdecir realizar software que permita el ingreso de datos (estos datos se

    representan a nivel de maquina como una secuencia de dgitos binarios (0 o 1)denominados bits) para ser transformada en informacin. Los datos que seingresan a una computadora pueden ser:

    Numricos(enteros y reales)

    Lgicos(bolanos verdazo / falso)

    Carcter(Char y cadena de caracteres)

    Existen lenguajes de programacin que admiten una serie de datos complejos,pero para nuestro caso estos van a ser los tipos principales.

    Datos Numricos: estn representados por dos tipos principales

    Enteros: Representan los nmeros que no posee componentefraccionaria y pueden ser tanto positivos como negativos

    Reales: Representan todos los nmeros que poseen componentefraccionaria y tambin pueden positivo o negativo

    Datos Lgicos (booleano), este tipo de dato solo puede tomar uno de dos

    valores (verdadero o falso)Datos tipo Carcter: Representan datos alfanumricos que pueden ser

    Cadena de caracteres (string), que es una sucesin de caracteresnumricos, letras, smbolos, etc; esta cadena inicia y termina conapostrofes o comillas, dependiendo del lenguaje que se esteutilizando, para este caso la representaremos con comillas Este esun Ejemplo.

    Carcter: (char), contiene solo un carcter y tambin se incluye lascomillas para su asignacin I

    1.4.1. Variables Y Constantes

    Una variable es un espacio reservado en el computador para contener valoresque pueden cambiar durante el desarrollo del algoritmo. Los tipos de variables(Numricas, carcter, lgicas) determinan cmo se manipular la informacincontenida en esas. Una variable que se ha definido de un cierto tipo solo puedetomar valores de ese tipo, es el caso de la variable entera x, solo podr recibirnmero enteros,

    Una Constante: es un espacio reservado para contener valores que no cambian

    a lo largo de la ejecucin de un algoritmo,

  • 8/14/2019 M Algoritmos

    34/127

    29

    Es necesario distinguir que existen variables locales y variables globales:

    Variables locales: es aquella que afecta nicamente el subprograma (versemana: 9)

    Variable Global: variable que afecta a un programa en todo su contexto,programa principal y modulo (ver semana 9)

    En ambos casos existen una serie de reglas, las caractersticas de los nombresde las variables o constante, entre estas estn:

    Normalmente deben iniciar con una letra

    No deben contener smbolos ni signos de puntuacin (#,(,?...)

    Do deben contener espacios en blanco

    Ejemplo:

    Contador correcto

    44444 in correcto

    Mi contador in correcto

    Pedro correcto

    #k incorrecto

    K Correcto

    Como podemos observar las variables o constantes se declaran utilizandonombres o letras

    Las operaciones que se realicen sobre estas variables y/o constantes, estndefinidas por una serie de operadores, entre los cuales se encuentran:

    Operadores: Aritmticos.

    Potencia. ^ **Producto. *Divisin. / Div ModSuma. +Resta. -

  • 8/14/2019 M Algoritmos

    35/127

    30

    Operadores: Alfanumricos.

    Concatenacin. +

    Ejm.

    UN + AD

    UNAD

    Operadores: Relacionales.

    Igual a. =

    Menor que. =Distinto a.

    Operadores: Lgicos.

    Negacin. Not no

    Conjuncin/producto. And yDisyuncin/suma. Or o

    Operadores: Parntesis.

    El parntesis Permite alterar el orden en que realizan las diferentesoperaciones

    Ejm. A / (2 * B)

    En la ejecucin de un programa o algoritmo se hace cumplir una serie de reglasde prioridad que permiten determinar el orden de las operaciones

    Orden de evaluacin de los operadores

    Parntesis.Cambio de signo.Potencias.Productos y divisiones.Sumas y restas.Concatenacin.

    Relacionales.Negacin.

  • 8/14/2019 M Algoritmos

    36/127

    31

    Conjuncin.Disyuncin.

    Observacin

    El operador MOD, permite obtener el residuo de una divisin

    El operador DIV, Permite obtener la parte entera de una divisin

    1.3.2 Ejercicios de Verificacin

    Ejercicio 1.0 Asociar la definicin con el termino adecuado

    1. Computador a)Scanner2. Informtica b)Maquina Electrnica3. Unidad de Entrada d)Sistema Operativo4. Unix e)SAS5. Pascal e)Compiladores6. Hardware f) Tratamiento Automtico de la informacin7. Lenguajes declarativos g)Lenguaje de Programacin8. Software g)Disco Duro

    Ejercicio 2.0 Definir los Siguientes Trminos

    1. Lenguaje de maquina2. Interprete3. Compilador4. Lenguaje de Alto Nivel5. Programador

    Ejercicio 3.0

    1. Porque el procesador es una parte importante del computador?2. Cuales son las funciones que debe cumplir la memoria Ram?

    3. Si usted va a adquirir una computadora en este momento, Cuales sernlos criterios necesarios para su eleccin4. Considera que es necesario el conocimiento hardware, para poder

    desarrollar Programas informticos. por que?5. Linux es un sistema operativo libre, esto quiere decir que no hay que

    pagar para su uso, que conoce acerca de este tipo de software?6. Es usted partidario del software con licencia GNU7. Los estudiantes del programa de Ingeniera de Sistemas de la Unad,

    realizan variedad de productos (software), como proyecto de curso o degrado, lo invito a que se acerque a la biblioteca y revise dos proyectos,luego haga un breve comentario de su usabilidad.

  • 8/14/2019 M Algoritmos

    37/127

    32

    Ejercicio 4.0

    De los siguientes identificadores de variables cuales no son validos, ycual seria la opcin correcta

    a) Pedro si__ no___ Porque?

    b) Xpedro si__ no___ Porque?c) Contador5 si__ no___ Porque?d) 8contador si__ no___ Porque?e) #suma si__ no___ Porque?f) Con tador si__ no___ Porque?

    Ejercicio 5.0

    Obtener el resultado de la variable X

    a) X=5+3*2

    X=?

    b) X=5+3*2

    X=X+X

    X=?

    c) X=4+(3*2)+72 +4/2

    X=?

    d) A=5

    B=10

    C=8

    X=A+B*C+(B-C)

    X=X-A

    X=?

    e) X=35 DIV 4

    X=X MOD 2

    X= X+X

    X=?

  • 8/14/2019 M Algoritmos

    38/127

    33

    2. SEGUNDA UNIDAD:

    Estructura General de un Algoritmo

    Introduccin

    En la segunda unidad nos enfocaremos ya a la solucin de supuestosproblmicos, a pesar de que el curso esta enfocado esencialmente en el trabajoa travs de algoritmos, es importante que los estudiantes conozcan de manerasintetizada la importancia que tienen, la solucin de estos problemas, utilizandodiagramas de flujo, pues esta herramienta no solo es utilidad en ingeniera desistemas, si no en muchos actividades profesionales, donde se requieren

    representar problema estructurales mediante diagramas, es por ello, laimportancia que los estudiantes de ingeniera de sistemas, conozcan yprofundicen en este tipo de instrumentos de anlisis y representacin grafica.Esta unidad contiene gran cantidad de talleres con ejercicios que ayudarn alestudiante a desarrollar habilidades para saber cuando y como se debenemplear las estrategias de la solucin de los mismos; cada planteamientodemostrativo, esta seguido por un pequeo anlisis, la solucin al mismo y unadescripcin de la manera como fue solucionado

    Se sugiere que los estudiantes no solucionen nicamente los ejerciciospropuestos en cada uno de los talleres, sino que traten de solucionar diversidad

    de ejercicios presentados en los textos que se sugieren como bibliografa

    2.1 INTENCIONALIDADES FORMATIVAS:

    Propsitos de la unidad

    Realizar lecturas y ejercicios que permitan el desarrollo de ejerciciosConocer dos herramientas que permiten solucin de problemas de informacin,los diagramas y los algoritmos

    Objetivos de la unidad

    Realizar ejercicios que permitan adquirir habilidades, utilizando diagramas deflujoRealizar ejercicios que permitan adquirir habilidades, utilizando diagramas dealgoritmosIdentificar, variables, constantes, prioridades y reglas de su usoIdentificar los proceso y/o toma de dediciones con diagramas de flujoAprender a escribir instrucciones sencillas de toma de decisiones y ciclos

  • 8/14/2019 M Algoritmos

    39/127

    34

    FIN

    SI NO

    INICIO

    Competencias de la unidad:

    El estudiante desarrolla ejercicios bsicos utilizando diagramas de flujo y

    algoritmos

    Metas de aprendizaje

    El estudiante mediante lecturas y acompaamiento tutorial mediado es capazde comprender, analizar, desarrollar y proponer ejercicios que permitenevidenciar su aprendizaje

    Unidades Didcticas:

    Palabras claves:

    Diagramas de flujoAlgoritmosToma de decisinCiclosFunciones

    2.2 DIAGRAMAS DE FLUJO

    Antes de iniciar en el anlisis y la construccin de algoritmos es importanteapoyarnos en una herramienta til en la programacinde computadoras como lo es el diagrama de flujo,cuyas caractersticas, hace que se aplique no solo enla informtica si no en todos los procesos que llevanuna secuencia lgica, entre sus aspectosfundamentales estn:

    Sencillez. Construccin fcil. Claridad. Fcil reconocimiento de sus

    elementos. Utilizacin de normas en la construccin dealgoritmos.

    Flexibilidad. Facilidad en las modificaciones.Entonces un diagrama Un diagrama de flujo es larepresentacin grfica del flujo de datos o deoperaciones de un programa.

  • 8/14/2019 M Algoritmos

    40/127

    35

    Los smbolos de mayor utilizacin en la representacin grafica por medio dediagramas son:

    Para realizar estos grficos existen plantillas o herramientas que mejoran lapresentacin

    Tambin se pueden encontrar en los procesadores de texto barras quepermiten realizar estos grficos

    Inicio y Final

    Entrada y Salida (Lea y Escriba)

    Operaciones Generales

    Decisin

    Smbolos de Conexin

    Lneas de Flujo

  • 8/14/2019 M Algoritmos

    41/127

    36

    Este es uno de los cursos en los que se necesita realizar muchos ejerciciospara poder lograr un aprendizaje exitoso.

    Algunos ejemplos

    !

  • 8/14/2019 M Algoritmos

    42/127

    37

    Ejemplo 1: realizar un diagrama que permita leer dos nmeros, sumarlos ymostrar el resultado

    Anlisis1.- leer cuidadosamente el planteamiento del ejercicio2.-Anlisis del Problema3.-Que informacin debe ser necesaria para la solucin del problema3.-Que datos no conocemos y son necesarios para darle solucin.

    Para el ejercicio que nos compete, debemos prestar mucha atencin en lasvariables necesarias para su solucin, en este caso no conocemos los dosnmeros y tendremos que captarlos en variables, luego sumarlas (lasvariables), para luego mostrar el resultado,

    Lea

    a ,b

    x=a+b

    Escriba

    x

    Inicio

    Fin

    Lectura de las variables (a,b)

    Proceso de suma de los valoresingresados a y b

    Mostrar el resultado de la suma, elvalor es almacenado en la Variable X

  • 8/14/2019 M Algoritmos

    43/127

    38

    Ejemplo # 2

    Encontrar el rea de un triangulo y mostrar su resultado

    Anlisis

    Para la realizacin de este ejercicio es indispensable conocer la formula de untriangulo (b*h)/2, si nos damos cuenta en la formula, existen dos valores que noconocemos, la base y la altura (b, h), por lo tanto esas dos variables se debenpedir y el dos es una constante que no se debe leer, simplemente aplicar en laformula as:

    Lea

    b ,h

    area=(b*h)/2

    Escribaarea

    Inicio

    Fin

    Avancemos

    Ahora vamos a utilizar condicionales, un condicional es un parmetro quepermite tomar una decisin, para el caso de la programacin estructurada soloexiste dos alternativas, un Si o un NoPara entender mejor el concepto lo haremos mediante un ejercicio

    Ejemplo # 3

    Realizar un diagrama que permita determinar cual es el mayor de 2 nmeros

    Anlisis

    Para determinar cual es el mayor de dos nmeros, debemos primero conocerlos nmeros, para el caso se deben leer (A,B), luego realizar la comparacin, sia> b, entonces el mayor es A, en caso contrario el mayor es B:

    Prueba de EscritorioLa prueba de escritorio se realiza paraverificar con datos reales, la correctaconstruccin del diagrama, para este caso:

    b h area

    5 2 (5*2)/2=5

    Otros valoresb h area20 4 40

    -4 -1 ?

  • 8/14/2019 M Algoritmos

    44/127

    39

    Lea

    a , b

    Inicio

    Fin

    a>bEscriba

    El mayor esa

    si no EscribaEl mayor es

    b

    Una pregunta que nace del ejercicio anterior es, qu pasa cuando soniguales?

    Para ese caso necesitamos de un segundo condicional que verifique si las dosvariables son iguales (a=b)

    Lea

    a ,b

    Inicio

    Fin

    a>bEscriba

    El mayor esa

    si no EscribaEl mayor es

    b

    a=bsi Escriba

    Los nmerosson iguales

    fin

    no

    Se recomienda utilizar la herramienta dfd, desarrollada por el grupo Smart dela universidad del Magdalena, la cual la puede descargar de:http://www.programas-gratis.net/php/descarga.php?id_programa=1808&descargar=DFD%201.0, estaherramienta permite desarrollar y ejecutar los diagramas.

    A dems de consultar el anexo Tutorial de DFD propuesto por el ingenieroFlix Javier Villero Maestre4 y desarrollado en Unicesar

    4Coordinador Zona Caribe FCBI - UNAD

    Decisin

    Las comillas(..),se emplean paramostrar mensajes

  • 8/14/2019 M Algoritmos

    45/127

    40

    2.2.1 ejercicios de verificacin

    Realizar el anlisis, diagrama de flujo y prueba de escritorio, para los siguientesplanteamientos

    1.-Realizar un diagrama de flujo que permita determinar lo pasos para ir al cinecon el novio o la novia

    2.-Realizar un diagrama donde se indique los pasos para realizar un plato tpicode la Regin

    3.-Realizar un diagrama que permita esquematizar los pasos para baar un

    elefante

    4-determinar cual es el cuadrado, de un determinado nmero

    5.-Elaborar un diagrama de flujo que permita determinar si un nmero esPositivo o Negativo

    6.-Ejercicio de conversin, desarrollar un diagrama, que perita ingresar unacantidad en metros y la convierta a Centmetros, Kilmetros, Pies, pulgadas..

    7.-Leer una determinada temperatura en grados centgrados y convertirla aFahrenheit

    8.-una persona es apta para prestar el servicio militar obligatorio (presente),cuando: es mayor de 18 aos, menor de 25 aos, nacionalidad Colombiana ygnero masculino. Realizar un diagrama que permita determinar si una personaes apta o no par prestar el servicio militar

    9.- Elabore un diagrama de flujo que teniendo como datos de entrada el radio yla altura de un cilindro calcule el rea total y el volumen del cilindro

    10 Una persona recibe un prstamo de un banco por un ao y desea sabercunto pagar de inters al terminar el prstamo si se sabe que el banco lecobra una tasa del 1.8% mensual.Realice un diagrama de flujo que permita determinar este monto

    11.- Elaborar un diagrama de flujo, que permita ingresar 3 valores y los imprimaen forma descendente

    12.- Una empresa desea conocer el monto de comisin correspondiente a unaventa realizada por un vendedor bajo las siguientes condiciones. Si la venta esmenor a $1,000.00, se le otorga el 3% de comisin. Si la venta es de

    $1,000.00 o ms, el vendedor recibe el 5% de comisin

  • 8/14/2019 M Algoritmos

    46/127

    41

    13.-Una empresa ha decidido, realizar aumentos de salario a sus trabajadoresde acuerdo a las siguientes categoras

    Sindicalizado 20%De confianza 10%

    Alto directivo 5%Ejecutivo 0%

    Usted debe desarrollar un diagrama que perita ingresar la categora, el salarioactual y calcular el nuevo salario.

    14.-Desarrollar una diagrama que permita con dos nmeros, simular unacalculadora (+,-,/,*), se debe leer los nmeros y la operacin a realizar

    15.- Dado un valor de xcalcular el valor de ysegn la siguiente funcin:

    16. Se recomienda realizar ejercicios bsicos planteado en los textos, utilizadoscomo bibliografa de este mdulo, a dems de los propuestos por el tutor delcurso

  • 8/14/2019 M Algoritmos

    47/127

    42

    2.3 ALGORITMOS

    Como podemos observar en las actividades anteriores, los diagramas seconvierten en una herramienta bsica fundamental, el la resolucin deproblemas informticos, pero este modulo lo que pretende es dar a conocerlos,

    sin profundizar mucho sobre ellos, es trabajo del estudiantes ahondar en losconceptos y tcnicas en el desarrollo de diagramas.

    Lectura #4 Sobre el origen de la palabra algoritmo

    :

    MUHAMMAD BIN MUSA AL-KHWARIZMI (Algorizm)

    (770 - 840 C. E.)

    A Portrait of Al-Khwarizmi

    byDr. A. Zahoor

    Abu Abdullah Muhammad Ibn Musa al-Khwarizmi was born at Khwarizm(Kheva), a town south of river Oxus in present Uzbekistan. (Uzbekistan, aMuslim country for over a thousand years, was taken over by the Russians in1873.) His parents migrated to a place south of Baghdad when he was a child.The exact date of his birth is not known. It has been established from hiscontributions that he flourished under Khalifah (Calif) Al-Mamun at Baghdadduring 813 to 833 C.E. and died around 840 C.E. He is best known forintroducing the mathematical concept Algorithm, which is so named after his lastname.

    Al-Khwarizmi was one of the greatest mathematicians ever lived. He was thefounder of several branches and basic concepts of mathematics. He is alsofamous as an astronomer and geographer. Al-Khwarizmi influencedmathematical thought to a greater extent than any other medieval writer. He isrecognized as the founder of Algebra, as he not only initiated the subject in asystematic form but also developed it to the extent of giving analytical solutionsof linear and quadratic equations. The name Algebra is derived from his famousbook Al-Jabr wa-al-Muqabilah. He developed in detail trigonometric tablescontaining the sine functions, which were later extrapolated to tangent functions.Al-Khwarizmi also developed the calculus of two errors, which led him to the

    concept of differentiation. He also refined the geometric representation of conicsections

  • 8/14/2019 M Algoritmos

    48/127

    43

    The influence of Al-Khwarizmi on the growth of mathematics, astronomy andgeography is well established in history. His approach was systematic andlogical, and not only did he bring together the then prevailing knowledge onvarious branches of science but also enriched it through his originalcontributions. He synthesized Greek and Hindu knowledge and also contained

    his own contribution of fundamental importance to mathematics and science. Headopted the use of zero, a numeral of fundamental importance, leading up to theso-called arithmetic of positions and the decimal system. His pioneering work onthe system of numerals is well known as "Algorithm," or "Algorizm." In addition tointroducing the Arabic numerals, he developed several arithmetical procedures,including operations on fractions.

    In addition to an important treatise on Astronomy, Al-Khwarizmi wrote a book onastronomical tables. Several of his books were translated into Latin in the earlyl2th century by Adelard of Bath and Gerard of Cremona. The treatises onArithmetic, Kitab al-Jam'a wal-Tafreeq bil Hisab al-Hindi, and the one on

    Algebra, Al-Maqala fi Hisab-al Jabr wa-al-Muqabilah, are known only from Latintranslations. It was this later translation which introduced the new science to theWest "unknown till then." This book was used until the sixteenth century as theprincipal mathematical text book of European universities. His astronomicaltables were also translated into European languages and, later, into Chinese.

    The contribution of Al-Khwarizmi to geography is also outstanding. He not onlyrevised Ptolemy's views on geography, but also corrected them in detail.Seventy geographers worked under Khwarizmi's leadership and they producedthe first map of the globe (known world) in 830 C.E. He is also reported to havecollaborated in the degree measurements ordered by khalifah (Caliph) Mamunal-Rashid were aimed at measuring of volume and circumference of the earth.His geography book entitled "Kitab Surat-al-Ard," including maps, was alsotranslated. His other contributions include original work related to clocks,sundials and astrolabes. He also wrote Kitab al-Tarikh and Kitab al-Rukhmat (onsundials).

    Existen muchas definiciones referentes a algoritmos, entre las cuales tenemos:

    1. un algoritmo es un conjunto de instrucciones las cuales le dicen a lacomputadora cmo ejecutar una tarea especfica

    2. Un algoritmo es un conjunto ordenado y finito de instrucciones queconducen a la solucin de un problema3. Una lista de instrucciones donde se especifica una sucesin de

    operaciones necesarias para resolver cualquier problema de un tipodado.

    Un algoritmo esta compuesto por tres elementos esencialesa- Cabecera ->donde se da el nombre del algoritmo y se declaran las

    variablesb- Cuerpo -> donde se realizan todas las acciones del programac- Final ->donde se da finalizacin, porque debe ser finito

  • 8/14/2019 M Algoritmos

    49/127

    44

    Ejemplo:Retomado el primer ejercicio de los diagramas, Leer dos nmeros, sumarlos yobtener su resultado

    Como el anlisis del ejercicio ya se realizo, pasamos a su solucin mediante un

    algoritmo

    ExplicacinSeccin encabezado (lneas 1,2,3)Lnea 1 ->definicin del nombre, todo algoritmo debe ser identificado con unnombreLnea 2 -> Palabra para identificar las variables a utilizarLnea 3 -> variables utilizadas y el tipo de las mismas, para este caso de tipoentero (recordemos que los datos numricos se dividen en enteros y reales)Lnea 4 -> Damos inicio al cuero del algoritmoLnea 5 ->La palabra escribaes una directiva de salida, es decir todo lo que seingresa dentro de esta instruccin son comentarios o valores, que sernvisualizados por el usuario, para este caso, estamos solicitando que ingrese unnmero.Lnea 6 -> La palabra leaes una directiva de entrada, significa que todo lo quese escriba dentro, ser ingresado, en este caso estamos ingresando un nmerocualquieraLnea 7 y 8 -> repite la secuencia de las lneas 5 y 6Lnea 9 -> Proceso, en este segmento se le asigna el valor de la suma de dosvariables a una tercera (suma)

    Lnea 10 -> podemos observar una salida doble, es decir la primera parte uncometario y luego la variable de resultadoLnea 11-> final del algoritmo

    Para tener en cuentaCon los algoritmos, resulta ms cmodo, presentar mensajes de claridad alusuario, por ejemplo cundo decimos (por favor ingrese un nmero), en esemomento somos explcitos con lo que queremos hacer,

    ResumiendoEscriba ->sirve para dar a conocer mensajes o resultados

    Lea -> permite capturara informacin

    1. Algoritmo Suma;2. Var3. a,b,suma: entero;4. inicio5. escriba(por favor ingrese un nmero);6. lea (a);7. escriba(por favor ingrese otro nmero);8. lea (b);9. suma = a+b;10.escriba (el resultado es: ,suma)11.fin

    Prueba de escritorioa b suma4 4 8(4+4)

    a b suma20 5878 5898(20+5878)

    Prueba de escritorioa b suma4 4 8(4+4)

    a b suma20 5878 5898(20+5878)

    a b suma-3587 -4578 ?____

  • 8/14/2019 M Algoritmos

    50/127

    45

    Entrada ------ proceso-----SalidaLea Escriba

    2.3.1 Estructuras de Seleccin

    Las estructuras de seleccin son estructuras de control utilizadas para la tomadecisiones dentro de un programa. A estas estructuras se conocen tambincomo estructuras selectivas o estructuras de decisin y son las siguientes: La estructura de seleccin simple (SI). La estructura de seleccin doble (SI-SINO). Estructura de Seleccin doble en Cascada SI-SINO-SI

    La estructura de seleccin simple permite ejecutar una accin o un grupo deacciones