Algoritmos Conceptos Basicos

download Algoritmos Conceptos Basicos

of 59

Transcript of Algoritmos Conceptos Basicos

  • 5/13/2018 Algoritmos Conceptos Basicos

    1/59

    C ap itu lo 1DEF IN IC IONES

    1 .1 E L C OMPUTAD OREI computador es una maquina que puede llevar. a cabo largas y complejas

    operaciones a altas velocidades. Estas operaciones son aplicadas a cierta infer-maci6n que se suministra al computador, para producir otra informaci6n lla-mada resultado. La secuencia de operaciones que se requiere para producir losresultados deseados esta determinada por un programa de computador ..Las partes esenciales que forman el computador son las siguientes:

    - Procesador,- Memoria y- Los dispositivos de entrada y salida.

    PROCESADOR . EI procesador es el que realiza la secuencia de operacionesespecificadas por el programa.LA M EM ORIA . La memoria se utiliza para almacenar lainformaci6n que va

    a trabajar el programa. Hay dos clases de memoria: la memoria principal y lamemoria auxiliar.La Memoria principal. Permite al procesador almacenar informaci6n y eje-

    cutar las operaciones una a una. La memoria principal guarda tanto las instruc-ciones del programa como los datos que se quieren prOCesar.

  • 5/13/2018 Algoritmos Conceptos Basicos

    2/59

    2 ALGORITMOS: CONCEPTOS BASICOS

    La Memoria auxiliar. Este tipo de memoria esta conformado por una serie dedispositivos donde se guarda informacion que normal mente no cabe en la me-moria principal. Las caracterlsticas esenciales de estos dispositivos son las si-guientes:1. Su capacidad es normal mente mucho mas grande que la de la memoria prin-cipal.

    2. La informacion puede ser guardada en ell os permanentemente y, a menosque se borre deliberadamente, perrnanecera grab ada en esos dispositivos.

    DISPOSITIVOS DE ENTRADA Y SALIDA

    Estos dispositivos son usados para transferir informacion del mundo exte-rior a la memoria del computador y de la memoria del computador al mundoexterior. Los dispositivos que sirven para transferir la informacion desde elmundo exterior a la memoria principal del computador son, entre otros, los si-guientes:- Los teclados de los computadores.- Las cintas- Los discos- Los diskettes- Lascintas de papel

    Los dispositivos que sirven para transferir la informacion desde la memoriaprincipal del computador al mundo exterior son, entre otros, los siguientes:

    - Los discos- Las cintas- Los diskettes- Las pantallas- La impresora- Las cin tas de papel

    A continuacion se presenta un esquema de la manera como esta organizado uncomputador. Este esquema resume en general la funcion de cada uno de loselementos del computador con relacion a los otros y como estan interrelaciona-dos entre S 1 .

  • 5/13/2018 Algoritmos Conceptos Basicos

    3/59

    !JEFINICIONES

    MEMORIAAUXlLIAR

    UNlDADESDE ENTRADA

    UNIDADESDE SALIDA

    COMO ESTA ORGANIZADO UN COMPUTADOR

    1 .2 ME MO RIALa memoria principal del computador esta compuesta por circuitos integra-

    dos y otro tipo de componentes. La arquitectura de estos circuitos perrnite alamemoria efectuar millones de operaciones en un segundo.Dependiendo de la marca del computador y de la cantidad de memoria ins-

    talada en ese computador, se puede determinar la capacidad de la memoria.La memoria se mide en bytes. Cada byte esta compuesto por 8 bits. La can-

    tidad de bytes en la memoria determina el tamafio de esta, En cada byte sepuede almacenar un caracter y el conjunto de 1.024 bytes forman un "K".Por ejemplo si ten emos una memoria de 7K, realmente se esta hablando de unamemoria con una capacidad de 7.168 bytes. Ahora bien, se denomina megabytea la reunion de un millon de bytes, por 10 tanto, si hablamos de una memoriade 7 megabytes realmente nos estamos refiriendo de una memoria de 7 millo-nes de bytes. -En la epoca actual del desarrollo de los computadores se puede hablar de

    memorias virtuales; son aquellas memorias que no tienen lfrnite. Su estudio in-cluye unos conceptos adicionales que se escapan al alcance de este libro.1 .3 E L CONCEPTO D E V AR IA BL ESe denomina variable a un conjunto de bytes. Este conjunto de bytes alma-

    cena una informacion correlacionada, por ejemplo: un nombre, un sueldo una

  • 5/13/2018 Algoritmos Conceptos Basicos

    4/59

    4 ALGORITMOS. CONCEPTOS BASICOS

    cantidad de articulos, etc. A cada variable se Ie da un nombre. Este nombre de-be tener las siguientes caracterfsticas:1. Debe comenzar con una letra.2. No debe con tener caracteres especiales. Los caracteres especiales son, entreotros, los siguientes: $ * ( ) < >, ;' -.

    3. Debe ser maximo de 32 caracteres. En computadores, se definen como ca-racteres las letras y los numeros.En el transcurso del desarrollo del libro nos referiremos a una variable como

    a una localizacion de almacenamiento. Cada localizaci6n del almacenamientotiene un nombre de acuerdo a las caracteristicas enunciadas anteriormente.

    1.4 ASIGNACIONPara almacenar informacion en la memoria, 10 unico necesario es definir una

    localizacion de almacenamiento.Supongamos que tenemos en la memoria una localizacion de almaceriamien-

    to con el nombre i. Si quisierarnos almacenar en iel numero 8 solamente sedebe hacer 10 siguiente:

    i: = 8;En este caso se dice que la variable icontiene el numero 8, y cambiara su

    contenido cuando movamos 0 asignemos, 0 almacenemos otra informacion enla variable i. Cuando esto suceda el numero 8 se pierde y en la localizaci6n dealmacenamien to iqueda almacenada la nueva informaci6n.1.5 DEFINICION DE ALGORITMOEI camino para la soluci6n de un problema en un computador, es un grupo

    de instrucciones que se escriben de acuerdo a reglas sintacticas suministradaspor un lenguaje de programaci6n. Este grupo de instrucciones se denomina pro-grama.La funci6n concreta de un programa es obtener una soluci6n. Para que el

    programa pueda obtener esta solucion, es necesario alimentarlo con datos. EIprograma toma los datos, efectua sobre ellos las operaciones indicadas por lasinstrucciones que 10 componen y produce una solucion.

  • 5/13/2018 Algoritmos Conceptos Basicos

    5/59

    DEFINICIONESUn algoritmo consiste en un grupo limitado de pasos expresados clarzrc ~

    y sin ambigucdad que, de acuerdo a un grupo de condiciones iniciales, al e-ecu- ~."..tarse produce unos resultados en un tiempo limitado.Tambien se denomina programa, a un algoritmo expresado en un lenguaje de

    prograrnacion, cualquiera que sea.Para la realizaci6n de cualquier actividad, se utilizan los algoritmos con

    el proposito de liegar a los resultados esperados, Por ejemplo, para consultar untema en un libro utilizamos un algoritrno. La diferencia entre un algoritmo pa-ra la consulta de un tema en un libra y un algoritmo para resolver un proble-ma por computador, es que este ultimo debe ser expresado con la l6gica delcomputador.

    1.6 CONSTRUCCION DE UN ALGORITMOSupongamos que deseamos construir un algoritmo para consul tar el directo-

    rio de las paginas blancas.Sabemos que un directorio telef6nico tiene miles de paginas y de numeros

    telcfonicos y solamente se necesita un numero telefonico. Para encontrar unnumero telefonico, por 10 tanto, necesitaremos desarrollar un grupo de pasosordenados en el tiempo que nos indicaran de manera inequivoca el camino aseguir para encontrar el numero deseado.Se conoce que un directorio esta dividido en secciones, cada una de las cua-

    les se identifica por una letra, como un efecto de este orden en el directorio,solamente es necesario conocer la primera letra del apellido de una persona, pa-ra eliminar de la busqueda todas las secciones menos una, la secci6n don de seencuentra la persona que buscamos.Tomando como referencia el directorio de la ciudad de Bogota del afio 1985

    y suponiendo ql,le estamos buscando el numero telef6nico de la senora:Maria T_Escobar Martinez

    Vamos a desarrollar un algoritmo que nos ayudara a encontrar este numero.Cuando tomamos el directorio en nuestras manos debemos buscar en el

    100% (1615 hojas). Despues de ubicar la secci6n identificada por la letra 'E',debemos buscar en el 2.3% del directorio. El 97.7% ha quedado eliminado.Ahora bien, en el 2.3% debemos encontrar el numero telefonico de la per-

    sona buscada. Existen varias formas para llegar a la soluciori:

  • 5/13/2018 Algoritmos Conceptos Basicos

    6/59

    6 ALGORITMOS: CONCEPTOS BASICOSa) Buscar en toda la secci6n, desde el primer nombre hasta el ultimo, la personadeseada.b) Buscar en toda la secci6n, desde eI ultimo nombre hasta el primero, la perso-na deseada.

    c) Buscar aleatoriamente el nombre de la persona deseada.Utilizando cualquiera de los metodcs anteriores, con el tiempo Ilegaremos a

    una de las siguien tes respuestas:El numero telef6nico es: numeroNo existe el numero telefonico,

    Aunque por cualquiera de los rnetodos anteriores, se Ilegara a la soluci6n,debemos idearnos una forma mas eficiente, aprovechando la organizaci6n deldirectorio.Despues de haber ubicado la secci6n donde se encuentra el nombre de la

    persona buscada, no hemos analizado las dernas ventajas que nos brinda la or-ganizaci6n de un directorio.Antes de intentar segUlr adelante, debemos estudiar la organizaci6n del di-

    rectorio. Veamos:a) El directorio esta organizado por secciones, cada una de las cuales esta iden-tificada por la primera letra del primer apeIIido de la persona. (La letra 'E').Ya hemos aplicado la regIa anterior, con el consecuente beneficio de ahorrarel esfuerzo de buscar en el 97.7% del directorio. Al aplicar la regIa anteriorsolamente estamos obligados a buscar en el 2.3 % del directorio (37 paginasde las 16 15).Dentro de cada seccion, la organizaci6n del directorio obedece a las siguien-tes normas.

    b) El directorio tiene agrupadas a todas las persona del mismo primer apellido.(Escobar).Al observar el directorio y aplicar esta norma, debemos buscar en el 0.3% so-lamente. AI haber utilizado eficientemente la organizaci6n del directorio,hemos logrado disminuir la busqueda de la persona solamente al 0.3% deldirectorio total.

    c) Dentro del grupo extractado en la regla b), el directorio tiene agrupadas a ,todas las personas de un mismo primer nombre.

  • 5/13/2018 Algoritmos Conceptos Basicos

    7/59

    DEFINICIONESDebemos buscar, el grupo de las personas llamadas:

    Mariadentro de las cinco hojas en las cuales debe estar la persona buscada. Al ob-servar el directorio y aplicar esta norma, debemos buscar en 0.25 hojas de las5. En terrninos de porcentaje debemos buscar 'en el 0.015 %del directorio. Alhaber utilizado eficientemente la organizaci6n del directorio, hemos logradodisminuir la busqueda de personas solamente al 0.015% del directorio total.

    d) Dentro del grupo extractado en la regia c), el directorio tiene agrupadas atodas las personas de un mismo segundo nombre. Debemos buscar el grupode personas llamadas:

    Marla T.dentro de las 0.25 hojas en las cuales debe estar la persona buscada. Al ob-servar el directorio y aplicar esta norma, debemos buscar entre dos nombresque aparecen en el directorio. La norma para encontrar la persona, entreestas dos es:

    e) Dentro del grupo extractado de la regia d), el directorio tiene agrupadas atodas las personas de un mismo segundo apellido.Aplicando esta norma, la persona buscada ha que dado ubicada.Despues del analisis anterior, podemos definir un conjunto de instrucciones

    que serviran, en todos los casos, para buscar el numero telef6nico de una per-sona en el directorio telef6nico. Es decir podemos disefiar el algoritmo que alejecutarlo, produce el resultado deseado. Veamos:cormenzo

    1 determinar nombres y apellidos de la persona requerida.2 bus car directorio. '3 ubicar secci6n identificada por la primera letra del pnmer apellido

    de la persona.4 ubicar el grupo de personas del mismo primer apellido.5 ubicar el grupo de personas del mismo primernombre.6 ubicar el grupo de personas del mismo segundo nombre.7 ubi car el grupo de personas del mismo segundo apellido.fin.Analizando mas de cerca el problema" nos podemos dar cuenta de que al eie-

    cutar cualquiera de los ultimos 4 pasos es probable que la persona quedeubicada sin necesidad de mas consultas.Por 10 tanto, debemos completar el al orirmo con el objezivo de ue = =

    contrar el nombre de la persona.. DO se efectuen mas busquedas,Ye=~::

  • 5/13/2018 Algoritmos Conceptos Basicos

    8/59

    ,.t

    8 ALGORITMOS. CONCEPTOS BASICOS

    Despues de ejeeutar el paso 4 del algoritmo anterior, es probable que la per-sona quede ubieada. En este easo el paso 5 se debe condieionar ast:si no se encontro la personaentonees ubiear grupo de personas del mismo primer nombre

    En el paso 5, a su vez, pudo eneontrarse la persona, 10 eual obliga a eondieio-nar el paso 6 asi:

    si no se encontro la personaentonees ubiear grupo de personas del mismo segundo nombreEn el paso 6,a su vez, pudo eneontrarse la persona, 1 0 eual erea la neeesidad

    de eondieionar el paso 7 asf:.si no se encontro la personaentonees ubicar grupo de personas del mismo segundo apellido

    Estas condiciones crean el algoritmo que se presenta a continuaciori:Comienzodeterminar nombres y apellidos dela persona requerida

    buscar directorioubicar seccion identificada por laprimera letra del primer apellido de la personaubicar el grupo de personas del mismo primer apellidosino se encontro la personaentonces comienzoubi car el grupo de personasmismo primer nombresi no se encontro la person

  • 5/13/2018 Algoritmos Conceptos Basicos

    9/59

    DEFINICIONES1.7 EJERCICIOS1. Disefiar un algoritmo, que indique la manera como se debe buscar en el direc-torio de paginas amarillas el nombre de un almacen.2. Diseiiar uri algoritmo que indique la mariera como se debe cambiar un neu-

    matico en un carro ..3. Diseiiar un algoritmo que indique como debemos hacer para buscar una di-reccion en la ciudad de Bogota.

    4. Elaborar un algoritmo que indique como debemos hacer para preparar unaensalada de frutas.

    5. Elaborar un algoritmo que indique los pasos a seguir para llegar, en avion,desde la ciudad de Bogota ala ciudad de Madrid. .

    6. Elaborar un algoritmo que indique los pasos a seguir para hacer una taza decafe.

    7. Elaborar un algoritmo que indique la manera de sacar un carro de un par-queadero.8. Elaborar un algoritmo que indique a un empleado de una casa editorial, co-mo llevar la ultima edici6n de una revista, a un suscriptor dado.

    1.8 DEFINICION DE COMPILADORUna vez se tenga construido el algoritmo, debemos transformar ese algoritmo

    a un programa de computador, esto es a un conjunto de instrucciones que laspueda entender un compilador. El programa resultante no puede ser interpret a-do por un cornputador todavia, Puede ser interpretado por un compilador. Si elproblema a desarrollar a traves de un programa de computador, es 10 suficiente-mente sencillo, es posible que ei programador escriba la solucion directamenteen un lenguaje de programacion. Si el problema a desarrollar es complejo, esindispensable que primero se disefie un algoritmo y luego se traslade el algorit-mo a un lenguaje de programacion, Luego de tener escrito el algoritmo en unlenguaje de programacion, el codigo que forma el programa, denominado "CO-digo fuente", es sometido al proceso para el cual esta disefiado el compilador.Este proceso se denomina proceso de cornpilacion, es decir transformar el cidigo fuente en otro codigo que S 1 1 0 puede entender un computador.

  • 5/13/2018 Algoritmos Conceptos Basicos

    10/59

    10 ALGOR1TMOS. CONCEPTOS BAS1COS

    1.9 ERRORES DE COMPILACIONLos errores de sin taxis, es decir los errores que comete el programador al

    escribir el programa, los detecta el compilador. Existen otros errores que elcompilador no puede detectar y se denominan errores de 16gica. Los erroresde sin taxis se refieren a infracciones que el programador cometi6 al escribirel programa. Un programa se debe escribir siguiendo ciertas normas que el pro-gramador debe respetar y si no 10 hace el compilador le indica que tipo denormas no cumpli6 durante la escritura del programa. Los errores de 16gica serefieren a aquellos errores que el programador cometi6 al no entender bien quetiene que hacer el programa. Un error de logica, seobserva cuando un programasin errores de sintaxis, no liace 10 que se supone que debe hacer. Por este mo-tivo un compilador no puede capturar un error de l6gica.

    \1.10 PROCESO DE COMPILACIONCuando el programador tiene escrito el program a, 10 somete al proceso de

    compilaci6n. Una vez que el programa este sin errores de sin taxis el compila-dor genera otro c6digo llamado codigo objeto. Se denomina c6digo objeto alprograma que el computador ejecuta, 0 10 que es 10 mismo al programa que elcomputador S 1 entiende. Al ejecutar el c6digo objeto es don de se detectan loserrores de l6gica, los cuales, dicho sea de paso, son los mas diffciles de corregir.Puede pasar que un programador corrija los errores de sintaxis en 10 minutos ydure corrigiendo los errores de l6gica durante 8 dias. Los errores de l6gica seevitan, elaborando un algoritmo bien pensado y bien planeado. Veamos el pro-ceso de compilaci6n en la siguiente figura:

  • 5/13/2018 Algoritmos Conceptos Basicos

    11/59

    DEFINICIONES

    CORRIjA ERRORESDE SINTAXIS

    L- __ @

    ESl'ECIFICACION GENERALDEL PROBLEMA

    PROCESODECOMPILACION

    Al no existir errores desintaxis, el compiladorgenera el programa objeto.

    Ejecute el programay analice si cumplioel objetivo.

    Detecte las partes delprogram a fuente dondelas instrucciones nocumplen el objetivo.

    Corrija lasinstrucciones erroneas.

  • 5/13/2018 Algoritmos Conceptos Basicos

    12/59

    l

    12 ALGORITMOS. CONCEPTOS BAS1COS

    Para alcanzar el punto "perfecto", es necesario, pues, corregir los errores desintaxis y corregir los errores de 16gica. Este proceso global se denomina depu-racion de un programa.1.11 PALABRAS RESERVADASLas palabras reservadas, son los nombres de las instrucciones 0 los nombres

    de las componentes que ayudan a formar una instruccion, 0 los nombres de lostipos de datos, 0 los nombres de algunas variables manejadas directamente por elcompilador. Es prohibido que el programador utilice para un nombre de varia-ble, de funci6n, de procedimiento, etc. una palabra reservada. Las palabras .re-servadas del compilador no pueden ser utilizadas por el programador, a menosque sea para el uso que ellenguaje de programaci6n tengaprevisto. Las palabrasreservadas, en minus cula 0 en mayuscula, que utilizamos para el desarrollo deeste libro son:

    ppal var enterol6gico car arreglode func procconst SI entsmo mq hagavalor escriba leaescribir resulta parahasta hacia cadarepita hq fparaHunc fproc fppalfmq fsi no0 y divmod igual difmenor mayor menigualmayigual ref ifunc

    iproc

  • 5/13/2018 Algoritmos Conceptos Basicos

    13/59

    C ap itu lo 2TIPO S DE DATOS

    En programacion, cuando se habla de tipos de datos, se esta haciendo refe-rencia a un rango de valores aceptados por una maquina, por ejernplo si habla-rnos de un tipo de datos entero, estamos diciendo unicamente .que el cornputa-dor acepta como un tipo de datos entero el rango de -32768 hasta 32767. Untipo de datos es un rango de valores aceptados por un computador. Los tipos dedatos son: entero, car, logico y real. Veamos en detalle el rango de valores paracada uno de estos tipos de datos.2.1 TlPO DE DATO enteroEste tipo de dato, acepta valores enteros en el rango -32768 hasta 32767.

    Cuando se este utilizando una localizacion de memoria que pueda almacenarun dato de tiro entero, solamente esa localizacion de memoria podra almace-nar un datoentero en el rango especificado anteriormente. AI tratar de alma-cenar un dato entero fuera de ese rango, el sistema genera un error y el progra-rna se cancela autornaticamente.2.2 TIPO DE DATO carEI conjunto de datos de tipo car, se presenta en la siguiente tabla:

  • 5/13/2018 Algoritmos Conceptos Basicos

    14/59

    14 ALGORITMOS. CONCEPTOS BASICOS

    DEC HEX CHAR DEC HEX CHAR DEC HEX CHAR DEC HEX CHAR0 0 32 20 64 40 @ ~6 601 1 G 33 21 ! 65 41 A 97 61 a2 2 34 22 " 66 42 B ,98 62 b3 3 35 23 # 67 43 C 99 63 c4 4 36 24 $ 68 44 D 100 64 d5 5 37 25 % 69 45 E 101 65 e6 6 38 26 & 70 46 F 102 66 f7 7 39 27 71 47 G 103 67 98' 8 a 40 28 ( 72 48 H' 104 68 h9 9 0 41 29 ) 73 49 I 105 69 i10 A I 42 2A * 74 4A J 106 6A j11 B cJ 43 2B + 75 4B K 107 6B k12 C (( 44 2C 76 4C L 108 6C 113 D l' 45 2D - 77 4D M 109 60 m14 E fl 46 2E 78 4E N 110 6E n15 F )j 47 2F I , 79 4F 0 111 6F 016 10 ~ 48 30 0 80 50 P 112 70 P17 11 . . 49 31 1 81 51 Q 113 71 . q18 12 1 50 32 2 82 52 R 114 72 r19 13 !! 51 ~3 3 83 53 S 115 73 s20 14 1 T 52 34 4 84 54 T - 116 74 t21 15 53 35 5 85 55 U 117 75 u22 16 54 36 6 86 56 V 118 76 v23 17 1 55 37 7 87 57 W 119 77 w24 18 T 56 38 8 88 58 X 120 78 x25 19 1 57 39 9 89 59 Y 121 79 Y26 lA - - 58 3A 90 5A Z 122 7A zI27 lB +- 59 3B 91 5B [ 123 7B {28 lC L 60 3C < 92 5C \ 124 7C I29 10 . . . 61 3D = 93. 50 1 125 70 }30 lE . . . 62 3E > 94 5E A 126 7E -31 IF ' " 63 3F ? 95 5F 127 7F IJ.

  • 5/13/2018 Algoritmos Conceptos Basicos

    15/59

    TIPOS DE DATOS

    OFC HEX CHAR DEC HEX CHAR

    Q

    DEC HEX CHAR DEC HEX CHAR128 80 c ; :129 81130 82131 83132 84133 85134 86135 87136 88137 89138 8A139 8B140 8C141 80142 8E143 8F144 90145 91146 92147 93148 94149 95150 96151 97152 98153 99154 9A155 9B156 9C157 90158 9E159 9F

    ueaaaaceeeiiiAAE

    6oouuybfjp ,f

    160 AO a161 A1162 A2163 A3164 A 4165 A5166 A6167 A7168 A8169 A9170 AA171 AB172 AC173 AD174 AE175 AF176 BO177 B1178 B2179 B3180 B4181 B5182 B6183 B7184 B8185 B9186 BA187 BB188 BC189 BO190 BE191 BF

    i6UfiN

    y ,v -i

    II-1~1 111=j~II I11JjJJdl

    192 CO L

    193 C1194 C2195 C3196 C4197 C5198 C6199 C7200 C8201 C9202 CA203 CB204 CC205 CD206 CE207 CF208 DO209 01210 02211 03212 04213 05214 06215 07216 08217 09218 OA219 DB220 DC221 DO222 DE223 OF

    j_

    T~

    ifJL

    trI ~JLtr,!,IITITubFIf1~j_TJrII

    224 EO e x225 E1226 E2227 E3228 E4229 E5230 E6231 E7232 E8233 E9234 fA235 EB236 EC237 ED238 EE239 EF240 FO241 F1242 F2243 F3244 F4245 F5246 F6247 F7248 F8249 F9250 FA251 FB252 FC253 FD254 FE255 FF

    ~r

    1 T

    T

    < P81 26

    en

    rJ

  • 5/13/2018 Algoritmos Conceptos Basicos

    16/59

    16 ALGORITMOS: CONCEPTOS BASICOS

    La tabla anterior recibe el nombre tecnico ASCII y para referirnos a cadadato 10 debemos hacer, escribiendo el dato entre comiIlas simples. Por ejemplo'A' 0 'Z'. Si el program ador define una localizaci6n de memoria paraalmacenarun dato de tipo car y trata de almacenar allf un dato de otro tipo, el sistema ge-nera un error en la ejecucion del program a y 10 cancela autornaticamente.2.3 TIPO DE DATO logicoEste tipo de datos acepta unicamente uno de dos valores: 0 6 1. AI definir

    una localizaci6n de memoria para almacenar un dato de tipo logico, allf sola-mente se podra almacenar un numero 0 6 un numero 1. Si no se tiene en cuentaesta regIa, el programa cancela cuando se presente la infracci6n a esa regIa.

    El capitulo 14 estudia el dato de tipo real. El lector interesado en aprender lautilizaci6n de este tipo de datos, puede consuItar este capitulo.

  • 5/13/2018 Algoritmos Conceptos Basicos

    17/59

    C ap itu lo 3C ONSTANTES Y VARIABLES

    3.1 CONSTANTESUna constante es un dato de tipo entero, car 0 logico. Por ejemplo el numero

    48 representa un dato de tipo entero, ya que esta en el rango -32768 a + 32767y es una constante ya que el numero 48 dentro del program a siempre sera 48,nunca cambia su valor. Una constante de tipo car puede ser por ejemplo '1'. Laconstante anterior representa el caracter '1' Y no el numero 1. Observe porejemplo la constante entero 2 y la constante car '2'. Aunque parezcan iguales,son dos datos totalmente diferentes. Aclaremos tambien una confusion que sepuede presentar con estas tres constantes:

    o o '0'La primera 0 la segunda representa una constante entera 0 una constante de

    tipo logico y la tercera representa el caracter '0', que es muy diferente alnumero 0 0 al valor logico O. EI compilador identifica si se esta utilizando 0como constante entera 0como constante logica, de acuerdo al uso que se leeste dando al numero O . Por ejernplo si el numero 0 se esta almacenando en unalocalizacion de memoria de tipo entero, el dato 0 se interpretara como el nu-mero O. Si se esta almacenando en una localizacion de memoria de tipo logico,el numero 0 se interpretara como un dato de tipo logico y no como entero.Existe otra manera de declarar una constante. Se puede hacer mediante el usode la instruccion const, asi:

    const n = 4 ;

  • 5/13/2018 Algoritmos Conceptos Basicos

    18/59

    18 ALGORITMOS: CONCEPTOS BAS/COS

    La instrucci6n const, indica que se esta declarando una constante. La letran, indica que esta constante se llamara a 10 largo de todo e1programa n y elnumero 4 indica que el valor de la constante es 4. El ; indica 1a terminaci6nde la declaraci6n de 1a constante n. El efecto de esta instrucci6n es que dondese encuentre la letra n dentro del program a, se trabajara como una constanteque tiene el valor 4. Podemos definir otras constantes, aSI:

    const acb

    3;'a ' ;0;

    La primera define a como una constante entera que tiene e1valor 3. La se-gunda define' c como una constante de tipo car que tiene e1valor 'a' y la terceradefine a b como una constante entera 016gicaque tiene el valor O.De acuerdoa como se utilice 1aconstante b, se determinara si es 16gica0entera.

    3.2 VARIABLESLas variables son localizaciones de memona donde se almacenan los datos

    que utilizara el programa. Para dar un nombre a una localizaci6n de memoriase uti1iza la instrucci6n var. Por ejemplo:

    var a: entero;b: logico;c: car;

    En el primer ejemplo, se esta indicando que el compilador le dara a una 10-calizaci6n de memoria el nombre a y que en esa localizaci6n de memoria sepueden almacenar unicamen te datos de tipo entero. La segunda instrucci6nindica que el programador dispone en adelante de una variable bode una 10-calizaci6n de memoria denominada b en la cual podra almacenar un dato detipo logico 0 sea un valor 1 6 O. La tercera instrucci6n obliga al compilador aseparar un lugar en la memoria para almacenar un dato de tipo car. Ese lugar dememoria se denomina c y el programador esta obligado a almacenar en ese lu-gar un dato de tipo car, cualquiera que sea. Si el programador rompe esa regIa,el programa genera un error y cancela inmediatamente despues de que se hayaordenado almacenar en c un dato que no sea de tipo car. Es importante obser-var que una variable puede tomar un valor cualquiera en un momento yluegocambiar de valor, es decir en un momento de la ejecuci6n del programa la va-riable a, por ejemplo puede tener cl valor 5 y en otro momento posterior puedetener el valor 23835.

  • 5/13/2018 Algoritmos Conceptos Basicos

    19/59

    CO_VSTANTES Y VARIABLES 9a a

    Valor de la variable a Valor de la variable aen un momento en un momento posterior

    EI programador, de acuerdo a 10 que necesite que haga el programa puedeu:ilizar la localizacion de memoria denominada a como 10 estime necesario.olamente debe tener presente que siempre se debe almacenar en la variable,tipo de dato que corresponda a aquel utilizado para definir la localizacion

    de almacenamiento.

  • 5/13/2018 Algoritmos Conceptos Basicos

    20/59

    Cap itu lo 4COMO UTILIZ AR LAS CONST ANTES

    Y LAS VARIABLES

    Al declarar una variable, 0 10 que es 10 mismo al indicarle al compilador quele de un nombre a una localizaci6n de almacenamiento, a traves de Ia instruc-ci6n var, el programador esta asignando memoria a su programa para cumpliruna tarea concreta. Al crear una nueva variable, por ejemplo:

    var a: entero ;Se esta creando una variable ala cual no tiene un dato conocido.

    aBASURA????

    En la variable a no existe un dato conocido. En el Lenguaje de la programa-ci6n se dice que en la localizaci6n de memoria bautizada con el nombre a exis-te basura. Luego, al definir una variable, antes de comenzar a utilizarla es ne-cesario llevar alliun valor, esto se conoce con el nombre de "asignacion", Esdecir debemos asignar a la variable a el dato requerido. Para efectuar una asig-naci6n existe un operador denominado el operador de asignacion y se repre-senta asi:

  • 5/13/2018 Algoritmos Conceptos Basicos

    21/59

    22 ALGORITMOS. CONCEPTOS BASICOS

    Con 10 cual para llevar el numero 10 a la parte de memoria Hamada a, debe-mos ejecutar la siguiente instruccion:a: = 10;

    Ahora la variable a se puede ver as i:a

    Si mas adelante dentro del programa efectuamos otra asignaci6n a la variablea, el valor anterior de a se pierde y este valor anterior es remplazado por elnuevo valor, as! las cosas, la instrucci6n:

    a: = 14 ;deja en la variable a el numero entero 14 y el valor anterior cualquiera que elsea es remplazado por 14.

    a

    Si tratamos de asignar un valor fuera del rango del tipo de dato de a, el pro-grama cancela. Por esto la siguiente instrucci6n no es permitida.a: =35000;

    Inmediatamente, el programa cancela su ejecuci6n. Veamos otro ejemplo:Supongamos que tenemos dos variables definidas asf:var a, b : entero ;

    y que a la variable a le asignamos el numero 7 y a la variable b Ie asignamos elnumero 13, asf:

    a:= 7;b: =13;

    Para desarrollar el ejemplo, supongamos que necesitamos intercambiar losvalores de a y b, esto es pasar el valor de a (cualquiera que el sea) a by el valorde b (cualquiera que el sea) a la variable a. Antes de ejecutar el trabajo las va-riables tienen estos valores:a b

    ~

  • 5/13/2018 Algoritmos Conceptos Basicos

    22/59

    CDJlO UTILIZAR LAS CONSTANTES Y LAS VARIABLES.-despues de ejecutar el trabajo sus valores son:

    a b

    Veamos una posible soluci6n:a b ;b a;

    Lo anterior es incorrecto. Veamos por que. Como a almacena 7 y b almacena13, la asignaci6n:

    a : = b;perrnite pasar el valor almacenado en b a la variable a y el valor de b no se mo-difica ya que la asignaci6n opera asi:

    a bEl valor de a cambia pero el valor de b permanece sin modificar. Despues de

    la primera instrucci6n, a y b tendran los siguientes valores:a b

    La segunda instrucci6n, mueve el contenido de a hacia b, con 10 cual el nu-mero 13 almacenado en a se pasa a la variable b y el valor almacenado en b secambia por el nuevo valor. CQnesto en a yen b quedan los siguientes datos:

    a b

    Para resolver el problema anterior, por 10 tanto es necesario declarar unavariable temporal que me perrnita hacer el cambio. Supongamos que tenemosdefinida una nueva variable temporal que nos ayuda a ejecutar nuestro trabajo.Primero guardamos en temporal el valor almacenado en a:

    temporal : = a ;

  • 5/13/2018 Algoritmos Conceptos Basicos

    23/59

    24 ALGORITMOS: CONCEPTOS BASICOSLuego pasarnos a la variable a el valor de b, asi:

    a : = b;y por ultimo pasamos abel valor guardado en temporal asi:

    b := temporal;Graficamen te, las cosas se pueden ver asi:a: = 7; a

    [2Jb:= 13; b

    @ Jtemporal : = a ; temporal a

    [2] [2Ja: = b; a b

    @ ] @ ]b : = temporal; a b temporal[ill [2] [2]Observe que al final del proceso, en la variable a queda el valor 13 y en la

    variable b el valor 7. EI valor final de temporal no nos interesa, esta variable seutilize como una variable auxiliar para ejecutar el trabajo.Por ultimo, es necesario indicar que existen algunas restricciones para los

    nombres de las variables. Cada vez que se necesite declarar una nueva variable,se deben tener presen te las siguien tes reglas:1. El nornbre debe comenzar por una letra minuscula 0mayuscula,2. No debe exceder de 32 caracteres.3. Despues del primer caracter todos los dernas 0algunos pueden ser caracteresnumericos,

  • 5/13/2018 Algoritmos Conceptos Basicos

    24/59

    os ~Cj_\JO UTILIZAR LAS CONSTANTES Y LAS VARIABLES _5Por ejemplo el nombre Al cumple las 3 reglas mientras que el nombre 1t noesta cumpliendo las normas. En el segundo casu el compilador genera un error

    en el proceso de compilaci6n y exigira al programador corregir el error parapoder continuar el proceso de depuraci6n del programa.En 10 relativo al uso de constantes, veamos un ejemplo que ilustra como se

    pueden utilizar constantes dentro de un programa:

    const n = 10;m = 13;var a,b,c : entero;

    a:= n;b:= M;c:= a;a:= b;b:= c;

    Inicialmente se declaran lasconstantes. En el program a anterior, existe laconstante n cuyo valor es lOy la constante m cuyo valor es 13. La asignaci6n:

    a: = n;toma el valor de la constante n y 10 almacena en a y la asignaci6n:

    b: = m;toma el valor de la constante m y 10 almacena en b. Luego de haber inicializadoa y b, intercambia los datos almacenados en a y b utilizando como auxiliar lavariable c. Al final de la ejecucion del program a, los valores almacenados en lasvariables a y b seran:

    a b

    2. Se declaran las variables3. Se escriben las instrucciones del progratna

  • 5/13/2018 Algoritmos Conceptos Basicos

    25/59

    26 ALGORITMOS: CONCEPTOS BASICOS4.1 EJERCICIOS1. Indique cuales nombres de las siguientes variables son correctos:

    \ sueldolsueldosueldol.1temporaltemporal2

    1 - JJ

    2. Al final del siguiente conjunto de instrucciones cuales son los valores finalesde las variables a, b y c.

    var a,b,c : entero;a:= 10;b:= 5;c:= a;a:= b;b:= c;c:= 10;

    3. Al final del siguiente conjunto de instrucciones cuales son los valores finalesde las variables:

    var x,yy,z : car;x:= 'A';y:= ';';z:= ':';x:= y;yy:= Z ;x:= 'R';

    4. En cual de las siguientes instrucciones cancela el programa:

  • 5/13/2018 Algoritmos Conceptos Basicos

    26/59

    ICOS

    es

    es- - ,

    /

    CRoIO UTILIZAR LAS CONSTANTES Y LAS VARIABLES 27

    var x: entero;yy : logico;c: car;

    x:= 10;yy:= 0;c:= 'A';yy:= x;c:= 'b';yy:= 1;

    5. En cual de las siguientes instrucciones cancela el programa.

    v~r, x : entcro;c: car;

    x:= 32767;c:= '48';x:= 31;c:= '0';

    6. En el siguiente programa, 2existe algun error de asignacioni':

    const N = 10;b = 1;var uno: logico;dos : entero;tres: car;uno:= b;dos:= N;tres:= 'h';

    7. Por que existe error en el siguiente programa:c O n s ! ~ " = to.,var b ' : logic~ ;... - :.".. . Ib: = n;

  • 5/13/2018 Algoritmos Conceptos Basicos

    27/59

    28

    8. Cual es el error en el siguiente programa:var b : entero;const n=10 ;b: = n;

    ALGORIT.MOS. CONCEPTOS BASICOS

  • 5/13/2018 Algoritmos Conceptos Basicos

    28/59

    C ap itu lo 5

    OPERADORES ARITMETICOS

    Los operadores aritmeticos que maneja nuestro lenguaje algoritmico son: +,- , * , div y mod. A continuaci6n, estudiaremos cada uno individualmente.5.1 OPERADOR +Este operador se puede aplicar unicamente para sumar dos datos de tipo

    entero. Se utiliza aS1:coast N = 10;var a,b,c : entero;a:= N;b:= 8;c:=a+b;

    En la variable a existe el numero 10 y en la variable b existe el nurnero 8. AIaplicar el operador '+' a las variables a y b, el efecto es sumar sus contenidos(10 + 8) y almacenar el resultado en la variable c. Despues de la instrucci6nc : = a +b ; en la variable c queda almacenado e1 numero 18 y los datos almace-nados en a y b no se alteran. Siempre en una asignaci6n s6lo se altera la variablede la izquierda de la sentencia de asignaci6n. La variable 0 variables de la dere-cha nunca sufren modificaci6n alguna. El operador + aplica unicamente sobrevariables de tipo entero. Veamos el siguiente programa:

  • 5/13/2018 Algoritmos Conceptos Basicos

    29/59

    I i

    30 ALGORIT.o/fOS. CONCEPTOS BASICOSvar a,c: entero;b: logico;a:= 10;b:= 1;c:= a + b;

    La asignacifm:c :.= a +b ;

    esta erronea ya que la variable b no es de tipo entero. En este caso el program agenera un error y cancela su ejecuci6n. EI operador +, tambien se puede utilizarde la siguiente manera:

    a:=a+b;Al utilizar as! el operador, el trabajo que hace el program a consiste en sumar

    los datos de la derecha de la sentencia de asignacion y ese resultado almacenar-10 es la variable de la izquierda. Supongamos que en a existe el nurnero 125 yen b el numero 50. Al realizar la operacion, primero se suman los valores 125 y50. E1resultado de 1a suma se guarda en algun lugar de la memoria del compu-tador. EI segundo paso es mover el resultado de la suma a la variable de la iz-quierda de la sentencia de asignaci6n. Como el lector puede observar, en estecaso el valor de a cambia. Antes era 125 y despues de 1a operacion es 175. EIvalor de la variable b no sufre ninguna modificacion. Observe la diferencia entreestas dos instrucciones:

    c : a +b;a: a +b;

    En el primer caso los valores de a y b permanecen intactos y en el segundocaso el valor de b no cambia mientras que el valor de a si se modifica. Veamospor ultimo un error que se presenta comunrnente: .

    var a,b,c : entero;a:= 15993;b:= 20145;c:= a + b;

    Aparentemente no existe error. En a existe un dato correcto ya que 15993esta en el rango de los enteros 10 mismo que el dato 20145. EI error se presentaen la suma. La suma es 36138. Este dato esta fuera del rango de los enteros Al

  • 5/13/2018 Algoritmos Conceptos Basicos

    30/59

    OPERADORES ARITMETICOS 31

    tratar de almacenarlo en c, se genera un error ya que la variable C acepta datosde tipo entero y cl numero 36138, aunque en el mundo de la maternatica esentero, al interior del computador no se acepta como un dato entero.5.2 OPERADOR-Este operador se utiliza para ejecutar unaresta entre enteros. Veamos al-

    gunos ejemplos:var a,b,c : entero;a:= 10;b:= 25;c:= a - b;

    En la variable c se almacena el numero -1510 cual es absolutamente correc-to. En el caso anterior los valores almacenados en a y b permanecen sin altera-ci6n alguna. Veamos un segundo ejemplo:

    val' a,b,c : entero;a:= -1;b:= -2 ;c:= -4;a:= a + b -c;

    Para ejecutar la operaci6n, el sistema primero que todo hace la operaci6n dela derecha. El resultado es 1. Este dato se almacena en la memoria del computa-dor. Luego el sistema pasa ese resultado a la variable de la izquierda de lasentencia de asignaci6n. Por 10 tanto en la variable a queda almacenado el nu-mero 1 y las variables bye permanecen inalteradas. Veamos por ultimo un ter-cer ejemplo:

    var a,b : entero;a:= -18532;b:= -25345;a:=a+b;

    En este caso se trata de almacenar en a el valor -43877 el cual esta fuera delrango de los enteros. Al tratar de ejecutar esta instrucci6n el sistema genera unerror y el programa cancela su ejecuci6n.

  • 5/13/2018 Algoritmos Conceptos Basicos

    31/59

    32 ALGORITMOS. CONCEPTOS BASICOS5.3 OPERADOR *Este operador se utiliza para ejecutar multiplicaciones entre datos de tipo

    entero. Al utilizar el operador *, se debe tener presente que el resultado de lamultiplicaci6n debe estar dentro del rango de los enteros. Por ejemplo, supon-gamos que queremos calcular el numero de d ias que han pasado desde el1o. deenero de 1950 hasta la fecha 7 de abril de 1992. Consideremos que cada mestiene 30 dfas y que no existen aDOSbisiestos. Para efectos de desarrollar el pro-gram a, almacenernos en las variables de tipo entero, los datos neccsarios:

    var anoi,mesi,diai : entero;\. anoi := 1950;

    mesi:= 1;diai:= 1;

    Ahara inicialicemos las variables que almacenan la fecha actual.var anof,mesf,diaf : entero;anof: = 1991;mesf:= 3;diaf:= 7;

    El mes final no es 4. En la variable mesf almacenamos el numero del mesfinal completo 10 mismo que en la variable afiof. En esta variable se almacenael numero de aDOScompletos desde 1950. La operacion:

    difafios : = afiof - afioi + 1 ;Nos calcula el nurnero de afios completos que existeentre 1950 y 1991. En

    la variable difafios se almacena el numero 42. Para saber cuantos meses existenen 42 aDOS,debernos ejecutar la siguiente operaci6n:

    meses : = difafios * 12 ;En la variable meses se almacena el numero 504. Ahora el numero de d iasque existen en 504 meses es:

    dias : = meses * 30 ;En la variable dfas quedara el numero de d ias hasta el 30 de diciernbre de

    1991, a saber 15120. Ahora debemos surnar el nurnero de dias que han pasadodesde el primero de enero de 1992 h'asta el 7 de abril de 1992.

  • 5/13/2018 Algoritmos Conceptos Basicos

    32/59

    mescena

    .En

    OPERADORES ARITMETICOS 33diasmas : = mesf * 30 + diaf ;

    Con 10 cual el numero total de dias buscado sera:dfas : = dias + diasmas:

    Con 10 eual un programa para calcular el nurncro de d ias que han pasado des-de el 10. de enero de 1950 sera:

    var anoi.mesi.diai : entero;anof,mesf,diaf: entero;dias,difanos,meses,diasmas : entero;

    \,ppaJanoi : = 1950;mesi:= 1;diai:= 1;anof: = 1991;mesf:= 3;diaf:= 7;difanos := anof'- anoi + 1;meses := difanos *,12;dias : = meses * 30;diasmas : = mesf * 30 + diaf;dias : = dias + diasmas

    fppaJ.Observando el programa anterior, se puede ver eI uso de las palabras reserva-

    das ppal y fppal. Todo el programa escrito en un lenguaje algoritmico, tiene laforma anterior. Primero se definen las variables, luego el conjunto de instruccio-nes se escriben entre las palabras reservadas ppal y fppal. Adicionalmente, des-pues de la palabra fppal, se debe eseribir necesariamente un caraeter '.'. Este ca-racter indica la finalizaei6n del bloque principal de un programa. Observese ade-mas la ausencia del ' ; , antes de la palabra fppal. Es una norma en este lenguajede programaci6n, no aceptar el ' ; , en la instrueei6n inmediatamente antes dela palabra fppal.Al final del programa, en la variable dias quedara almacenado el numero

    15217.5.4 OPERADOR div

    El cperador div, divide un dato de tipo entero entre otro dato del tipo en-tero. Antes de utilizar este operador, el prpgramador debe asegurarse de que el

  • 5/13/2018 Algoritmos Conceptos Basicos

    33/59

    I

    jI lI I

    3 4 ALGORITMOS. CONCEPTOS BASICOS

    denominador sea diferente de cera. Por ejemplo el siguiente programa generaun error ya que el denominador es cero:const N = 0;var a,b : entero;a:= 15217;b:= adivN;

    Este operadcr no guarda los decimales. La division es entera. Por esto en elsiguien te programa, en la variable a quedara el valor de 5 y en la variable b elvalor 3. Veamos:

    const N = 10;var a,b : entero;a:= N;b:= 3;a:= a divb;a:= a + 2;

    Observese que el valor de a cambia en tanto que el valor de b no se modifica.Como la division es entera, la division '10 div 3 da como resultado 3 y no 3.333como sucede en una calculadora cornun y corriente. El lector no debe pensarque esto es una restriccion de todos los lenguajes de programacion. Existenlenguajes que no tienen esta restriccion. El problema aquies que para efectosde introducir al lector en el amplio campo de la computaci6n, no trabajamosdatos con punto decimal para simplificar un poco las cosas e ir de 10 massencillo a 10 mas complejo.5.5 OPERADOR modEste operador informa el residuo de una division despues de dividir dos en-

    teras. Su utilizacion se puede ver en el siguiente ejemplo:var a,b,c : entero;a:= 10;b:= 3;c:= amod b;

    EI residua que resulta de la division a entre b es 1, luego en la variable cqueda almacenado el numero 1. Veamos este ejemplo:

  • 5/13/2018 Algoritmos Conceptos Basicos

    34/59

    en elbel

    amosmas

    en-

    OPERADORES ARITMETICOS 35var a.b,c : entero;a:= 10;b:= 3;c:= b mod a;

    En este caso en la variable c queda almacenado el numero 3 ya que al dividir3 entre 10, da como cociente 0 y sobran 3.Este operador se utiliza en algunos casos para descomponer un dato de tipo

    entero en sus drgitos, individuales. Por ejemplo si queremos saber el conjunto dedigitos que Iorrnanel numcro 123,10 podemos hacer asi:

    var a,ult,med,prim : entero;

    a:= 123;ult:= a mod 10;a:= a div 10;med:= a mod 10;a:= a div 10;prim:= a mod 10;

    En la variable uIt queda almacenado el nurnero 3, en la variable med se alma-ceriara el numero 2 y en la variable prim se almacena el numero 1.5,6 EJERCICIOS1. Que valor queda almacenado en cada una de las variables del siguiente pro-grama:

    var a,b,c : entero;a:= 10;b:= 4;c:=a+bjc:= a + b + Cj

    2. Existe algun error en la ejecucion del siguiente programa:var a,b,c : entero;a:= 82;b:= 41;c:= b * 2;c:= c+ a;b:=b-cja:= a div Cj

  • 5/13/2018 Algoritmos Conceptos Basicos

    35/59

    1 '1

    1

    36 ALGORITMOS. CONCEPTOS BASICOS

    Si no existe error en la ejecuci6n, que dato queda almacenado en cad a unade las variables.3. Que valor queda almacenado en la variable a en el siguiente program a:

    var a,b : entero;a:= 10;b:= 3;a:= a mod b;b:= 20;a : = a + a mod b;a:= a div2;

    5.7 EL USO IMPLlCITO DE LOS PARENTESISLos operadores estudiados anteriormente, tienen una jerarquia dentro de las

    operaciones aritrneticas. Esta jerarqufa, se resume en 1'1siguiente tabla:mod div * derechazquierda

    izquierda derecha-

    Los operadores mod, div y * tienen mayor jerarqu ia que el + y el -. Estoquiere decir que cuando se presenten varios de los operadores dentro de unaoperaci6n ari trnetica los operadores mod, .div y * actuan sobre los operandosprimero que los operadores de suma y resta. Por ejemplo:c : = a + b mod d;

    Como el operador mod tiene mas jerarquia que el operador + , Ia operacion,la va a ejecutar el program a como si estuvicra escrita aSI:C . - a + (bmod d) ;

    Veamos otro ejemplo:x := y div z + 3 ;

    Como el operador div tiene mas jerarqu ia que el operador +, el sistema eje-cut ad. 1'1operacion como si cstuviera escrita asr:x : = (y div z) + 3; .

  • 5/13/2018 Algoritmos Conceptos Basicos

    36/59

    OPERADORES ARITII4ETICOSEn caso de que 1a operacion incluya operadores con 1amisma jerarquia e1sis-tema los asocia de izquierda a derecha. Par ejemplo:

    x :=y+z-w;En cste caso el programa ejecuta la operaci6n como si estuviera escrita asf:

    x : = (y + z) - w ;Veamos el siguien te ejemp1o:

    x : = x div y + z mod w ;En este caso el sistema ejecuta la cperacion asociada asf:

    x:= (xdivy)+ (zmodw);y no aSI:

    x : = x div (y + z) mod w ;Como algun programador 10 pudiera esperar. Veamos los siguientes ejemplos:

    a : = a + b + c div d ;El sistema prirnero ejccuta 1a division (c div d) y luego ejecuta las sumas deizquierda a derecha. E1resultado de la operaci6n se almacena en a.

    x := x mod b div c * d ;El sistema ejecuta la instruccion anterior, como si estuviera escrita asf:

    x : = x mod b) div c) * dE1 resultado final se almacena en 1avariable x.

    5.8 EL USO EXPLICITO DE LOS PARENTESISLos parentesis izquierdo y derecho, se utilizan para modificar la jerarqufa delas operaciones aritrneticas. Veamos algunos ejemplos:

    a := a div b - x ;

    . . .

  • 5/13/2018 Algoritmos Conceptos Basicos

    37/59

    r J r f -I , ,

    , III I,I[II:1

    Ir .i II

    3 8 ALGORITMOS: CONCEPTOS BASICOS

    EI progr~ma inicialmente ejecuta la division y al resultado de la division Ieresta el numero almacenado en x. Implicitamente el programa establece la aso-ciacion de los operandos.Si se necesita modificar la jerarqu ia, es necesario escribir explicitamente los

    parentesis; por ejemplo:a : = a div (b - x) ;

    Inicialmente se ejecuta la operacion al interior de los parente sis y luego eseresultado sera. el deno.miriador de la division. La operaci6n efectuada es:

    aa= b-xVeamos este otro ejemplo:

    a :=a + (b + x) div c ;En este caso inicialmente se ejecuta la suma dentro del parentesis, luego se

    ejecuta la division y luego se ejecuta la suma externa. La operacion que seejecut6 realmente es:

    a = a + [(b + x) / c ]Sin los parentesis explrcitos la operacion ejecutada hubiera sido:

    a = a + b + (x / c)Veamos este otro ejemplo:

    a .:= a - (b - x) ;En este caso primero se ejecuta la operaci6n entre parentesis y luego se efec-

    tua la resta extern a al parentesis. Por ejemplo si a es igual a 10, b almacena -7y x contiene -3, el resuItado de la operacion es almacenar en a el numero 14.Si la operaci6n se hubiera escrito sin parentesis:

    a: = a - b - x;el resultado hubiera sido 20. Veamos este otro ejemplo:

  • 5/13/2018 Algoritmos Conceptos Basicos

    38/59

    OPERADORES ARITMETICOS 3 9a: = a * (b - c) mod 3 ;

    Inicialmente se ejecuta la operaci6n parentizada. Como el * y el operadorod, tienen la mismajerarquia, los operadores se asocian de izquierda a derecha,- decir primero se ejecuta la multiplicaci6n y luego se ejecuta la operaci6nzsociada con eI mod. La operaci6n se ejecuta como si se hubiera escrito asr:

    a= [a*(b-c)]mod3Los parentesis pueden estar anidados, esto es unos dentro de otros. Por

    ejemplo:a: = a * ( (b + c) mod 10) ;

    En este caso los parentesis se resuelven de adentro hacia afuera. Primero seejecuta la operacion (b + c), luego al resultado anterior se Ie calcula el residuoa 10 y luego el resultado anterior se multiplica por a y la respuesta total se al-macena en la variable a.-.9 EJERCICIOS1. Escribir las formulas que a continuaci6n se relacionan para que puedan in-terpretarse por un compilador, siguiendo las reglas establecidas anterior-mente:

    A=A+BC

    X=X+Y-AD-1

    AY= ---B-5

    AZ B-3- A+2B

    B+CA=X+Y

    Z

  • 5/13/2018 Algoritmos Conceptos Basicos

    39/59

    I I 'I

    40 ALGORITMOS CONCEPTOS BASICOSC DA- __ + -X

    X-V 2+ ZX=------------------~------B + D

    Z 4XA+ B+X= A~ B c- + -- -- -- O C ,, - 1

    2. Dadas las siguientes variables:var a, b, c, d, e : entero ;

    Inicializadas asr:a - 10 ,b - -5;c - 4 ,d - -1,e - 8 ,

    Calcule el resultado de cada una de las siguientes operaciones:

    1) a:= a + b dlv c;2) a: = a * b div C ;3) a: = (a + b) div C ;4) a: = (a + b) mod (e + d);5) a: = a * (a + b) mod (e + d) div 10;6) a: = a - b - c;7) a: = a - (b - c);8) a:= a * (a + b) mod e + d) div 10);

    -8

  • 5/13/2018 Algoritmos Conceptos Basicos

    40/59

    Cap itu lo 6EXPRE SIONE S BOOLEANAS

    Una expreSlOn booleana es aquella que al evaluarla da como resultadounvalor de falso 0 verdadero, es decir un valor l6gico. Por ejemplo:

    3>2

    Si se evalua la expresion anterior evidentemente nos va a generar un valorl6gico verdadero ya que el numero 3 es mayor que el numero 2.Tomemos otro ejemplo:

    a> bEsta expresion l6gica da un valor logico verdadero si el contenido del campo

    a es mayor que eI contenido del campo b. Si el contenido del campo a es menoro igual al contenido del campo b esta expresi6n booleana da como resultado unvalor 16gico falso.Veamos la siguiente expresi6n booleana:

    x = zEsta expresi6n booleana se compone de dos partes. La primera a > b y la

    segunda x = z. Cuando el computador entra a -evaluar esta expresi6n 10 hace

  • 5/13/2018 Algoritmos Conceptos Basicos

    41/59

    42 ALGOR[TMOS. CONCA"PTOS BAS[COS

    de la siguiente forma: Primero evalua la expresi6n a > b y determina su valorlogico, luego evalua la expresion x = z y determina su valor 16gico.Supongamos que al iniciar esta instrucci6n los valores almacenados en los

    campos a, b, x y z, son 1, 3, 5, 2 respectivamente. De acuerdo a estos valores laexpresi6n a > b da como resultado un valor 16gico falso y la expresi6n x=Zda como resultado un valor 16gico falso. Una vez evaluadas las dos expresionesel programa determina si toda la expresi6n es falsa 0 verdadera. En nuestro casoesta expresi6n es falsa.6.1 OPERADORES DE RELACIONEstos operadores permiten a un programador, establecer una relaci6n entre

    dos constantes 0variables. Por ejemplo se puede establecer una relacion de ma-yor, menor, etc. Los operadores de relaci6n disponibles son:

    < menor men or mayor mayor>= mayigual mayor a igual= igual igual dif diferente

    Los operadores anteriores, establecen una relaci6n entre dos variables delmismo tipo, Por ejemplo:

    vara,b : entero;s : logico;

    ppala:= 10;b:= 5;s:= a > b

    fppal.Como el contenido de la variable a esmayor que el contenido de la variable

    .b, la comparaci6n es verdadera. Observese que el resultado de la comparaci6nes un valor l6gico. Existen 2 valores l{:gicos: 1 6 O . Si el resultado es verdadero

  • 5/13/2018 Algoritmos Conceptos Basicos

    42/59

    46 ALGORITMOS. CONCEPTOS BASICOSvara,b : entero;s: logico;

    ppala:= 10;b:= 5;s:= no (a> b)

    fppal.La expresi6n 16gica (a > b) es verdadera. AI negar, a traves del operador 16-gico no, una expresion verdadera, e1result ado es falso ya que no verdadero =

    falso. Por 10 tanto en la variable s queda a1macenado el valor l6gico O . Veamoseste otro ejemplo:

    vara,b,c,d : entero;s: logico;

    ppala:= 1 0;b:= a + 1; IIc:= b - 5; "d:= 4;s := (a < = b) y no (c < > d)fppal, (, jIb L. 7 "

    El compilador asocia de la siguiente manera la expresi6n:s : = (a < = b) y (no (c < > d) ) ;

    La primera expresi6n es verdadera. La expresi6n (c < > d) es verdadera,1uego la segunda expresion es falsa. Consultando la tabla de verdad, concluimosque toda la expresi6n es falsa, 10 cual genera para s un valor l6gico O.Vearnoseste ultimo ejemplo:

    vara,b,x,y: entero;s : logico;

    ppala:= 1;b:= 5;x:= 3;y:= 2;s := no (a > b) y no (x = y) 0 (x + Y < a

    fppaI.

  • 5/13/2018 Algoritmos Conceptos Basicos

    43/59

    44 ALGORITMOS: CONCEPTOS BASICOS

    2. El operador 16gico 03. El operador 16gico noEstos tres operadores 16gicos unen dos 0mas expresiones booleanas, Es im-

    portante tener en cuenta que para el manejo de los operadores l6gicos se tienenciertas reglas de jerarqu ia, Las reglas de jerarquia utilizadas para el manejo delos operadores 16gicos son las siguientes:El operador 16gicono es el de mayor jerarquia.El operador logico y es el de media jerarquia.y el operador 0 es el de la minima jerarquia.Para la estructuraci6n de expresiones 16gicas, tam bien es importante el uso

    de los parente sis. Con el uso de parente sis la jerarquia de los operadores 16gicosse puede cambiar. Adicionalmente el uso de parentesis en expresiones 16gicasincrementan la claridad y la comprensi6n de la expresion.

    6.3 TABLAS DE VERDADA continuaci6n presentaremos una tabla que nos resume la manera como se

    relacionan dos expresiones 16gicas cuando estas estan unidas con el operadorlogico y el operador 16gico00el operador logico no.

    p q pyq poq no pfalso falso falso falso verdaderofalso verdadero falso verdadero verdadero

    /

    verdadero falso falso verdadero falsoverdadero verdadero verdadero verdadero falso

    En la tabla anterior p es una expresion booleana y q es otra expresi6ri boo-leana. Se resume en terrninos generales emil es el resultado de la uni6n de dosexpresiones booleanas unidas por cualquiera de los operadores 16gicos. Porejemplo: Si la expresion booleana p es falsa y la expresi6n booleana q es ver-dadera entonces si unimos estas dos expresiones con la palabra y el resultadode toda la expresion booleana es falso. Por otra parte, si la expresion booleana

  • 5/13/2018 Algoritmos Conceptos Basicos

    44/59

    EXPRESJONES BOOLEANAS

    p es verdadera y la expresi6n booleana q es falsa el resultado de la uni6n deestas dos expresiones booleanas a traves de la palabra 0 nos da verdadero. To-das las combinaciones posibles de la uni6n de dos expresiones booleanas porcualquiera de los operadores l6gicos se presentan en la tabla anterior. A conti-nuaci6n presentaremos algunos ejemplos que nos muestran de una maneraclara la utilizaci6n de la tabla anterior ..Veamos este programa:

    v a ra,b,xsy : entero;s: logico;

    ppala:= 1;b:= 0;x:= 0;yy:= 2;s : = (a > b)y (x = yy)

    fppal.La primera dud a que se presenta al analizar el programa anterior es con re-laci6n a la jerarqura de los operadores. Siempre y cuando existan en la mismaexpresi6n operadores de relaci6n y operadores 16gicos, se debe resolver la ex-presi6n tomando en cuenta las siguientes relaciones de jerarquia:

    Operadores de relaci6n ===Operad ores 16gicos no

    yo

    Como los operadores de relaci6n tienen mayor jerarqufa, la expresi6n seevalua asf:

    s: = (a> b) y (x = y) ;La expresi6n booleana (a> b) es verdadera y la expresi6n booleana (x = y)es falsa, luego y de acuerdo a la tabla de verdad, y considerando a la expresi6n

    (a> b) como (p) y ala expresi6n (x = y) como (q), la expresi6n total sera falsaya que una expresi6n verdadera unida a una expresi6n .falsa a traves del opera-dor (y) es falsa. El valor de s sera por 10 tanto O . Observemos este segundoejemplo:

    45

  • 5/13/2018 Algoritmos Conceptos Basicos

    45/59

    46 ALGORITMOS. CONCEPTOS BASICOSv a ra,b : entero;s: logico;

    ppala:= 10;b:= 5;s:= no (a> b)

    fppal.La expresion logica (a > b) es verdadera. Al negar, a traves del operador 10-

    gieo no, una expresion verdadera, el result ado es falso ya que no verdadero =falso. Por 10 tanto en la variable s queda almaeenado el valor Iogico O.Veamoseste otro ejemplo:

    v a ra,b,c,d : entero;s: logico;

    ppala:= 10;b:= a + 1; IIc:= b -5; ~d:= 4;s: = (a < = b) y no (c < > d)

    fppal. G If b L. 7 uE1eompilador asocia de la siguiente manera la expresion:

    s : = (a < = b) y (no (c < > d) ) ;La primera expresi6n es verdadera. La expresion (c < > d) es verdadera,

    luego la segunda expresion es falsa. Consultando la tabla de verdad, eoncluimosque toda 1a expresion es falsa, 10 eual genera para s un valor logico O.Veamoseste Ultimo ejemplo:

    v a ra,b,x,y : entero;s: logico;

    ppala:= 1;b:= 5;x:= 3;y:= 2;s := no (a > b) y no (x = y) 0 (x + Y< a

    fppal,

  • 5/13/2018 Algoritmos Conceptos Basicos

    46/59

    EXPRESIONES BOOLEANAS

    Autornaticamente el compilador trabaja la expresion como S1 estuviera es-crita asf:

    s := (no (a > b) y (no (x = y ) 0 (x + Y < a);

    La expreslOn (a > b) es falsa, luego no (a> b) es verdadero. La expresi6n(x = y) es falsa, luego no (x = y) es verdadero. Por 10 tanto la expresi6n:

    no (a > b) y no (x = y)

    es verdadera. La expreslOn (x + y < a) es falsa, luego toda la expresi6n seraverdadera ya que dos expresiones booleanas unidas a traves del operador 0cuando cualquiera es verdadera, resulta ser verdadera.6.4 EJERCICIOS1. Tomando el siguiente programa, calcule el valor final de s y el valor final de

    s1.vara,b : entero;s,sl : logico;

    ppala:= 10;b:= 18;s:=ab;sl:= adifb

    fppal.2. Tomando el siguiente programa, calcule el valor final de s:

    vara,b: entero;s : logico; .

    ppala:= 10;b:= 18;s:=no(ab)

    fppaI.

  • 5/13/2018 Algoritmos Conceptos Basicos

    47/59

    48 ALGORITMOS: CONCEPTOS BASICOS

    3. Tomando el siguiente programa, calcule el valor final de s:var a,b: entero;

    s: logico;ppala:= 10;b:= 18;s : = (a > b) 0no (5 < = a - 5)fppaI. .

    4. Tomando el siguiente programa, calcule el valor final de s:

    var a,b,c,d: entero;s: logico;

    ppala:= 10;b:= 9;c:= a modb;d:= (c + 1) div2js := no ( (a > b) y (c = d) )fppaI.

    " . -~

  • 5/13/2018 Algoritmos Conceptos Basicos

    48/59

    C ap itu lo 7TOMA D E D EC ISIO NES

    7.1 LA INSTRUCCION siTodo compilador tiene una instrucci6n que permite a un programador ins-

    truir al computador para elegir entre una u otra alternativa. Esta instrucci6n ladenominaremos si y tiene la siguiente forma:

    si condicionent instruccion;

    fsi ;condicion es una expresion booleana, la cual genera un valor verdadero (1) 0falso (0). Si el valor generado fue verdadero entonces se ejecuta la instrucci6nque sigue a la palabra reservada ent (entonces). Si el valor generado por la con-dici6n fue falso, la instrucci6n no se ejecuta. Por ejemplo:

    sia = benta:= a + 1

    fsi;El programa suma 1 al contenido de la variable a si a es igual a b. Si la condi-

    ci6n no se cumple el valor que existe almacenado en la localizaci6n de memoriaHamada a no cambia.

  • 5/13/2018 Algoritmos Conceptos Basicos

    49/59

    50 ALGORITMOS' CONCEPTOS BASICOSSupongamos que para el ejemplo anterior en el campo a exista el numero 8

    y en el campo b el numero 3. En este casa espedfico si estos son los datos al-macenados en esas localizaciones de almacenamiento, cuando el computadorejecute esa instrucci6n no se sumani un 1 al contenido del campo 3.Veamos este otro ejemplo:

    sia < > bcnt a:= a + b

    fsi;En el ejemplo anterior si a es diferente de b, el computador sumara al con te-

    nido del campo a el contenido del campo b. Si a es igual a b no se ejecuta laoperacion.La condicion que determina cual opclOn debe seguir la instruccion si, puede

    ser 10 compleja que se quiera. Por ejemplo supongamos que deseamos saber siun ana es bisiesto 0 no. En caso de que el numero de un ana almacenado en lavariable afio sea bisiesto, se pide asignar a la variable c de tipo car la letra 's', de10 contrario se debe almacenar la letra 'n'. Un aiio es bisiesto si es divisible por4 y no es divisible por 100, excepto los afios multiples de 400. Por esto Ia con-dici6n debe disefiarse asf:

    c:= 'N';si (a mod 4 = 0) y (a mod 100 < > 0) 0(a mod 400 = 0)cnt c:= 'S'

    fsi;La condicion anterior es verdadera si se cumplen las dos primeras condicio-nes 0 se cumple solamente la tercera condicion, La tercera condicion esta che-

    queando si el ana es rnultiplo de 400, en cuyo caso el afio es bisiesto. Las dosprimeras condiciones estan determinando si el afio es multiple de 4 y no es di-visible por 100. Si las dos condiciones son verdaderas el ana sera bisiesto. Ob-servese que se asume que el afio no es bisiesto ya que Ia variable c tiene un valor'n'. Este valor cambia si y solo si el ana analizado es bisiesto. Veamos un pro-grama que determina si un ario es bisiesto 0no:

    const DATO = 1874;varc: car;a: cntcro;

    ppala:= DATO;

  • 5/13/2018 Algoritmos Conceptos Basicos

    50/59

    TOMA DE DECISJONES

    c:= 'N';si (a mod 4 = 0) y (a mod 100 < > 0) 0(a mod 400 = 0)ent c:= 'S'

    fsippaI.

    Veamos otro ejernplo. Supongamos que estamos construyendo un programaque deba sumar a la variable b y a la variable a el numero 5 si y solo si en 1a va-riable a existe un numero par. Para efectos de cumplir con esta tarea, es nece-sario elaborar una instrucci6n aSI:

    si amod2 = 0ent a:= a + 5;b:= b + 5

    fsi;Observese que cuando se necesite escribir mas de una instruccion, solamente

    es necesario escribirlas una a continuacion de 1a otra sin ningun problema. Seejecutaran itodas las instrucciones que se encuentren despues de la palabra re-servada ent y antes de la palabra reservada fsi 1a cual denota el fin de 1a instruc-cion si.

    Por ultimo resolvamos este problema. Suponga que se nos pide escoger ellado mas corto de un triangulo. Las magnitudes de dichos lados se encuentranalmacenadas en las variables enteras a, b y c. EI lado mas corto se debe alm ace-nar en la variable lado. Analizando el problema se observa que su solucion con-siste en escoger el menor valor de los almacenados en las variables a, b y c. Paraescoger el menor valor entre a y b, se puede utilizar el siguiente Onjunto deinstrucciones:

    lado:= b;si a < ladoent lado:= a

    fsi;Hasta aqui tenemos en la variable lado, el menor valor entre a y b. Ahora

    debemos investigar si la variable c contiene un menor valor, asf:si c < ladoent lado : = cfsi;

    Con 10 cual un program a para almacenar en la variable lado el valor menorde los tres lados de un triangulo podria ser:

  • 5/13/2018 Algoritmos Conceptos Basicos

    51/59

    I52 ALGORfTlvJOS: CONCEPTOS BASICOS

    consta = 6;b = 8;c = 5;

    var lado : entero;ppallado:= b;si a < ladoent lado:= a

    fsi;si c < ladoent lado:= c

    fsippal .

    .Existe una forma de la instrucci6n si mas completa. Veamos:si condicionent instruccionsino instruccionl

    Isi;instruccion2;

    condicion es una expreslOn booleana. Esta expreslOn booleana "-~resultado UIf valor verdadero(l) 0 falso (0). Si el resultado de ronbool eana fue 1, se ejecuta la instruccion que sigue ala palabra _(entonees) y luego de haber ejeeutado esta instrueci6n el cc _rna salta y ejecuta la instruccion Z. Observese algo vital. La IDs..I"iRll:J:..::l.ejeeuta. Ahora, si la condici6n result6 ser falsa el control de:-:la instruccion que sigue a la palabra reservada sino, en es;cion 1 y luego salta y ejecuta la instrucci6n2. Observese q~trucci6n que sigue ala palabra ent.Veamos un primer ejemplo:

    sia = bentx:= x + 1sino h:= h + J

    fsi;Al memento de ejecutar esta instruccion .

    a b, en caso de que a sea igual a b entonces

  • 5/13/2018 Algoritmos Conceptos Basicos

    52/59

    TOMA DE Dt:CISJONESsulta ser diferente de b se Ie sum a un 3 al campo h. Es decir, si a es igual a b en-tonces sume un 1 al campo x de 10 contrario sume un 3 aI campo h.Veamos este cjernplo :

    sia = bent a t = a + 1;

    b:= b + 4sino h:= h+ 1

    fsi;En Ia instruccion anterior si Ia condici6n a = b resulta verdadera entonces se

    ejecutan las instrucciones a = a + 1 y b = b + 4. En casu de que la condici6na = b resulte ser Ialsa, se cjecut ara la instruccion que va despues del sino, esdecir, h = h + 1.Vearnos un cjernplo, donde Ia condici6n sea compuesta:

    si (a > b) y (x = y)ent a:= a + 1fsi;

    En esta instruccion si, existe una cxpresion booleana compuesta por dos ex-presioncs simples. La primera expresion simple es a> b y la segunda expresionsimple es x = y. Estas dos cxpresiones booleanas simples estan unidas por la pa-labra y. Para eI estudio de la totalidad de Ia expresion booleana suponga que laprimera expresion simple se deriornina pyla segunda expresi6n simple se deno-mina q. Ahora bien, suponga que cuando el computador entr6 a ejecutar estainstruccion en el campo a existe el numero 5, en el campo bel numero 2, en elcampo x eI numer o 3, y en el campo y el numero 2.De acuerdo a estos datos, la primera expresi6n booleana toma el valor ver-

    dadero ya que a cs mayor a b y la segunda expresi6n booleana tom a cl valorfalso. Es decir, la expresi6n booleana p toma el valor verdadero y la expresi6nbooleana q toma el valor falso. Con estes datos veamos la tabla de verdad. Sepuede observar que cuando p es verdadero y q es falsa, el resultado de la expre-sian booleana total, cuando se utiliza la palabra y, es Ialso. Por 1 0 tanto, con losdatos preceden tes no se ejecuta la instrucci6n a: = a + 1; ya que esta instruc-cion solamentc se cjecutarra si la expresion booleana total es verdadera.Analicernos este otro ejemplo:

    si (h > z) y (a = b) 0 (c = d)ent a c= 0sino b;= 2

    fsi;

  • 5/13/2018 Algoritmos Conceptos Basicos

    53/59

    54 ALGORITMOS. CONCEPTOS BASICOS

    Suponga que en los campos h, z, a, b, c y d existen los nurneros 4, 1,3, 2, 3,1, respectivamente. En esta expresion booleana compleja existen tres expresio-nes booleanas simples unidas por operadores l6gicos. De acuerdo a los datosalmacenados en los campos, la primera expresi6n booleana tiene un valor 16-gico verdadero, la segunda expresi6n booleana tiene un valor l6gico falso y latercera tiene un valor l6gico falso. Revisando el concepto de jerarqu ia estu-diado anteriormente se concluye que Ia expresi6n booleana h > z unida a la ex-presion booleana a = b es la que se ejecuta primero, por el heche de que eIoperador 16gico y tiene mayor jerarquia que el operador l6gico o. Si a la pri-mera expresion booleana Ie damos el nombre p, a la segunda expresi6n bool ea-na el nombre q y a la tercera expresi6n booleana el nombre r, se concluye quela expresi6n booleana p unida a la expresi6n booJeana q a traves del operador16gico y, se resuelve en una sola, cuyo valor logico es falso. Esta nueva expre-si6n boo1eana, despues de que ha sido evaluada, se une con la otra expresi6nbooleana Hamada r a traves del operador l6gico o. Sabemos que una expre-si6n booleana falsa unida a otra expresi6n booleana falsa a traves del operadorl6gico 0 da como resultado el valor l6gico falso. Por 10 tanto la expresion boo-leana total es falsa y por este hecho se ejecuta la instrucci6n b :=2.Ahora vamos a resolver el siguiente problema. Sup ongam os que tenemos enlas variables a, bye tres datos de tipo entero. Se pi de determinar si con estastres magnitudes podemos formar un triangulo. Un triangulo se puede formal' si1a sum a de los dos segmentos menores es mayor que e1 segmento mayor. Porejemplo con los segmentos de longitud 8, 5, 3 no se puede formar un triangulo.Si los segmentos fueran 8, 5, 4, S1 se podr ia. Para resolver eI problema primerodebemos ordenar a, bye de men or a mayor de manera que en a y b existan losdos datos menores y en c exista el mayor dato. De manera que con la instruc-

    cion:si a + b> cent trian := 'S'sino trian : = 'N'

    fsi;

    queda resuelto el problema. La variable trian tendra el valor's' si se puede for-mar el triangulo 0 'n' si no se puede formar el triangulo, Observese la condici6nde la instrucci6n si.. La suma a + b se ejecuta en la memoria pero ni a ni b sonmodificados. Para que a 0b u otra variable sea modificada, debe existir en laoperacion al operador de asignaci6n ': = ' . Por 10 tanto a, bye permanece-ran con los valores originales. Observese adicionalmente que los operadores rna-ternaticos, tienen mayor jerarqufa que los operadores de relaci6n. Para efectosde organizar los valores almacenados en a, bye de manera ascendente, 10 hare-mos en tres pasos. Primero: Organizamos a y b aS1:

  • 5/13/2018 Algoritmos Conceptos Basicos

    54/59

    I TOMA DE DECISIONESsia> bent

    t:= a;a:= b;b:= t

    fsi;

    Hasta aqui aseguramos que en la variable a existe el menor valor entre a yb. Ahora escojamos el menor valor entre aye, as i:sia > centt:= a;a:= C ;c:= tfsi;

    En este momento podemos asegurar que en la variable a existe el men or va-lor. Ahora escojamos el menor valor entre bye, asf:

    si b > centt:= b;b:= C ;c:= t

    fsi;AI tener los datos organizados podemos ejecutar la pregunta que nos deter-

    mina si con estos tres datos se puede formar un triangulo, Por ultimo veamosun programa que resuelve el problema anterior.const ladol = 4;

    lado2 = 5;Iado 3 = 6;

    var a,b,c,t : entero;ppala:= ladol;b:= Iado2;c:= Iad03;sia > b

    entt:= a;a:= b;b:= t

  • 5/13/2018 Algoritmos Conceptos Basicos

    55/59

    , I

    56 ALGORITMOS. CONCEPTOS BASICOS

    fsi;si a> Centt:= a;a:= C ;c:= t

    fsi;si b > Centt:= b;b:= c;c:= t

    fsifppal.

    Resolvamos otro problema. Supongamos que en la Universidad se manejanlas notas de 0 a 100 puntos. Supongamos adernas que un estudiante curs a 3materias y necesita saber el promedio de las notas. Asumamos que las notas delas materias cursadas estan en las variables a, bye y que si el promedio de lasnotas es mayor 0 igual a 60 puntos, se aprueba el curso, de 10 contrario se de-ben repetir las tres materias. Para resolver este problema, 10 podemos hacerprimero calculando el promedio y luego chequear si es mayor a 60, asf:

    promedio: = (a + b + c) div 3;si promedio > = 60entapro:= 'A 'sino apro : = 'N'

    fsi;

    La variable apro tendra el caracter 'a' en caso de que el estudiante haya apro-bado el curso 0'n' en caso de que se haya perdido el curso.La segunda forma consiste en evitar el uso de la variable promedio. En este

    caso la codificaci6n del programa se debe hacer asf:

    si (a + b + c) div 3 > = 60entapro:= 'A'sino apro : = 'N'

    fsi;

    Ahora vamos a presentar un ejemplo para mostrar que se puede, en algunoscasos, simplificar un conjunto de instrucciones si de manera que efectuen elmismo trabajo. Veamos el siguiente conjunto de instrucciones:

  • 5/13/2018 Algoritmos Conceptos Basicos

    56/59

    TOMA DE DECISIONESsia> 64ent b:= 8fsi;si a < 18ent b:= 10fsi;

    si (a > = 18) Y (a < 65)ent b:= 4fsi;

    La idea es disminuir el numero de instrucciones asf:f------ b = 4=10 _____, ,____b=8

    17 18 64 6S

    Observese que al codificar las instrucciones si de la siguiente manera seconsigue el mismo efecto final:

    b:= 8;si (a > = 18) Y (a < = 64 )entb := 4

    fsi;sia < 18entb:= 10fsi;

    7.2 EJERCICIOS1. Codifique una instrucci6n si para determinar si en la variable a existe un

    numero multiple de 5. En caso afirmativo asigne abel numero 1, de 10contrario asigne abel numero O . .

    2. Suponiendo que en la variable entera a existe un numero entre 1 y 99, ela-bore un conjunto de instrucciones que almacene en la variable b la sumade lQSdfgitos que cornponen el numero almacenado en a. PQr ejernplo si atiene el dato 82, en la variable b debe quedar el numero 10 ya que 8 mas 2es 10.

    3. SUPQngaque en las variables a, bye existen 3 numeros en el rango 0 a 9.Conforrne un numero en la variable x, compuesto por lQSdigitos almace-nados en a, b y c. Por ejemplo si en las variables a, b y c existen los digitos8,5, 3, en la variable x debe quedar el numero entero 853.

  • 5/13/2018 Algoritmos Conceptos Basicos

    57/59

    58 ALGORITMOS. CONCCI!TOS BASICOS4. Dados cuatro datos a, b, c y d, elabore un conjunto de instrucciones que

    almacene en a el menor valor de los cuatro datos y en d el mayor valor. Esnecesario que en las variables a, b, c, y d queden los cuatro datos, es decirque no se pierda informacion.

    5. ~Los siguientes conjuntos de instrucciones efectuan el mismo trabajo?:1) si (a < 10) 0 (a > 20)

    entx:= 3sino x := 0

    fsi;2) si (a > = 10) 0 (a < = 20)

    entx:= 0sino x:= 3

    fsi;3) si (a > 9) y (a < 21)

    ent x:= 0sinox:= 3

    fsi;

    I . 6. La secuencia[ I 0 .1 1 2 3 5 8 13 21

    Se denomina la secuencia de Fibonacci. Dados tres datos a, bye determi-ne si los tres datos almacenados en a, bye son tres cifras (una detras dela otra) de la secuencia anterior.

    7. Suponga que en la variable a existe un numero entre 1 y 999. Elabore unconjunto de instrucciones para invertir la cifra almacenada en a. Por ejem-plo el dato 834 debe quedar 438. El dato 17 debe quedar 71, etc.

    8. Dados dos datos almacenados en las variables enteras a y b, elabore unalgoritmo que intercambie los valores almacenados en a y b, sin necesidadde utilizar ningun tipo de variable auxiliar.!

    9. Dado un numero en el rango 30000 a 32767, almacenado en la variable a,elabore un algoritmo que almacene en la variable c el digito que esta en elcentro del nurnero almacenado en la variable a. Por ejemplo si en a existe31742, en la variable c debe quedar el numeroZ.

    10. Suponga que en la variable a existe un numero entre 0 y 9, elabore un al-goritmo que almacene en la variable c el caracter numerico que correspon-

  • 5/13/2018 Algoritmos Conceptos Basicos

    58/59

    TOJ1A DE DECISIONESde al digito almacenado en 3. Por ejemplo si en la variable 3 existe el nu-mero 8, en la variable c debe almacenarse el caracter '8' .

    .3 si ANIDADOSLas instrucciones cuya ejecuci6n es controlada por un si pueden incluir otras

    instrucciones si. En este caso se dice que las instrucciones si estan anidadas. Uncaso particular de una instruccion si anidada es el siguiente:

    si condicion-Ient si condicion-2ent instrucclon-I

    sino instruccion-2fsi

    sino instruccion-3fsi;

    La instrucci6n-l se ejecuta sila condicion=I esverdadera y sila condici6n-2es verdadera. Si la condicion= l es falsa se ejecuta la instrucci6n-3. Si la con-dici6n-l es verdadera y la condici6n-2 es falsa entonces se ejecuta la instruc-cion=Z. N6tese que para esta estructura de si anidados solamente existe unpunto y coma final. En el caso anterior existe un si anidado de nivel 2 ya que seestan anidando dos instrucciones si.

    Se acepta un numero indeterminado de si anidados. El nive! de si anidados autilizar solamente depende de la capacidad del programador para controlar es-te tipo de instrucciones. Veamos otro ejemplo :

    si condicion-Ient si condicion-2

    ent si condicion-3ent si condicion-4

    ent instruccion-Isino instruccion-2

    fsisino instruccion-3

    -fsisino instruccion-4

    fsisino lnstruccion-Sfsi;instruccion-6;

    En el ejemplo anterior se present a una instruccion si anidada de nivel 4. Eneste caso la instruccion= l se ejecuta si todas las condiciones son verdaderas.

  • 5/13/2018 Algoritmos Conceptos Basicos

    59/59

    1

    60 ALGORITMOS: CONCEPTOS BASICOSLuego de ejecutarse la lnstruccion= l el control del programa pasa a ejecutar,autornaticamente, la instruccion que va inmediatamente despues del punta ycoma que cierra el primer si, es decir, ejecuta la instruccion=ti,La instrucci6n-2 se ejecuta si la condicion= l y la condici6n-2 y la condi-

    ci6n-3 son verdaderas y la condici6n-4 es falsa.La instrucci6n-3 se ejecuta si la condicion= l es verdadera y la condici6n-2

    es verdadera y la condici6n-3 es falsa.La instrucci6n-4 se ejecuta si Ia condicion= I es verdadera y la condicion=Z

    es falsa.La instrucci6n-S se ejecuta si la condicion= l es falsa.En cualquiera de los casas despues de ejecutar la instruccion correspondiente

    el control del program a pasa autornaticamente a ejecutar la instrucci6n-6.Veamos la siguiente estructura de si anidados:

    1) instruccion-l;2) si condicion-I3) ent4) si condicion-25) ent si condicion-36) ent7) Instrucclon-z;8) instruccion-3;9) instruccion-410) sino11) si condicion-412) ent instruccion-513) sino si condicion-514) ent15) instruccion-616) sino17) instruccion-718) fsi19) fsi20) fsi21) fsi22) fsi;23) si condicion-624) ent instruccion-8