00 libro guia programacion basica

Upload: gaaplex

Post on 10-Oct-2015

30 views

Category:

Documents


1 download

TRANSCRIPT

  • 5/20/2018 00 Libro Guia Programacion Basica

    1/192

    [1]

    [Unidad 1]algoritmos y

    programas

    [ ]

    computadora y sistema operativo

    [1.1.1]

    computadora

    Segn la RAE(Real Academia de la lengua espaola), una computadora es una mqui naelect rnica, analgica o digi t a l , dot ada de una memor i a de gran capacidad y d e

    mt odos de tr at amient o de la i nfor macin, capaz de resolver pr oblemasmat emt icos y l gicos media nt e la ut i l izacin aut omt ica d e pr ogramasinf ormt icos.

    Sin duda esta mquina es la responsable de toda una revolucin que est cambiandoel panorama econmico, social e incluso cultural. Debido a la importancia y al difcilmanejo de estas mquinas, aparece la informticacomo la ciencia orientada al procesode informacin mediante el uso de computadoras.

    Una computadora consta de diversos componentes entre los que sobresale elprocesador, el componente que es capaz de realizar las tareas que se requieren alordenador o computadora.

  • 5/20/2018 00 Libro Guia Programacion Basica

    2/192

    [Fundamentos de programacin en C++]Conocimientos bsicos

    [2]

    En realidad un procesador slo es capaz de realizar tareas sencillas como:

    Operaciones aritmticas simples: suma, resta, multiplicacin y divisin

    Operaciones de comparacin entre valores

    Almacenamiento de datos

    Algunos de los componentes destacables de un ordenador son:

    CPU(Unidad central de proceso)

    Unidades dealmacenamiento

    Perifricos deentrada

    Perifricos desalida

    Otros

    dispositivos

    Ilustracin 1, componentes de un ordenador desde un punto de vista lgico

    Este desglose de los componentes del ordenador es el que interesa a los programadores.Pero desde un punto de vista ms fsico, hay otros componentes a sealar:

    Procesador. Ncleo digital en el que reside la CPU del ordenador. Es la partefundamental del ordenador, la encargada de realizar todas las tareas.

    Placa base. Circuito interno al que se conectan todos los componentes delordenador, incluido el procesador.

    Memoria RAM.Memoria interna formada por un circuito digital que est conectadomediante tarjetas a la placa base. Su contenido se evapora cuando se desconecta alordenador. Lo que se almacena no es permanente.

    Memoria cach.Memoria ultrarrpida de caractersticas similares a la RAM, pero develocidad mucho ms elevada por lo que se utiliza para almacenar los ltimos datos

    utilizados. Perifricos. Aparatos conectados al ordenador mediante tarjetas o ranuras de

    expansin (tambin llamados puertos). Los hay de entrada (introducen datos en elordenador: teclado, ratn, escner,...), de salida (muestran datos desde elordenador: pantalla, impresora, altavoces,...) e incluso de entrada/salida (mdem,tarjeta de red).

    Unidades de almacenamiento. En realidad son perifricos, pero que sirven paraalmacenar de forma permanente los datos que se deseen del ordenador. Losprincipales son el disco duro (unidad de gran tamao interna al ordenador), la

  • 5/20/2018 00 Libro Guia Programacion Basica

    3/192

    [1 de Administracin de Sistemas Informticos]

    Copyleft - Jorge Snchez www.jorgesanchez.net

    [3]

    disquetera(unidad de baja capacidad y muy lenta, ya en desuso), el CD-ROMy elDVD.

    [1.1.2]

    hardware y software

    hardware

    Se trata de todos los componentes fsicos que forman parte de un ordenador:procesador, RAM, impresora, teclado, ratn,...

    software

    Se trata de la parte conceptual del ordenador. Es decir los datos y aplicaciones quemaneja y que permiten un grado de abstraccin mayor. Cualquier cosa que se puedaalmacenar en una unidad de almacenamiento es software (la propia unidad sera

    hardware).

    [1.1.3]

    Sistema Operativo

    Se trata del software (programa) encargado de gestionar el ordenador. Es la aplicacinque oculta la fsica real del ordenador para mostrarnos un interfaz que permita alusuario un mejor y ms fcil manejo de la computadora.

    funciones del Sistema Operativo

    Las principales funciones que desempea un Sistema Operativo son:

    Permitir al usuario comunicarse con el ordenador. A travs de comandos o a travs

    de una interfaz grfica. Coordinar y manipular el hardware de la computadora: memoria, impresoras,

    unidades de disco, el teclado,...

    Proporcionar herramientas para organizar los datos de manera lgica (carpetas,archivos,...)

    Proporcionar herramientas para organizar las aplicaciones instaladas.

    Gestionar el acceso a redes

    Gestionar los errores de hardware y la prdida de datos.

    Servir de base para la creacin de aplicaciones, proporcionando funciones quefaciliten la tarea a los programadores.

    Administrar la configuracin de los usuarios.

    Proporcionar herramientas para controlar la seguridad del sistema.

    algunos sistemas operativos

    Windows.A da de hoy el Sistema Operativo ms popular (instalado en el 95% decomputadoras del mundo). Es un software propiedad de Microsoft por el que hayque pagar por cada licencia de uso.

  • 5/20/2018 00 Libro Guia Programacion Basica

    4/192

    [Fundamentos de programacin en C++]Conocimientos bsicos

    [4]

    Ilustracin 2, Versiones actuales de Windows

    Linux. Sistema operativo de cdigo abierto. Posee numerosas distribuciones(muchas de ellas gratuitas) y software adaptado para l (aunque slo el 15% de

    ordenadores posee Linux). MacOs.Sistema operativo de los ordenadores MacIntosh.

    Unix. Sistema operativo muy robusto para gestionar redes de todos los tamaos.Actualmente en desuso debido al uso de Linux (que est basado en Unix).

    Solaris.Versin de Unix para sistemas Sun.

    [ 2]

    codificacin de la informacin

    [1.2.1]

    introduccin

    Sin duda una de las informaciones que ms a menudo un ordenador tiene que manipularson los nmeros. Pero tambin el ordenador necesita codificar otro tipo de informacin,como por ejemplo caracteres, imgenes, sonidos,...

    EL problema es que para el ordenador toda la informacin debe estar en formatobinario (de unos y ceros). Por ello se necesita pasar todos los datos a ese formato.

  • 5/20/2018 00 Libro Guia Programacion Basica

    5/192

    [1 de Administracin de Sistemas Informticos]

    Copyleft - Jorge Snchez www.jorgesanchez.net

    [5]

    [1.2.2]

    sistemas numricos

    A lo largo de la historia han existido numerosos sistemas de numeracin. Parasimplificar los dividiremos en dos tipos:

    Sistemas no posicionales. En ellos se utilizan smbolos cuyo valor numrico essiempre el mismo independientemente de donde se siten. Es lo que ocurre con lanumeracin romana. En esta numeracin el smbolo I significa siempre unoindependientemente de su posicin.

    Sistemas posicionales. En ellos los smbolos numricos cambian de valor en funcinde la posicin que ocupen. Es el caso de nuestra numeracin, el smbolo 2, en lacifra 12vale 2; mientras que en la cifra 21 vale veinte.

    La historia ha demostrado que los sistemas posicionales son mucho mejores para los

    clculos matemticos por lo que han retirado a los no posicionales.Todos los sistemas posicionales tienen una base, que es el nmero total de smbolos

    que utiliza el sistema. En el caso de la numeracin decimal la base es 10, en el sistemabinario es 2.

    El Teorema Fundamental de la Numeracin permite saber el valor decimal quetiene cualquier nmero en cualquier base. Lo cual se hace con la frmula:

    ...+ X3B3+ X2B

    2+ X1B1+ X0B

    0+ X-1B-1+ X-2B

    -2+...

    Donde:

    XiEs el smbolo que se encuentra en la posicin nmero i del nmero que se estconvirtiendo. Teniendo en cuenta que la posicin de las unidades es la posicin 0(la posicin -1 sera la del primer decimal)

    B Es la base del sistemas que se utiliza para representar al nmero

    Por ejemplo si tenemos el nmero 153,6utilizando e sistema octal (base ocho), el pasoa decimal se hara:

    182+ 581+ 380+ 68-1= 64 + 40 + 3 + 6/8 = 107,75

    [1.2.3]

    sistema binario

    introduccin

    Los nmeros binarios son los que utilizan las computadoras para almacenar informacin.Debido a ello hay trminos informticos que se refieren al sistema binario y que seutilizan continuamente. Son:

    BIT (de BinarydiGIT). Se trata de un dgito binario, el nmero binario 1001 tienecuatro BITS.

    Byte. Es el conjunto de 8 BITS.

    Kilobyte. Son 1024 bytes.

  • 5/20/2018 00 Libro Guia Programacion Basica

    6/192

    [Fundamentos de programacin en C++]Conocimientos bsicos

    [6]

    Megabyte. Son 1024 Kilobytes.

    Gigabyte. Son 1024 Megabytes.

    Terabyte. Son 1024 Gigabytes.

    Petabyte. Son 1024 Terabytes.

    conversin binario a decimal

    Utilizando el teorema fundamental de la numeracin, por ejemplo para el nmerobinario 10011011011 el paso sera (los ceros se han ignorado):

    1210 + 127+ 126+ 124 + 123+ 121+ 120 = 1243

    conversin decimal a binario

    El mtodo ms utilizado es ir haciendo divisiones sucesivas entre dos. Los restos son lascifras binarias. Por ejemplo para pasar el 39:

    39:2 = 19 resto 1

    19:2 = 9 resto 1

    9:2 = 4 resto 1

    4:2 = 2 resto 0

    2:2 = 1 resto 0

    1:2 = 0 resto 1

    El nmero 111001 es el equivalente en binario de 39.

    operaciones aritmticas binarias

    suma

    Se efecta igual que las sumas decimales, slo que cuando se suma un uno y otro uno,ese dice que tenemos un acarreo de uno y se suma a la siguiente cifra. Ejemplo (sumade 31, en binario 10011, y 28, en binario, 11100)

    Acarreo 1 1

    1 1 1 1 1

    1 1 1 0 0

    1 1 1 0 1 1

    El resultado es 111011, 59 en decimal.

    resta

    El concepto es parecido slo que en el caso de la resta es importante tener en cuenta elsigno. No se explica en el presente manual ya que se pretende slo una introduccin a

  • 5/20/2018 00 Libro Guia Programacion Basica

    7/192

    [1 de Administracin de Sistemas Informticos]

    Copyleft - Jorge Snchez www.jorgesanchez.net

    [7]

    los nmeros binarios. En la actualidad la resta se hace sumando nmeros encomplemento a 21.

    operaciones lgicasSe trata de operaciones que manipulan BITS de forma lgica, son muy utilizadas en lainformtica. Se basan en una interpretacin muy utilizada con los nmeros binarios enla cual el dgito 1se interpreta como verdadero y el dgito 0se interpreta como falso.

    operacin AND

    La operacin AND (en espaol Y), sirve para unir expresiones lgicas, se entiende que elresultado de la operacin es verdadero si alguna de las dos expresiones es verdadero(por ejemplo la expresin ahora l l ueve y hace solslo es verdadera si ocurren ambascosas).

    En el caso de los dgitos binarios, la operacin AND opera con dos BITS de modo que

    el resultado ser uno si ambos bits valen uno.

    AND 0 1

    0 0 0

    1 0 1

    La tabla superior se llama tabla de la verdad y sirve para mostrar resultados deoperaciones lgicas, el resultado est en la parte blanca, en la otra parte serepresentan los operadores . El resultado ser 1 si ambos operadores valen 1

    operacin OR

    OR (Oen espaol) devuelve verdadero si cualquiera de los operandos es verdadero (esdecir, si valen 1). La tabla es esta:

    OR 0 1

    0 0 1

    1 1 1

    operacin NOT

    Esta operacin acta sobre un solo BIT y lo que hace es invertirle; es decir, si vale unovaldr cero, y si vale cero valdr uno.

    NOT 0 11 0

    1Se trata de una forma avanzada de codificar nmeros que utiliza el primer BIT como signo yutiliza el resto de forma normal para los nmeros positivos y cambiando los unos por los cerospara los nmeros negativos.

  • 5/20/2018 00 Libro Guia Programacion Basica

    8/192

    [Fundamentos de programacin en C++]Conocimientos bsicos

    [8]

    codificacin de otros tipos de datos a binario

    texto

    Puesto que una computadora no slo maneja nmeros, habr dgitos binarios quecontengan informacin que no es traducible a decimal. Todo depende de cmo seinterprete esa traduccin.

    Por ejemplo en el caso del texto, lo que se hace es codificar cada carcter en unaserie de nmeros binarios. El cdigo ASCII ha sido durante mucho tiempo el msutilizado. Inicialmente era un cdigo que utilizaba 7 bits para representar texto, lo quesignificaba que era capaz de codificar 127 caracteres. Por ejemplo el nmero 65(1000001 en binario) se utiliza para la A mayscula.

    Poco despus apareci un problema: este cdigo es suficiente para los caracteres delingls, pero no para otras lenguas. Entonces se aadi el octavo bit para representarotros 128 caracteres que son distintos segn idiomas (Europa Occidental usa unos

    cdigos que no utiliza Europa Oriental).Una ampliacin de este mtodo es el cdigo Unicode que puede utilizar hasta 4

    bytes (32 bits) con lo que es capaz de codificar cualquier carcter en cualquier lenguadel planeta. Poco a poco es el cdigo que se va extendiendo.

    otros datos

    En el caso de datos ms complejos (imgenes, vdeo, audio) se necesita una codificacinms compleja. Adems en estos datos no hay estndares, por lo que hay decenas deformas de codificar.

    En el caso, por ejemplo, de las imgenes una forma bsica es la que graba cadapxel(cada punto distinguible en la imagen) mediante tres bytes, el primero graba el

    nivel de rojo, el segundo el nivel de azul y el tercero el nivel de verde. Y as por cadapxel.

    [1.2.4]

    sistema hexadecimal

    Es un sistema que se utiliza mucho para representar nmeros binarios. Un problema(entre otros) de los nmeros binarios es que ocupan mucho espacio para representarinformacin. El sistema hexadecimal es la forma de representar nmeros en base 16. demodo que en los dgitos del 0 al 9 se utilizan los mismos smbolos que en el sistemadecimal y a partir del 10 se utiliza la letra A y as hasta la letra F que simboliza el 15.

    As el nmero hexadecimal CA3 sera:

    C162+ A161+ 3160= 12256 + 1016 + 3 = 3235

    Como se observa pasar de hexadecimal a decimal es complejo. La razn del uso de estesistema es porque tiene una equivalencia directa con el sistema binario. De hecho enuna cifra hexadecimal caben exactamente 4 bits. Por ello la traduccin de hexadecimala binario se basa en esta tabla:

    Hexadecimal Binario

    0 0000

    1 0001

  • 5/20/2018 00 Libro Guia Programacion Basica

    9/192

    [1 de Administracin de Sistemas Informticos]

    Copyleft - Jorge Snchez www.jorgesanchez.net

    [9]

    Hexadecimal Binario

    2 0010

    3 00114 0100

    5 0101

    6 0110

    7 0111

    8 1000

    9 1001

    A 1010

    B 1011

    C 1100D 1101

    E 1110

    F 1111

    As el nmero hexadecimal C3D4 sera el binario 1100 0011 1101 0100. Y el binario 01111011 1100 0011 sera el hexadecimal 7BC3

    [ 3]

    algoritmos

    [1.3.1]nocin de algoritmo

    Segn la RAE: conj unto ordenado y f in i t o de operaciones que permi t e hal lar lasolucin de un pr oblema.

    Los algoritmos, como indica su definicin oficial, son una serie de pasos quepermiten obtener la solucin a un problema. La palabra algoritmo procede delmatemtico rabe Mohamed Ibn Al Kow Rizmi, el cual escribi sobre los aos 800 y 825su obra Qui t ad Al Mugabala, donde se recoga el sistema de numeracin hind y elconcepto del cero. Fibonacci, tradujo la obra al latn y la llam:Algor i t mi Dic i t.

    El lenguaje algortmico es aquel que implementa una solucin terica a un problemaindicando las operaciones a realizar y el orden en el que se deben efectuarse. Porejemplo en el caso de que nos encontremos en casa con una bombilla fundida en unalmpara, un posible algoritmo sera:

    [1] Comprobar si hay bombillas de repuesto

    [2] En el caso de que las haya, sustituir la bombilla anterior por la nueva

    [3] Si no hay bombillas de repuesto, bajar a comprar una nueva a la tienda ysustituir la vieja por la nueva

  • 5/20/2018 00 Libro Guia Programacion Basica

    10/192

    [Fundamentos de programacin en C++]Conocimientos bsicos

    [10]

    Los algoritmos son la base de la programacin de ordenadores, ya que los programas deordenador se puede entender que son algoritmos escritos en un cdigo especialentendible por un ordenador.

    Lo malo del diseo de algoritmos est en que no podemos escribir lo que deseemos,el lenguaje ha utilizar no debe dejar posibilidad de duda, debe recoger todas lasposibilidades. Por lo que los tres pasos anteriores pueden ser mucho ms largos:

    [1]

    Comprobar si hay bombillas de repuesto

    [1.1]Abrir el cajn de las bombillas

    [1.2]

    Observar si hay bombillas

    [2]

    Si hay bombillas:

    [2.1]Coger la bombilla[2.2]

    Coger una silla[2.3]

    Subirse a la silla[2.4]

    Poner la bombilla en la lmpara

    [3]

    Si no hay bombillas[3.1]

    Abrir la puerta

    [3.2]Bajar las escaleras....

    Cmo se observa en un algoritmo las instrucciones pueden ser ms largas de lo queparecen, por lo que hay que determinar qu instrucciones se pueden utilizar y quinstrucciones no se pueden utilizar. En el caso de los algoritmos preparados para elordenador, se pueden utilizar slo instrucciones muy concretas.

    [1.3.2]

    caractersticas de los algoritmos

    caractersticas que deben de cumplir los algoritmos obligatoriamente

    Un algoritmo debe resolver el problema para el que fue formulado. Lgicamenteno sirve un algoritmo que no resuelve ese problema. En el caso de losprogramadores, a veces crean algoritmos que resuelven problemas diferentes alplanteado.

    Los algoritmos son independientes del ordenador.Los algoritmos se escriben para

    poder ser utilizados en cualquier mquina. Los algoritmos deben de ser precisos. Los resultados de los clculos deben de ser

    exactos, de manera rigurosa. No es vlido un algoritmo que slo aproxime lasolucin.

    Los algoritmos deben de ser finitos. Deben de finalizar en algn momento. No esun algoritmo vlido aquel que produce situaciones en las que el algoritmo notermina.

    Los algoritmos deben de poder repetirse. Deben de permitir su ejecucin lasveces que haga falta. No son vlidos los que tras ejecutarse una vez ya no puedenvolver a hacerlo por la razn que sea.

  • 5/20/2018 00 Libro Guia Programacion Basica

    11/192

    [1 de Administracin de Sistemas Informticos]

    Copyleft - Jorge Snchez www.jorgesanchez.net

    [11]

    caractersticas aconsejables para los algoritmos

    Validez.Un algoritmo es vlido si carece de errores. Un algoritmo puede resolver el

    problema para el que se plante y sin embargo no ser vlido debido a que poseeerrores

    Eficiencia. Un algoritmo es eficiente si obtiene la solucin al problema en pocotiempo. No lo es si es lento en obtener el resultado.

    ptimo. Un algoritmo es ptimo si es el ms eficiente posible y no contieneerrores. La bsqueda de este algoritmo es el objetivo prioritario del programador.No siempre podemos garantizar que el algoritmo hallado es el ptimo, a veces s.

    [1.3.3]

    elementos que conforman un algoritmo

    Entrada.Los datos iniciales que posee el algoritmo antes de ejecutarse. Proceso.Acciones que lleva a cabo el algoritmo.

    Salida. Datos que obtiene finalmente el algoritmo.

    [1.3.4]

    fases en la creacin de algoritmos

    Hay tres fases en la elaboracin de un algoritmo:

    [1] Anlisis.En esta se determina cul es exactamente el problema a resolver. Qudatos forman la entrada del algoritmo y cules debern obtenerse como salida.

    [2]

    Diseo. Elaboracin del algoritmo.[3] Prueba. Comprobacin del resultado. Se observa si el algoritmo obtiene la

    salida esperada para todas las entradas.

    [ 4]

    aplicaciones

    [1.4.1]

    programas y aplicaciones Programa. La definicin de la RAE es:Conj unt o uni t ar io de inst rucciones que

    permi t e a un ordenador r eal izar funciones diversas, como el t ra t amiento det ex t os, el d iseo de grf icos, la r esoluci n de pr obl emas ma t emt i cos, elmanej o de bancos de dat os, etc. Pero normalmente se entiende por programa unconjunto de instrucciones ejecutables por un ordenador.

    Un programa estructurado es un programa que cumple las condiciones de unalgoritmo (finitud, precisin, repeticin, resolucin del problema,...)

  • 5/20/2018 00 Libro Guia Programacion Basica

    12/192

    [Fundamentos de programacin en C++]Conocimientos bsicos

    [12]

    Aplicacin.Software formado por uno o ms programas, la documentacin de losmismos y los archivos necesarios para su funcionamiento, de modo que el conjuntocompleto de archivos forman una herramienta de trabajo en un ordenador.

    Normalmente en el lenguaje cotidiano no se distingue entre aplicacin y programa; ennuestro caso entenderemos que la aplicacin es un software completo que cumple lafuncin completa para la que fue diseado, mientras que un programa es el resultadode ejecutar un cierto cdigo entendible por el ordenador.

    [1.4.2]historia del software. La crisis del software

    Los primeros ordenadores cumplan una nica programacin que estaba definida en loscomponentes elctricos que formaban el ordenador.

    La idea de que el ordenador hiciera varias tareas (ordenador programable o

    multipropsito) hizo que se idearan las tarjetas perforadas.En ellas se utilizaba cdigobinario, de modo que se hacan agujeros en ellas para indicar el cdigo 1 o el cero.Estos primeros programas lgicamente servan para hacer tareas muy concretas.

    La llegada de ordenadores electrnicos ms potentes hizo que los ordenadores seconvirtieran en verdaderas mquinas digitales que seguan utilizando el 1 y el 0 delcdigo binario pero que eran capaces de leer miles de unos y ceros. Empezaron aaparecer los primeros lenguajes de programacin que escriban cdigo ms entendiblepor los humanos que posteriormente era convertido al cdigo entendible por lamquina.

    Inicialmente la creacin de aplicaciones requera escribir pocas lneas de cdigo enel ordenador, por lo que no haba una tcnica especificar a la hora de crear programas.

    Cada programador se defenda como poda generando el cdigo a medida que se leocurra.Poco a poco las funciones que se requeran a los programas fueron aumentando

    produciendo miles de lneas de cdigo que al estar desorganizada hacan casi imposiblesu mantenimiento. Slo el programador que haba escrito el cdigo era capaz deentenderlo y eso no era en absoluto prctico.

    La llamada crisis del softwareocurri cuando se percibi que se gastaba ms tiempoen hacer las modificaciones a los programas que en volver a crear el software. La raznera que ya se haban codificado millones de lneas de cdigo antes de que se definieraun buen mtodo para crear los programas.

    La solucin a esta crisis ha sido la definicin de la ingeniera del softwarecomo un

    oficio que requera un mtodo de trabajo similar al del resto de ingenieras. Labsqueda de una metodologa de trabajo que elimine esta crisis parece que an no estresuelta, de hecho los mtodos de trabajo siguen redefinindose una y otra vez.

    [1.4.3]

    el ciclo de vida de una aplicacin

    Una de las cosas que se han definido tras el nacimiento de la ingeniera del software hasido el ciclo de vida de una aplicacin. El ciclo de vida define los pasos que sigue elproceso de creacin de una aplicacin desde que se propone hasta que finaliza suconstruccin. Los pasos son:

  • 5/20/2018 00 Libro Guia Programacion Basica

    13/192

    [1 de Administracin de Sistemas Informticos]

    Copyleft - Jorge Snchez www.jorgesanchez.net

    [13]

    Anlisis

    Diseo

    Codificacin

    Pruebas

    Mantenimiento

    Ilustracin 3, Ciclo de vida de una aplicacin

    [1]Anlisis. En esta fase se determinan los requisitos que tiene que cumplir laaplicacin. Se anota todo aquello que afecta al futuro funcionamiento de laaplicacin. Este paso le realiza un analista

    [4]

    Diseo.Se especifican los esquemas de diseo de la aplicacin. Estos esquemasforman los planosdel programador, los realiza el analista y representan todos

    los aspectos que requiere la creacin de la aplicacin.[5]Codificacin.En esta fase se pasa el diseo a cdigo escrito en algn lenguaje

    de programacin. Esta es la primera labor que realiza el programador

    [6]Pruebas.Se trata de comprobar que el funcionamiento de la aplicacin es laadecuada. Se realiza en varias fases:

    [1.1]

    Prueba del cdigo. Las realizan programadores. Normalmenteprogramadores distintos a los que crearon el cdigo, de ese modo laprueba es ms independiente y generar resultados ms ptimos.

    [1.2]

    Versin alfa. Es una primera versin terminada que se revisa a fin de

    encontrar errores. Estas pruebas conviene que sean hechas por personalno informtico.

    [1.3]

    Versin beta.Versin casi definitiva del software en la que no se estimanfallos, pero que se distribuye a los clientes para que encuentren posiblesproblemas. A veces est versin acaba siendo la definitiva (como ocurrecon muchos de los programas distribuidos libremente por Internet).

    [7]Mantenimiento.Tiene lugar una vez que la aplicacin ha sido ya distribuida,en esta fase se asegura que el sistema siga funcionando aunque cambien losrequisitos o el sistema para el que fue diseado el software. Antes esos cambios

  • 5/20/2018 00 Libro Guia Programacion Basica

    14/192

    [Fundamentos de programacin en C++]Conocimientos bsicos

    [14]

    se hacen los arreglos pertinentes, por lo que habr que retroceder a fasesanteriores del ciclo de vida.

    [ 5]

    erroresCuando un programa obtiene una salida que no es la esperada, se dice que poseeerrores. Los errores son uno de los caballos de batalla de los programadores ya que aveces son muy difciles de encontrar (de ah que hoy en da en muchas aplicaciones sedistribuyan parches para subsanar errores no encontrados en la creacin de laaplicacin).

    tipos de errores

    Error del usuario. Errores que se producen cuando el usuario realiza algoinesperado y el programa no reacciona apropiadamente.

    Error del programador.Son errores que ha cometido el programador al generar elcdigo. La mayora de errores son de este tipo.

    Errores de documentacin. Ocurren cuando la documentacin del programa no escorrecta y provoca fallos en el manejo

    Error de interfaz.Ocurre si la interfaz de usuario de la aplicacin es enrevesadapara el usuario impidiendo su manejo normal. Tambin se llaman as los errores deprotocolo entre dispositivos.

    Error de entrada / salida o de comunicaciones. Ocurre cuando falla lacomunicacin entre el programa y un dispositivo (se desea imprimir y no hay papel,falla el teclado,...)

    Error fatal.Ocurre cuando el hardware produce una situacin inesperado que elsoftware no puede controlar (el ordenador se cuelga, errores en la grabacin dedatos,...)

    Error de ejecucin.Ocurren cuando la ejecucin del programa es ms lenta de loprevisto.

    La labor del programador es predecir, encontrar y subsanar (si es posible) o al menoscontrolar los errores. Una mala gestin de errores causa experiencias poco gratas alusuario de la aplicacin.

  • 5/20/2018 00 Libro Guia Programacion Basica

    15/192

    [1 de Administracin de Sistemas Informticos]

    Copyleft - Jorge Snchez www.jorgesanchez.net

    [15]

    [ 6]

    programacin[1.6.1]

    introduccin

    La programacin consiste en pasar algoritmos a algn lenguaje de ordenador a fin deque pueda ser entendido por el ordenador. La programacin de ordenadores comienzaen los aos 50 y su evolucin a pasado por diversos pasos.

    La programacin se puede realizar empleando diversas tcnicas o mtodos. Esastcnicas definen los distintos tipos de programaciones.

    [1.6.2]

    programacin desordenada

    Se llama as a la programacin que se realizaba en los albores de la informtica (aunquedesgraciadamente en la actualidad muchos programadores siguen emplendola). En esteestilo de programacin, predomina el i ns t in todel programador por encima del uso decualquier mtodo lo que provoca que la correccin y entendimiento de este tipo deprogramas sea casi ininteligible.

    Ejemplo de uso de esta programacin (listado en Basic clsico):

    10 X=RANDOM()*100+1;

    20 PRINT escribe el nmero que crees que guardo

    30 INPUT N

    40 IF N>X THEN PRINT mi numero es menor GOTO 2050 IF N

  • 5/20/2018 00 Libro Guia Programacion Basica

    16/192

    [Fundamentos de programacin en C++]Conocimientos bsicos

    [16]

    BEGIN

    X=RANDOM()*100+1;

    REPEATWRITE(Escribe el nmero que crees que guardo);

    READ(n);

    IF (n>x) THEN WRITE(Mi nmero es menor);

    IF (n>x) THEN WRITE(Mi nmero es mayor);

    UNTIL n=x;

    WRITE(Acertaste);

    La ventaja de esta programacin est en que es ms legible (aunque en este caso elcdigo es casi ms sencillo en su versin desordenada). Todo programador deberaescribir cdigo de forma estructurada.

    [1.6.4]

    programacin modular

    Completa la programacin anterior permitiendo la definicin de mdulosindependientes cada uno de los cuales se encargar de una tarea del programa. De esteforma el programador se concentra en la codificacin de cada mdulo haciendo mssencilla esta tarea. Al final se deben integrar los mdulos para dar lugar a la aplicacinfinal.

    El cdigo de los mdulos puede ser invocado en cualquier parte del cdigo.Realmente cada mdulo se comporta como un subprograma que, partir de unasdeterminadas entradas obtienen unas salidas concretas. Su funcionamiento no depende

    del resto del programa por lo que es ms fcil encontrar los errores y realizar elmantenimiento.

    [1.6.5]

    programacin orientada a objetos

    Es la ms novedosa, se basa en intentar que el cdigo de los programas se parezca loms posible a la forma de pensar de las personas. Las aplicaciones se representan enesta programacin como una serie de objetos independientes que se comunican entres.

    Cada objeto posee datos y mtodos propios, por lo que los programadores seconcentran en programar independientemente cada objeto y luego generar el cdigoque inicia la comunicacin entre ellos.

    Es la programacin que ha revolucionado las tcnicas ltimas de programacin yaque han resultado un importante xito gracias a la facilidad que poseen de encontrarfallos, de reutilizar el cdigo y de documentar fcilmente el cdigo.

  • 5/20/2018 00 Libro Guia Programacion Basica

    17/192

    [1 de Administracin de Sistemas Informticos]

    Copyleft - Jorge Snchez www.jorgesanchez.net

    [17]

    [1.6.6]

    lenguajes de programacin

    introduccinLos lenguajes de programacin permiten codificar algoritmos en el ordenador. Son unaserie de smbolos e instrucciones de acuerdo con una sintaxis que facilita su posteriortraduccin a cdigo entendible por el ordenador,

    En realidad los ordenadores slo reconocen un lenguaje formado por los unos y cerosdel cdigo binario. Segn la disposicin de esos unos y ceros entender unasinstrucciones u otras. De esa forma hay lenguajes ms prximos al lenguaje de lascomputadores (lenguajes de bajo nivel) y lenguajes ms prximos al lenguaje humando(lenguajes de alto nivel)

    cdigo mquina (lenguaje de primera generacin)

    Est formado por una sucesin de unos y ceros que el procesador del ordenadorreconoce como instrucciones. Es el lenguaje que reconoce directamente el ordenadorpor lo tanto es el que est a ms bajo nivel.

    Slo se ha utilizado por los programadores en los inicios de la informtica. Suincomodidad de trabajo hace que sea impensable para ser utilizado. Pero cualquierprograma de ordenador debe, finalmente, ser convertido a este cdigo para que unordenador puede ejecutar las instrucciones de dicho programa.

    Un detalle a tener en cuente es que el cdigo mquina es distinto para cada tipo deprocesador. Lo que hace que los programas en cdigo mquina no sean portables entredistintas mquinas.

    ensamblador (lenguajes de segunda generacin)Se trata de un lenguaje que representa el cdigo mquina pero escrito con una serie detrminos mnemotcnicos que facilitan su escritura. Despus un software especial seencargar de traducir las instrucciones a cdigo mquina. Ejemplo2(programa que sacael texto Hola mundo por pantalla):

    DATOS SEGMENT

    saludo db "Hola mundo!!!","$"

    DATOS ENDS

    CODE SEGMENT

    assume cs:code,ds:datosSTART PROC

    mov ax,datos

    mov ds,ax

    mov dx,offset saludo

    mov ah,9

    int 21h

    2Ejemplo tomado de la pgina http://www.victorsanchez2.net

  • 5/20/2018 00 Libro Guia Programacion Basica

    18/192

    [Fundamentos de programacin en C++]Conocimientos bsicos

    [18]

    mov ax,4C00h

    int 21h

    START ENDPCODE ENDS

    END START

    Este lenguaje tiene traduccin exacta al cdigo mquina, por lo que es un lenguajediferente para cada procesador; es decir, no es portable.

    La ventaja de este lenguaje es que se puede controlar absolutamente elfuncionamiento de la mquina, lo que permite crear programas muy eficientes. Lo maloes precisamente que hay que conocer muy bien el funcionamiento de la computadorapara crear programas en estos lenguajes. Adems las lneas requeridas para realizar unatarea se disparan ya que las instrucciones de la mquina son excesivamente simples.

    lenguajes de alto nivel (lenguajes de tercera generacin)

    Se aproximan ms al lenguaje de los humanos. Los programas se disean en un lenguajeestricto pero independiente de la mquina, lo que permite que la escritura del cdigocree programas ejecutables en cualquier mquina.

    Hace falta software que transforme el cdigo en el lenguaje de alto nivel en cdigoentendible por el ordenador en un proceso conocido como interpretacin ocompilacin (dependiendo del lenguaje).

    El cdigo es menos eficiente que en el caso anterior, pero es ms entendible ymucho ms fcilmente corregible. Hoy en da casi todos los lenguajes son de alto nivel(C, Basic, Cobol, Fortran, Pascal,...).

    Ejemplo (cdigo Java):

    /**

    *Calcula los primos del 1 al 1000

    */

    public class primos {

    /** Funcin principal */

    public static void main(String args[]){

    int nPrimos=10000;

    boolean primo[]=new boolean[nPrimos+1];

    short i;

    for (i=1;i

  • 5/20/2018 00 Libro Guia Programacion Basica

    19/192

    [1 de Administracin de Sistemas Informticos]

    Copyleft - Jorge Snchez www.jorgesanchez.net

    [19]

    System.out.print(" "+i);

    }

    }}

    A veces se habla de lenguajes de medio nivel para referirse a lenguajes que utilizan unacodificacin que est entre el ensamblador y el lenguaje de alto nivel. El C se consideraa menudo un lenguaje de nivel medio ya que su codificacin puede resultar tan crpticacomo un cdigo en ensamblador. De hecho las posibilidades del C son similares a las delensamblador, pero su estructura es la de un lenguaje de alto nivel.

    lenguajes de cuarta generacin o 4GL (fourth generation languages)

    Son lenguajes en los que apenas hay cdigo y en su lugar aparecen indicaciones sobre

    qu es lo que el programa debe de obtener. En estos lenguajes hay herramientas de tipoms visual mediante las que se disea el funcionamiento del programa.Los lenguajes de consulta de datos, creacin de formularios, informes,... son

    lenguajes de cuarto nivel. Aparecieron con los sistemas de base de datos.

  • 5/20/2018 00 Libro Guia Programacion Basica

    20/192

  • 5/20/2018 00 Libro Guia Programacion Basica

    21/192

    [21]

    [Unidad 2]metodologa de

    la programacin

    [2 ]

    metodologas

    [2.1.1]

    introduccin

    Se entiende por metodologa el conjunto de reglas y pasos estrictos que se siguen paradesarrollar una aplicacin informtica completa. Hay diversas metodologas, algunasincluso registradas (hay que pagar por utilizarlas).

    Independientemente de la metodologa utilizada suele haber una serie de pasoscomunes a todas ellas (relacionados con el ciclo de vida de la aplicacin):

    [1] Anlisis

    [2] Diseo

    [3] Codificacin

    [4] Ejecucin

    [5] Prueba

  • 5/20/2018 00 Libro Guia Programacion Basica

    22/192

    [Fundamentos de programacin en C++]metodologa de la programacin

    [22]

    [6] Mantenimiento

    [2.1.2]anlisis

    Al programar aplicaciones siempre se debe realizar un anlisis. El anlisis estudia losrequisitos que ha de cumplir la aplicacin. El resultado del anlisis es una hoja deespecificaciones en la que aparece los requerimientos de la aplicacin. Esta hoja esredactada por el o la analista, la persona responsable del proceso de creacin de laaplicacin.

    En la creacin de algoritmos sencillos, el anlisis consistira nicamente en:

    Determinar las entradas. Es decir, los datos que posee el algoritmo cuandocomienza su ejecucin. Esos datos permiten obtener el resultado.

    Determinar las salidas. Es decir, los datos que obtiene el algoritmo como

    resultado. Lo que el algoritmo devuelve al usuario. Determinar el proceso. Se estudia cul es el proceso que hay que realizar.

    [2.1.3]

    diseo

    En esta fase se crean esquemas que simbolizan a la aplicacin. Estos esquemas loselaboran analistas. Gracias a estos esquemas se simboliza la aplicacin. Estos esquemasen definitiva se convierte en la documentacin fundamental para plasmar en papel loque el programador debe hacer.

    En estos esquemas se pueden simbolizar: la organizacin de los datos de laaplicacin, el orden de los procesos que tiene que realizar la aplicacin, la estructura

    fsica (en cuanto a archivos y carpetas) que utilizar la aplicacin, etc.La creacin de estos esquemas se puede hacer en papel, o utilizar una herramienta

    CASEpara hacerlo.En el caso de la creacin de algoritmos, conviene en esta fase usar el llamado

    diseo descendente. Mediante este diseo el problema se divide en mdulos, que, a suvez, se vuelven a dividir a fin de solucionar problemas ms concretos. Al diseodescendente se le llama tambin top-down. Gracias a esta tcnica un problemacomplicado se divide en pequeos problemas que son ms fcilmente solucionables.

    Siempre existe en el diseo la zona principalque es el programa principal que seejecutar cuando el programa est codificado en un lenguaje de programacin.

    En la construccin de aplicaciones complejas en esta fase se utilizan gran cantidad

    de esquemas para describir la organizacin de los datos y los procedimientos que ha deseguir el programa. En pequeos algoritmos se utilizan esquemas ms sencillos.

    [2.1.4]

    codificacin

    Escritura de la aplicacin utilizando un lenguaje de programacin (C, Pascal, C++,Java,...). Normalmente la herramienta utilizada en el diseo debe ser compatible con ellenguaje que se utilizar para codificar. Es decir si se utiliza un lenguaje orientado aobjetos, la herramienta de diseo debe ser una herramienta que permita utilizarobjetos.

  • 5/20/2018 00 Libro Guia Programacion Basica

    23/192

    [1 de Administracin de Sistemas Informticos]

    Copyleft - Jorge Snchez www.jorgesanchez.net

    [23]

    [2.1.5]

    ejecucin

    Tras la escritura del cdigo, mediante un software especial se traduce a cdigointerpretable por el ordenador (cdigo mquina). En este proceso pueden detectarseerrores en el cdigo que impiden su transformacin. En ese caso el software encargadode la traduccin (normalmente un compilador o un intrprete) avisa de esos errorespara que el programador los pueda corregir.

    [2.1.6]prueba

    Se trata de testear la aplicacin para verificar que su funcionamiento es el correcto.Para ello se comprueban todas las entradas posibles, comprobando que las salidas sonlas correspondientes.

    [2.1.7]

    mantenimientoEn esta fase se crea la documentacin del programa (paso fundamental en la creacinde aplicaciones). Gracias a esa documentacin se pueden corregir futuros errores orenovar el programa para incluir mejoras detectadas, operaciones que tambin serealizan en esta fase.

    [2 2]

    notaciones para el diseo de algoritmos

    [2.2.1]

    diagramas de flujo

    introduccin

    Es el esquema ms viejo de la informtica. Se trata de una notacin que pretendefacilitar la escritura o la comprensin de algoritmos. Gracias a ella se esquematiza elflujo del algoritmo. Fue muy til al principio y todava se usa como apoyo para explicarciertos algoritmos. Si los algoritmos son complejos, este tipo de esquemas no sonadecuados.

    No obstante cuando el problema se complica, resulta muy complejo de realizar y deentender. De ah que actualmente, slo se use con fines educativos y no en la prctica.Pero sigue siendo interesante en el aprendizaje de la creacin de algoritmos.

    Los diagramas utilizan smbolos especiales que ya estn normalizados por organismosde estandarizacin como ANSIe ISO.

  • 5/20/2018 00 Libro Guia Programacion Basica

    24/192

    [Fundamentos de programacin en C++]metodologa de la programacin

    [24]

    smbolos principales

    La lista de smbolos que generalmente se utiliza en los diagramas de flujo es:

    Ejemplo:

    Ilustracin 4, Diagrama de flujo que escribe el mayor de dos nmeros ledos

  • 5/20/2018 00 Libro Guia Programacion Basica

    25/192

    [1 de Administracin de Sistemas Informticos]

    Copyleft - Jorge Snchez www.jorgesanchez.net

    [25]

    desventajas de los diagramas de flujo

    Los diagramas de flujo son interesantes como primer acercamiento a la programacin ya

    que son fciles de entender. De hecho se utilizan fuera de la programacin comoesquema para ilustrar el funcionamiento de algoritmos sencillos.Sin embargo cuando el algoritmo se complica, el diagrama de flujo se convierte en

    ininteligible. Adems los diagramas de flujo no facilitan el aprendizaje de laprogramacin estructurada, con lo que no se aconseja su uso a los programadores paradisear algoritmos.

    [2.2.2]

    pseudocdigo

    introduccin

    Las bases de la programacin estructurada fueron enunciadas por Niklaus Wirdth. Segneste cientfico cualquier problema algortmico poda resolverse con el uso de estos trestipos de instrucciones:

    Secuenciales.Instrucciones que se ejecutan en orden normal. El flujo del programaejecuta la instruccin y pasa a ejecutar la siguiente.

    Alternativas. Instrucciones en las que se evala una condicin y dependiendo si elresultado es verdadero o no, el flujo del programa se dirigir a una instruccin o aotra.

    Iterativas. Instrucciones que se repiten continuamente hasta que se cumple unadeterminada condicin.

    El tiempo le ha dado la razn y ha generado una programacin que insta a todoprogramador a utilizar slo instrucciones de esos tres tipos. Es lo que se conoce comoprogramacin estructurada.

    El propio Niklaus Wirdth dise el lenguaje Pascal como el primer lenguajeestructurado. Lo malo es que el Pascal al ser lenguaje completo incluye instruccionesexcesivamente orientadas al ordenador.

    Por ello se aconseja para el diseo de algoritmos estructurados el uso de un lenguajeespecial llamado pseudocdigo, que adems se puede traducir a cualquier idioma(Pascal est basado en el ingls).

    El pseudocdigo adems permite el diseo modular de programas y el diseodescendente gracias a esta posibilidad

    Hay que tener en cuenta que existen multitud de pseudocdigos, es decir no hay unpseudocdigo 100% estndar. Pero s hay gran cantidad de detalles aceptados portodos los que escriben pseudocdigos. Aqu se comenta el pseudocdigo que parece msaceptado en Espaa. Hay que tener en cuenta que el pseudocdigo se basa en Pascal,por lo que la traduccin a Pascal es casi directa.

    El pseudocdigo son instrucciones escritas en un lenguaje orientado a ser entendidopor un ordenador. Por ello en pseudocdigo slo se pueden utilizar ciertasinstrucciones. La escritura de las instrucciones debe cumplir reglas muy estrictas. Lasnicas permitidas son:

  • 5/20/2018 00 Libro Guia Programacion Basica

    26/192

    [Fundamentos de programacin en C++]metodologa de la programacin

    [26]

    De Entrada /Salida. Para leer o escribir datos desde el programa hacia el usuario.

    De proceso.Operaciones que realiza el algoritmo (suma, resta, cambio de valor,...)

    De control de flujo. Instrucciones alternativas o iterativas (bucles y condiciones).

    De declaracin. Mediante las que se crean variables y subprogramas.

    Llamadas a subprogramas.

    Comentarios. Notasque se escriben junto al pseudocdigo para explicar mejor sufuncionamiento.

    escritura en pseudocdigo

    Las instrucciones que resuelven el algoritmo en pseudocdigo deben de estarencabezadas por la palabra inicio (en ingls begin) y cerradas por la palabra fin (en

    ingls end). Entre medias de estas palabras se sitan el resto de instrucciones.Opcionalmente se puede poner delante del inicio la palabra programa seguida delnombre que queramos dar al algoritmo.En definitiva la estructura de un algoritmo en pseudocdigo es:

    programa nombreDelPrograma

    inicio

    instrucciones

    ....

    fin

    Hay que tener en cuenta estos detalles:

    Aunque no importan las maysculas y minsculas en pseudocdigo, se aconsejan lasminsculas porque su lectura es ms clara y adems porque hay muchos lenguajesen los que s importa el hecho de hecho escribir en maysculas o minsculas (C,Java, ...)

    Se aconseja que las instrucciones dejen un espacio (sangra) a la izquierda para quese vea ms claro que estn entre el inicio y el fin. Esta forma de escribir algoritmospermite leerlos mucho mejor.

    comentarios

    En pseudocdigo los comentarios que se deseen poner (y esto es una prctica muyaconsejable) se ponen con los smbolos // al principio de la lnea de comentario (enalgunas notaciones se escribe **). Cada lnea de comentario debe comenzar con esossmbolos:

    inicio

    instrucciones

    //comentario

    instrucciones

    fin

  • 5/20/2018 00 Libro Guia Programacion Basica

    27/192

    [1 de Administracin de Sistemas Informticos]

    Copyleft - Jorge Snchez www.jorgesanchez.net

    [27]

    [2 3]

    creacin de algoritmos[2.3.1]

    instrucciones

    Independientemente de la notacin que utilicemos para escribir algoritmos, stoscontienen instrucciones, acciones a realizar por el ordenador. Lgicamente la escriturade estas instrucciones sigue unas normas muy estrictas. Las instrucciones pueden ser deestos tipos:

    Primitivas.Son acciones sobre los datos del programa. Son:

    Asignacin

    Instrucciones de Entrada/Salida

    Declaraciones. Obligatorias en el pseudocdigo, opcionales en otros esquemas.Sirven para advertir y documentar el uso de variables y subprogramas en elalgoritmo.

    Control. Sirven para alterar el orden de ejecucin del algoritmo. En general elalgoritmo se ejecuta secuencialmente. Gracias a estas instrucciones el flujo delalgoritmo depende de ciertas condiciones que nosotros mismos indicamos.

    [2.3.2]instrucciones de declaracin

    Slo se utilizan en el pseudocdigo. Indican el nombre y las caractersticas de lasvariables que se utilizan en el algoritmo. Las variables son nombres a los que se lesasigna un determinado valor y son la base de la programacin. Al nombre de lasvariables se le llama identificador.

    identificadores

    Los algoritmos necesitan utilizar datos. Los datos se identifican con un determinadoidentificador(nombre que se le da al dato). Este nombre:

    Slo puede contener letras, nmeros y el carcter _

    Debe comenzar por una letra

    No puede estar repetido en el mismo algoritmo. No puede haber dos elementos delalgoritmo (dos datos por ejemplo) con el mismo identificador.

    Conviene que sea aclarativo, es decir que represente lo mejor posible los datos quecontiene. x no es un nombre aclarativo, saldo_mensuals lo es.

    Los valores posibles de un identificador deben de ser siempre del mismo tipo (lo cual eslgico puesto que un identificador almacena un dato). Es decir no puede almacenarprimero texto y luego nmeros.

  • 5/20/2018 00 Libro Guia Programacion Basica

    28/192

    [Fundamentos de programacin en C++]metodologa de la programacin

    [28]

    declaracin de variables

    Es aconsejable al escribir pseudocdigo indicar las variables que se van a utilizar (e

    incluso con un comentario indicar para qu se van a usar). En el caso de los otrosesquemas (diagramas de flujo y tablas de decisin) no se utilizan (lo que fomenta maloshbitos).

    Esto se hace mediante la seccin del pseudocdigo llamada var, en esta seccin secolocan las variables que se van a utilizar. Esta seccin se coloca antes del iniciodelalgoritmo. Y se utiliza de esta forma:

    programa nombreDePrograma

    var

    identificador1: tipoDeDatos

    identificador2: tipoDeDatos

    ....inicio

    instrucciones

    fin

    El tipo de datos de la variable puede ser especificado de muchas formas, pero tiene queser un tipo compatible con los que utilizan los lenguajes informticos. Se suelen utilizarlos siguientes tipos:

    entero.Permite almacenar valores enteros (sin decimales).

    real. Permite almacenar valores decimales.

    carcter.Almacenan un carcter alfanumrico.

    lgico (o booleano). Slo permiten almacenar los valores verdaderoo falso.

    texto. A veces indicando su tamao (texto(20) indicara un texto de hasta 20caracteres) permite almacenar texto. Normalmente en cualquier lenguaje deprogramacin se considera un tipo compuesto.

    Tambin se pueden utilizar datos ms complejos, pero su utilizacin queda fuera deeste tema.

    Ejemplo de declaracin:

    var

    numero_cliente: entero// cdigo nico de cada cliente

    valor_compra: real//lo que ha comprado el cliente

    descuento: real//valor de descuento aplicable al cliente

  • 5/20/2018 00 Libro Guia Programacion Basica

    29/192

    [1 de Administracin de Sistemas Informticos]

    Copyleft - Jorge Snchez www.jorgesanchez.net

    [29]

    Tambin se pueden declarar de esta forma:

    var

    numero_cliente: entero// cdigo nico de cada clientevalor_compra, //lo que ha comprado el cliente

    descuento :real//valor de descuento aplicable al cliente

    La coma tras valor_comprapermite declarar otra variable real.

    constantes

    Hay un tipo especial de variable llamada constante. Se utiliza para valores que no van avariar en ningn momento. Si el algoritmo utiliza valores constantes, stos se declaranmediante una seccin (que se coloca delante de la seccin var) llamada const (de

    constante). Ejemplo:programaejemplo1

    const

    PI=3.141592

    NOMBRE=Jose

    var

    edad: entero

    sueldo: real

    inicio

    ....

    A las constantes se las asigna un valor mediante el smbolo =. Ese valor permanececonstante (pi siempre vale 3.141592). Es conveniente (aunque en absoluto obligatorio)utilizar letras maysculas para declarar variables.

    [2.3.3]

    instrucciones primitivas

    Son instrucciones que se ejecutan en cuanto son ledas por el ordenador. En ellas slopuede haber:

    Asignaciones ()

    Operaciones (+, -, * /,...)

    Identificadores (nombres de variables o constantes)

    Valores (nmeros o texto encerrado entre comillas)

    Llamadas a subprogramas

    En el pseudocdigo se escriben entre el inicio y el fin. En los diagramas de flujo y tablasde decisin se escriben dentro de un rectngulo

  • 5/20/2018 00 Libro Guia Programacion Basica

    30/192

    [Fundamentos de programacin en C++]metodologa de la programacin

    [30]

    instruccin de asignacin

    Permite almacenar un valor en una variable. Para asignar el valor se escribe el smbolo

    , de modo que:identificadorvalor

    El identificador toma el valor indicado. Ejemplo:

    x8

    Ahora xvale 8. Se puede utilizar otra variable en lugar de un valor. Ejemplo:

    y9

    xy

    x vale ahora lo que vale y, es decir x vale 9.Los valores pueden ser:

    Nmeros.Se escriben tal cual, el separador decimal suele ser el punto (aunque hayquien utiliza la coma).

    Caracteres simples. Los caracteres simples (un solo carcter) se escriben entrecomillas simples: a, c,etc.

    Textos.Se escriben entre comillas doble Hola

    Lgicos.Slo pueden valer verdaderoo falso (se escriben tal cual) Identificadores. En cuyo caso se almacena el valor de la variable con dicho

    identificador. Ejemplo:

    x9

    yx //y valdr nueve

    En las instrucciones de asignacin se pueden utilizar expresiones ms complejas conayuda de los operadores.

    Ejemplo:

    x(y*3)/2

    Es decir x vale el resultado de multiplicar el valor de ypor tres y dividirlo entre dos. Losoperadores permitidos son:

    + Suma- Resta o cambio de signo* Producto

  • 5/20/2018 00 Libro Guia Programacion Basica

    31/192

    [1 de Administracin de Sistemas Informticos]

    Copyleft - Jorge Snchez www.jorgesanchez.net

    [31]

    / Divisinmod Resto. Por ejemplo 9 mod2 da como resultado 1

    div Divisin entera. 9 div2 da como resultado 4 (y no 4,5) Exponente. 92 es 9 elevado a la 2

    Hay que tener en cuenta la prioridad del operador. Por ejemplo la multiplicacin y ladivisin tienen ms prioridad que la suma o la resta. S 9+6/3 da como resultado 5 y no11. Para modificar la prioridad de la instruccin se utilizan parntesis. Por ejemplo9+(6/3)

    [2.3.4]

    instrucciones de entrada y salida

    lectura de datos

    Es la instruccin que simula una lectura de datos desde el teclado. Se hace mediante laorden leer en la que entre parntesis se indica el identificador de la variable quealmacenar lo que se lea. Ejemplo (pseudocdigo):

    leer(x)

    El mismo ejemplo en un diagrama de flujo sera:

    leer x

    En ambos casos x contendr el valor ledo desde el teclado. Se pueden leer variasvariables a la vez:

    leer(x,y,z)

    leer x, y, z

    escritura de datos

    Funciona como la anterior pero usando la palabra escribir. Simula la salida de datos delalgoritmo por pantalla.

    escribir(x,y,z)

    escribir x, y, z

  • 5/20/2018 00 Libro Guia Programacion Basica

    32/192

    [Fundamentos de programacin en C++]metodologa de la programacin

    [32]

    ejemplo de algoritmo

    El algoritmo completo que escribe el resultado de multiplicar dos nmeros ledos por

    teclado sera (en pseudocdigo)programa mayorDe2

    var

    x,y:entero

    inicio

    leer(x,y)

    escribir(x*y)

    fin

    En un diagrama de flujo:

    [2.3.5]

    instrucciones de control

    Con lo visto anteriormente slo se pueden escribir algoritmos donde la ejecucin de lasinstrucciones sea secuencial. Pero la programacin estructurada permite el uso dedecisiones y de iteraciones.

    Estas instrucciones permiten que haya instrucciones que se pueden ejecutar o nosegn una condicin (instrucciones alternativas), e incluso que se ejecuten

    repetidamente hasta que se cumpla una condicin (instrucciones iterativas). Endefinitiva son instrucciones que permiten variar el flujo normal del programa.

    expresiones lgicas

    Todas las instrucciones de este apartado utilizan expresiones lgicas. Son expresionesque dan como resultado un valor lgico (verdadero o falso). Suelen ser siemprecomparaciones entre datos. Por ejemplo x>8 da como resultado verdadero si x vale msque 8. Los operadores de relacin (de comparacin) que se pueden utilizar son:

    > Mayor que< Menor que

  • 5/20/2018 00 Libro Guia Programacion Basica

    33/192

    [1 de Administracin de Sistemas Informticos]

    Copyleft - Jorge Snchez www.jorgesanchez.net

    [33]

    Mayor o igual Menor o igual

    Distinto= Igual

    Tambin se pueden unir expresiones utilizando los operadores Y (en ingls AND), eloperador O (en ingls OR)o el operador NO (en ingls NOT). Estos operadores permitenunir expresiones lgicas. Por ejemplo:

    Expresin Resultado verdadero si...

    a>8 Yb8 Yb30 Ya8 Y NO b45 Y a

  • 5/20/2018 00 Libro Guia Programacion Basica

    34/192

    [Fundamentos de programacin en C++]metodologa de la programacin

    [34]

    Las instrucciones slo se ejecutarn si la expresin evaluada es verdadera.

    instruccin de alternativa doble

    Se trata de una variante de la alternativa en la que se ejecutan unas instrucciones si laexpresin evaluada es verdadera y otras si es falsa. Funcionamiento:

    si expresin_lgicaentonces

    instrucciones //se ejecutan si la expresin es verdadera

    si_no

    instrucciones //se ejecutan si la expresin es falsa

    fin_si

    Slo se ejecuta unas instrucciones dependiendo de si la expresin es verdadera. El

    diagrama de flujo equivalente es:

    Hay que tener en cuenta que se puede meter una instruccin si dentro de otro si. A esose le llama alternativas anidadas.

    Ejemplo:si a5 entonces

    escribe(apto)

    si a5 y a

  • 5/20/2018 00 Libro Guia Programacion Basica

    35/192

    [1 de Administracin de Sistemas Informticos]

    Copyleft - Jorge Snchez www.jorgesanchez.net

    [35]

    Al anidar estas instrucciones hay que tener en cuenta que hay que cerrar lasinstrucciones siinteriores antes que las exteriores.

    Eso es una regla bsica de la programacin estructurada:

    alternativa compuesta

    En muchas ocasiones se requieren condiciones que poseen ms de una alternativa. Enese caso existe una instruccin evala una expresin y segn los diferentes valores quetome se ejecutan unas u otras instrucciones.

    Ejemplo:segn_sea expresinhacer

    valor1:

    instrucciones del valor1

    valor2:

    instrucciones del valor2

    ...

    si-no

    instrucciones del si_no

    fin_segn

    Casi todos los lenguajes de programacin poseen esta instruccin que suele ser un case(aunque C, C++, Java y C# usan switch). Se evala la expresin y si es igual que uno delos valores interiores se ejecutan las instrucciones de ese valor. Si no cumple ningnvalor se ejecutan las instrucciones del si_no.

  • 5/20/2018 00 Libro Guia Programacion Basica

    36/192

    [Fundamentos de programacin en C++]metodologa de la programacin

    [36]

    Ejemplo:

    programapruebaSelMultiple

    var

    x:entero

    inicio

    escribe(Escribe un nmero del 1 al 4 y te dir si es par o impar)

    lee(x)

    segn_sea x hacer

    1:

    escribe(impar)

    2:

    escribe(par

    )

    3:

    escribe(impar)

    4:

    escribe(par)

    si_no

    escribe(error eso no es un nmero de 1 a 4)

    fin_segn

    fin

    El segn sea se puede escribir tambin:segn_sea x hacer

    1,3:

    escribe(impar)

    2,4:

    escribe(par)

    si_no

    escribe(error eso no es un nmero de 1 a 4)

    fin_segn

    Es decir el valor en realidad puede ser una lista de valores. Para indicar esa lista sepueden utilizar expresiones como:

    1..3 De uno a tres (1,2 o 3)>4 Mayor que 4>5 Y

  • 5/20/2018 00 Libro Guia Programacion Basica

    37/192

    [1 de Administracin de Sistemas Informticos]

    Copyleft - Jorge Snchez www.jorgesanchez.net

    [37]

    En el caso de los diagramas de flujo, el formato es:

    instrucciones iterativas de tipo mientras

    El pseudocdigo admite instrucciones iterativas. Las fundamentales se crean con unainstruccin llamada mientras (en ingls while). Su estructura es:

    mientras condicinhacer

    instrucciones

    fin_mientras

    Significa que las instrucciones del interior se ejecutan una y otra vez mientras lacondicin sea verdadera. Si la condicin es falsa, las instrucciones se dejan de ejecutar.El diagrama de flujo equivalente es:

    Ejemplo (escribir nmeros del 1 al 10):

    x1

    mientras x

  • 5/20/2018 00 Libro Guia Programacion Basica

    38/192

    [Fundamentos de programacin en C++]metodologa de la programacin

    [38]

    Las instrucciones interiores a la palabra mientras podran incluso no ejecutarse si lacondicin es falsa inicialmente.

    instrucciones iterativas de tipo repetirLa diferencia con la anterior est en que se evala la condicin al final (en lugar de alprincipio). Consiste en una serie de instrucciones que repiten continuamente suejecucin hasta que la condicin sea verdadera (funciona por tanto al revs que elmient ras ya que si la condicin es falsa, las instrucciones se siguen ejecutando.Estructura

    repetir

    instrucciones

    hasta que condicin

    El diagrama de flujo equivalente es:

    Ejemplo (escribir nmeros del 1 al 10):

    x1

    repetir

    escribir(x)

    xx+1

    hasta que x>10

    instrucciones iterativas de tipo hacer...mientrasSe trata de una iteracin que mezcla las dos anteriores. Ejecuta una serie deinstrucciones mientras se cumpla una condicin. Esta condicin se evala tras laejecucin de las instrucciones. Es decir es un bucle de tipo mient ras donde lasinstrucciones al menos se ejecutan una vez (se puede decir que es lo mismo que unbucle repetir salvo que la condicin se evala al revs). Estructura:

    hacer

    instrucciones

    mientras condicin

  • 5/20/2018 00 Libro Guia Programacion Basica

    39/192

    [1 de Administracin de Sistemas Informticos]

    Copyleft - Jorge Snchez www.jorgesanchez.net

    [39]

    Este formato est presente en el lenguaje C y derivados (C++, Java, C#), mientras queel formato de r epe t i r est presente en el lenguaje Java.

    El diagrama de flujo equivalente es:

    Ejemplo (escribir nmeros del 1 al 10):

    x1

    hacer

    escribir(x)

    xx+1

    mientras x10

    instrucciones iterativaspara

    Existe otro tipo de estructura iterativa. En realidad no sera necesaria ya que lo quehace esta instruccin lo puede hacer una instruccin mient ras, pero facilita el uso debucles con contador. Es decir son instrucciones que se repiten continuamente segn losvalores de un contador al que se le pone un valor de inicio, un valor final y elincremento que realiza en cada iteracin (el incremento es opcional, si no se indica seentiende que es de uno). Estructura:

    para variablevalorInicial hasta valorfinalhacer

    instruccionesfin_para

    Si se usa el incremento sera:

    para variablevInicial hasta vFinalincrementovalor hacer

    instrucciones

    fin_para

  • 5/20/2018 00 Libro Guia Programacion Basica

    40/192

    [Fundamentos de programacin en C++]metodologa de la programacin

    [40]

    El diagrama de flujo equivalente a una estructura parasera:

    Tambin se puede utilizar este formato de diagrama:

    Otros formatos de pseudocdigo utilizan la palabra desdeen lugar de la palabra para(que es la traduccin de for, nombre que se da en el original ingls a este tipo deinstruccin).

    estructuras iterativas anidadas

    Al igual que ocurra con las instrucciones si, tambin se puede insertar una estructuraiterativa dentro de otra; pero en las mismas condiciones que la instruccin si . Cuando

  • 5/20/2018 00 Libro Guia Programacion Basica

    41/192

    [1 de Administracin de Sistemas Informticos]

    Copyleft - Jorge Snchez www.jorgesanchez.net

    [41]

    una estructura iterativa esta dentro de otra se debe cerrar la iteracin interior antes decerrar la exterior (vase la instruccin si).

    [2 4]

    otros tipos de diagramasLa programacin estructurada hoy en da no se suele representar en ningn otro tipo dediagrama. Pero para expresar determinadas situaciones a tener en cuenta o cuando seutilizan otras programaciones se utilizan otros diagramas

    [2.4.1]

    diagramas entidad/relacin

    Se utilizan muchsimo para representar datos que se almacenan en una base de datos.Son imprescindibles para el diseo de las bases de datos que es una de las aplicacionesms importantes de la informtica.

    [2.4.2]

    diagramas modulares

    Representan los mdulos que utiliza un programa y la relacin que hay entre ellos.Suelen utilizarse conjuntamente con los diagramas descritos anteriormente.

    [2.4.3]

    diagramas de estados

    Representan los estados por los que pasa una aplicacin, son muy importantes para

    planificar la aplicacin.

    [2.4.4]

    diagramas de secuencia

    Indica tiempo transcurrido en la ejecucin de la aplicacin. Son muy tiles para disearaplicaciones donde el control del tiempo es crtico.

    [2.4.5]

    diagramas de clases

    Representan los elementos que componen una aplicacin orientada a objetos y larelacin que poseen stos. Hoy en da el ms popular es el diagrama de clases de lanotacin UML.

    [2.4.6]

    UML

    UML es el nombre que recibe el lenguaje de modelado universal. UML es un estndar enla construccin de diagramas para la creacin de aplicaciones orientadas a objetos.Utiliza diversos tipos de esquemas para representar aspectos a tener en cuenta en laaplicacin (organizacin de los datos, flujo de las instrucciones, estados de laaplicacin, almacenamiento del cdigo, etc.). Este tipo de diagramas sern explicadosen temas posteriores.

  • 5/20/2018 00 Libro Guia Programacion Basica

    42/192

  • 5/20/2018 00 Libro Guia Programacion Basica

    43/192

    [43]

    [Unidad 3]el lenguaje C++

    [3 ]

    lenguajes de programacin[3.1.1]introduccin

    breve historia de los lenguajes de programacin

    inicios de la programacin

    Charles Babbagedefini a mediados del siglo XIX lo que l llam la mquina analtica.Se considera a esta mquina el diseo del primer ordenador. La realidad es que no sepudo construir hasta el siglo siguiente. El caso es que su colaboradora Ada Lovelaceescribi en tarjetas perforadas una serie de instrucciones que la mquina iba a sercapaz de ejecutar. Se dice que eso signific el inicio de la ciencia de la programacinde ordenadores.

    En la segunda guerra mundial debido a las necesidades militares, la ciencia de lacomputacin prospera y con ella aparece el famoso ENIAC (Electronic NumericalIntegrat or And Calculator), que se programaba cambiando su circuitera. Esa es laprimera forma de programar (que an se usa en numerosas mquinas) que slo vale paramquinas de nico propsito. Si se cambia el propsito, hay que modificar la mquina.

    primeros lenguajes

    No mucho ms tarde apareci la idea de que las mquinas fueran capaces de realizarms de una aplicacin. Para lo cual se ide el hecho de que hubiera una memoria donde

  • 5/20/2018 00 Libro Guia Programacion Basica

    44/192

    [Fundamentos de programacin en C++]el lenguaje C++

    [44]

    se almacenaban esas instrucciones. Esa memoria se poda rellenar con datosprocedentes del exterior. Inicialmente se utilizaron tarjetas perforadas para introducirlas instrucciones.

    Durante mucho tiempo esa fue la forma de programar, que teniendo en cuenta quelas mquinas ya entendan slo cdigo binario, consista en introducir la programacinde la mquina mediante unos y ceros. El llamado cdigo mquina. Todava losordenadores es el nico cdigo que entienden, por lo Que cualquier forma de programardebe de ser convertida a cdigo mquina.

    En los aos 40 se intent concebir un lenguaje ms simblico. Poco ms tarde seide el lenguaje ensamblador, que es la traduccin del cdigo mquina a una formams textual. Cada tipo de instruccin se asocia a una palabra mnemnica (como SUMpara sumar por ejemplo), de forma que esas palabras tienen traduccin directa en elcdigo mquina. Despus habr que traducir el cdigo ensamblador a cdigo mquina,tarea que la realiza un software especial llamado tambin ensamblador.

    La idea es la siguiente: si en el cdigo mquina, el nmero binario 0000 significasumar, y el nmero 0001 significa restar. Una instruccin mquina que sumara elnmero 8 (00001000 en binario) al nmero 16 (00010000 en binario) sera:

    0000 00001000 00010000

    Realmente no habra espacios en blanco, el ordenador entendera que los primeroscuatro BITS representan la instruccin y los 8 siguientes el primer nmero y los ochosiguientes el segundo nmero (suponiendo que los nmeros ocupan 8 bits). Lgicamentetrabajar de esta forma es muy complicado. Por eso se podra utilizar la siguientetraduccin en ensamblador:

    SUM 8 16

    Que ya se entiende mucho mejor. La cuestin es que este cdigo (todava de bajo nivel)se escribir en un editor de texto y despus un software especial (que tambin se lellama ensamblador) lo traducir al cdigo mquina equivalente. La ventaja es que latraduccin es literal, tenemos toda la potencia de la mquina ya que podemos utilizarcualquier instruccin de la misma. La desventaja es que tenemos que conocer muy bienla mquina y que el cdigo slo vale para mquinas totalmente compatibles

    El problema es que como el ensamblador es traduccin absoluta del cdigo mquina,slo vale para mquinas compatibles. No vale para cualquiera. Adems de lo pesado ylento que es programar en ensamblador.

    lenguajes de alto nivel

    Aunque el ensamblador signific una notable mejora sobre el cdigo mquina, seguasiendo excesivamente crptico. De hecho para hacer un programa sencillo requiere milesy miles de lneas de cdigo.

    Para evitar los problemas del ensamblador apareci la tercera generacin delenguajes de programacin, la de los lenguajes de alto nivel. En este caso el cdigo valepara cualquier mquina pero deber ser traducido mediante software especial queadaptar el cdigo de alto nivel al cdigo mquina correspondiente. Esta traduccin esnecesaria ya que el cdigo en un lenguaje de alto nivel no se parece en absoluto alcdigo mquina.

  • 5/20/2018 00 Libro Guia Programacion Basica

    45/192

    [1 de Administracin de Sistemas Informticos]

    Copyleft - Jorge Snchez www.jorgesanchez.net

    [45]

    Tras varios intentos de representar lenguajes, en 1957 aparece el que se considerael primer lenguaje de alto nivel, el FORTRAN (FORmula TRANsla t ion), lenguajeorientado a resolver frmulas matemticos. Poco a poco fueron evolucionando los

    lenguajes formando lenguajes cada vez mejores (ver ).As en 1958 se crea LISPcomo lenguaje declarativo para expresiones matemticas.

    En 1960 la conferencia CODASYLse creo el COBOLcomo lenguaje de gestin en 1960.En 1963 se creo PL/I el primer lenguaje que admita la multitarea y la programacinmodular.

    BASICse creo en el ao 1964 como lenguaje de programacin sencillo de aprenderen 1964 y ha sido, y es, uno de los lenguajes ms populares. En 1968 se crea LOGOparaensear a programar a los nios. Pascal se creo con la misma idea acadmica perosiendo ejemplo de lenguaje estructurado para programadores avanzados. El creador delPascal (Niklaus Wirdth) creo Modulaen 1977 siendo un lenguaje estructurado para laprogramacin de sistemas (intentando sustituir al C).

    lenguajes orientados a objetos

    En los 80 llegan los lenguajes preparados para la programacin orientada a objetostodos procedentes de Simula(1964) considerado el primer lenguaje con facilidades deuso de objetos. De estos destac inmediatamente C++.

    A partir de C++ aparecieron numerosos lenguajes que convirtieron los lenguajesclsicos en lenguajes orientados a objetos (y adems con mejoras en el entorno deprogramacin, son los llamados lenguajes visuales): Visual Basic, Delphi (versinorientada a objetos de Pascal), Visual C++,...

    En 1995 aparece Java como lenguaje totalmente orientado a objetos y en el ao 200aparece C# un lenguaje que procede de C++y del propio Java.

    lenguajes para la web

    La popularidad de Internet ha producido lenguajes hbridos que se mezclan con elcdigo HTMLcon el que se crean las pginas web. Todos ellos son de finales de los aos90.

    Son lenguajes interpretados como JavaScript o VB Script, o lenguajes especialespara uso en servidores como ASP, JSPo PHP. Todos ellos permiten crear pginas webusando cdigo mezcla de pgina web y lenguajes de programacin sencillos.

  • 5/20/2018 00 Libro Guia Programacion Basica

    46/192

    [Fundamentos de programacin en C++]el lenguaje C++

    [46]

    Fortran1954

    Algol1958

    Cobol1960

    Lisp1958

    CPL1963

    B1969

    C

    1971

    C++1983

    Logo1968Pascal

    1970

    Basic1964

    Oak1991

    Java1995

    Java 2

    1998

    Delphi1995

    Turbo Pascal1988

    Quick Basic1984

    Visual Basic1991

    JavaScript1995

    PHP1995

    Perl1987

    Simula1964

    C#2000

    Awk1978

    Sh

    1971

    Modula1975

    Python1991

    VBScript1993

    ASP1996

    SmallTalk1973

    PL/I1963

    Ilustracin 5, Evolucin de algunos lenguajes de programacin

    tipos de lenguajes

    Segn el estilo de programacin se puede hacer esta divisin:

    Lenguajes imperativos. Son lenguajes donde las instrucciones se ejecutansecuencialmente y van modificando la memoria del ordenador para producir las

  • 5/20/2018 00 Libro Guia Programacion Basica

    47/192

    [1 de Administracin de Sistemas Informticos]

    Copyleft - Jorge Snchez www.jorgesanchez.net

    [47]

    salidas requeridas. La mayora de lenguajes (C, Pascal, Basic, Cobol,...son de estetipo. Dentro de estos lenguajes estn tambin los lenguajes orientados a objetos(C++, Java, C#,...)

    Lenguajes declarativos.Son lenguajes que se concentran ms en el qu, que en elcmo (cmo resolver el problema es la pregunta a realizarse cuando se usanlenguajes imperativos). Los lenguajes que se programan usando la pregunta ququeremos? son los declarativos. El ms conocido de ellos es el lenguaje de consultade Bases de datos, SQL.

    Lenguajes funcionales. Definen funciones, expresiones que nos responden a travsde una serie de argumentos. Son lenguajes que usan expresiones matemticas,absolutamente diferentes del lenguaje usado por las mquinas. El ms conocido deellos es el LISP.

    Lenguajes lgicos. Lenguajes utilizados para resolver expresiones lgicas. Utilizanla lgica para producir resultados. El ms conocido es el PROLOG.

    intrpretes

    A la hora de convertir un programa en cdigo mquina, se pueden utilizar dos tipos desoftware: intrpretesy compiladores.

    En el caso de los intrpretes se convierte cada lnea a cdigo mquina y se ejecutaese cdigo mquina antes de convertir la siguiente lnea. De esa forma si las dosprimeras lneas son correctas y la tercera tiene un fallo de sintaxis, veramos elresultado de las dos primeras lneas y al llegar a la tercera se nos notificara el fallo yfinalizara la ejecucin.

    El intrprete hace una simulacin de modo que parece que la mquina entiendedirectamente las instrucciones del lenguaje, pareciendo que ejecuta cada instruccin(como si fuese cdigo mquina directo).

    El BASIC era un lenguaje interpretado, se traduca lnea a lnea. Hoy en da lamayora de los lenguajes integrados en pginas web son interpretados, la razn es quecomo la descarga de Internet es lenta, es mejor que las instrucciones se vayantraduciendo segn van llegando en lugar de cargar todas en el ordenador. Por esolenguajes como JavaScript(o incluso, en parte, Java) son interpretados.

    proceso

    Un programa que se convierte a cdigo mquina mediante un intrprete sigue estospasos:

    [1] Lee la primera instruccin

    [2] Comprueba si es correcta

    [3] Convierte esa instruccin al cdigo mquina equivalente

    [4] Lee la siguiente instruccin

    [5] Vuelve al paso 2 hasta terminar con todas las instrucciones

  • 5/20/2018 00 Libro Guia Programacion Basica

    48/192

    [Fundamentos de programacin en C++]el lenguaje C++

    [48]

    ventajas

    Se tarda menos en crear el primer cdigo mquina. El programa se ejecuta antes.

    No hace falta cargar todas las lneas para empezar a ver resultados (lo que hace quesea una tcnica idnea para programas que se cargan desde Internet)

    desventajas

    El cdigo mquina producido es peor ya que no se optimiza al valorar una sola lneacada vez. El cdigo optimizado permite estudiar varias lneas a la vez para producirel mejor cdigo mquina posible, por ello no es posible mediante el uso deintrpretes.

    Todos los errores son errores en tiempo de ejecucin, no se pueden detectar antesde lanzar el programa. Esto hace que la depuracin de los errores sea ms

    compleja. El cdigo mquina resultante gasta ms espacio.

    Hay errores difcilmente detectables, ya que para que los errores se produzcan, laslneas de errores hay que ejecutarlas. Si la lnea es condicional hasta que noprobemos todas las posibilidades del programa, no sabremos todos los errores desintaxis cometidos.

    compiladores

    Se trata de software que traduce las instrucciones de un lenguaje de programacin dealto nivel a cdigo mquina. La diferencia con los intrpretes reside en que se analizantodas las lneas antes de empezar la traduccin.

    Durante muchos aos, los lenguajes potentes han sido compilados. El uso masivo deInternet ha propiciado que esta tcnica a veces no sea adecuada y haya lenguajesmodernos interpretados o semi interpretados, mitad se compila hacia un cdigointermedio y luego se interpreta lnea a lnea (esta tcnica la siguen Java y loslenguajes de la plataforma .NETde Microsoft).

    ventajas

    Se detectan errores antes de ejecutar el programa (errores de compilacin)

    El cdigo mquina generado es ms rpido (ya que se optimiza)

    Es ms fcil hacer procesos de depuracin de cdigo

    desventajas

    El proceso de compilacin del cdigo es lento.

    No es til para ejecutar programas desde Internet ya que hay que descargar todo elprograma antes de traducirle, lo que ralentiza mucho su uso.

  • 5/20/2018 00 Libro Guia Programacion Basica

    49/192

    [1 de Administracin de Sistemas Informticos]

    Copyleft - Jorge Snchez www.jorgesanchez.net

    [49]

    [3 2]

    historia del C[3.2.1]

    el nacimiento de C

    Fue Dennis Ritchiequien en 1969 creo el lenguaje Ca partir de las ideas diseadas porotro lenguaje llamado B inventado por Ken Thompson, quien en los aos 70 fue elencargado de desarrollar el lenguaje C.

    Ritchie lo invent para programar la computadora PDP-11que utilizaba el sistemaUNIX (el propio Ritchie creo tambin Unix). De hecho La historia de C est muy ligada ala de UNIX, este sistema siempre ha incorporado compiladores para trabajar en C. Ellenguaje C se dise como lenguaje pensado para programar sistemas operativos.

    Sin embargo tuvo un xito inmediato y curiosamente ocurri que sus programas eranmuy compatibles con todo tipo de sistemas por lo que se transport a todo tipo demquinas y utilidades (proceso de textos, bases de datos, aplicaciones grficas).

    En 1983 el organismo ANSI(Inst i t ut o de Est ndar es de Esta dos Unid os) empez aproducir un C estndar para normalizar su situacin. En 1989 aparece el consideradocomo C estndar que fue aceptado por ISO (Inst i t ut o Mundial de Estndar es),organismo internacional de estndares. Actualmente este C es universalmente aceptadocomo el C estndar.

    [3.2.2]

    C y C++

    Debido al crecimiento durante los aos 80 de la programacin orientada a objetos, en1986 Bjarne Stroupstrup creo un lenguaje inspirado en Simula pero utilizando lasintaxis del lenguaje C.

    Hay que entender que C++ no es un C mejorado, sino que utiliza la sintaxis de C paracrear un lenguaje mucho ms potente y sobre todo preparado para utilizar laprogramacin orientada a objetos, que est ya considerada como el mtodo deprogramacin ms eficiente. No obstante todos los compiladores de C++ admiten crearprogramas en C.

    C y C++ pues, comparten instrucciones casi idnticas. Pero la forma de programar esabsolutamente diferente. Saber programar en C no implica saber programar en C++

    [3.2.3]

    el xito de C++Desde su nacimiento C++ ha estado rodeado del xito. Fue adoptado por una mirada deprogramadores que vean en l, el lenguaje ideal para generar aplicaciones. Ha sidodurante muchos aos el lenguaje ms utilizado para programar y, de hecho, siguesindolo.

    Actualmente se habla de la futura extincin de este lenguaje, pero es difcil creeren ello viendo las enormes cantidades de cdigo escritas en este lenguaje y las que sesiguen aadiendo.

  • 5/20/2018 00 Libro Guia Programacion Basica

    50/192

    [Fundamentos de programacin en C++]el lenguaje C++

    [50]

    [3.2.4]

    ventajas de C++

    Es un lenguaje que permite programar de forma estructurada, modular yorientado a objetos. Por lo que permite la asimilacin de todas estas tcnicas.

    Es un lenguaje que permite el manejo de todo tipo de estructuras de datos(arrays, pilas, colas, textos, objetos,...) por lo que es capaza de resolver todotipo de problemas

    Es un lenguaje compilado, lo que le hace muy rpido (quiz el ms rpido,descontando el ensamblador)

    Permite crear todo tipo de aplicaciones (aunque no est pensado para crearaplicaciones para ejecutar desde Internet)

    Gracias a su capacidad de uso de objetos y clases, facilita la reutilizacin delcdigo

    Permite incorporar las libreras ms utilizadas para hacer aplicaciones

    Es el lenguaje que sirve de base para los lenguajes modernos como Java, C#,Perl,...

    [3 3]entornos de programacinLa programacin de ordenadores requiere el uso de una serie de herramientas quefaciliten el trabajo al programador. Esas herramientas (software) son:

    Editor de cdigo.Programa utilizado para escribir el cdigo. Normalmente basta un

    editor de texto (el cdigo en los lenguajes de programacin se guarda en formatode texto normal), pero es conveniente que incorpore:

    Coloreado inteligente de instrucciones. Para conseguir ver mejor el cdigo secolorean las palabras claves de una forma, los identificadores de otra, el textode otra, los nmeros de otra,....

    Correccin instantnea de errores. Los mejores editores corrigen el cdigo amedida que se va escribiendo.

    Ayuda en lnea. Para documentarse al instante sobre el uso del lenguaje y delpropio editor.

    Intrprete o compilador. El software que convierte el lenguaje en cdigo mquina. Depurador.Programa que se utiliza para realizar pruebas sobre el programa.

    Organizador de ficheros. Para administrar todos los ficheros manejados por lasaplicaciones que hemos programado.

  • 5/20/2018 00 Libro Guia Programacion Basica

    51/192

    [1 de Administracin de Sistemas Informticos]

    Copyleft - Jorge Snchez www.jorgesanchez.net

    [51]

    Normalmente todas esas herramientas se integran en un nico software conocido comoentorno de programacin o IDE (Integrate Development Environment, Entorno dedesarrollo integrado), que hace ms cmodos todos los procesos relacionados con la

    programacin. En el caso de C++ hay multitud de entornos (a veces llamadossimplemente compiladores), algunos interesantes son:

    Turbo C/C++. Ahora gratis desde el enlace

    http://community.borland.com/article/images/21751/tcpp101.zip

    Borland C/C++.Ms orientado a C++, versin ms moderna del anterior (y de pago).

    Microsoft C/C++.Compilador C de Microsoft que ya dej de fabricar

    Visual Studio. Ahora llamado Visual Studio .NET por su compatibilidad con esafamosa plataforma

    GCC.Compilador C++ con licencia GNU (de distribucin gratuita y cdigo abierto)http://gcc.gnu.org/

    KDevelop.Entorno de programacin para desarrollar aplicaciones grficas en Linux(permite crear aplicaciones KDE y GNOME)

    Dev C/C++. Uno de los mejores entornos de programacin en C o C++. De libredistribucin y que posee un amigable entorno grfico.

    http://www.bloodshed.net/devcpp.html

    [3 4]

    compilacin

    Ilustracin 6, proceso de ejecucin de un programa C++

  • 5/20/2018 00 Libro Guia Programacion Basica

    52/192

    [Fundamentos de programacin en C++]el lenguaje C++

    [52]

    Ya se ha explicado anteriormente que la conversin del cdigo escrito en un lenguaje deprogramacin (cdigo fuente) puede ser traducido a cdigo mquina mediante uncompilador o mediante un intrprete.

    En el caso del lenguaje C++ se utiliza siempre un compilador. El cdigo C++ no sepuede traducir lnea a lnea, se compila en bloque para obtener el cdigo ejecutablems ptimo posible

    El proceso completo de conversin del cdigo fuente en cdigo ejecutable sigue lossiguientes pasos (ver Ilustracin 6):

    [1] Edicin. El cdigo se escribe en un editor de texto o en un editor de cdigopreparado para esta accin. El archivo se suele guardar con extensin .cpp(tambin en cxx, c++ o cc)

    [2]

    Preprocesado. Antes de compilar el cdigo, el preprocesador lee lasinstrucciones de preprocesador y las convierte al cdigo fuente equivalente.

    [3] Compilacin.El cdigo fuente resultante en lenguaje C++ se compila medianteel software apropiado, obteniendo un cdigo mquina llamado archivo objeto(cuya extensin suele ser .obj). Este cdigo an no es ejecutable ya quenecesita incluir el cdigo mquina relativo a las funciones y mdulos que seutilizaban en nuestro cdigo. Estas funciones estn incluidas en archivosexternos (libreras).

    [4] Enlazado. El cdigo objeto se une al cdigo compilado de las libreras ymdulos invocados por el cdigo anterior. El resultado es un archivo ejecutable

    (extensin .exeen Windows)[5] Cargado. Normalmente lo realiza el propio entorno de ejecucin. El archivo

    ejecutable se lanza en el Sistemas Operativo

    [6] Ejecucin de las instrucciones por la CPU.Es entonces cuando el procesadoraccede al cdigo mquina del programa ya convertido y ejecuta las acciones.Ser entonces cuando veamos los resultados.

    Estas dos ltimas fases cubren lo que se conoce como ejecucin del programa

    [3 5]

    fundamentos de C++

    [3.5.1]

    estructura de un programa C++

    Un programa en C++ (o en C) consta de una o ms funciones, las cuales estncompuestas de diversas sentenciaso instrucciones. Una sentencia indica una accin arealizar por parte del programa. Una funcin no es ms que (por ahora) un nombre conel que englobamos a las sentencias que posee a fin de poder invocarlas mediante dichonombre.

  • 5/20/2018 00 Libro Guia Programacion Basica

    53/192

    [1 de Administracin de Sistemas Informticos]

    Copyleft - Jorge Snchez www.jorgesanchez.net

    [53]

    La idea es:

    nombreDeFuncin() {

    sentencias}

    Los smbolos { y } indican el inicio y el final de la funcin. Esos smbolos permitendelimitar bloques en el cdigo.

    El nombre de la funcin puede ser invocado desde otras sentencias simplementeponiendo como sentencia el nombre de la funcin. Como a veces las funciones sealmacenan en archivos externos, necesitamos incluir esos archivos en nuestro cdigomediante una sentencia especial include, que en realidad es una directiva decompilacin.Una directiva de compilacin es una instruccin para el compilador con elque trabajamos. El uso es:

    #include

    La directiva includepermite indicar un archivo de cabecera en el que estar incluida lafuncin que utilizamos. En el lenguaje C estndar, los archivos de cabecera tenanextensin h, en C++ estndar (ANSI) no se indica la extensin de stos; aunque se sueleincluir la extensin por compatibilidad.

    Los archivos de cabecera son los que permiten utilizar funciones externas (olibreras) en nuestro programa. Hay que tener en cuenta que las cabeceras son distintasen C y C++, pero que se pueden utilizar los archivos de cabecera clsicos del C en C++.

    Una de las libreras ms utilizadas en los programas, es la que permite leer y escribiren la consola del Sistema Operativo. En el caso de C++ esta librera est disponible en lacabecera iostream (en C se utiliza la cabecera stdio.h).

    Para poder utilizar esta funcin hay que incluir su archivo de cabecera que es stdio.h.

    el primer programa en C++

    En todos los lenguajes de programacin, el primer programa a realizar es el famosoHola mundo, un programa que escribe este texto en pantalla. En C++ el cdigo de esteprograma es:

    #include

    intmain(){

    std::cout

  • 5/20/2018 00 Libro Guia Programacion Basica

    54/192

    [Fundamentos de programacin en C++]el lenguaje C++

    [54]

    [2] La funcin main es la funcin cuyas instrucciones se ejecutan en cuanto elprograma inicia su proceso.

    [3]

    La instruccin std::cout

  • 5/20/2018 00 Libro Guia Programacion Basica

    55/192

    [1 de Administracin de Sistemas Informticos]

    Copyleft - Jorge Snchez www.jorgesanchez.net

    [55]

    Comentarios iniciados con los smbolos // En ellos se ignora todo el texto hasta elfinal de lnea. Ejemplo:

    intx=5; //Comentario en la misma lneadoublea=8.0;

    palabras reservadas

    Se llaman as a palabras que en C++ tienen un significado concreto para loscompiladores. No se pueden por tanto usar esas palabras para poner nombre avariables, constantes, funciones o clases definidas por el programador. La lista depalabras reservadas proceden tanto del C, como del C++

    palabras procedentes del lenguaje C afectan tambin al C++)

    auto double int structbreak else long switch

    case enum register typedef

    char extern return union

    const float short unsigned

    continue for signed void

    default goto sizeof volatile

    do if static while

    palabra