Fundamentos de Programacion Texto Guia

download Fundamentos de Programacion Texto Guia

of 111

Transcript of Fundamentos de Programacion Texto Guia

  • 7/21/2019 Fundamentos de Programacion Texto Guia

    1/111

    F

    Texto Gua de lascuela Informtic

    undamentos d

    rogramacin

    e

  • 7/21/2019 Fundamentos de Programacion Texto Guia

    2/111

    F

    Texto Gua de lascuela Informtic

    undamentos d

    rogramacin

    Autores:

    Orlando Erazo Moreta

    Andrea Ziga

    Washington Chiriboga

    e

  • 7/21/2019 Fundamentos de Programacion Texto Guia

    3/111

    PREFACIO

    El presente texto gua pretende introducir de una manera clara, sencilla y simplificada, los

    conceptos de la lgica para desarrollar programas para computadoras, a todas las personas

    que se encuentren interesadas en esta disciplina, pero muy en particular a los estudiantes

    que cursan la unidad de aprendizaje de Fundamentos de Programacin en la carrera de

    Ingeniera en Sistemas.

    Se ha desarrollado esta obra pensando en que los lectores son estudiantes nuevos en la

    disciplina de programacin, as como tambin en aquellos que ya han tenido o tienen

    alguna experiencia en este campo.

    Para un ptimo aprovechamiento se recomienda, en cada captulo hacer una lectura o

    revisin rpida a fin de obtener una visin global de la temtica. En una segunda lectura,

    hacerlo con mayor detenimiento, comprendiendo y asimilando cada tema expuesto,

    llegando al nivel de los detalles expuestos.

    Se espera con la ayuda de este texto, el estudiante logre introducirse en el manejo de un

    lenguaje de alto nivel, como lo es Visual C#, implemente algoritmos sencillos y adquiera

    las bases necesarias para iniciarse en el desarrollosoftware orientado a satisfacer las

    necesidades de procesamiento de informacin y soporte a las decisiones estratgicas de las

    organizaciones.

  • 7/21/2019 Fundamentos de Programacion Texto Guia

    4/111

    CONTENIDO

    Tema Pgs.

    PORTADA 1

    PORTADILLA 2

    PREFACIO 3

    CONTENIDO 4

    INTRODUCCIN 7

    CAPTULO 1. CONCEPTOS BSICOS DE ALMACENAMIENTO DE

    INFORMACIN 9

    1.1. Unidades bsicas de informacin en un computador 11

    1.2. Terminologa bsica. 13

    1.3. Tipos bsicos de informacin que maneja el computador 21

    1.4. Forma interna de almacenamiento 22

    1.5. Tipos de campos 24

    Ejercicios propuestos 26

    CAPTULO 2. ALGORITMOS 28

    2.1. Problemas y modelos 28

    2.2. Pasos para la solucin de un problema a travs del computador 29

    2.3. Algoritmos 30

    2.4. Valor de los smbolos en un modelo algortmico 35

    Ejercicios resueltos 41Ejercicios propuestos 42

    CAPTULO 3. ESTRUCTURAS E INSTRUCCIONES EN LA

    PROGRAMACIN ESTRUCTURADA 45

    3.1. Algoritmos bsicos 46

    3.2. Ejemplos de algoritmos bsicos sin toma de decisiones 48

    3.3. Estructuras de decisin lgica (representacin y funcionamiento) 49

  • 7/21/2019 Fundamentos de Programacion Texto Guia

    5/111

    3.4. Ciclos MIENTRAS (while) 52

    3.5. Estructuras adicionales 55Ejercicios resueltos 58

    Ejercicios propuestos 62

    CAPTULO 4. INTRODUCCIN AL FRAMEWORK DE .NET 64

    4.1. La plataforma .NET 64

    4.1.1. Componentes del Framework de .NET 65

    4.1.2. Compilacin y el MSIL 67

    4.1.3. Entorno de desarrollo para aplicaciones de consola 69

    4.2. Fundamentos del Lenguaje 70

    4.2.1. Tipos 71

    4.2.2. Constantes 72

    4.2.3. Variables 73

    4.2.4. Expresiones 74

    4.2.5. Operadores 75

    4.3. Sentencias 76Ejercicios resueltos 78

    Ejercicios propuestos 81

    CAPTULO 5. MODULARIDAD Y REDUCCIN DE COMPLEJIDAD 82

    5.1. Procedimientos 85

    5.2. Funciones 86

    5.3. Paso de parmetros: por valor y por referencia 88Ejercicios resueltos 89

    Ejercicios propuestos 90

    CAPTULO 6. FUENTES ELEMENTALES DE DATOS 91

    6.1 Arreglos de una dimensin o vectores 92

    6.2. Cadenas de caracteres 95

    6.3. Operaciones bsicas con arreglos 97

  • 7/21/2019 Fundamentos de Programacion Texto Guia

    6/111

    6.4 Arreglos de dos dimensiones o matrices 100

    Ejercicios resueltos 102Ejercicios propuestos 105

    BIBLIOGRAFA 106

    ANEXOS

    Anexo 1: Ejercicios Propuestos 107

  • 7/21/2019 Fundamentos de Programacion Texto Guia

    7/111

    INTRODUCCIN

    Cuando un msico escucha una meloda que acaba de componer o cuando un escultor

    retoca el ltimo detalle de su obra maestra, est ante un logro personal, pero que fue hecho

    pensando en los dems. Est ante el fruto de su trabajo, que tuvo que realizar para pasar de

    una idea o modelo que estaba slo en su imaginacin, a algo perceptible por los otros. Y

    ese logro causa una gran satisfaccin.

    El desarrollo de software al igual que la msica, la escultura o la pintura es una

    actividad creativa y, hasta si se quiere, artstica. Es una actividad en la que una persona (el

    programador) debe plasmar una idea en un programa que alguien usar luego. Y es muy

    probable que esa idea sea algo totalmente novedoso, algo que nadie antes ha visto. Y ver

    esa idea traducida en software produce una sensacin que slo un programador puede

    entender.

    Ser programador no es fcil, pero es divertido. Desarrollar software es, definitivamente,

    una tarea compleja. Deberemos ser capaces de interpretar al usuario (inicialmente el

    docente), de entender qu es lo que necesita (aunque muchas veces l mismo no sabe qu es

    lo que necesita). Pasaremos largas horas pensado un algoritmo que resuelva el problema de

    nuestro cliente de la mejor manera. Muchas veces nos iremos a casa y seguiremos

    pensando en ese dichoso algoritmo. Nos iremos a dormir (probablemente muy tarde,

    porque habremos dedicado parte de nuestro tiempo libre a aprender nuevas tecnologas) y

    despertaremos pensando en el algoritmo o, incluso, con la solucin en la mente. Pero

    cunado escribamos la ltima lnea del cdigo que implementa ese algoritmo y lo veamosfuncionando, obtendremos una gran satisfaccin. Una satisfaccin que slo puede entender

    otro programador.

    Pero como es de esperar, para iniciarse en este arte de escribir programas para

    computadoras, necesitar comprender correctamente una serie de conceptos, desarrollar la

    lgica de programacin, aprender un lenguaje de programacin y, sobre todo, mucha

  • 7/21/2019 Fundamentos de Programacion Texto Guia

    8/111

    prctica. Para ayudarle a alcanzar su objetivo, se ha organizado el texto de la siguiente

    manera:

    En el captulo 1 se exponen varios de los trminos bsicos relacionados con el

    almacenamiento de informacin en un computador y se dan a conocer cules son las

    herramientas necesarias para la creacin de nuestros propios programas, para operar sobre

    dicha informacin.

    En el captulo 2 se introduce a los algoritmos, conociendo su significado, necesidad y

    formas de representacin, todo esto con miras a utilizarlos como herramientas de apoyo en

    el desarrollo de software.

    Con el captulo 3 se empezar ya de lleno el desarrollo de la lgica de programacin,

    apoyndose en la elaboracin de algoritmos, principalmente en forma de diagramas de

    flujo. Aqu se estudian las diferentes estructuras e instrucciones que pueden aplicarse en un

    estilo de programacin estructurada, ya que ms adelante, en el captulo 4, se aprender la

    forma de codificar dichos algoritmos o diagramas de flujo en el lenguaje de programacinVisual C# y as poder visualizar las diferentes soluciones.

    Ya con conocimientos de un lenguaje de programacin, en el captulo 5 estudiar los

    procedimientos y las funciones, como mecanismos que permiten la reutilizacin de cdigo.

    Para finalizar el texto, en el captulo 6 se dan a conocer algunas de las estructuras de datos

    elementales, haciendo nfasis en los arreglos de una y dos dimensiones, y suimplementacin en el lenguaje C#.

  • 7/21/2019 Fundamentos de Programacion Texto Guia

    9/111

    CAPTULO 1

    CONCEPTOS BSICOS DE ALMACENAMIENTO DE

    INFORMACIN

    Mucho se habla de que la computadora est influyendo dentro de nuestra privacidad y

    sustituyendo mano de obra, creando desempleo, etc. Estos aspectos no pueden discutirse,

    sin conocer a fondo lo que es una computadora, pero a medida que se avanza en suconocimiento, es posible emitir un concepto inteligente. Hay que tener en cuenta que una

    computadora no puede hacer algo a menos que el ser humano le diga qu hacer. Debemos

    controlar la computadora y no ella a nosotros.

    Desde un punto de vista simple, una computadora procesa datos y los convierte en

    informacin significativa. Aunque a primera vista puedan parecer sinnimos datos e

    informacin, existe diferencia entre ellos. Los datos constan de hechos en bruto y figuras.

    La informacin, por otra parte, son datos procesados. La informacin tiene datos

    significativos; los datos en su forma original (en bruto) no. La figura 1 muestra el modelo

    fundamental de datos: los datos entran a la computadora (por una parte llamada entrada), la

    computadora procesa esos datos y la informacin significativa es el resultado (se presentan

    en una parte denominada salida).

    Figura 1.Datos e informacin.

    Los datos, por s mismos, no sirven para nada y no son tiles para las personas que los

    manipulan y necesitan tomar decisiones con ellos. Por ejemplo, el presidente de una

    Datos Computadora Informacin

    Entrada Proceso Salida

  • 7/21/2019 Fundamentos de Programacion Texto Guia

    10/111

    empresa no necesita un informe detallado de las nminas de los 2000 empleados de su

    empresa si lo que desea es estudiar las tendencias o proyecciones en el tiempo de las citadasnminas o sueldos. En su lugar, el presidente necesitar ms informacin significativa, tal

    como nminas totales por departamento, incrementos de la nmina durante el ao pasado,

    nmina media del empleado comparada con otras empresas de la misma lnea de negocios,

    etc. Una computadora que tenga almacenado un programa adecuado puede producir

    rpidamente la informacin que el presidente necesita a partir de los datos en bruto de la

    nmina.

    El programa es la fuerza conductora de cualquier tarea que hace una computadora. Un

    programa es una lista de instrucciones detalladas que indican a la computadora lo que ha de

    hacer. La computadora no puede hacer nada sin un programa. Es el trabajo del

    programador de escribir programas lo que influye en la computadora y tomar datos en bruto

    y transformarlos en informacin significativa para el usuario final, como puede ser el caso

    del presidente de la empresa, el objetivo final.

    Los programas modernos producen informacin en muchos formatos. Estos programasreproducen msica, charlan con otras computadoras a travs de lneas telefnicas o

    telfonos celulares y otros dispositivos externos. La salida se enva a la pantalla y a la

    impresora que constituyen los dispositivos ms usuales para el acceso a la computadora; es

    decir, los datos de entrada y los datos de salida pueden ser, realmente, cualquier cosa, texto,

    dibujos, sonidos, etc.

    Una computadora consta de dos partes bien diferenciadas, hardware y software. Elhardware consta de las partes fsicas, tangibles de la computadora. El software consta de

    programas, tambin llamados aplicaciones, que contienen instrucciones que la computadora

    ejecuta o corre.

    Una computadora necesita tanto del hardware como del software para poder ser usada real

    y prcticamente. El hardware de la computadora sin el software que le acompaa es como

    si tuviramos un libro con pginas en blanco. La portada, contraportada y las pginas

  • 7/21/2019 Fundamentos de Programacion Texto Guia

    11/111

    interiores constituyen el hardware del libro, pero el libro no es til sin ningn texto, el

    software.

    Otro trmino que suele utilizar al hablar de software es sistema, aunque la palabra sistema

    por s sola no tiene nada que ver son el software. Un sistema es un conjunto de elementos

    que interactan de alguna manera, como puede ser el sistema digestivo o el sistema solar.

    Otro ejemplo de sistema, son los sistemas de informacin, sin que esto tampoco implique

    un software. Por ejemplo, un sistema contable es un conjunto de mtodos y herramientas

    que permiten mantener la informacin sobre los movimientos econmicos y los bienes de

    una empresa, pero se pueden utilizar libros en papel para alcanzar el objetivo. Finalmente,

    un sistema de informacin basado en computadora es la implementacin con herramientas

    computacionales (programas y datos) de un sistema de informacin. Por lo tanto, como

    sinnimo de software podemos utilizar sistema de informacin basado en computadora.

    Por otro lado, los trminos programa y sistema suelen utilizarse indistintamente, pero no

    est bien, generalmente, podemos decir que un sistema es un grupo de programas que

    interactan para realizar ciertas tareas. Un programa es una unidad mucho ms pequea,independiente y sencilla que un sistema.

    Esta unidad de aprendizaje est dedicada exclusivamente al software, por lo que no se

    revisar la parte correspondiente al hardware, cuyo estudio se lleva a cabo en Fundamentos

    de Computacin. En las secciones siguientes de este captulo se explican algunos

    conceptos fundamentales para la creacin de su propio software.

    1.1. Unidades bsicas de informacin en un computador

    Bit.- Es la abreviatura de binary digit. Es una unidad de informacin que equivale a una

    decisin binaria, o la designacin de uno de dos valores o estados posibles igualmente

    probables. Se suele expresar como l o 0. Representa una unidad minscula de memoria

  • 7/21/2019 Fundamentos de Programacion Texto Guia

    12/111

    que puede tener dos estados encendido, o apagado, donde el estado encendido se representa

    mediante uno y el apagado mediante cero.

    Byte.- Es un conjunto de ocho BITS consecutivos que se tratan como una sola entidad.

    Tambin se le conoce como el nmero de BITS necesarios para representar un carcter en

    la memoria de la computadora.

    Campo.- Un campo es un espacio de almacenamiento para un dato en particular; es un

    grupo de caracteres que se pueden tratar como una unidad de informacin simple. En las

    bases de datos, un campo es la mnima unidad de informacin a la que se puede acceder; un

    campo o un conjunto de ellos forman un registro, donde pueden existir campos en blanco,

    siendo ste un error del sistema. En las hojas de clculo los campos son llamados celdas. La

    mayora de los campos tienen atributos asociados a ellos. Por ejemplo, algunos campos son

    numricos mientras otros almacenan texto, tambin vara el tamao de estos.

    Adicionalmente, cada campo tiene un nombre.

    Registro.-Es un conjunto de campos que se refieren a una misma actividad que se deseaprocesar; por ejemplo, toda la informacin sobre un artculo de inventario, la informacin

    que contiene una lista de clase sobre un estudiante (cdigo, nombres, direccin, etc.).

    Archivo.- Es una unidad de software utilizada para almacenar informacin en forma

    masiva, relacionada con una determinada entidad, persona o cosas. Ejemplo: suponga que

    la compaa A tiene 100 clientes y que se mantiene la siguiente informacin acerca de cada

    uno de ellos: nombre, direccin, balance de crdito, descuento permitido. La informacinindividual de cada cliente se denomina registro y un conjunto de registros formar un

    archivo, es decir, un archivo de datos de los registros de los clientes. Los archivos pueden

    tenerse en varias formas y en diferentes medios de almacenamiento.

    Base de datos.- Una base de datos o banco de datos es un conjunto de datos pertenecientes

    a un mismo contexto y almacenados sistemticamente para su posterior uso. En este

    sentido, una biblioteca puede considerarse una base de datos compuesta en su mayora por

  • 7/21/2019 Fundamentos de Programacion Texto Guia

    13/111

    documentos y textos impresos en papel e indexados para su consulta. En la actualidad, y

    debido al desarrollo tecnolgico de campos como la informtica y la electrnica, la mayorade las bases de datos estn en formato digital (electrnico), que ofrece un amplio rango de

    soluciones al problema de almacenar datos.

    Existen programas denominados sistemas de gestin de bases de datos, abreviado SGBD

    (DBMS), que permiten almacenar y posteriormente acceder a los datos de forma rpida y

    estructurada

    1.2. Terminologa bsica.

    Como ya se mencionaba antes, una computadora realizar las tareas que nosotros le

    indiquemos, pero para ello necesita de programas, por lo que surgen las preguntas: Quin

    hace esos programas? De qu estn compuestos los programas? Cmo los hacen? Estas

    dudas y otras se intentan responder en los prrafos siguientes.

    El programador.

    Un programador es, bsicamente, una persona que ejerce la programacin; es decir, que se

    dedica a escribir programas para computadoras. Los programadores tambin reciben el

    nombre de desarrolladores de software; tcnicamente podemos usar uno u otro trmino.

    El programador se encarga de implementar algoritmos mediante un lenguaje de

    programacin que pueda entender la computadora. Inicialmente, su funcin era resolver enforma particular los problemas de sistemas que surgan en las empresas, as como un

    mecnico cambia o repara partes defectuosas. Con el tiempo se fueron incorporando a su

    misin nuevas necesidades y tareas, hasta llegar al da de hoy, en que un programador o

    grupo de ellos se ocupa de realizar aplicaciones completas y generar soluciones

    empresariales y de otros tipos.

  • 7/21/2019 Fundamentos de Programacion Texto Guia

    14/111

    Programacin y lenguaje de programacin.

    La programacin, es la creacin de programas de computadora (cdigo mquina compilado

    o interpretado); esto es, generar un conjunto concreto de instrucciones que una

    computadora pueda ejecutar. El programa se escribe en un lenguaje de programacin,

    aunque tambin se puede escribir directamente en lenguaje mquina, con cierta dificultad.

    El lenguaje de programacin es un lenguaje que puede utilizarse para controlar el

    comportamiento de una mquina, particularmente, una computadora. Consiste de un

    conjunto de reglas sintcticas y semnticas que definen su estructura y el significado de sus

    elementos, respectivamente.

    Un lenguaje de programacin permite a un programador especificar de manera precisa

    sobre qu datos una computadora debe operar, cmo estos deben ser almacenados y

    transmitidos, y qu acciones debe tomar bajo una variada gama de circunstancias. Todo

    esto se realiza a travs de un lenguaje que intenta estar relativamente prximo al lenguaje

    humano o natural.

    Los principales tipos de lenguajes utilizados son tres:

    Lenguajes mquina.

    Lenguaje de bajo nivel (ensamblador).

    Lenguajes de alto nivel.

    Antes de continuar con estos tipos de lenguajes es necesario hablar de las instrucciones.

    Los diferentes pasos (acciones) de un algoritmo se expresan en los programas como

    instrucciones, sentencias o proposiciones (normalmente el trmino instruccin se suele

    referir a los lenguajes mquina y de bajo nivel, reservando la sentencia o proposicin para

    los lenguajes de alto nivel). Por consiguiente, un programa consta de una secuencia de

  • 7/21/2019 Fundamentos de Programacion Texto Guia

    15/111

    instrucciones, cada una de las cuales especifica ciertas operaciones que debe ejecutar la

    computadora.

    La elaboracin de un programa requerir conocer el juego o repertorio de instrucciones del

    lenguaje. Aunque ms adelante se analizarn con ms detalle las instrucciones,

    adelantaremos los tipos fundamentales de instrucciones que una computadora es capaz de

    manipular y ejecutar. Las instrucciones bsicas y comunes a casi todos los lenguajes de

    programacin se pueden condensar en cuatro grupos:

    Instrucciones de entrada/salida. Instrucciones de transferencia de datos e informacin

    entre dispositivos perifricos (teclado, impresora, unidad de disco, etc.) y la memoria

    central.

    Instrucciones aritmtico-lgicas. Instrucciones que ejecutan operaciones aritmticas

    (suma, resta, multiplicacin, divisin, potenciacin), lgicas (operaciones and, or ,not,

    etc.).

    Instrucciones selectivas. Instrucciones que permiten la seleccin de tareas alternativas

    en funcin de los resultados de diferentes expresiones condicionales.

    Instrucciones repetitivas. Instrucciones que permiten la repeticin de secuencias de

    instrucciones un nmero determinado de veces.

    Lenguajes mquina.- Los lenguajes mquina son aquellos que estn escritos en lenguajesdirectamente inteligibles por la mquina (computadora), ya que sus instrucciones son

    cadenas binarias (cadenas o series de caracteres-dgitos- O y 1) que especifican una

    operacin, y las posiciones (direccin) de memoria implicadas en la operacin se

    denominan instrucciones de mquina o cdigo mquina. El cdigo mquina es el conocido

    cdigo binario.

  • 7/21/2019 Fundamentos de Programacion Texto Guia

    16/111

    Las instrucciones en lenguaje mquina dependen del hardware de la computadora y, por

    tanto, diferirn de una computadora a otra. El lenguaje mquina de un PC (computadorapersonal) ser diferente de un sistema HP (Hewlett Packard), Compaq o un sistema de

    IBM.

    Las ventajas de programar en lenguaje mquina son la posibilidad de cargar (transferir un

    programa a la memoria) sin necesidad de traduccin posterior, lo que supone una velocidad

    de ejecucin superior a cualquier otro lenguaje de programacin.

    Los inconvenientes -en la actualidad- superan a las ventajas, lo que hace prcticamente no

    recomendables los lenguajes mquina. Estos inconvenientes son:

    Dificultad y lentitud en la codificacin.

    Poca fiabilidad.

    Dificultad grande de verificar y poner a punto los programas.

    Los programas slo son ejecutables en el mismo procesador (CPU, Unidad Central de

    Proceso).

    Para evitar los lenguajes mquina, desde el punto de vista del usuario, se han creado otros

    lenguajes que permiten escribir programas con instrucciones similares al lenguaje humano

    (por desgracia casi siempre ingls, aunque existen raras excepciones). Estos lenguajes se

    denominan de alto y bajo nivel.

    Lenguajes de bajo nivel.- Los lenguajes de bajo nivel son ms fciles de utilizar que loslenguajes mquina, pero, al igual, que ellos, dependen de la mquina en particular. El

    lenguaje de bajo nivel por excelencia es el ensamblador (assembly languaje). Las

    instrucciones en lenguaje ensamblador son instrucciones conocidas como nernotcnicos.

    Por ejemplo, nemotcnicos tpicos de operaciones aritmticas son: en ingls, ADD, SUB,

    DIV, etc.; en espaol, SUM, RES, DIV, etc.

    Una instruccin tpica de suma sera:ADD M, N, P

  • 7/21/2019 Fundamentos de Programacion Texto Guia

    17/111

    Esta instruccin poda significar: sumar el nmero contenido en la posicin de memoria M

    al nmero almacenado en la posicin de memoria N y situar el resultado en la posicin dememoria P. Evidentemente,es mucho ms sencillo recordar la instruccin anterior con un

    nemotcnico que su equivalente en cdigo mquina:

    0110 1001 1010 1011

    Un programa escrito en lenguaje ensamblador no puede ser ejecutado directamente por la

    computadora-en esto se diferencia esencialmente del lenguaje mquina-, sino que requiere

    una fase de traduccin al lenguaje mquina.

    El programa original escrito en lenguaje ensamblador se denomina programa fuente y el

    programa traducido en lenguaje mquina se conoce como programa objeto, ya directamente

    inteligible por la computadora.

    El traductor de programas fuente a objeto es un programa llamado ensamblador

    (assembler),existente en casi todas las computadoras (figura 2).

    Figura 2.Programa ensamblador

    No se debe confundir -aunque en espaol adoptan el mismo nombre- el programa

    ensamblador(assembler), encargado de efectuar la traduccin del programa fuente escrito a

    lenguaje mquina, con el lenguaje ensamblador (assemblylanguaje), lenguaje de

    programacin con una estructura y gramtica definidas.

    Los lenguajes ensambladores presentan la ventaja frente a los lenguajes mquina de su

    mayor facilidad de codificacin y, en general, su velocidad de clculo.

    Programa fuente enLenguaje ensamblador

    (assembly)

    ProgramaENSAMBLADOR

    (assembler)

    Programa objeto encdigo mquina

  • 7/21/2019 Fundamentos de Programacion Texto Guia

    18/111

    Los inconvenientes ms notables de los lenguajes ensambladores son:

    Dependencia total de la mquina, lo que impide la transportabilidad de los programas

    (posibilidad de ejecutar un programa en diferentes mquinas). El lenguaje ensamblador

    del PC es distinto del lenguaje ensamblador del Apple Macintosh.

    La formacin de los programas es ms compleja que la correspondiente a los

    programadores de alto nivel, ya que exige no slo las tcnicas de programacin, sino

    tambin el conocimiento del interior de la mquina.

    Hoy da los lenguajes ensambladores tiene sus aplicaciones muy reducidas en la

    programacin de aplicaciones y se centran en aplicaciones de tiempo real, control de

    procesos y de dispositivos electrnicos,etc.

    Lenguajes de alto nivel.- Los lenguajes de alto nivel son los ms utilizados por los

    programadores. Estn diseados para que las personas escriban y entiendan los programasde un modo mucho ms fcil que los lenguajes mquina y ensambladores. Otra razn es

    que un programa escrito en lenguaje de alto nivel es independiente de la mquina; esto es,

    las instrucciones del programa de la computadora no dependen del diseo del hardware o

    de una computadora en particular. En consecuencia, los programas escritos en lenguaje

    de alto nivel son portables o transportables, lo que significa la posibilidad de poder ser

    ejecutados con poca o ninguna modificacin en diferentes tipos de computadoras; al

    contrario que los programas en lenguaje mquina o ensamblador, que slo se puedenejecutar en un determinado tipo de computadora.

    Los lenguajes de alto nivel presentan las siguientes ventajas:

    El tiempo de formacin de los programadores es relativamente corto comparado con

    otros lenguajes.

  • 7/21/2019 Fundamentos de Programacion Texto Guia

    19/111

    La escritura de programas se basa en reglas sintcticas similares a los lenguajes

    humanos. Nombres de las instrucciones, tales como READ, WRITE, CLEAR, etc.

    Las modificaciones y puestas a punto de los programas son ms fciles.

    Reduccin del coste de los programas.

    Transportabilidad.

    Los inconvenientes se concretan en:

    Incremento del tiempo de puesta a punto, al necesitarse diferentes traducciones del

    programa fuente para conseguir el programa definitivo.

    No se aprovechan los recursos internos de la mquina, que se explotan mucho mejor en

    lenguajes mquina y ensambladores.

    Aumento de la ocupacin de memoria.

    El tiempo de ejecucin de los programas es mucho mayor.

    Al igual que sucede con los lenguajes ensambladores, los programas fuente tienen que ser

    traducidos por los programas traductores, llamados en este caso compiladores e intrpretes.

    Los lenguajes de programacin de alto nivel existentes hoy son muy numerosos. Algunos

    ejemplos son: C/C++, Java, Visual BASIC, C#, PHP, JavaScript.

    Traductores de lenguaje

    Los traductores de lenguaje son programas que traducen a su vez los programas fuente

    escritos en lenguajes de alto nivel a cdigo mquina.

  • 7/21/2019 Fundamentos de Programacion Texto Guia

    20/111

    Los traductores se dividen en:

    Compiladores.

    Intrpretes.

    Compilador.- Un compilador es un programa informtico que traduce un programa escrito

    en un lenguaje de programacin a otro lenguaje de programacin, generando un programa

    equivalente que la mquina ser capaz de interpretar. Usualmente el segundo lenguaje es

    lenguaje de mquina, pero tambin puede ser simplemente texto. Este proceso de

    traduccin se conoce como compilacin.

    Un compilador es un programa que permite traducir el cdigo fuente de un programa en

    lenguaje de alto nivel, a otro lenguaje de nivel inferior (tpicamente lenguaje de mquina).

    De esta manera un programador puede disear un programa en un lenguaje mucho ms

    cercano a cmo piensa un ser humano, para luego compilarlo a un programa ms manejable

    por una computadora.

    Intrprete o interpretador.- Intrprete o interpretador es un programa informtico capaz

    de analizar y ejecutar otros programas, escritos en un lenguaje de alto nivel. Los intrpretes

    se diferencian de los compiladores en que mientras estos traducen un programa desde su

    descripcin en un lenguaje de programacin al cdigo de mquina del sistema, los primeros

    (los intrpretes) slo realizan la traduccin a medida que sea necesaria, tpicamente,

    instruccin por instruccin, y normalmente no guardan el resultado de dicha traduccin.

    Usando un intrprete, un solo archivo fuente puede producir resultados iguales incluso en

    sistemas sumamente diferentes (ej. una PC y un PlayStation 3). Usando un compilador, un

    solo archivo fuente puede producir resultados iguales solo si es compilado a distintos

    ejecutables especficos a cada sistema.

  • 7/21/2019 Fundamentos de Programacion Texto Guia

    21/111

    Los programas interpretados suelen ser ms lentos que los compilados debido a la

    necesidad de traducir el programa mientras se ejecuta, pero a cambio son ms flexiblescomo entornos de programacin y depuracin (lo que se traduce, por ejemplo, en una

    mayor facilidad para reemplazar partes enteras del programa o aadir mdulos

    completamente nuevos), y permiten ofrecer al programa interpretado un entorno no

    dependiente de la mquina donde se ejecuta el intrprete, sino del propio intrprete (lo que

    se conoce comnmente como mquina virtual).

    Comparando su actuacin con la de un ser humano, un compilador equivale a un traductor

    profesional que, a partir de un texto, prepara otro independiente traducido a otra lengua,

    mientras que un intrprete corresponde al intrprete humano, que traduce de viva voz las

    palabras que oye, sin dejar constancia por escrito.

    A manera de resumen, y en trminos generales, podemos decir que el programa escrito en

    un lenguaje de alto nivel se introduce en la mquina con un editor y se llama cdigo fuente;

    el compilador lo traduce en lenguaje mquina y almacena el resultado en otro archivo

    llamado cdigo objeto. El cdigo objeto se carga en la memoria principal de lacomputadora y lo ejecuta el CPU.

    1.3. Tipos bsicos de informacin que maneja el computador

    Los principales tipos de informacin, entre otros, que se manejan en una computadora son:

    Numrica:es toda aquella informacin con o sin decimales (entera o real) con la cual sepueden hacer clculos aritmticos o matemticos.

    Caracteres (alfanumrica):muchos procesos o programas no slo requieren de la

    manipulacin de valores numricos, sino tambin de letras y smbolos especiales con

    los cuales, lgicamente, no se pueden efectuar operaciones de clculo matemtico. Por

    ejemplo: los nombres de personas.

  • 7/21/2019 Fundamentos de Programacion Texto Guia

    22/111

    Lgica (booleana):Este tipo de informacin slo tiene dos posibles valores: falso o

    verdadero. Al igual que el tipo de informacin anterior, ste tampoco puede serutilizado para efectuar clculos matemticos.

    1.4. Forma interna de almacenamiento

    Con el propsito de almacenar datos, una computadora consta de pequeos circuitos

    electrnicos capaces de almacenar un bit. Estos circuitos son como pequeos interruptores

    de luz que pueden estar en dos estados; uno para encendido y otro para apagado.

    La memoria central o simplemente memoria (interna o principal) se utiliza para almacenar

    informacin. Se divide a su vez en memoria RAM y memoria ROM. La memoria RAM

    (Random Access Memory) es normalmente voltil, lo que significa que todo cuanto se

    almacena o guarda en ella se pierde cuando se apaga la computadora. En general, la

    informacin almacenada en memoria puede ser de dos tipos: las instrucciones de un

    programa y los datos con los que operan las instrucciones. Por ejemplo, para que un

    programa se pueda ejecutar, debe ser situado en la memoria central, en una operacin

    denominada carga del programa. Despus, cuando se ejecuta el programa, cualquier dato a

    procesar por el programa se debe llevar a la memoria mediante las instrucciones del

    programa. En la memoria central hay tambin datos diversos y espacio de almacenamiento

    temporal que necesita el programa cuando se ejecuta con el fin de poder funcionar. Los

    programas y datos se almacenan en RAM mientras se est utilizando la computadora.

    Con el objetivo de que el procesador pueda obtener los datos de la memoria central msrpidamente, la mayora de los procesadores actuales utilizan con frecuencia una memoria

    denominada cach, que sirve para almacenamiento intermedio de datos entre el procesador

    y la memoria principal. La memoria cach se incorpora casi siempre al procesador.

    La memoria central de una computadora es una zona de almacenamiento organizada en

    centenares de millones de unidades de almacenamiento individual o celdas. La memoria

    central consta de un conjunto de celdas de memoria (estas celdas o posiciones de memoria

  • 7/21/2019 Fundamentos de Programacion Texto Guia

    23/111

    se denominan tambin palabras, aunque no guardan analoga con las palabras del lenguaje).

    El nmero de celdas de memoria de la memoria central, dependiendo del tipo y modelo decomputadora, hoy en da, suele ser millones o miles de millones. Cada celda de memoria

    consta de un cierto nmero de bits (normalmente 8, un byte).

    La unidad elemental de memoria se llama byte (octeto), y como se ya se explicaba en un

    apartado anterior, tiene la capacidad de almacenar un carcter de informacin, y est

    formado por un conjunto de unidades ms pequeas de almacenamiento denominadas bits,

    que son dgitos binarios (0 o 1).

    Direcciones de memoria.

    Existen dos conceptos importantes asociados a cada celda o posicin de memoria: su

    direccin y su contenido. Cada celda o byte tiene asociada una nica direccin que indica

    su posicin relativa en memoria y mediante la cual se puede acceder a la posicin para

    almacenar o recuperar informacin. La informacin almacenada en una posicin de

    memoria es su contenido. La figura 3 muestra una memoria de computadora que consta de1000 posiciones con direcciones de 0 a 999. El contenido de estas direcciones o posiciones

    de memoria se llaman palabras, de modo que existen palabras de 8, 16, 32 y 64 bits. Por

    consiguiente, si trabaja con una mquina de 32 bits, significa que en cada posicin de

    memoria de su computadora puede alojar 32 bits, es decir 32 dgitos, bien ceros o unos.

    Siempre que una nueva informacin se almacena en una posicin, se destruye (desaparece)

    cualquier informacin que en ella hubiera y no se puede recuperar. La direccin espermanente y nica, el contenido puede cambiar mientras se ejecuta un programa.

    La memoria central de una computadora puede tener desde unos centenares de millares de

    butes hasta millones de bytes. Como el byte es una unidad elemental de almacenamiento,

    se utilizan mltiplos para definir el tamao de la memoria central (Kilobyte, Megabyte,

    Gigabyte, Terabyte)

  • 7/21/2019 Fundamentos de Programacion Texto Guia

    24/111

    Direcciones Contenido

    999998

    997 01000001 A

    .

    .

    .

    3

    2 00000101 5

    1 00000011 3

    0 00000010 2

    Figura 3.Memoria central de una computadora

    1.5. Tipos de campos

    Para que una computadora pueda hacer clculos debe tener almacenados en la memoria

    principal los valores con los cuales ha de trabajar; por lo tanto, se necesita un espacio

    interno para guardar esos valores en forma temporal.

    Esos espacios internos de la memoria son grupos de bits denominados campos; a stos se

    les asigna una nica direccin de memoria y su capacidad o valor mximo que se puede

    almacenar en ellos depender del tamao del grupo.

    Los campos pueden ser de dos clases: variables y constantes.

    Campos variables.

    Son todos aquellos campos que permiten que el contenido almacenado en el espacio de

    memoria asignado, pueda ser alterado en el transcurso de la ejecucin del programa; o sea,

    en un momento tiene un valor y ms adelante puede tener otro distinto, pero nunca ms de

  • 7/21/2019 Fundamentos de Programacion Texto Guia

    25/111

    un valor al mismo tiempo. Esta clase de campos, que en lo sucesivo se denominarn

    simplemente variables, se identifican por un nombre con el cual actan durante todo eltranscurso del proceso, por lo tanto, deben ser nicos. El nombre dado a la variable

    constituye un IDENTIFICADOR, y debe iniciar con una letra seguida, si se quiere, de

    letras o dgitos. Es el programador quien da nombre a sus variables teniendo en cuenta la

    regla anterior.

    Ejemplos de nombres de variables:

    A B1 C1AZ NOMBRE SALARIOHORA

    Es buena prctica de programacin utilizar nombres de variables significativas

    (nemotcnicas), es decir, que sugieran lo que ellas representan, ya que esto hace que el

    algoritmo, y por ende el programa, sea ms legible y fcil de comprender.

    Si se quiere dar nombre a una variable que va a almacenar un pago, por ejemplo,

    perfectamente lo podemos llamar K, pero sera ms evidente si la denominamos PAG oms directamente PAGO. Tampoco estos nombres deben ser tan excesivamente largos

    debido a que dificultan la escritura del algoritmo.

    Al momento de dar el nombre a las variables tampoco se pueden emplear las palabras

    reservadas (propias de cada lenguaje de programacin) pues tienen un sentido definido,

    como por ejemplo if, while, else, switch, etc.

    Para que una variable est perfectamente definida, habr que especificar: su nombre, el tipo

    de dato (numricos, alfanumrico, booleano) y el valor que va tomar en un principio

    (inicializacin).

  • 7/21/2019 Fundamentos de Programacion Texto Guia

    26/111

    Campos constantes.

    Es otra forma de manejar el grupo de elementos asignados en memoria, pero que a

    diferencia de las variables su contenido no puede cambiar durante el proceso. Esta clase de

    campos se identifica directamente por la informacin que tiene almacenada y es asignada

    desde el momento en que se hace la compilacin. Pueden existir campos constantes, o

    simplemente constantes, de tipo numrico, carcter o lgico. Por ejemplo:

    40,6 ANAISABEL -10 .V.

    Ejercicios propuestos

    1. Con sus propias palabras, explique cada uno de los siguientes trminos. Si es

    necesario consulte otras fuentes.

    Informtica

    Computacin

    Ingeniera de Sistemas

    Dato

    Informacin

    Sistema

    Sistema de informacin

    Programa

    Lenguaje de programacin Instruccin

    Cdigo fuente

    Cdigo (programa) objeto

    Lenguaje mquina

    Lenguaje ensamblador

    Traductor

    Compilador

  • 7/21/2019 Fundamentos de Programacion Texto Guia

    27/111

    Intrprete

    Ensamblador Editor

    Campo

    Registro

    Archivo

    Base de datos

    Variable

    Constante

    Direccin de memoria

    Bit

    Byte

    2. Qu tipos de datos se conoce? Escribir una breve descripcin y cinco ejemplos de

    cada uno de ellos.

    3. Cul es la diferencia existente entre variables y constantes?

    4.

    Hablar sobre los componentes de una variable5.

    Indicar cules de los siguientes identificadores son vlidos o no, explicando el porque

    de su afirmacin:

    a)YROJO

    b) X-ROJO

    c) 2blanco

    d) N/4

    e) Promedio

    f) Suma *10

    g) Total suma

    h) Nmero_alumnos

    i) X$

    j) _alumnos

    k) x1_y3

  • 7/21/2019 Fundamentos de Programacion Texto Guia

    28/111

    l) Promedio_Notas

    6. Determinar cules de las siguientes constantes son vlidas o no, indicando

    el porqu de su afirmacin;

    a) 123

    b) 12.4

    c) 0.1234

    d)Verdaderoe) Falso

    f) a

    g) Ab

    h) Buenos das!&%$.

    i) *

    j) @

    k) 3.141592l) 0.00001

  • 7/21/2019 Fundamentos de Programacion Texto Guia

    29/111

    CAPTULO 2

    ALGORITMOS

    2.1. Problemas y modelos

    Una gran parte del trabajo del programador es precisamente saber qu problema se va a

    resolver. Al abordar los problemas, por lo general, stos no tienen una especificacinsimple y precisa de ellos. De hecho, problemas como crear una receta digna de un

    gastrnomo o preservar la paz mundial pueden ser imposibles de formular de manera que

    admitan una solucin por computador; aunque se crea que el problema puede resolverse en

    un computador, es usual que la distancia entre varios de sus parmetros sea considerable.

    A menudos slo mediante experimentacin es posible encontrar valores razonables para

    estos parmetros.

    Si es posible expresar ciertos aspectos de un problema con un modelo formal, por lo

    general resulta beneficioso hacerlo, pues una vez que el problema se formaliza, pueden

    buscarse soluciones en funcin de un modelo preciso y determinar si ya existe un programa

    que resuelve tal problema; aun cuando no sea tal el caso, ser posible averiguar lo que se

    sabe acerca del modelo y usar sus propiedades como ayuda para elaborar una buena

    solucin.

    Se puede recurrir a casi cualquier rama de las matemticas y de las ciencias para obtener un

    modelo de cierto tipo de problemas. En el caso de problemas de naturaleza esencialmente

    numrica, esto puede lograrse a travs de conceptos matemticos tan familiares como las

    ecuaciones lineales. Tratndose de problemas de procesamiento de smbolos y textos, se

    pueden construir modelos con cadenas de caracteres.

  • 7/21/2019 Fundamentos de Programacion Texto Guia

    30/111

    Cuando ya se cuenta con un modelo matemtico adecuado del problema, puede buscarse

    una solucin en funcin de ese modelo. El objetivo inicial consiste en hallar una solucinen forma de algoritmo. Posteriormente, este algoritmo puede ser implementado en algn

    lenguaje de programacin obtenindose un programa que resuelve nuestro problema

    planteado.

    2.2. Pasos para la solucin de un problema a travs del computador

    Resumiendo lo sealado en el apartado anterior, el proceso de resolucin de un problema

    con una computadora conduce a la escritura de un programa y a su ejecucin en la misma.

    Aunque el proceso de disear programas es esencialmente- un proceso creativo, se puede

    considerar una seria de fases o pasos comunes, que generalmente deben seguir los

    programadores.

    Las fases de resolucin de un problema con computadora son:

    Anlisis: el problema se analiza teniendo presente la especificacin de los requisitos

    dados por el cliente o por la persona que encarga el problema. Esta fase requiere una

    clara definicin, donde se contemple exactamente lo que debe hacer el programa y el

    resultado o solucin deseada.

    Diseo: una vez analizado el problema, se disea una solucin que conducir a un

    algoritmo que resuelva el problema (diseo del algoritmo); es decir, cmo el programa

    resolver la tarea solicitada. Tenga presente que el diseo del algoritmo esindependiente del lenguaje de programacin.

    Codificacin (implementacin): la solucin se escribe en la sintaxis del lenguaje de

    alto nivel y se obtiene un programa. Es altamente recomendable acompaar la

    codificacin de una documentacin interna; es decir, incluir dentro del cdigo

    comentarios que ayuden a la comprensin del mismo. El programa no los necesita y

  • 7/21/2019 Fundamentos de Programacion Texto Guia

    31/111

    sern ignorados, pero sirven para hacer los programas ms fciles de comprender.

    Recuerde que como programador debe escribir cdigos sencillos.

    Compilacin, ejecucin, verificacin y depuracin: el programa se ejecuta, se

    comprueba rigurosamente y se eliminan todos los errores (bugs) que puedan aparecer.

    Cuando ejecuta el programa se pueden producir tres tipos de errores: de compilacin

    (uso incorrecto de las reglas del lenguaje), de ejecucin (instrucciones que la

    computadora puede comprender pero no ejecutar) y lgicos (se producen en la lgica

    del programa y la fuente del error suele ser el algoritmo).

    Mantenimiento: el programa se actualiza y modifica cada vez que sea necesario, de

    modo que se cumplan todas las necesidades de cambio de sus usuarios.

    Documentacin: escritura de las diferentes fases del ciclo de vida del software,

    esencialmente el anlisis, diseo y codificacin, unidos a manuales de usuario y de

    referencia, as como normas para el mantenimiento.

    2.3. Algoritmos

    Si se analizan los pasos para la solucin de un problema a travs de la computadora se nota

    que el algoritmo es bastante importante, y a l se debe llegar cuando se ha entendido el

    problema y se ha hecho un anlisis correcto de las caractersticas de ste.

    Es comn ver estudiantes que por ligereza omiten uno o varios pasos y luego se dan cuentade que han invertido su tiempo en lo equivocado, porque no han verificado si lo que estn

    haciendo es correcto o no.

    Si no se est seguro de la implementacin de uno o algunos de los pasos, es preferible pedir

    ayuda especializada para aclarar las dudas que surjan.

  • 7/21/2019 Fundamentos de Programacion Texto Guia

    32/111

    La palabra algoritmo es muy antigua; toma su nombre del famoso matemtico y astrnomo

    rabe Alkhwarzmi (siglo IX), quien escribi un tratado sobre manipulacin de nmeros yecuaciones

    Segn el diccionario, un algoritmo es un conjunto ordenado de operaciones matemticas

    que permiten hallar la solucin de un problema.

    Un algoritmo es un conjunto concreto de pasos o acciones que se deben realizar

    ordenadamente para llegar a un fin determinado (solucin de un problema, obtencin de

    una respuesta intermedia o realizacin de una tarea) de cualquier problema.

    Ahora que se conoce la definicin de algoritmo, se puede redefinir el trmino programa

    como la implementacin de un algoritmo determinado en un lenguaje de programacin. El

    conocimiento del concepto de algoritmo es fundamental para todo programador ya que, en

    la tarea diaria de escribir programas para resolver problemas, antes debemos discutir y

    entender cul es el algoritmo que los resuelve. Muchas veces, como programadores, nos

    encontraremos siguiendo los pasos de un algoritmo con lpiz y papel para entender sufuncionamiento o probar su eficacia.

    Caractersticas de los algoritmos.

    Las caractersticas fundamentales que de un algoritmo son:

    Entrada. La entrada hace referencia a la informacin proporcionada al algoritmo, la

    cual debe sufrir un proceso para obtener los resultados. Un algoritmo tiene cero o ms

    datos de entrada. Estos valores le son dados por medio de una instruccin o mandato

    que se debe cumplir al ejecutarse el algoritmo. Si no existen datos de entrada es porque

    una o ms instrucciones generan los valores de partida, de los que har uso el algoritmo

    para producir los datos o valores de salida.

  • 7/21/2019 Fundamentos de Programacion Texto Guia

    33/111

    Salida. Todo algoritmo debe proporcionar uno o ms valores como resultado, una vez

    se ha ejecutado la secuencia de pasos que lo conforman.La salida es la respuesta dadapor el algoritmo o el conjunto de valores que el programador espera se le

    proporcionen.Estos resultados pueden ser de cualquier tipo: uno o ms valores

    numricos, valores lgicos o caracteres, etc. La facilidad o complejidad de un algoritmo

    no la determinan la cantidad de datos que se desean obtener. Un algoritmo puede tener

    un alto grado de complejidad y, sin embargo, producir un solo valor como resultado.

    Limitado o finito.Todo algoritmo debe tener un nmero de instrucciones que limitan el

    proceso en algn momento; es decir, la ejecucin debe detenerse. No puede existir un

    algoritmo, por muy grande que sea o por muchos resultados que produzca, que se quede

    en forma indefinida ejecutando sus instrucciones o repitiendo la ejecucin de un

    subconjunto de ellas.

    Claridad (preciso).Todo el conjunto de pasos debe ser entendible y factible de realizar,

    de tal manera, que al hacer un seguimiento del algoritmo ste produzca siempre los

    resultados requeridos. No puede entonces existir incertidumbre en las acciones a tomarcuando se sigue la lgica (flujo del programa) del algoritmo.

    Eficacia. Los pasos del algoritmo deben ser suficientes para lograr el cometido del

    algoritmo, es decir, el algoritmo debe ser eficaz.

    Formas de representacin.

    Como los algoritmos no estn relacionados nicamente con la programacin de

    computadoras, es necesario contar con mtodos independientes para expresarlos y, por lo

    tanto, transmitirlos a otras personas. En la actualidad existen varias formas de expresar un

    algoritmo, como son, el lenguaje natural, el pseudocdigo, los diagramas de flujo, algunos

    diagramas del lenguaje de modelado UML, etc.

  • 7/21/2019 Fundamentos de Programacion Texto Guia

    34/111

    Descripcin narrada. Es la descripcin normal de un algoritmo, utilizando el lenguaje

    natural de las personas, sin utilizar ninguna tcnica previamente definida.

    Ejemplo:Enumerar los pasos para calcular suma de dos nmeros.

    1. Inicio.

    2. Obtener (leer) el primer y el segundo nmero.

    3. Sumar los dos nmeros.

    4. Almacenar (asignar) el resultado anterior en la variable suma.

    5. Presentar (mostrar) el valor de la suma.

    6. Fin

    Diagrama de flujo. Es la representacin de un algoritmo utilizando un conjunto de

    figuras geomtricas (rombos, cuadrados, rectngulos, crculos, etc.) unidas y

    relacionadas por medio de segmentos de recta, con flechas que determinan el orden

    lgico de un algoritmo, en donde la forma de una figura geomtrica indica la accin a

    seguir.

    Figura 4. Smbolos de un diagrama de flujo.

    Inicio / fin

    Entrada de datos

    Proceso

    Pantalla

    Impresora

    Decisin

    Conector

  • 7/21/2019 Fundamentos de Programacion Texto Guia

    35/111

    Los smbolos o bloques para diagramar existen en gran cantidad y de diversas formas.

    En la figura 4, se exponen algunos de ellos.

    Ejemplo: Elaborar un diagrama de flujo para calcular la suma de dos nmeros.

    Pseudocdigo. Consiste en una serie de normas sintcticas y gramaticales, parecidas a

    las de un lenguaje de programacin, pero sin tanta rigidez, y con cierta libertad en el

    uso y en la combinacin de las palabras.

    Ejemplo: Disear un algoritmo utilizando pseudocdigos para calcular suma de dos

    nmeros.

    Inicio

    Entero N1, N2, SUMA;

    Leer N1;

    Leer N2;

    SUMA = N1 + N2;

    Escribir SUMA;

    Fin

    Inicio

    N1, N2

    SUMA = N1 + N2

    SUMA

    Fin

  • 7/21/2019 Fundamentos de Programacion Texto Guia

    36/111

    2.4. Valor de los smbolos en un modelo algortmico

    Hasta debe estar clara la importancia de los algoritmos en la resolucin de problemas a

    travs de una computadora, pero como habr podido observar en los ejemplos anteriores, en

    un algoritmo aparecen diferentes smbolos (las variables, por ejemplo), por lo que en esta

    seccin nos ocuparemos de ellos, de su significado y cmo utilizarlos.

    Datos y tipos de datos.

    El primer objetivo de toda computadora es el manejo de datos e informacin. Estos datos

    pueden ser las cifras de ventas de un supermercado o sus calificaciones de clase. La

    mayora de las computadoras pueden trabajar con varios tipos (modos) de datos. Los

    algoritmos y programas correspondientes operan sobre estos tipos de datos.

    La accin de las instrucciones ejecutables de las computadoras se reflejan en cambios en

    los valores de las partidas de datos. Los datos de entrada se transforman por el programa,

    despus de las etapas intermedias, en datos de salida.

    En el proceso de resolucin de problemas el diseo de la estructura de datos es tan

    importante como el diseo del algoritmo y del programa que se basa en el mismo.

    Existen dos tipos de datos. Simples (sin estructura) y compuestos (estructurados). Los

    datos estructurados se estudian en el captulo 6 y son conjuntos de partidas de datos simples

    con relaciones definidas entre ellos.

    Los distintos tipos de datos se representan en diferentes formas en la computadora. A nivel

    de mquina, un dato es un conjunto o secuencia de bits. Los lenguajes de alto nivel

    permiten basarse en abstracciones e ignorar los detalles de la representacin interna.

    Aparece el concepto de tipo de datos, as como su representacin. Los tipos de datos

    simples son los siguientes:

  • 7/21/2019 Fundamentos de Programacion Texto Guia

    37/111

    Datos numricos. Es el conjunto de valores numricos. Estos pueden representarse en

    dos formas distintas:

    Numrico entero (int, integer). Es un subconjunto finito de los nmeros

    enteros (negativos, cero, positivos). Ejemplos: 5, 0, -10, 1234, -9876.

    El entero mximo y mnimo que se puede representar depende de la cantidad de

    bits (o de bytes) que se utilicen (tamao), as (tabla 1):

    Tamao

    (bits)

    Rango de valores

    Sin signo Con signo

    8 0 a 255 -128 a +127

    16 0 a 65535 -32768 a +32767

    32 0 a 4294967295 -2147483648 a +2147483647

    Tabla 1. Tipo de datos enteros.

    Por ejemplo, si necesita una variable para guardar la edad de una persona

    bastar con utilizar un tipo de dato entero de 8 bits, pero si necesita ingresar su

    sueldo debera cambiar a una de 16 bits.

    Numrico real (punto flotante). El tipo real consiste en un subconjunto de los

    nmeros reales. Los nmeros reales siempre tienen un punto decimal y pueden

    ser positivos o negativos. Un nmero real consta de un entero y una partedecimal. Los siguientes ejemplos son nmeros reales: 0.05; 3.1416; -12.0;

    3456.0; -2.71828.

    Otra forma de representar los nmeros reales es la notacin exponencial o

    cientfica y se utiliza para nmeros muy grandes o muy pequeos. Ejemplos:

    0.00045 = 0.45 x 10-3 = 0.45E-3

  • 7/21/2019 Fundamentos de Programacion Texto Guia

    38/111

    -2345678 = -0.2345678 x 107= - 0.2345678E+7

    Los tipos de datos reales a su vez pueden clasificarse en dos, como se puede

    apreciar en la tabla 2:

    TipoTamao

    (bits)Intervalo aproximado

    Simple 32 -3.4 10 a +3.4 10

    Doble 64 5,0 10 a 1,7 10

    Tabla 2.Tipos de datos reales.

    Datos tipo carcter y texto (cadena). Los datos de tipo carcter contienen un solo

    carcter, que puede ser:

    Las letras del alfabeto de la A-a a la Z-z.

    Los dgitos del 0 al 9.

    Caracteres especiales como: +, -, *, /, %, etc.

    Los datos de tipo carcter se representan en muchos lenguajes de programacin

    comenzando y terminando con el apstrofe ( ) de la siguiente manera: A, 7, $,

    etc.

    Una cadena de caracteres es una sucesin de caracteres que se encuentran delimitadospor un apstrofe o por comillas dobles, segn el tipo de lenguaje de programacin. La

    longitud de una cadena de caracteres es el nmero de ellos comprendidos entre los

    separadores o limitadores. Ejemplos: DIOS; SER COMO EL AGUIL.; ; .

    Lgicos. El tipo lgico tambin denominado booleano- es aquel que slo puede tomar

    uno de dos valores: verdadero (true) o falso (false). Este tipo de datos se utiliza para

    representar alternativas (si/no) a determinadas condiciones.

  • 7/21/2019 Fundamentos de Programacion Texto Guia

    39/111

    Operadores y expresiones.

    Todos los smbolos que representan enlaces entre cada uno de los argumentos (operandos)

    que intervienen en una operacin se llaman operadores, y se utilizan para construir

    expresiones.

    Las expresiones son combinaciones de constantes, variables, operadores, parntesis y

    nombres de funciones especiales. Las mismas ideas son utilizadas en notacin matemtica

    tradicional; por ejemplo: * r2.

    Cada expresin toma un valor que se determina tomando los valores de las variables y

    constantes implicadas y la ejecucin de las operaciones indicadas.

    Los operadores pueden ser:

    Aritmticos. Para tratar los nmeros se utilizan operadores aritmticos, que, junto conlas variables numricas forman expresiones aritmticas. La tabla 3 resume los

    operadores aritmticos:

    Smbolo Significado

    + Suma

    - Resta

    * Multiplicacin/ Divisin (real)

    ^ Potenciacin

    DIV ( \ ) Divisin (entera)

    MOD ( % ) Resto de la divisin

    Tabla 3.Operadores aritmticos.

  • 7/21/2019 Fundamentos de Programacion Texto Guia

    40/111

    Ejemplos:

    Expresin Resultado423 + 5 428

    423 - 5 418

    12 * 11 132

    23 / 5 4.6

    2 ^ 4 16

    23 \ 5 4

    23 % 5 3

    Relacionales.Se utilizan para formar expresiones booleanas; es decir, expresiones que

    al ser evaluadas producen un valor booleano. En la tabla 4 se renen los distintos

    operadores relacionales.

    Smbolo Significado

    < Menor que

    > Mayor que

    = = Igual que

    = Mayor o igual que

    ! = () Diferente

    Tabla 4.Operadores relacionales.

    Ejemplos:

    Expresin Resultado

    4 < 5 True

    4 > 5 False

    2 * 3 = = 5 +1 True

    -2

  • 7/21/2019 Fundamentos de Programacion Texto Guia

    41/111

    -1 >= 0 False

    2 ! = -2 True

    Lgicos.Combinan sus operandos de acuerdo con las reglas del clculo proposicional

    (revisar U. A. Lgica Matemtica) con el fin de producir un nuevo valor que se

    convierta en el valor de la expresin. La tabla 5 define los operadores lgicos.

    Smbolo Significado

    AND Conjuncin

    OR Disyuncin

    NOT Negacin

    Tabla 5.Operadores lgicos.

    Ejemplos:

    Expresin Resultado

    True AND True True

    False OR False False

    NOT False True

    Prioridad de operadores.

    Antes de evaluar una expresin se debe tener presente que estas se deben sujetar a una

    jerarqua de operadores, esto evita que se produzcan ambigedades en la ejecucin de los

    clculos. Con cada operador se asocia una prioridad; los operadores que tienen mayor

    prioridad se procesan primero y si existen varios operadores con la misma prioridad se

    contina procesando de izquierda a derecha.

    La prioridad de los operadores a la hora de evaluar cualquier expresin es:

  • 7/21/2019 Fundamentos de Programacion Texto Guia

    42/111

    Parntesis. Potencias.

    Productos y divisiones.

    Sumas y restas.

    Relacionales.

    Lgicos.

    Funciones internas, incorporadas o estndar

    Conforme aumenta la complejidad de los problemas que se trata de resolver por medio de

    algoritmos y posteriormente a travs de programas, es necesario contar con operadores que

    permitan realizar una serie de operaciones que van ms all de las operaciones bsicas de

    potenciacin, multiplicacin, divisin, suma y resta.

    Los operadores que se utilizan para efectuar operaciones de tipo complejo tales como: raz

    cuadrada, valor absoluto, redondeo, etc., se denominan funciones internas, estndar o

    incorporadas y pueden recibir como argumentos1 expresiones, variables o constantes de

    tipo real o entero.

    A continuacin se presenta un resumen de las principales funciones internas:

    FUNCION DESCRIPCIN TIPO DE DATODEL

    ARGUMENTO (X)

    TIPO DE DATODEL

    RESULTADOabs (x) Valor absoluto de x Entero o real Entero o realarctan (x) Arco tangente de x Entero o real Realcos (x) Coseno de x Entero o real Realexp (x) Exponencial de x Entero o real Realln (x) Logaritmo natural de x Entero o real Reallog (x) Logaritmo en base 10 de x Entero o real Realround (x) Redondeo de x Real Entero

    1Se denomina argumento al valor que se le pasa a una funcin con el fin de que dicha funcin pueda cumplir

    con su objetivo.

  • 7/21/2019 Fundamentos de Programacion Texto Guia

    43/111

    sen (x) Seno de x Entero o real Realsqr (x) Cuadrado de x Entero o real Realsqrt (x) Raz cuadrada de x Entero o real Realtan (x) Tangente de x Entero o real Real

    Algunos ejemplos de utilizacin de funciones internas son:

    EJEMPLO RESULTADOabs (-3) 3arctan (12.34) 1.899357cos (0.7854) 0.7061055

    exp (3.1) 22.197913in (20) 2.9957323log (15) 1.176091259round (3.75) 4sen (0.5236) 0.5000011sqr (6.2) 38.44sqrt (15.4) 3.9242834tan (15) -0.8559934

    Evaluacin de expresiones.

    Una vez que se conocen las reglas de prioridad asociadas con los operadores, la evaluacin

    de las expresiones es muy fcil, simplemente se evala la expresin de izquierda a derecha

    para cada clase de operadores que estn presentes.

    Adems se debe considerar la necesidad del uso de parntesis para agrupar trminos de una

    expresin, ejecutando primero los parntesis ms internos y luego los parntesis ms

    externos.

  • 7/21/2019 Fundamentos de Programacion Texto Guia

    44/111

    Ejercicios resueltos

    Escribir un algoritmo que muestre los pasos necesarios para cambiar una llanta

    pinchada de un carro. Una posible solucin sera:

    1. Iniciar.

    2. Sacar la llanta y herramientas de la maleta del carro.

    3. Sacar la llanta pinchada.

    4. Colocar la llanta buena.

    5. Guardar la llanta pinchada y la herramienta.

    6. Subirse al carro.

    7. Reanudar el viaje.

    8. Terminar.

    Si se tiene la expresin: A * * 2 / 5 * B - 5 y los valores almacenados en A y B son 5 y

    20, respectivamente, evaluar dicha expresin.

    5 * * 2 = 25

    25 / 5*20 = 100

    100 - 5 = 95

    Escriba la siguiente expresin algebraica como expresin algortmica:

    Solucin:

    (A + B)/(C - A) + 20

    Si las variables X, Z y L tienen almacenados los valores 23, 47 y V (true),

    respectivamente, escriba el resultado de cada una las expresiones:

  • 7/21/2019 Fundamentos de Programacion Texto Guia

    45/111

    Expresin Resultado

    (X > Z) OR (Z> 20) V(X < Z) AND ( ! (Z > 20)) F

    ( Z > 50 ) AND L F

    ! L F

    (Z > 100) AND (X< 3) AND ( ! L ) F

    Ejercicios propuestos

    1) Haga un procedimiento que describa los pasos para cruzar una calle por un puente

    peatonal.

    2) Describa los pasos necesarios para llevar una amiga(o) al cine.

    3) Describa los pasos para cambiar una bombilla quemada.

    4) Escribir un algoritmo para la bsqueda de una palabra en un diccionario.

    5) Escribir un algoritmo para realizar un depsito bancario

    Considere dos casos:

    Sobre una Cuenta de Ahorro

    Sobre una Cuenta Corriente

    6) Escribir un algoritmo para encender un computador

    7) Elabore un procedimiento que muestre los pasos necesarios para hacer una llamada

    telefnica, donde no se sabe el nmero del telfono, pero s el nombre de la persona.

    8) Haga un procedimiento que muestre los pasos para cambiar la llanta pinchada de una

    bicicleta.

    9) Muestre los pasos necesarios para hacer un desayuno de huevos duros, hasta servirlos.10)Obtener el resultado de las siguientes expresiones:

    a) 4.5/2 (2+4)

    b) 8 / 3 div 4 2

    c) 6 * -(2 9)/3

    d) round (5 + 4 * mod 5 + abs (2 *3 + (6 div 2)))

    e) 6/3*2/ -A/sqr(3)/3n B/2*4+(7div C)+(7 Mod C) Si A=4,B=7 y C = 2

    f) (1.56)

  • 7/21/2019 Fundamentos de Programacion Texto Guia

    46/111

    g) (4 es impar) y (`A >`B) o (5>2) y no ((2>3) y (4=z+(sqrt(49)mod4)) Si x vale 7 y z= round (ln(20))

    11)Escriba las siguientes expresiones algebraicas como expresiones algortmicas:

    12)Escriba las siguientes expresiones algortmicas como expresiones algebraicas:

    13)Si el valor interno de la variable A = 4, el de B = 5, de C = 1. Muestre cules son los

    valores impresos en el siguiente algoritmo.

    INICIO

    X = B * A - B **2/4 * C;

    Y = A * B/3 ** 2;

    Z = (((B + C) /2 * A + 10) * 3 * B) 6;

    Escribir X, Y, Z;

    FIN_INICIO

    14)Haga un seguimiento del siguiente algoritmo y diga qu valores se muestran en las

    variables P, R y S. (Use los valores definidos en 9)

    INICIO

    P = A ** (1/2) ** B;

    R = A * B + A ** (1/2);

    S = B * A - B ** 2 / 4 * C;

    Escribir P, R, S;

    FIN_INICIO

    a X YZ b X YZ

    X Y c X Xc d

    d b b ac

    a e f A BC D

    g A BCDE

    . . .

    . ( )

    . . ( )

    . ( )

    2 2

    23

    3 2

    4 35

    4 4 2 8

    4

    243

    + +

    + + +

    +

    a B X Y b X X

    c A B C A d X Y Y

    . * *2 * . * * *2 * *3 *

    . ( ) / ( ) . * * *( / )

    + +

    5 5

    1 2

  • 7/21/2019 Fundamentos de Programacion Texto Guia

    47/111

    CAPTULO 3ESTRUCTURAS E INSTRUCCIONES EN LA PROGRAMACIN

    ESTRUCTURADA

    En la actualidad, dado el tamao considerable de las memorias centrales y las altas

    velocidades de los procesadores, el estilo de escritura de los programas se vuelve una de las

    caractersticas ms sobresalientes en las tcnicas de programacin. La legibilidad de los

    algoritmos y posteriormente de los programas exige que su diseo sea fcil de comprendery su flujo lgico fcil de seguir. La programacin modular ensea la descomposicin de un

    programa en mdulos ms simples de programar, y la programacin estructurada permite la

    escritura de programas fciles de leer y modificar. En un programa estructurado el flujo

    lgico se gobierna por las estructuras de control bsicas:

    1. Secuenciales.

    2. Seleccin (condicin).

    3. Repetitivas (iterativas).

    En este captulo se introducen los tres tipos estructuras, representando losa algoritmos

    mediantepseudocdigo y diagramas de flujo, aunque se presta ms atencin a los segundos.

    El trmino flujo de control se refiere al orden en que se ejecutan las sentencias del

    programa. Otros trminos utilizados son secuenciacin y control de flujo. A menos que se

    especifique expresamente, el flujo normal de control de todos los programas es el

    secuencial. Este trmino significa que las sentencias se ejecutan en secuencia, una despus

    de otra, en el orden en que se sitan dentro del programa. Las estructuras de seleccin,

    repeticin e invocacin permiten que el flujo secuencial del programa sea modificado en un

    modo preciso y definido con anterioridad. Como se puede deducir fcilmente, las

    estructuras de seleccin se utilizan para seleccionar cules sentencias se han de ejecutar a

  • 7/21/2019 Fundamentos de Programacion Texto Guia

    48/111

    continuacin y las estructuras de repeticin (repetitivas o iterativas) se utilizan para repetir

    un conjunto de sentencias.

    3.1. Algoritmos bsicos

    Como ya se indicaba antes, la forma ms elemental de escribir un programa es

    secuencialmente. Una estructura secuencial es aquella en la que la accin (instruccin)

    sigue a otra en secuencia. Las tareas se suceden de tal modo que la salida de una es la

    entrada de la siguiente y as sucesivamente hasta el final del proceso. Su representacin se

    muestra en la figura 5.

    Figura 5. Estructura secuencial.

    Como parte del algoritmo encontraremos algunos bloques constructivos. A continuacin se

    presentan algunos de ellos para el caso de disear un diagrama de flujo:

    Asignacin. Se utiliza para indicar una accin o proceso, generalmente la asignacin de

    un valor o un resultado de una operacin a una variable. Ejemplo (figura 6):

    Tenga presente que puede asignar a una variable un valor, una constante, otra variable o

    una expresin. El lado izquierdo de un enunciado de asignacin siempre ser una

    variable y el lado derecho corresponde al nuevo valor que tendr dicha variable.

    Accin1

    Accin2

    AccinN

  • 7/21/2019 Fundamentos de Programacion Texto Guia

    49/111

    Figura 6. Asignacin.

    Por otro lado, en una asignacin solamente la parte izquierda cambia de valor, las

    variables de la parte derecha conservan sus valores, despus de ejecutarse el enunciado

    y se pueden utilizar ms tarde.

    Cuando la variable de la izquierda se encuentra tambin en la derecha formando parte

    de una expresin, esta variable cambia de valor tanto en la izquierda como en la derecha

    despus de ejecutarse la asignacin. Por ejemplo, en la asignacin SUELDO =

    SUELDO + BONIFICACION; el nuevo valor de la variable SUELDO ser el resultado

    de sumar el valor actual de SUELDO ms el valor de la BONIFICACION.

    Entrada de datos (Leer). Para introducir datos al computador se utiliza el siguientebloque, que representa el teclado (figura 7). La variable que se va a leer se coloca

    dentro del smbolo y en caso de ser ms de una variables, se separan con comas.

    Figura 7. Entrada de datos.

    Salida de datos (Escribir). Para la salida de informacin procesada del computador,

    se puede utilizar el bloque de impresin o el de pantalla (figura 8). Si desea imprimir o

    mostrar en la pantalla un mensaje, debe escribir ste dentro del bloque y entre comillas,

    mientras que si la salida corresponde al contenido de una variable, debe escribirla

    normalmente, y en caso de ser varias, separarlas con comas.

    Variable = valor Variable valor

    Pseudocdigo:

    Variable = valor;

    Variable

    Pseudocdigo:

    Tipo_dato variable; //Primero declarar la variable

    Leer Variable;

  • 7/21/2019 Fundamentos de Programacion Texto Guia

    50/111

    Figura 8. Salida de datos.

    3.2. Ejemplos de algoritmos bsicos sin toma de decisiones

    Elabore un algoritmo para calcular el rea de un tringulo (figura 9).

    Figura 9. Ejemplo: rea de un tringulo.

    Elabore un algoritmo que permita al usuario introducir a travs del teclado dos nmeros

    en las variables A y B, e imprimirlas. Luego, intercambiar los valores de las variables e

    imprimir el contenido final de las variables (figura 10).

    Mensaje Mensaje

    Var1, Var2 Var1, Var2

    Pseudocdigo:

    Escribir Mensaje;Escribir Var1, Var2;

    INICIO

    Entero B, H, A;

    Escribir rea de un tringulo;

    Escribir Ingrese base y altura;

    A = ( B * H ) / 2;Escribir rea del tringulo: , A;

    FIN_INICIO

    Inicio

    rea de un tringulo

    B, H

    Ingrese base y altura

    A = ( B * H ) / 2

    Fin

  • 7/21/2019 Fundamentos de Programacion Texto Guia

    51/111

    Figura 10. Ejemplo: Intercambio de variables.

    3.3. Estructuras de decisin lgica (representacin y funcionamiento)

    La especificacin de algoritmos tiene realmente utilidad cuando el algoritmo requiere una

    descripcin ms complicada que una lista sencilla de instrucciones. Este es el caso cuando

    existen un nmero de posibles alternativas resultantes de la evaluacin de una determinada

    condicin. Las estructuras selectivas se utilizan para tomar decisiones lgicas; de ah quese suelan denominar tambin estructuras de decisin o alternativas.

    En las estructuras selectivas se evala una condicin y en funcin del resultado de la misma

    se realiza una opcin u otra. Las condiciones se especifican usando expresiones lgicas.

    La representacin de una estructura selectiva se hace con una figura geomtrica en forma

    de rombo (su significado es si, entonces, sino). Las estructuras selectivas o alternativas

    pueden presentarse de varias formas:

    INICIO

    Entero B, A, aux;

    Escribir Intercambio de variables;

    Escribir Ingrese A y B;

    Leer A, B;

    Escribir Contenido original: , A, B;

    Aux = A;

    A = B;

    B = Aux;

    Escribir Luego de intercambio: , A, B;

    FIN_INICIO

    Inicio

    Intercambio de variables

    A, B

    Ingrese A y B

    Aux = AA = B

    B = Aux

    Fin

  • 7/21/2019 Fundamentos de Programacion Texto Guia

    52/111

    La estructura alternativa simple (si-entonces, if-then) ejecuta una determinada accin o

    acciones cuando se cumple una determinada condicin (true). Su representacin grficase muestra en la figura 11.

    Figura 11.Condicional simple

    La estructura anterior es muy limitada y normalmente necesitar una estructura que

    permita elegir entre dos opciones o alternativas posibles, en funcin del cumplimiento o

    no de una determinada condicin (si entonces, caso contrario; ifthen, else). Si la

    condicin es verdadera se ejecutarn ciertas acciones y, si es falsa, se ejecutarn otrasacciones (figura 12).

    Figura 12.Condicional doble.

    No

    Si

    Condicin

    Acciones

    Pseudocdigo:

    SI ( Condicin ) ENTONCES

    Acciones;

    FIN_SI

    NoSiCondicin

    Acciones 1 Acciones 2

    Pseudocdigo:

    SI ( Condicin ) ENTONCES

    Acciones 1;

    SINO

    Acciones 2;

    FIN_SI

  • 7/21/2019 Fundamentos de Programacion Texto Guia

    53/111

    Si dentro de una de las alternativas del bloque de decisin, existen otros bloques de

    decisin, se tiene un bloque de decisin anidado (figura 13). La introduccin dentro deuna alternativa de otros bloques de decisin nos permite probar mltiples condiciones

    para escoger una determinada alternativa.

    Figura 13.Bloque de decisin anidada.

    Tambin podemos utilizar bloques de decisin cuyas condiciones estn constituidas por

    condiciones simples, relacionadas mediante los operadores lgicos And, Or y Not.

    Estos bloques se denominan condiciones compuestas (figura 14).

    Figura 14.Condiciones compuestas.

    No

    Si

    Condi1

    NoSiCondi2

    Acciones 1 Acciones 2

    Acciones 3Acciones 4

    NoSi Condicin1AND/OR

    Condicin2

    Acciones 1 Acciones 2

  • 7/21/2019 Fundamentos de Programacion Texto Guia

    54/111

    3.4. Ciclos MIENTRAS (while)

    Las computadoras estn especialmente diseadas para todas aquellas aplicaciones en las

    cuales una operacin o conjunto de ellas deben repetirse muchas veces. Un tipo muy

    importante de estructura es el algoritmo necesario para repetir una o varias acciones un

    nmero determinado de veces. Un programa que lee una lista de nmeros puede repetir la

    misma secuencia de mensajes al usuario e instrucciones de lectura hasta que todos los

    nmeros se hayan ledo.

    Las estructuras que repiten una secuencia de instrucciones un nmero determinado de veces

    se denominan bucles, lazos o ciclos de repeticin, y se denomina iteracin al hecho de

    repetir la ejecucin de una secuencia de acciones.

    La estructura repetitiva mientras (while) es aquella en que el cuerpo del bucle se repite

    mientras se cumple una determinada condicin. Cuando se ejecuta la instruccin mientras,

    la primera cosa que sucede es que se evala la condicin (una expresin booleana). Si se

    evala false, no se toma ninguna accin y el programa prosigue en la siguiente instruccin

    del bucle. Si la expresin booleana es verdadera, entonces se ejecuta el cuerpo del bucle,

    despus de lo cual se evala de nuevo la expresin booleana. Este proceso se repite una y

    otra vez mientras la expresin booleana (condicin) sea verdadera. La figura 15 ilustra un

    ciclo mientras como diagrama de flujo y pseudocdigo.

    Figura 15.Ciclo mientras.

    No

    Si

    Condicin

    Acciones (repetir)

    Pseudocdigo:

    Mientras ( Condicin )

    Acciones

    FIN_MIENTRAS

  • 7/21/2019 Fundamentos de Programacion Texto Guia

    55/111

    Adems de entender el funcionamiento de los ciclos, son necesarios algunos conceptos:

    Variables tipo contador. Muchas veces en los procesos repetitivos es necesario hacer

    el conteo de sucesos o acciones internas del ciclo; este proceso de conteo se hace con

    una variable que se va incrementando cada vez que el ciclo se repite.

    El contador es una variable que se incrementa o disminuye en un valor constante cada

    que ocurre una accin o suceso. La forma general de los contadores es la siguiente:

    CONTADOR = CONTADOR +

    Como el contador aparece al lado derecho en la expresin, antes de usarse se le debe

    dar un valor que borre lo que haba en la direccin de memoria asignada a la variable

    utilizada. Esa orden de borrado debe indicarse una vez; por lo tanto, debe estar antes de

    activar el ciclo donde se necesite el contador, de lo contrario se repetir la orden de

    borrado cada vez que se repite el ciclo.

    Una orden de borrado puede ser: CONTADOR = 0.

    Variables tipo acumulador. Un acumulador o totalizador es una variable cuya misin

    es almacenar cantidades variables resultantes de procesos sucesivos. La diferencia con

    el contador radica en que el incremento o disminucin de cada suma es variable en

    lugar de constante, como en el caso del contador.

    La forma general del acumulador es:

    ACUMULADOR = ACUMULADOR +

    Como tambin aparece al lado derecho, antes de utilizarlo se hace necesario asignarle

    un valor inicial, por ejemplo: ACUMULADOR = 0.

  • 7/21/2019 Fundamentos de Programacion Texto Guia

    56/111

    Variables tipo bandera. La bandera es una variable que generalmente usa dos valores

    excluyentes o diferentes, su contenido es uno cualquiera de dos valores definidos por elprogramador, el cual ordena cuando cambia su contenido.

    La bandera es utilizada dentro de la programacin como un seleccionador de una de dos

    alternativas a seguir dentro del algoritmo. Antes de llegar a la expresin que se utilice

    para bifurcar la ejecucin, la bandera debe tener asignado uno de los dos valores.

    Los valores escogidos para la bandera pueden ser de cualquier tipo de dato, por

    ejemplo:numrico (0 y 1, 1 y 2, etc.), lgico True y False, carcter o texto (S y N,

    SI y NO, 0 y 1, ENCONTRADO y NO ENCONTRADO).

    Esquema cuantitativo. Es utilizado cuando se conoce el nmero de veces que debe

    repetirse un ciclo determinado, antes de activarse la estructura repetitiva. El nmero de

    iteraciones puede ser un valor constante o, generalmente, una variable de entrada cuyo

    valor es proporcionado al algoritmo antes de activarse el ciclo.

    Esquema cualitativo. Este esquema es utilizado cuando no se conoce el nmero de

    veces que debe repetirse la secuencia de un determinado ciclo. En esta clase de ciclo el

    usuario decide cundo terminar con el proceso repetitivo sin importar cuantas

    iteraciones se hayan efectuado; a diferencia de los ciclos anteriores, en donde el nmero

    de iteraciones est determinado desde el principio.

    Ruptura de ciclos. Dentro de la programacin, algunas veces, es necesario hacer que

    un ciclo se detenga abruptamente (aborte), porque ya se cumpli algo que se necesitaba

    o se estaba buscando, por lo que, posiblemente, no se alcance a satisfacer

    completamente en una forma normal la culminacin de la cantidad de veces que debe

    ejecutarse o repetirse un ciclo. La ruptura se hace cambiando el sentido de la expresin

    lgica que controla el ciclo, para que sta sea falsa y no se contine ejecutando la

    secuencia de instrucciones.

  • 7/21/2019 Fundamentos de Programacion Texto Guia

    57/111

    3.5. Estructuras adicionales

    Aunque cualquier programa apropiado se puede elaborar utilizando solamente las tres

    estructuras bsicas de control descritas antes, el uso de stas se convierte en soluciones

    particulares de la implementacin de la estructura decisin lgica o mientras. Es necesario

    analizar en cules de estos casos particulares se puede utilizar la estructura adicional,

    teniendo en cuenta que lo que ellas hagan tambin se puede solucionar con una de las

    estructuras bsicas.

    Estructura caso o seleccin mltiple (case, switch).

    Esta estructura permite seleccionar una, dentro de un conjunto de alternativas, con base en

    el valor almacenado en un campo variable denominado selector o campo controlador de la

    estructura. Es una estructura selectiva mltiple donde, de acuerdo con el valor que tenga el

    controlador, se realiza una determinada tarea una sola vez, es decir, no repite la ejecucin

    de la tarea o secuencia. De acuerdo al valor que tenga el controlador el control de ejecucin

    del programa pasa a uno de varios puntos de ste, evitando as una serie de preguntas

    (estructura decisin lgica o un anidamiento de las mismas).

    Al llegar a la estructura se evala el valor almacenado en la variable utilizada como

    controlador, para determinar cul de las secuencias se efecta. Una secuencia se ejecutar

    s, y slo s, uno de los rtulos (casos) correspondientes coincide con el valor actual del

    controlador. Por tanto, el valor actual del controlador determina cul de las secuencias se vaa ejecutar. Si el valor del controlador no coincide con ninguno de los rtulos descritos y la

    secuencia por defecto est presente, entonces sta ser ejecutada. Si esta secuencia no est

    presente (es opcional usarla) y el valor del controlador no coincide con ninguno de los

    rtulos, no ser ejecutada ninguna de las secuencias; por lo tanto, continuar con la

    estructura siguiente.

  • 7/21/2019 Fundamentos de Programacion Texto Guia

    58/111

    En forma general se puede decir, que si el valor del controlador es i, se ejecutar una sola

    vez la secuencia correspondiente al caso i y que la secuencia por defecto se ejecutar si estpresente, para cualquier valor del controlador que no coincida con ningn caso.

    La figura 16 muestra la forma de representar una estructura de seleccin mltiple a travs

    de un diagrama de flujo.

    Figura 16.Estructura caso o seleccin mltiple.

    Ciclo PARA (for).

    La estructura PARA permite que una o ms instrucciones (secuencia) se repitan cero o ms

    veces, mientras los valores de una progresin aritmtica de razn creciente o decreciente se

    vayan asignando a una variable denominada variable de control del ciclo PARA. El control

    del ciclo se hace en forma automtica con base en parmetros que establece el

    programador.

    La diferencia como se implementa esta clase de ciclos con la estructura mientras, es que el

    PARA maneja la inicializacin del contador y su incremento en forma automtica, es decir,

    lo hace la estructura.

    En la figura 17 se puede observar la representacin de la estructura PARA.

    ValNVal_2

    Val_1

    Variable

    Acciones1

    [Default]

    Acciones2 AccionesN AccionesD

  • 7/21/2019 Fundamentos de Programacion Texto Guia

    59/111

    Figura 17.Ciclo PARA (for).

    Ciclo Hacer mientras que (do-while).

    Esta es otra estructura repetitiva de control que es implementada para efectuar un ciclo. Es

    parecida a la estructura mientras y en algunos aspectos se complementan. Se utiliza en

    situaciones en las que se desea que una secuencia se repita, al menos una vez, antes de

    comprobar la condicin de repeticin y est formada por dos partes: una expresin de tipolgico y la secuencia de instrucciones, donde una de ellas debe estar modificando la

    expresin.

    La diferencia especial entre la estructura hacer mientras que y la estructura mientras es que

    en la primera la secuencia de instrucciones se ejecuta por lo menos una vez, antes de

    evaluar la condicin de repeticin y, en la estructura mientras la condicin de terminacin

    es evaluada primero y, por lo tanto, el grupo de instrucciones o campo de la sentenciapuede ser o no ejecutado.

    Al entrar a la estructura se ejecuta la secuencia de instrucciones una vez y se evala la

    condicin; si sta es falsa, se sale de la estructura y contina con la instruccin siguiente; y

    si es verdadera, se repite la ejecucin de la secuencia y vuelve a evaluar la condicin; el

    proceso se repite mientras que la condicin sea verdadera.

    Var = VI ;condi ; inc

    Acciones (repetir)

  • 7/21/2019 Fundamentos de Programacion Texto Guia

    60/111

    La secuencia, entonces, se ejecutar repetidamente mientras que la expresin lgica sea

    cierta, asegurndose que la secuencia se ejecuta por lo menos una vez. Las instrucciones nose repiten cuando la condicin es falsa.

    En la siguiente figura (18) se muestra la representacin del ciclo hacer-mientras.

    Figura 18.Ciclo hacer-mientras que (do-while).

    Ejercicios resueltos

    Elaborar un algoritmo que, dados los dos lados diferentes de un rectngulo, encuentre el

    permetro y el rea del mismo.

    INICIO

    Entero L1, L2, P, A;Leer L1, L2;

    P = 2 * L1 + 2 * L2;

    A = L1 * L2;

    EscribirEL PERIMETRO ES:, P;

    EscribirEL AREA ES:, A;

    FIN_INICIO

    No

    SiCondicin

    Acciones (repetir)

  • 7/21/2019 Fundamentos de Programacion Texto Guia

    61/111

    A la mam de Juan le preguntan su edad, y contesta: tengo 3 hijos, pregntele a Juan su

    edad. Alberto tiene 2/3 de la edad de Juan, Ana tiene 4/3 de la edad de Juan y mi edades la suma de las tres. Hacer un algoritmo que muestre la edad de los cuatro.

    INICIO

    LeerEDJUAN;

    EDALBER = 2 * EDJUAN / 3;

    EDANA = 4 * EDJUAN / 3;

    EDMAMA = EDJUAN + EDALBER + EDANA;

    EscribirLAS EDADES SON: ALBERTO =, EDALBER,

    JUAN =, EDJUAN, ANA =, EDANA, MAMA =, EDMAMA;

    FIN_INICIO

    Hacer un algoritmo que, dados dos valores numricos A y B, escriba un mensaje

    diciendo si A es mayor, menor o igual a B.

    INICIOLeerA, B;

    SI ( A> B ) ENTONCES

    Escribir A ES MAYOR QUE B;

    SINO

    SI ( A = = B ) ENTONCES

    Escribir A ES IGUAL A B;

    SINOEscribir A ES MENOR QUE B;

    FIN_SI

    FIN_SI

    FIN_INICIO

  • 7/21/2019 Fundamentos de Programacion Texto Guia

    62/111

    Escribir las estructuras que calculen y muestren el valor de X, de acuerdo con lo

    siguiente:

    X = 0 si Y < A y (A< B < C)

    X = 1 si A

  • 7/21/2019 Fundamentos de Programacion Texto Guia

    63/111

    Disear un algoritmo que encuentre la suma de los primeros cinco nmeros naturales.INICIO

    NUM=0; (1) Inicializa el contador

    SUMA=0; (2) Inicializa el acumulador

    Mientras ( NUM< 5 )

    NUM=NUM+1; (3) Modifica la expresin

    SUMA=SUMA+NUM; (4) Actualiza el acumulador

    FIN_MIENTRAS

    Escribir "LA SUMA ES:", SUMA; (5) Termina el ciclo cuando NUM = 5

    FIN_INICIO

    Elaborar un algoritmo que genere los primeros N trminos de la sucesin:

    17 15 18 16 19 17 20 18 21...

    INICIO

    Leer NT;TER = 17;

    CONT =1; BAN = 1;

    Mientras ( CONT

  • 7/21/2019 Fundamentos de Programacion Texto Guia

    64/111

    Ejercicios propuestos

    1) Hacer un seguimiento (prueba de escritorio) del siguiente grupo de instrucciones.

    INICIO

    SUMA = 0;

    X = 20;

    SUMA = SUMA + X;

    Y = 40;

    X = X + Y ** 2;

    SUMA = SUMA + X / Y;

    EscribirEL VALOR DE LA