Manual Programación Lógica.pdf

download Manual Programación Lógica.pdf

of 58

Transcript of Manual Programación Lógica.pdf

  • 8/17/2019 Manual Programación Lógica.pdf

    1/58

    Introducción a la programación

    con la ayuda de PSeInt

  • 8/17/2019 Manual Programación Lógica.pdf

    2/58

    Manual de Programación Lógica Introducción a la Programación

    con la ayuda de PseInt

    Lic. Ricardo Saucedo

    30 de julio de 2015

    Documento en proceso de elaoración.

    C nba!sta ora est" licenciada ajo la Licencia #reati$e #ommons %triución&

    'o#omercialompartirIgual (.0 Internacional. Para $er una copia de esta licencia) $isita *ttp+,,creati$ecommons.org,licenses,y&nc&sa,(.0,deed.es.

  • 8/17/2019 Manual Programación Lógica.pdf

    3/58

    Índice de contenidoPresentación........................................................................................................................................5

    Instalación del programa..............................................................................................................................5

    Introducción a la Programación........................................................................................................6Comprensión del Problema..........................................................................................................................6Encontrar una solución................................................................................................................................7Enunciar un Algoritmo................................................................................................................................7

    Algoritmo...........................................................................................................................................................8Características de un Algoritmo computacional................................................................................................9Diagrama..........................................................................................................................................................!D"D # Diagramas de "lu$o de Datos...............................................................................................................!Pseudocódigo...................................................................................................................................................

    Estructura de un programa.............................................................................................................12

    El código...................................................................................................................................................%&inta'is.............................................................................................................................................................%Instrucciones....................................................................................................................................................(&entencias.........................................................................................................................................................)

    Estructura de datos.....................................................................................................................................)E'presiones...............................................................................................................................................5

    *peradores.......................................................................................................................................................5+eglas de precedencia......................................................................................................................................6*peradores ,ógicos.........................................................................................................................................7

    Delimitadores............................................................................................................................................7

    Comenzando a programar...............................................................................................................18Algoritmo de suma....................................................................................................................................8

    Algoritmo del triangulo.............................................................................................................................%

    Comenzando con la programación estructurada..........................................................................24Estructura de Decisión...............................................................................................................................%)Estructura +epetiti-a.................................................................................................................................%5Algoritmo de la abla de /ultiplicar.........................................................................................................%8Estructura Iterati-a....................................................................................................................................%80ariables especiales...................................................................................................................................%9

    0ariable contadora............................................................................................................................................(!0ariable acumuladora.......................................................................................................................................(0ariable 1lag2 bandera o se3al..........................................................................................................................((

    Intercambio de -ariables o s4ap................................................................................................................()

    Funciones...........................................................................................................................................35/atemticas.....................................................................................................................................................(5rigonomtricas...............................................................................................................................................(5"unciones de cadena de te'to..........................................................................................................................(5

    rreglos.............................................................................................................................................3!Dimensión e índice....................................................................................................................................(7Declaración de una -ariable de tipo arra..................................................................................................(80ectores.....................................................................................................................................................(8

    Carga de un -ector...........................................................................................................................................(9Procesamiento del -ector cargado...................................................................................................................(9s:ueda muestra del -ector........................................................................................................................(9

    *rdenamiento de un -ector..............................................................................................................................)%*rdenamiento por urbu$eo............................................................................................................................)6Primera optimi;ación2 acortamiento del ciclo de burbu$eo.............................................................................)7&egunda optimi;ación2 detectar -ector ordenado............................................................................................)7

  • 8/17/2019 Manual Programación Lógica.pdf

    4/58

    ercera optimi;ación2 ciclos alternados...........................................................................................................)8

    /atrices.....................................................................................................................................................)9

    rc"i#os.............................................................................................................................................5$Estructura de un arc

  • 8/17/2019 Manual Programación Lógica.pdf

    5/58

    -anual de Programación Lógica

    Presentación!l ojeti$o de esta gua es ayudar a los alumnos de Programación Lógica a la

    comprensión de la mec"nica de resolución de prolemas "sicos deprogramación y guiarlos en la tarea de diagramar y codi/car los algoritmosmediante pseudocódigo.

    Se utiliar" como *erramienta de estudio el programaPseInt $ersión de ec*a 0,0(,2015. !l programa est"disponile en orma gratuita en el sitio*ttp+,,pseint.sourceorge.net,  cuyo autor) Palo 'o$araas4ar6(7ya*oo.com.ar8 lo pulica ajo licencia 9PL.

    !n el sitio :e se indica ;ue esta *erramienta est"dise

  • 8/17/2019 Manual Programación Lógica.pdf

    6/58

    /anual de Programación ,ógica

    Introducción a la ProgramaciónSe de/ne como programación al proceso de dotar a la computadora de un

    mBtodo para resol$er un prolema tipo y entregar un resultado.Se dice tamiBn ;ue un programa est" compuesto de dos partes+

    • !l código, ;ue consiste en el conjunto de acciones a ejecutar) en

    programación a cada acción "sica se la denomina genBricamente comoinstrucción. #ada instrucción podr" estar compuesta de un conjunto deelementos los cuales estudiaremos m"s adelante.

    • La estructura de datos ;ue consiste en la disposición de memoria

    elegida para almacenar los datos necesarios para resol$er el prolema) ya sea los par"metros o datos de entrada) los resultados intermedios odatos de proceso y la inormación resultante o datos de salida. % estos

    datos en programación se los denomina genBricamente como variables.!l computador es una m";uina ;ue por s sola no puede *acer nada) necesita

    ser programada) es decir) introducir a su memoria instrucciones ;ue la guen enlo ;ue tiene ;ue *acer. !sta es una tarea ;ue para un neó/to puede resultarmuy compleja ya ;ue la computadora solamente es capa de realiar tareasmuy "sicas) por lo tanto *ay ;ue de/nir claramente cual ser" al proceso aejecutar para *acer tareas complejas mediante pasos elementales.

    Para comprenderlo m"s organiadamente) podemos decir ;ue este procesode programación se di$ide en las siguientes tareas+

    1. #omprensión del prolema.

    2. Idear una solución ;ue sea lo m"s general posile.

    3. !nunciar un algoritmo de resolución.

    (. #odi/carlo en un lenguaje de programación.

    5. Implementarlo) o dic*o de otra manera) *acer ;ue la m";uina puedatraducirlo a su propio código inario.

    C. !n orma paralela a los pasos anteriores) preparar un lote de pruea.

    . !jecutar el programa y $alidarlo mediante el lote de pruea) si seencuentran errores lógicos) corregirlos) o sea) $ol$er al punto 3 o (segn el ni$el de error.

    Comprensión del Problema.!n esta etapa) se dee coneccionar el enunciado  del prolema) el cual

    re;uiere una de/nición clara y precisa. !s importante ;ue se conocae?actamente cual es el ojeti$o ;ue dee resol$erse o dic*o de otra manera) lo;ue se desea ;ue realice la computadora.

    Eui"s ;uiBn enuncie el prolema no sepa de/nir claramente los ojeti$os)as ;ue el analista deer" interrogarlo *asta ;ue el ojeti$o a resol$er ;uedeperectamente claro) mientras esto no se logre completamente) no tiene muc*osentido continuar con la siguiente etapa.

    ?+e-. (!@!7@5   #6#

  • 8/17/2019 Manual Programación Lógica.pdf

    7/58

    /anual de Programación ,ógica

    Encontrar una solución'ormalmente esta etapa comiena en paralelo a la lectura del enunciado)

    cuando se $a comprendiendo el enunciado y por e?periencia o analoga se $anideando las acciones ;ue se deen aplicar para arriar al resultado esperado.

    La solución dee ser lo m"s amplia o general posile) se dee realiar unaastracción del prolema) por ejemplo si el enunciado dice+

    Se necesita un programa para calcular el área ocupada por una viga de maderade 3 metros de largo, y sección cuadrada de 12 cm de lado.

    'os encontramos ante una prolema de tipo particular) para ;ue Bste sir$a alos eectos de un desarrollo inorm"tico *ara ;ue generaliarlo. %s elenunciado podra ser transormado en+

    Se necesita un programa para calcular el área ocupada por una viga de

    constitución uniforme, dados su largo en metros, y el tamaño en centímetros decada lado de la sección.

    !s necesario en esta etapa tener en claro+

    • #uales son los datos ;ue se re;uieren para de/nir el caso particular) los

    denominados datos de entrada.

    • #ual es el conjunto de resultados ;ue se desea otener) o sea) la

    inormación de salida.

    • Los mBtodos y órmulas ;ue se necesitan para procesar los datos.

    -"s adelante entraremos en detalle en las caractersticas in*erentes a losdatos para comprender como esos datos pueden ser acotados y as minimiar laproailidad de error de proceso.

    Enunciar un AlgoritmoSe dee plantear el mBtodo de resolución elegido mediante una construcción

    matem"tica denominada algoritmo.

    >n aspecto importante a tener en cuenta en el enunciado de un algoritmo escomo se administrar"n los datos de/nidos en el prolema. Siempre ;ue unevento un acontecimiento) una $eri/cación) una medición) etc.8 se pueda

    registrar de alguna orma) este e$ento se considerar" como computale. %lregistro de un e$ento en un sistema inorm"tico se lo denomina dato. Podemosdierenciar en un algoritmo dos tipos de datos) las constantes y los datos

     $ariales. %nalicemos un ejemplo+

    Si ;ueremos *acer un simple algoritmo para calcular el permetro de unacircunerencia lo podramos de/nir en los siguientes pasos+

    1. !stalecer como dato de entrada el radio de la circunerencia.

    2. !stalecer como órmula de resolución+ circunferencia F 2 ? PI ? radio

    3. !stalecer como dato de salida la circunferencia calculada.

    !n este caso tenemos dos datos perectamente de/nidos+ radio  y

    circunferencia) amos son datos  variables  ya ;ue no podemos saer de

    #7#

  • 8/17/2019 Manual Programación Lógica.pdf

    8/58

    /anual de Programación ,ógica

    ninguna orma el $alor e?acto del radio) pues este $alor $a a depender de une$ento ;ue el usuario determinó) luego la circunerencia ;ue depende del $alordel radio8 tampoco puede ser conocida de antemano. Por eso en el c"lculo a losdatos se los incorpora en orma referencial a tra$Bs de un nomre simólico.

    Por otra parte en la órmula oser$amos dos datos ;ue se re;uieren para elc"lculo) el $alor  2  y el $alor  PI   3)1(15G2C...8 amos $alores est"nperectamente de/nidos y no es posile ;ue camien ya ;ue entonces elresultado otenido sera incorrecto. %mos $alores son entonces constantes yse incorporan literalmente en el c"lculo.

     %dem"s para enunciar este algoritmo se utiliar" una *erramienta derepresentación llamada diagrama o ien mediante un pseudocódigo. Heamosesto por partes+

    Algoritmo

    >n algoritmo  del griego y latn) dixit algorithmus y este a su $e en *onordel matem"tico persa Al-Juarismi 8 se de/ne como un mBtodo aplicale con el/n de otener la solución a un prolema genBrico. Dee presentarse como unasecuencia ordenada de pasos ;ue siempre se ejecutan en tiempo /nito y conuna cantidad de esuero tamiBn /nito o al menos ;ue pueda detectar cuandoel mBtodo se *ace in$iale e inormarlo. Los algoritmos tienen un inicio y un/nal) son nicos y deen ser "cilmente identi/cales.

    Para su mejor claridad y apro$ec*amiento en la etapa de codi/cación) escon$eniente ;ue los algoritmos tengan ciertas caractersticas+

    • Dee tener un único comienzo y un sólo fnal perectamente de/nidos.

    • Dee ser secuencial) cada paso se dee ejecutar en una orma ordenada y no dee comenar a ejecutarse un paso sin *aer concluido de ejecutarel paso anterior. #uando se *ace el diagrama del algoritmo) a estasecuencialidad se la denomina ujo de proceso.

    • Deen ser Finitos) con lo cual se entiende ;ue deen /naliar en algn

    momento determinado.

    • Deen ser Efcientes) entendiBndose por esto ;ue ocupen la cantidad

    mnima y necesaria de $ariales para ;ue al codi/car genere unprograma ;ue utilice la mnima cantidad de memoria y adem"s minimiarel tiempo de ejecución e$itando procesos redundantes o innecesarios.

    • Deen ser Legibles) se usca ;ue el te?to ;ue lo descrie dee ser claro)

    de orma ;ue permita entenderlo y leerlo "cilmente) eligiendo nomresde $ariales y de procesos ;ue *agan reerencia clara a su uncióndentro del código.

    • Deen ser Modifcables) o sea ;ue deen enunciarse de modo ;ue sus

    posteriores modi/caciones u ampliaciones sean "ciles de realiar)incluso por programadores dierentes a sus propios autores.

    • Deen ser Modulares) la /losoa utiliada para su dise

  • 8/17/2019 Manual Programación Lógica.pdf

    9/58

    /anual de Programación ,ógica

    óptimo sera poder llegar a un compromiso entre simplicidad y e/ciencia.

    Características de un Algoritmo computacionalPara poder enunciar un algoritmo ;ue se pueda codi/car en un lenguaje de

    programación) deemos asumir ;ue ;uiBn interpretar" el algoritmo la #P>8podr" realiar solamente acciones muy "sicas. Si ien en los lenguajes de

    programación nos encontramos en ;ue podemos utiliar multitud de acciones

    #9#

     Ilustración 3: Elementos del Diagrama de Flujo de Datos en PSeInt 

  • 8/17/2019 Manual Programación Lógica.pdf

    10/58

    /anual de Programación ,ógica

    prede/nidas) la mayora est"n asociadas al conte?to de ejecución o dic*o deotro modo) la mayora de acciones ;ue se pueden realiar mediante un lenguajede programación son de ormaJ y no de ondoJ en cuanto a la resoluciónesencial de un prolema.

    Digamos ;ue nos concentraremos solamente en a;uellas acciones ;ue soncomunes a cual;uier lenguaje de programación y no contemplaremos ningunaacción ;ue sea e?clusi$a de un lenguaje. %s podemos determinar ;ue lasacciones ;ue ser"n permitidas en un algoritmo son las siguientes+

    • Introducir un $alor en una $ariale desde un dispositi$o de entrada el

    teclado por ejemplo8

    • -ostrar en un dispositi$o de salida un $alor ya sea de una $ariale o un

     $alor literal en la pantalla) por ejemplo8

    •  %lmacenar un $alor en una $ariale como resultado de una e?presión

    como se denomina una c"lculo en el lenguaje de la programación8

    • Kiurcar el =ujo de ejecución entre dos alternati$as) mediante una

    condición e$aluada.

    • Repetir parte del =ujo normal de proceso de una manera condicional.

    • Iterar) o sea repetir parte del =ujo un nmero determinado de $eces.

    • Seleccionar un nico =ujo de proceso a ejecutar de un conjunto de =ujos

    posiles.

    Diagrama Segn la @i4ipedia) un diagrama es una representación gr"/ca de una

    proposición) de la resolución de un prolema) de las relaciones entre lasdierentes partes o elementos de un conjunto o sistema) o de la regularidad enla $ariación de un enómeno ;ue permite estalecer algn tipo de ley.

    !?isten muc*simos tipos de diagramas cada uno es aplicale de acuerdo a lainormación ;ue se ;uiera representar) as por ejemplo en teora de conjuntostenemos los diagramas de Henn) en ases de datos se utilian los diagramas de!ntidad&Relación. !n nuestro caso) la programación) se utilian principalmentedos tipos de diagramas) los diagramas de lujo de Datos y los de 'assi&S*neiderman) estos ltimos los dejaremos uera de nuestro an"lisis por a*ora ynos concentraremos e?clusi$amente en los diagramas de =ujo.

    DFD - Diagramas de Fluo de DatosSi ien los diagramas de =ujo se utiliaan muc*o tiempo antes de ;ue la

    inorm"tica se $ol$iera una realidad) es gracias a Merman 9oldstine y No*n $on'eumann la aplicación de estos diagramas a la plani/cación de algoritmoscomputacionales. Precisamente por su aplicación a la inorm"tica y suestandariación) en la actualidad los diagramas de =ujo se utilian en muc*oscampos del conocimiento uera de la programación) por ejemplo) en el "mitoempresarial) en medicina) etc.

    !n los diagramas de =ujo de datos are$iado DD8) el =ujo precisamenteest" indicado por una lnea descendente ;ue indica la secuencia de ejecuciónde las instrucciones.

    ?+e-. (!@!7@5   #!#

  • 8/17/2019 Manual Programación Lógica.pdf

    11/58

    /anual de Programación ,ógica

    !n la ilustración 3 podemos oser$ar todos los elementos del diagrama de=ujo ;ue maneja el programa PseInt. !n el siguiente captulo iremos analiandocon ejemplos la uncionalidad de cada elemento del diagrama.

    Pseudocódigo!l Pseudocódigo es otra orma de representar un algoritmo) en este caso

    utiliando una notación similar a un lenguaje de programación est"ndar) perocuyas palaras cla$es est"n escritas en el lenguaje castellano. !?iste unacorrespondencia entre los elementos del DD y el Pseudocódigo como se puedeapreciar en la ilustración 3.

    La idea es ;ue se pueda $er el programa desde el punto de $ista delprogramador el cual est" acostumrado a leer código uente.

    ##

  • 8/17/2019 Manual Programación Lógica.pdf

    12/58

    /anual de Programación ,ógica

    Estructura de un programa Maamos mencionado pre$iamente ;ue en un programa encontramos dos

    partes) el código y la estructura de datos.

    El código!l código podemos $erlo como un te?to ;ue descrie la receta ;ue se dee

    aplicar para realiar una tarea compleja de procesamiento de datos. Pero...O#on ;uB ojeti$o se de/ne este te?to

    La idea es ;ue la computadora puede ejecutar programas ;ue traducen te?togenerado por el usuario denominado código uente8 a operaciones en códigom!uina denominado código objeto8 y puede ejecutar cada acción descriptaen la cada oración. !stos programas traductores a código m";uina se

    denominan genBricamente como programas int"rpretes. !l nico prolema es;ue los lenguajes naturales son poco precisos al momento de de/nir tareas) ya;ue nos encontramos con ;ue podemos utiliar un conjunto de sinónimos pararepresentar lo mismo o incluso una misma palara presenta ami$alencias) esdecir en un conte?to signi/ca una cosa y en otro conte?to otra cosa. Para no*acer demasiado complejo al programa intBrprete) estos reconocen un lenguajemuy acotado ;ue se asa en su amplia mayora en el idioma inglBs8resumiendo el $ocaulario normal a unas pocas palaras con un signi/cadopreciso) incluso muc*as de esas palaras son ine?istentes en el lenguaje natural

     y solo tienen sentido en la programación. !l ojeti$o es *acer ;ue el te?to ;uepodamos armar no sea dicil de entender y traducir por no tener ningunaami$alencia en su signi/cado. #omo todo te?to) un programa no es m"s ;ueun conjunto de oraciones) en este caso un programa se compone de oracionesde tipo declarati$as e imperati$as.

    Retomando la idea entonces) cuando programamos no *acemos m"s ;uedescriir paso por paso y con oraciones muy simples ;ue dee *acer o tener enconsideración la computadora para aplicar un algoritmo. !n nuestra jerga

     $amos a denominar a la oraciones declarati$as como sentencias  y a lasoraciones imperati$as como instrucción.

    #omo todo lenguaje) la oración est" sujeta a leyes sint"cticas ;ue en estecaso son muy estrictas. Por eso la primer tarea ;ue el programa traductor *ace)

    luego de ;ue nosotros codi/;uemos el programa es realiar un an"lisissint"ctico de todo el te?to o de cada oración indicando todos los erroressint"cticos detectados para ;ue los corrijamos. Solo cuando el programa se*aya lire de errores sint"cticos se puede comenar con la traducción a códigom";uina y posterior ejecución.

    !inta"isLas reglas sint"cticas son mas ien pocas) pero muy restricti$as. #ada

    lenguaje tiene sus propias restricciones. !n el caso del pseudocódigo podemosmencionar las siguientes reglas+

    Se de/ne un conjunto de palabras reservadas ;ue en algunos lenguajes son

    ?+e-. (!@!7@5   #%#

  • 8/17/2019 Manual Programación Lógica.pdf

    13/58

    /anual de Programación ,ógica

    denominadas to#ens. !stas palaras solo pueden utiliarse en un nicosentido) el ;ue se asigne como de/nición en el lenguaje.

    Las palaras reser$adas y su signi/cado son+

    Palabra reservada SignificadoLeer    Ingresar un con$unto de datos desde el teclado

  • 8/17/2019 Manual Programación Lógica.pdf

    14/58

    /anual de Programación ,ógica

     $eros tienen un solo modo) el in/niti$o.

    !n los lenguajes de programación *ay multitud de comandos pero en elpseudocódigo $amos a enocarnos solamente en tres ya mencionados+

    • Leer

    • !scriir

  • 8/17/2019 Manual Programación Lógica.pdf

    15/58

    /anual de Programación ,ógica

    alanumBricos tamiBn se los conoce como strings o cadenas de te?to.

    May otras caractersticas ;ue de/nen a ciertos tipos de $ariales como porejemplo la dimensión) pero eso ser" ojeti$o de otro captulo.

    E"presiones Qa *aamos mencionado ;ue una e?presión consiste en el resultado de un

    c"lculo) pero deemos ser un poco m"s e?tensos en su de/nición ya ;uein$olucra otros elementos de la programación ;ue no *emos mencionado ytamiBn por su importancia ya ;ue es una de la construcciones m"s utiliadasen los programas.

    >na e?presión esta compuesta por datos aectados por operadores  y,ounciones.

    >n operador es un smolo ;ue representa una operación entre datos.

     %lgunos son muy conocidos como por ejemplo y & la suma y la resta8) pero*ay muc*os m"s.

    >na unción es un proceso de/nido ;ue se *ace con uno o $arios datos y delcual se otiene un nico resultado. Por ejemplo las unciones trigonomBtricasseno8) coseno8) etc.

    #peradoresLos operadores pueden ser de los siguientes tipos+ matem"ticos)

    relacionales) lógicos y por ltimo un operador llamado concatenación.

    •   %peradores matemticos son la suma 8) la resta & 8) la di$isión

    , 8) la multiplicación 8) la potenciación T 8 y el módulo o resto de ladi$isión U 8. !l resultado de una operación matem"tica es un tiponumBrico.

    •   %peradores relacionales son+ el mayor V 8) menor W 8 e igual F 8 y

    sus operaciones complementarias+ menor o igual WF 8) mayor o igual VF 8 y distinto WV 8 respecti$amente. !l resultado es un tipo lógico ya;ue nos dice si la relación es $erdadera o alsa.

    •   %peradores lógicos+ se utilian para unir sue?presiones de tipo lógico)

    ellas son la conjunción %'D X 8 la disyunción AR Y 8 y el complemento'AZ [ 8) el resultado es un tipo lógico siguiendo las reglas de las talasde $erdad del "lgera de oole.

    •   %perador de concatenación+ es el nico operador ;ue permite operar

    entre si dos datos de tipo alanumBrico) el resultado es una cadena dete?to ;ue contiene las dos cadenas unidas una continuación de la otra.

    #asi todas las operaciones re;uieren ;ue e?istan dos operandos) uno aderec*a y otro a i;uierda) por eso es ;ue a la mayora se los clasi/ca cómo detipo binario& #on las siguientes e?cepciones +

    !l operador 'AZ [ 8 solo admite un operando) por lo tanto se lo clasi/cacómo operador monario.

    !l operador menos & 8 se puede utiliar para realiar una sustracción) con lo

    cual es del tipo inario) pero tamiBn se lo puede utiliar como operador de

    #5#

  • 8/17/2019 Manual Programación Lógica.pdf

    16/58

    /anual de Programación ,ógica

    camio de signo) actuando en este caso como monario.

    !jemplos+

    A ! " #  (utilizado en orma !inaria" A -!  (utilizado en orma monaria"

    >na e?presión cuando es muy compleja puede analiarse di$idiBndola en $arias sue?presiones m"s simples) ya ;ue en realidad la computadora $a aoperar con pares de datos o a $eces con datos indi$iduales. La lógica indicara;ue la computadora ir" ejecutando las sue?presiones de i;uierda a derec*a)pero no es as) ya ;ue algunas operaciones tiene mayor prioridad ;ue otras) seestalecen entonces reglas de precedencia  ;ue indican ;ue operador $a atener mayor prioridad de resolución sore otro) y si amos tu$ieran la mismaprioridad) se resuel$en de i;uierda a derec*a.

    $eglas de precedencia 1. Potenciación T8.

    2. -ultiplicación 8) di$isión ,8) y el resto de la di$isión U8.

    3. sumas y restas.

    (. operadores relacionales.

    5. operador lógico [ not8.

    C. operador lógico X and8.

    . operador lógico Y or8.

    !stas reglas puede romperse utiliando los delimitadores parBntesis y8J ya ;ue estos delimitadores tienen mayor prioridad sore cual;uier operador.

     Heamos un ejemplo tomando la órmula de c"lculo de la distancia recorridapor un proyectil en tiro $ertical. !n matem"tica se e?presara como+

    d F $i . t & \ g . t2

    donde d es la distancia recorrida la incógnita8) vi es la $elocidad inicial delproyectil) t es el tiempo ;ue transcurrió y g es la aceleración de la gra$edad.

    !sto en pseudocódigo se e?presara como+

    d

  • 8/17/2019 Manual Programación Lógica.pdf

    17/58

    /anual de Programación ,ógica

    1. Se resuel$e primero la potenciación S1 ] t T 2 ) con lo cual S1 $ale 100.

    2. Luego *ay un conjunto de productos y di$isiones en el mismo ni$el) por lotanto tendr" prioridad la de la i;uierda+ S2 ] $1 t ) 100 10 8resultado 1000.

    3. S3 ] 1 , 2) resultado 0.5

    (. S( ] S3 g) 0.5 G.6 8 resultado (.G

    5. S5 ] S( S1) (.G 100 8 resultado (G0

    C. /nalmente la resta ;ue posee el menor ni$el de precedencia) SC ] S2 ^S5 ) 1000 ^ (G0 8 resultado /nal 510.

    #peradores Lógicos Hamos a e?tendernos un po;uito m"s sore los operadores lógicos ") # y $

    %'D) AR y 'AZ8.

    !stos operadores uncionan segn los criterios estalecidos en las talas de $erdad del "lgera de Koole. %nalicemos el resultado r de las e?presiones paralos 3 operadores) suponiendo ;ue operan sore dos $ariales lógicas $& y $' enel caso del [ es solo una por ser monario8.

    r $& ) $' r $& * $' r +$&

    v1 v2 r  " " "

    " 0 "0 " "

    0 0 0

    v1 v2 r  " " "

    " 0 00 " 0

    0 0 0

    v1 r " 0

    0 "

    DelimitadoresSon elementos del lenguaje ;ue cumplen la unción de separar o delimitar

    de a* su nomre8 datos. Los delimitadores m"s importantes son+

    delimitador nom%re &unción comillas Delimita una constante alanumBrica literal8.

    apóstro1o Similar a las comillas) delimita una constantealanumBrica.

    F G parntesis Delimita una su e?presión

    2 coma Separa un conjunto de datosespacio Separa palaras

    &alto de línea Separa instrucciones

    ? corc

  • 8/17/2019 Manual Programación Lógica.pdf

    18/58

    /anual de Programación ,ógica

    Comen%ando a programar Hamos a comenar con algoritmos muy simples y luego los iremos *aciendo

    m"s complejos para a

  • 8/17/2019 Manual Programación Lógica.pdf

    19/58

    /anual de Programación ,ógica

    utiliar los otones ;ue se $en al costado derec*o en la arra cuyo nomre es0o,andos.

    Lo primero ;ue deemos poner es un ingreso de datos) por lo tanto deemos

    utiliar el otón eer ;ue tiene el diagrama+ . al presionarlo otenemosla siguiente lnea de te?to+

     %*ora deemos reemplaar el recuadro ;ue dice Lista de HarialesJ pornuestras $ariales separadas por comas) es lo ;ue nos sugiere en el cuadroinerior ;ue apareció al presionar el otón.

    #omo $emos) est" toda la lnea grisada) para seleccionar solamente el cuadro;ue dice Lista de HarialesJ nos mo$emos con las =ec*as de cursor *acia atr"s

     y luego *acia adelante *asta ;ue se seleccione solamente lo ;ue ;ueremos. >na $e seleccionado el cuadro de lista deemos tipear nuestras $ariales segn elalgoritmo disena $e *ec*o esto) la $entana ;uedar"como la $emos en la siguiente imagen+

     %*ora podemos camiar a $ista de Diagrama de lujo) simplemente

    presionando el otón con el siguiente cono en la arra de otones nos

    #9#

  • 8/17/2019 Manual Programación Lógica.pdf

    20/58

    /anual de Programación ,ógica

    arir" una $entana donde podremos apreciar como ;ueda el diagrama de =ujode datos) tamiBn lo podremos e?portar como imagen+

     %*ora ;ue el algoritmo est" terminado) proaremos mediante PseInt eluncionamiento del algoritmo al ser ejecutado por la computadora. Presionamos

    a*ora el cono de la arra de otones y se nos arir" una nue$a $entana+

    La

    idea es ;ue ingresemos amas $ariale ;ue deer"n ser sumadas) por ejemplo

    ?+e-. (!@!7@5   #%!#

  • 8/17/2019 Manual Programación Lógica.pdf

    21/58

    /anual de Programación ,ógica

    tomaremos como lote de pruea los $alores 5200 y &(500) si el algoritmo est"correcto el resultado deera ser 00... $eamos+ Ingresamos primer o el $alor5200 y presionamos intro o enter8) luego el $alor &(500 y de nue$o Intro.Inmediatamente nos muestra el resultado ;ue eecti$amente era lo ;ue

    esper"amos+

    Digamos ;ue este algoritmo ue dise

  • 8/17/2019 Manual Programación Lógica.pdf

    22/58

    /anual de Programación ,ógica

    !n el caso ;ue los datos ingresados correspondan a un tri"ngulo rect"ngulo) no*ara prolemas simplemente *ara ;ue identi/car ;ue lado corresponde a laase y cual a la altura) Opero si no es un tri"ngulo rect"ngulo Mara ;uecalcular el $alor altura... Oy cómo se calcula Kueno) podemos ir a un uscador

    de la :e y consultar un sitio ;ue nos diga cómo se calcula el "rea de untri"ngulo escalenoJ. !l uscador nos lle$ara a $arios sitios dondeencontraremos el teorema de Merón de %lejandraJ ;ue dice+ _ En un triángulode lados a, , c, ! semi"er#metro s$%a&&c'(2, su área es igual a la ra#)cuadrada de s%s-a'%s-'%s-c'*` sacado de la :i4ipedia8. Kueno) el teorema *alade cual;uier tipo de tri"ngulo) justo es lo ;ue necesit"amos. % esto nosreerimos por comprensión del problema.

    !ntonces ya podemos de/nir las $ariales+

    •  Hariales de entrada+ los 3 lados ;ue llamaremos L1) L2 y L3

    •  Hariales de salida+ el "rea ;ue la llamaremos % y el permetro ;ue lo

    llamaremos P.

    •  Hariales de proceso+ Segn el teorema de Merón) necesitamos calcular

    el semipermetro) al ;ue llamaremos S.

    las órmulas a aplicar seran+

    P F L1 L2 L3

    S F P , 2

     % F √ S×(S # $)×(S # $%)×(S # $()

    Dise

  • 8/17/2019 Manual Programación Lógica.pdf

    23/58

    /anual de Programación ,ógica

     Q el diagrama ;uedara de la siguiente orma+

    #%(#

  • 8/17/2019 Manual Programación Lógica.pdf

    24/58

    /anual de Programación ,ógica

    Comen%ando con la programación estructurada Sigamos complicando el algoritmo del tri"ngulo.

    Pensemos lo siguiente+ saemos ;ue si *alamos de la longitud de los lados*acemos reerencia a un $alor positi$o mayor ;ue 0) eso es o$io... pero nonecesariamente lo ser" para un usuario. OEuB pasara si un usuario por alta decomprensión ingresara un $alor negati$o o cero Pues) entonces el algoritmoinormara como $"lido un resultado erróneo.

    Estructura de DecisiónPodemos entonces $alidar si el usuario ingresó $alores permitidos.

    Simplemente e$aluando por cada ingreso ;ue este sea mayor a 0. Para $alidarutiliamos una estructura de decisión ;ue nos permitir" iurcar el algoritmo

    en dos ramas) una ;ue ser" la $"lida y otra ;ue ser" in$"lida en la cualinormaremos al usuario de su error.

    La estructura de decisión se escrie en pseudocódigo como+

    Si  Entonces

    Sino

    4in Si

    Si ien ya lo mencionamos) reiteraremos ;ue la e?presión lógica mencionada

    tendr" como resultado $erdadero o also. Si es $erdadero se ejecutar" el primerlo;ue de instrucciones y si es also se ejecutar" el segundo) nunca seejecutar"n amos.

    #omo ;uedar" el pseudocódigo entonces

    Siiense

    ?+e-. (!@!7@5   #%)#

  • 8/17/2019 Manual Programación Lógica.pdf

    25/58

    /anual de Programación ,ógica

    podra aplicar una estructura de decisión para e$aluar cada $alor) utiliamosuna e?presión ;ue comina la e$aluación de todos los $alores a la $e) lae?presión se dee entender como+ si todas las sue?presiones Ln V 08 son

     $erdaderas entonces por eecto del operador %'D la e?presión completa ser"

     $erdadera) si alguna sue?presión es alsa) la e?presión completa ser" entoncesalsa.

     Heamos el diagrama+

    Estructura $epetiti&a Sigamos pensando sore el mismo algoritmo.

    !n el caso ;ue el usuario se e;ui$o;ue) entonces) Odeer" ejecutarnue$amente el algoritmo desde cero Por a*ora la respuesta es+ S) deer"comenar de nue$o con el algoritmo. OQ ;uB pasa si ;uiero conocer el permetro

     y la super/cie de $arios tri"ngulos O'o *ar" una orma de ;ue me sigapermitiendo calcular las $eces ;ue yo ;uiero sin tener ;ue ejecutar nue$amenteel algoritmo. A mejor... 'o se podr" modi/car el algoritmo para ;ue meindi;ue cual es el triangulo de mayor "rea de un grupo de tri"ngulos ;ue ;uieroprocesar Kueno.. ya es pedir muc*o... reormulemos primero el enunciado delprolema.

    alcular el área y el perímetro de varios triángulos conociendo el largo de los 3lados y determinar cual de ellos tiene el área mayor.

    !n primer lugar e$aluemos ;ue signi/ca calcular $ariosJ tri"ngulos) eso

    implica ;ue deemos repetir el c"lculo una y otra $e a medida ;ue se ingresan

    #%5#

  • 8/17/2019 Manual Programación Lógica.pdf

    26/58

    /anual de Programación ,ógica

    los 3 lados. Para esto utiliaremos la estructura repetiti$a ;ue en pseudocódigose escrie cómo+

    Mientras  Hacer

    4in Mientras

    La e?presión lógica es la ;ue determina si se $ol$er" a ejecutar el lo;ue deinstrucciones mientras sea de resultado $erdadero) cuando la e?presión tienecomo resultado also entonces ya no se ejecutar" m"s el lo;ue y se seguir" conla secuencia normal.

    Pero para encarar el nue$o algoritmo deemos agregar a las incógnitasconocidas y analiadas) una nue$a $ariale ;ue ser" el mayor $alor de "reacalculado. !sta $ariale no se resuel$e en orma directa como el "rea y elpermetro. Si tu$iBramos ;ue resol$er el prolema del mayor "rea con l"pi y

    papel seguramente *aramos todos los c"lculos de todas las "reas y luego al/naliar re$isaramos todo para encontrar el mayor) el prolema es ;ue elalgoritmo dise

  • 8/17/2019 Manual Programación Lógica.pdf

    27/58

    /anual de Programación ,ógica

     y su respecti$o diagrama+

    #%7#

  • 8/17/2019 Manual Programación Lógica.pdf

    28/58

    /anual de Programación ,ógica

    Algoritmo de la 'abla de MultiplicarMagamos a*ora otro algoritmo. Planteemos el enunciado primero+

    onfeccionar un algoritmo que nos muestre por pantalla la ta!la de multiplicar 

    de un número ingresado.

    !l enunciado es mas ien simple de entender) tenemos una $ariale ;ue ser"ingresada) digamos 6) luego para *acer la tala del nmero ' tendremos ;uemultiplicarla por todos los nmeros desde 1 *asta 10) para esto utiliaremosuna $ariale ;ue uncionar" como contador   al ;ue llamaremos $arialeOperando. !l algoritmo tamiBn es astante simple a esta altura.

     

    Estructura Iterati&a Para los casos en ;ue se dee controlar el ciclo mediante una $ariale de tipo

    contadora e?iste una estructura particular ;ue puede sustituir con $entaja a laestructura anterior. 'os reerimos a la estructura iterativa) la cual se asocia a

    una $ariale ;ue se incrementa autom"ticamente y ;ue al llegar a un

    ?+e-. (!@!7@5   #%8#

  • 8/17/2019 Manual Programación Lógica.pdf

    29/58

    /anual de Programación ,ógica

    determinado $alor interrumpe las repeticiones del lo;ue.

    >tiliando pues este tipo de estructura el algoritmo ;uedara planteado de laorma siguiente+

    !l

    Diagrama de lujo de Datos ;uedara de la siguiente orma para simpli/car;uitamos los mensajes reerenciales8.

    OEuB ene/cios concretos otenemos de utiliar esta estructura Kueno)todos pueden ser discutiles ya ;ue no todos los ene/cios ;ue mencionaremosson ojeti$os) pero diremos+

    • 'o *ace alta controlar la $ariale contadora) ya ;ue el control ser"

    autom"tico.

    • 'o *ace alta incrementar la $ariale contadora) tamiBn se *ar"

    autom"ticamente) a*orrando una lnea de código.

    • Sore todo en el caso ;ue se utilicen muc*os ciclos iterati$os) es muc*o

    m"s claro el enunciado del algoritmo.

    • #uando se traduca el algoritmo a un lenguaje de programación este ser"capa de optimiar los ciclos utiliando $ariales de tipo registro unregistro dentro de la >nidad de #ontrol es muc*o m"s r"pido de utiliar;ue una $ariale alojada en la R%-8.

    (ariables especiales %nteriormente mencion"amos una $ariale de unción contadora) esta es

    una $ariale numBrica normal ;ue tiene una unción especial) pero adem"s deesta *ay otras) las analiaremos.

    #%9#

  • 8/17/2019 Manual Programación Lógica.pdf

    30/58

    /anual de Programación ,ógica

    (ariable contadora >na $ariale contadora tiene la unción de contar ocurrencias en un

    algoritmo) O;uB es esto de contar ocurrencias %nalicemos un ejemplo

    comenando con un enunciado+"e un con#unto de $ elementos num%ricos enteros, indicar cuantos son pares y cuantos son impares.

    Ideamos el algoritmo+ deemos *acer ;ue el usuario primero nos de/nacuantos $alores e?isten en el conjunto el $alor de '8) luego los deeraingresar uno por uno en un ciclo de ' $eces) y a medida ;ue los $ayaingresando *ay ;ue $eri/car si el $alor ingresado es par y en el caso ;ue lo sea)contarlo. %l /nal se dee mostrar el contador ;ue indica los pares contados y sia ' le restamos el contador) otenemos la cantidad de impares.

    Magamos el pseudocódigo

     Q el

    diagrama de =ujo+

    ?+e-. (!@!7@5   #(!#

  • 8/17/2019 Manual Programación Lógica.pdf

    31/58

    /anual de Programación ,ógica

    Aser$emos la $ariale contadora denominada cantidadPares ;ue es la ;ue

    cuenta los elementos pares. Ziene tres estados)• !l primero es la inicialiación+ al principio del algoritmo recie un $alor

    inicial ;ue generalmente es 0. !s el $alor de partida del contador.

    • !l segundo estado es dentro del ciclo+ cuando es incrementado aplicando

    la instrucción tpica contador contador 1 7) donde 4 es un $alorconstante se puede contar de a dos o de a docena) por ejemplo8) aun;uelo m"s normal es ;ue 4 sea e;ui$alente a 1.

    • !l tercer estado ocurre al salir del ciclo) cuando disponemos de la

     $ariale con su $alor de/niti$o y por tanto podemos como en el casopresente) mostrarla por pantalla o utiliarla para los c"lculos de totales.

    (ariable acumuladora Pero ;ue pasa si en lugar de sumarle $alores constantes ;ueremos sumarle

     $alores $ariales. %nalicemos un nue$o enunciado de un prolema.

    &ueremos o!tener el promedio de edad de un grupo de personas.

    Para calcular el promedio la e?presión a aplicar sera+ la suma total de lasedades sore la cantidad de personas. Dic*o de otra manera sera+

    pro,edio acu,u3ador / contador.

     %*ora $amos a considerar como dee *acer el usuario para indicarnos ;ue la

    carga de datos *a /naliado) una orma es preguntarle cada $e ;ue se termina

    #(#

  • 8/17/2019 Manual Programación Lógica.pdf

    32/58

    /anual de Programación ,ógica

    de procesar una edad si e?isten m"s personas sin procesar) es astanteincómodo tener ;ue escriir siJ cada $e... Atra orma) ;ue $amos a utiliaren este caso) es indicarle ;ue ingrese una edad imposile cuando ya no *ay m"spersonas. !n este caso podemos decirle ;ue al ingresar 0 se entiende ;ue

    /nalió la carga de datos.!l algoritmo ;uedara de la siguiente manera+

    ?+e-. (!@!7@5   #(%#

  • 8/17/2019 Manual Programación Lógica.pdf

    33/58

    /anual de Programación ,ógica

    (ariable )lag* bandera o se+al!sta $ariale es generalmente una $ariale de tipo lógico) ;ue indica cuando

    *a sucedido un e$ento mediante un camio de estado. Hamos a $er un ejemplo

    para entenderlo mejor) planteemos el enunciado de un prolema+'n un con#unto de elementos num%ricos enteros sin el cero (pueden e)istir  positivos y negativos* encontrar el menor de los elementos que sea divisi!le por el número 3.

     %;u e?isten elementos de cual;uier $alor) e?cepto el cero ;ue ue dejadouera del conjunto adrede) para simpli/car el algoritmo y utiliarlo como se

  • 8/17/2019 Manual Programación Lógica.pdf

    34/58

    /anual de Programación ,ógica

    Intercambio de &ariables o s,ap!l intercamio de $ariales es una operación ;ue se realia muc*o cuando se

    traaja con grandes $olmenes de datos) por ejemplo para realiar unordenamiento de $alores. #onsiste en *acer ;ue el contenido de una $ariale se

    traslade a otra $ariale al mismo tiempo ;ue el contenido de la segunda $ariale pasa a la primera. !l proceso es muy simple pero re;uiere de una $ariale au?iliar ;ue almacene temporalmente uno de los $alores para noperderlo. Heamos el pseudocódigo+

    ?+e-. (!@!7@5   #()#

  • 8/17/2019 Manual Programación Lógica.pdf

    35/58

    /anual de Programación ,ógica

    Funciones Hamos a analiar todas las unciones soportadas por PseInt en su $ersión

    20150(0) pero primero de/namos en ;uB consiste una unción.>na unción es un procedimiento de/nido por el lenguaje de programación

    ;ue permite otener un resultado a tra$Bs del proceso de uno) $arios o ningndato denominados par"metros. Por ejemplo en la instrucción y ] ?8 donde esuna unción) ? es el par"metro y el resultado es almacenado en la $ariale y.

    MatemticasR%I'mero8 o R#'mero8

    Atiene la Ra #uadrada del $alor de 'mero.

     %KS'mero8

    Atiene el Halor %soluto $alor con signo positi$o8 del $alor de 'mero.ZR>'#'mero8

    Zrunca el $alor de 'mero oteniendo sólo la parte entera.

    R!DA''mero8

    De$uel$e el entero m"s cercano al $alor de 'mero.

     %%R'mero8

    9enera un $alor aleatorio entero entre 0 y 'mero&1 incluidos.

    L''mero8

    Atiene el Logaritmo 'atural del $alor de 'mero

    !bP'mero8

    Atiene la unción !?ponencial y W& e?8 del $alor de 'mero

    'rigonomtricasS!''mero8

    Atiene el Seno del $alor de 'mero tomado en radianes.

    #AS'mero8

    Atiene el #oseno del $alor de 'mero tomado en radianes.

    Z%''mero8

    Atiene la Zangente del $alor de 'mero tomado en radianes. %S!''mero8

    Atiene el %rcoseno en radianes del $alor de 'mero.

     %#AS'mero8

    Atiene el %rcocoseno en radianes del $alor de 'mero.

     %Z%''mero8

    Atiene el %rcotangente en radianes del $alor de 'mero.

    Funciones de cadena de te"to

    LA'9IZ>D#adena8

    #(5#

  • 8/17/2019 Manual Programación Lógica.pdf

    36/58

    /anual de Programación ,ógica

    De$uel$e la cantidad de caracteres ;ue componen la #adena.

    -%Q>S#>L%S#adena8

    Retorna una copia de la #adena con todos sus caracteres en maysculas.

    -I'>S#>L%S#adena8Retorna una copia de la #adena con todos sus caracteres en minsculas.

    S>K#%D!'%#adena) 'mero1) 'mero28

    Retorna una nue$a cadena ;ue consiste en la parte de la #adena ;ue $adesde la posición 'mero1 *asta la posición 'mero2 incluyendo amose?tremos8. Las posiciones utilian la misma ase ;ue los arreglos) por lo ;ue laprimer letra ser" la 0 o la 1 de acuerdo al per/l del lenguaje utiliado.

    #A'#%Z!'%R#adena1) #adena28

    Retorna una nue$a cadena resulta de unir las #adenas 1 y 2.

    #A'H!RZIR%'>-!RA#adena8

    Recie una cadena de caracteres ;ue contiene un grupo de caracteresnumBricos y de$uel$e una $ariale numBrica con el $alor e;ui$alente.

    #A'H!RZIR%Z!bZA'mero8

    Recie un real y de$uel$e una $ariale numBrica con la representación comocadena de caracteres de dic*o real.

    ?+e-. (!@!7@5   #(6#

  • 8/17/2019 Manual Programación Lógica.pdf

    37/58

    /anual de Programación ,ógica

    Arreglos>n %rreglo o array es un conjunto de $ariales ;ue tiene las siguientes

    caractersticas+• Zodas las $ariales comparten un mismo nomre.

    • #ada $ariale se identi/ca adem"s de por el nomre) por una posición

    numBrica llamada ndice8 por cada dimensión de/nida.

    • Zodas las $ariales est"n ordenadas en orma secuencial a partir de 0 o 1

    dependiendo de la con/guración del programa PseInt. Para los ejemplosestaleceremos ;ue la numeración comiena en 1.

    • Son *omogBneas) todas las $ariales son del mismo tipo.

    Lo importante de este tipo de $ariales son las acilidades ;ue rinda paraprocesar un conjunto de datos.

    Dimensión e índice % ;uB nos reerimos con dimensión !n el caso de las $ariales las

    dimensiones son con$enciones lógicas) pero podemos *acer un paralelismo conlas dimensiones sicas para comprender el concepto.

    Simolicemos una $ariale como un espacio de almacenamiento en memoriapero dBmosle una estructura sica como si uese un cajón portaojetos.

    Masta a*ora *emos tratado a las $ariales como elementos indi$iduales)como si uera un punto en un espacio o sea de dimensión 0 o sin dimensión.

    !ntonces para reconocer a la $ariale simplemente se la reerenciaa por sunomre. Por ejemplo a esta $ariale la llamaremos caja.

    Luego podemos considerar a un arreglo de dimensión uno e;ui$alente a unaestructura sica de una sola dimensión) o sea a una lnea. !n este casopodemos simoliar el arreglo de una dimensión como un segmento de lnea.

    #ada caja se identi/car" con un nmero de 'ndice distinto. !stalecamos ;ueel primer ndice es 1. !n el ejemplo se aprecia un arreglo de ( cajas+ caja1)caja2) caja3 y caja(.

    Si pasamos a las dos dimensiones en el espacio nos encontramos con un

    #(7#

  • 8/17/2019 Manual Programación Lógica.pdf

    38/58

    /anual de Programación ,ógica

    plano de ejes ? e y) pues ien) podemos simoliar nuestro array idimensionalcomo un conjunto de cajas alineadas en columnas y /las. #ada caja se deer"identi/car con dos 'ndices) en el ejemplo tenemos un arreglo de 3 /las por (columnas. !ntonces el arreglo estar" compuesto por doce $ariales

    identi/cadas desde caja1)1 a caja3)(.

    Si agregamos una tercera dimensión podemos pensar en un arreglo de 3dimensiones alto) anc*o) proundidad. Q as podemos seguir agregando lasdimensiones ;ue ;uerramos.

    Declaración de una &ariable de tipo arra/Siempre ;ue se $a a utiliar un arreglo se deer" especi/car al comieno

    cual ser" la dimensión del mismo. !sto se *ace con la palara reser$adaDimensión. !n el ejemplo de la $ariale caja de dos dimensiones la sentencia seescriir"+

    8i,ension ca9a;#

    (ectoresSe denominan $ectores a los arreglos ;ue poseen una sola dimensión y por lo

    tanto un sólo nmero de ndice.

     Heamos mediante ejemplos cuales son las operaciones m"s comunes arealiar con un arreglo. Supongamos ;ue tenemos este enunciado+

    Se requiere un algoritmo que nos muestre de todas las ventas mensuales de undeterminado año, cuales meses estuvieron por de!a#o del promedio de ventamensual.

    #omo se resuel$e este algoritmo Primero tenemos ;ue tener todas las $entas mensuales ingresadas para poder promediarlas) son 12 meses en un a

  • 8/17/2019 Manual Programación Lógica.pdf

    39/58

    /anual de Programación ,ógica

    el promedio deemos reprocesar la lista de $entas para otener los ;ue est"npor deajo del promedio calculado.

    >tiliando al metodologa Zop&Do:n) pensemos el algoritmo por partes+

    1. #arga de los 12 totales de $entas.

    2. #"lculo del promedio

    3. Ks;ueda y muestra de los ;ue est"n por deajo del promedio.

     Hamos a resol$erlo entonces.

    Primero deemos de/nir las $ariales ;ue $amos a utiliar+

    Carga de un &ector

    !sta tarea es astante simple) *ay ;ue realiar un ciclo iterati$o para cargarlos 12 $alores. #ada ndice en el algoritmo corresponde a un mes) as ;ueapro$ec*aremos para denominar ,es a la $ariale contadora.

    Procesamiento del &ector cargado %*ora nos toca re$isar los datos cargados acumularlos y contarlos par

    aotener el promedio. La $erdad ;ue sera innecesario contarlos pues ya

    saemos ;ue son 12) pero si *ar" ;ue acumularlos para poder otener elpromedio.

    01s2ueda / muestra del &ector>na $e ;ue conocemos el promedio anual) podemos $ol$er a re$isar las

     $entas mensuales para determinar cuales est"n por deajo del promedio.

    Kuenos $eamos cómo ;uedó el programa completo.

    #(9#

  • 8/17/2019 Manual Programación Lógica.pdf

    40/58

    /anual de Programación ,ógica

     y el diagrama de =ujo+

    Seguramente te *ar"s dado cuenta ;ue se puede ir acumulando a medida

    ?+e-. (!@!7@5   #)!#

  • 8/17/2019 Manual Programación Lógica.pdf

    41/58

    /anual de Programación ,ógica

    ;ue se $a cargando el $ector) entonces el algoritmo ;uedara un poco m"sreducido+

     y el diagrama de =ujo+

    #)#

  • 8/17/2019 Manual Programación Lógica.pdf

    42/58

    /anual de Programación ,ógica

    #rdenamiento de un &ectorPensemos en una modi/cación del enunciado+

    Se requiere un algoritmo que nos muestre de todas las ventas mensuales de un

    determinado año, cuales meses estuvieron por de!a#o del promedio de ventamensual ordenados primero el de menor venta luego el que le sigue y así sucesivamente.

    !n otras palaras) ;ueremos saer los ;ue est"n por deajo del promedio)pero ;ueremos $erlos ordenados desde el menor al mayor.

     Hol$amos a plantear el mBtodo top&do:n+

    1. #arga de los 12 totales de $entas y #"lculo del promedio.

    2. Ardenamiento del $ector.

    3. -uestra de las $entas de menor a mayor *asta ;ue encontremos una ;ue

    supere el promedio. Hemos ;ue el primer punto se mantiene tal cual) as ;ue tenemos una gran

    parte *ec*a) concentrBmonos a*ora en el ordenamiento... cómo se ordena un $ector

    !?isten $arios algoritmos dise

  • 8/17/2019 Manual Programación Lógica.pdf

    43/58

  • 8/17/2019 Manual Programación Lógica.pdf

    44/58

    /anual de Programación ,ógica

     y el diagrama de =ujo

    ?+e-. (!@!7@5   #))#

  • 8/17/2019 Manual Programación Lógica.pdf

    45/58

    /anual de Programación ,ógica

     %nalicemos el diagrama) primero tenemos la declaración de las $ariales yla de/nición del $ector con los nomres de los meses. % continuación tenemos 3ciclos importantes) $eamoslo uno por uno+

    !l ciclo 1 corresponde a la carga del $ector de $entas y al c"lculo del

    #)5#

  • 8/17/2019 Manual Programación Lógica.pdf

    46/58

    /anual de Programación ,ógica

    promedio) tal cual como lo *emos $isto anteriormente) el nico camio es en elmensaje+ en lugar de mostrar el numero de cada mes) apro$ec*amos ymostramos su nomre.

    !l ciclo 2 corresponde al ordenamiento tanto del $ector de $entas de mayor a

    menor como tamiBn del $ector de nomres nomre-es8 ;ue dee mantenerla asociación con el mes de la $enta.

    !l ciclo 3 a*ora es una estructura repetiti$a condicional) en lugar de unaiteración apro$ec*amos ;ue el $ector est" ordenado y mientras las $entas seanmenores al promedio se mostrar"n los datos del $ector) apenas superemos elpromedio ya no se deer" mostrar nada m"s.

    Si usted ;uiere como tarea adicional podra agregar a continuación otro ciclopara ;ue muestre las $entas ordenadas ;ue superan al promedio) no ol$ideponer el ttulo -eses por arria del promedioJ para e$itar conusiones en losdatos.

    Pero) OMay algn mBtodo de ordenamiento mejor y ;ue sea acil de entender

    #rdenamiento por 0urbueoAtro de los mBtodos de ordenamiento se asa en recorrer todo el $ector

    *asta el anteltimo elemento y comparar dos elementos adyacentes) si esos seencuentran desordenados entonces se los ordena. !n un primer paso podemososer$ar ;ue al a$anar en las comparaciones siempre el de mayor $alor seposiciona inmediatamente al ondo en el primer ciclo) pero los $alores menoresa$anan una posición por cada ciclo.

    Por ejemplo para un $ector de tama

  • 8/17/2019 Manual Programación Lógica.pdf

    47/58

    /anual de Programación ,ógica

    La $erdad ;ue $isto as no presenta ninguna mejora con respecto al mBtodode comparaciones) pero se pueden pensar unas cuantas modi/caciones comopara ;ue el algoritmo se pueda optimiar.

    Primera optimi%ación* acortamiento del ciclo de burbueoLa primera consideración ;ue podemos *acer es precisamente ;ue al eecto

    de ;ue en cada ciclo se en$a el mayor al /nal) el siguiente ciclo no necesitallegar *asta la ltima posición. Por lo tanto podemos *acer ;ue el ciclo decomparaciones elimine una comparación por ciclo en orma acumulati$a. !ldiagrama ;uedara de la siguiente orma+

    !egunda optimi%ación* detectar &ector ordenadoLa segunda consideración ;ue podemos *acer es pensar ;ue el algoritmo se

    plantea como un proceso de uera ruta) de orma tal ;ue si el $ector seordenó en un ciclo anterior al /nal igualmente el proceso se seguir" realiando

    sin ordenar nada. Para esto podemos encender un =ag ;ue indi;ue si *uo unordenamiento) lo ;ue nos dar" una pista de ;ue el $ector sigue desordenado. Siel =ag est" apagado entonces no *ace alta seguir ordenando.

    !ntonces el algoritmo se planteara de la siguiente orma+

    #)7#

  • 8/17/2019 Manual Programación Lógica.pdf

    48/58

    /anual de Programación ,ógica

    'ercera optimi%ación* ciclos alternados.Atra optimiación ;ue puede *acerse es apro$ec*ar ;ue en un ciclo uno de

    los e?tremos se mue$e directamente al /nal y realiar la misma tarea pero en

    sentido in$erso as en el siguiente ciclo tenemos el primer elemento ordenado)esto $iene muy ien en el caso de ;ue sean $ectores parcialmente ordenados al;ue se agrega un nico elemento desordenado al /nal. Zal cual como lo*acamos con el ltimo elemento) deemos ajustar tamiBn el e?tremo inerioren cada ciclo para *acer comparaciones redundantes. Q tamiBncontemplaremos el =ag en el nue$o ciclo in$ertido. %*ora el diagrama ser" unpo;uito m"s complejo) pero no tanto.

    Parece complejo) pero $eamos un ejemplo completo *ec*o en pseudocódigo+

    ?+e-. (!@!7@5   #)8#

  • 8/17/2019 Manual Programación Lógica.pdf

    49/58

    /anual de Programación ,ógica

    Matrices

    #)9#

  • 8/17/2019 Manual Programación Lógica.pdf

    50/58

    /anual de Programación ,ógica

    Arc3i&osPrimero de/namos en ;ue consiste un arc*i$o+ un arc*i$o es un conjunto de

    datos muy a ajo ni$el podemos decir ;ue son un conjunto de its8 ;ue seencuentra almacenado en un medio de almacenamiento secundario. >n mediode almacenamiento secundario es accedido a tra$Bs de un periBrico) por lotanto podemos decir ;ue un arc*i$o se encuentra en una memoria e?terna.

    9eneraliando) podemos decir ;ue un arc*i$o es un conjunto de datos ;ue*ace reerencia a un aspecto de la inormación) por esto podemos clasi/car alos arc*i$os como+ arc*i$os de $deo) arc*i$os de sonido) arc*i$o de im"genes)etc) tamiBn como arc*i$os podemos identi/car a los arc*i$os uenteprogramas en te?to *ec*os por el programador8 y arc*i$os ejecutalesprogramas en inario creados por el programa intBrprete8) pero especialmentepodemos identi/car los ;ue m"s nos interesan+ los arc*i$os de datos.

    Estructura de un arc3i&o de datosMay muc*os tipos de arc*i$os de datos) algunos son dependientes de un

    lenguaje de programación espec/co o de un programa espec/co como porejemplo los arc*i$os DK ;ue contienen talas de datos de los lenguajes Dase)o? y #lipper) o los arc*i$os -DK ;ue son una ase de datos dise

  • 8/17/2019 Manual Programación Lógica.pdf

    51/58

    /anual de Programación ,ógica

    editor de te?to se $er" algo como+

    8anie3a;#;=>?>@>#;&.#=←Oscar;&?=>;&@#&.;B←

    A3!erto;@=@;;?'&.=>←Susana;#'#@'?;=&.#

    ←MarCa;;'@##;'&=;'&.;=←

    !n el ejemplo) cada campo se separa por una coma y cada registro tiene unseparador con el smolo ]. AsBr$ese ;ue en esta estructura de arc*i$o no seguardan los nomres de los campos ni los nmeros de registro.

    #omandos y unciones relati$as a arc*i$os

    !n el algoritmo se puede *acer relati$amente pocas tareas con un arc*i$o)espec/camente de/niremos 5 tareas+

    Abrir un arc3i&o4La primer tarea para traajar con arc*i$os en cual;uier lenguaje es ejecutar

    una instrucción ;ue asocie un arc*i$o en un medio de almacenamiento a uncanal de comunicación esto se *ace con la instrucción+

    %brir Dnombre de archivo c&'o F&

    donde +nomre de archivo es el nomre por el cual el sistema operati$oreconoce al arc*i$o) puede ser escrito literalmente o tamiBn puede seralmacenado como una cadena de te?to en una $ariale.

    Por otra parte f1 es el nmero de canal de comunicaciones aierto) pero enun algoritmo no tendremos por ;uB limitarnos a procesar un solo arc*i$o) por lotanto cuando se ara otro arc*i$o lle$ar" el f2) y as sucesi$amente.

    !n algunos lenguajes se suele indicar adem"s si el arc*i$o ser" aierto paralectura solamente o para escritura para ;ue el sistema operati$o sepa comodee manejar los lo;ueos cuando se graa sólo se permite ;ue un nicoproceso utilice el arc*i$o) por lo tanto se lo lo;uea a los dem"s procesos8.

    Leer el arc3i&oPara otener datos del arc*i$o a /n de procesarlos por el algoritmo se

    utiliar" la instrucción leer pero agreg"ndole el canal desde donde se otendr"

    los datos. La idea es se lea un registro completo) ;ue todos los campos de datosse copien en $ariales del algoritmo. La instrucción ser" entonces algo como+

    Leer F& variable1 variable2 variable3…

    Detectar el )inal del arc3i&oPero cuando se lee secuencialmente un arc*i$o siempre *ay ;ue procesar un

    registro tras otro *asta leer todo el arc*i$o o *asta decidir si no se re;uierenm"s datos. #uando se dee procesar el arc*i$o completo) para detectar el /naldel arc*i$o y no intentar leer datos ine?istentes se utilia una unción ;uede$ol$er" el estado de /n de arc*i$o. La unción ;ue se utilia en la mayora delos lenguajes y ;ue utiliaremos en el pseudocódigo8 es la sigla !A8 ;ue

    #5#

  • 8/17/2019 Manual Programación Lógica.pdf

    52/58

    /anual de Programación ,ógica

    corresponde a la palara inglesa end o /leJ)en castellano deeramos utiliar algo comoD%8 in De %rc*i$o8 pero por costumreseguiremos utiliando las sigla en inglBs. -"s

    adelante $eremos un ejemplo de cómoutiliarla cuando $eamos el proceso de lecturasecuencial de un arc*i$o.

    >n detalle muy importante es ;ue la unción!A8 de$uel$e un $alor $erdadero cuando setrató de leer m"s all" del ltimo registro) o sea)cuando la instrucción L!!R trajo datoserróneos ;ue no deer"n ser procesados. Por lotanto el uso m"s acertado de la instrucción delectura en el ciclo es posterior al proceso de

    datos.!sto suena astante conuso... OSe entiende

    con lo dic*o en el p"rrao anterior ;ue deoprocesar primero el registro y posteriormenteleerlo !s un asurdo) Lo ;ue se dee entenderes ;ue al /naliar el proceso del registro encurso se dee leer el pró?imo registro aprocesar) a* el prolema entonces estara conel primer registro del arc*i$o. Por eso siemprela primera lectura es antes de comenar el ciclo de proceso de los datos delarc*i$o.

    5uardar datos en un arc3i&o

     %s como se utilia la instrucción leer  para otener los datos almacenados enun arc*i$o) para guardarlos se utilia la instrucción escribir  de la siguienteorma+

    Escribir F& variable1 variable2 variable3…

    Cierre de un arc3i&o#uando se /nalia la tarea de proceso asociada a un arc*i$o es uena

    costumre indicar ;ue se liere el canal e comunicaciones. Si ien en lossistemas operati$os modernos esto se *ace autom"ticamente) es preerile noutiliar m"s recursos de los ;ue necesitamos por una cuestión de rendimiento yde seguridad en los datos.

    Para indicar ;ue el canal de comunicaciones se dee cerrar y por lo tanto elsistema operati$o dee tomar los recaudos necesarios para ;ue los datos;ueden asentados en el arc*i$o es normal ;ue el sistema operati$o utilice unamemoria cac*B asociada al arc*i$o8 se dee escriir la instrucción cerrarindicando el canal asociaciado) por ejemplo+

    (errar F&

    ?+e-. (!@!7@5   #5%#

  • 8/17/2019 Manual Programación Lógica.pdf

    53/58

    /anual de Programación ,ógica

    Algoritmos típicos

    Creación de un arc3i&o!l proceso necesario para crear un arc*i$o normalmente implica cargar los

    datos desde el teclado para luego $alidarlos y si son correctos guardarlos en elarc*i$o. Repitiendo esta tarea *asta ;ue se ingresen todos los datos.

    Magamos un ejemplo) supongamos ;ue ;ueremos tener la lista de nomres)se?o) pesos y alturas de un grupo de personas. Zomaremos de indicación de /nde la carga cuando el nomre sea bJ.

    Proceso cargaArcGi$oa!rir 28AOS.I2 co,o F&

    Mostrar 2Jngrese e3 no,!re: 2 Sin Sa3tareer no,!reMientras ,aKúscu3asLno,!re

  • 8/17/2019 Manual Programación Lógica.pdf

    54/58

    /anual de Programación ,ógica

    Mostrar 28atos a3,acenados: 2eer F& no,! seN pe a3tMientras no eofL Hacer

    Mostrar no,! seN pe a3t

    eer F& no,! seN pe a3t4inMientras

    cerrar F&4inProcesoF

    'ota importante+ #uando leemos un arc*i$o deemos utiliar el mismo ordende campos ;ue el algoritmo ;ue se utilió para su creación. 'ótese ;ue sere;uiere ;ue se respete solamente el orden) no *ace alta ;ue los nomres delas $ariales sean los mismos.

    'rabaar con 6 arc3i&os Heamos un ejemplo donde utilicemos dos arc*i$os. Supongamos ;ue tenemos

    el arc*i$o con la clasi/cación del ndice de masa corporal $er en @i4ipediaI-#) *ttps+,,es.:i4ipedia.org,:i4i,U#3U6Dndicedemasacorporal8.

    Supongamos ;ue el arc*i$o se llama I-#.D%ZJ y contiene el estado y elrango de $alores desde y *asta8 ;ue aarca ese estado) con los siguientes

     $alores

    a9o peso = &>.6or,a3 &>. 'So!repeso ' ;=O!esidad 3e$e ;= ;

    O!esidad ,edia ; #=O!esidad ,r!ida #= &==

    la orma de calcular el I-# es el peso di$idido la altura al cuadrado o seaI-# F 4g,m28.

    Pues ien) la idea sera mostrar nue$amente el arc*i$o pero a*ora indicandosegn su I-# en ;ue estado nutricional se encuentra la persona.

    !l algoritmo entonces necesitar" procesar dos arc*i$os) el arc*i$o I-# y elcargado con pesos y alturas. Para agiliar el proceso y no tener ;ue andaruscando el rango de I-# dentro del arc*i$o ariendo el arc*i$o cada $e ;ue

    se usca un rango8 y como los datos del I-# son realmente pocos) entoncescargaremos dos arreglos+ un $ector y una matri) luego otendremos laclasi/cación de los datos cargados en memoria.

    Proceso ,uestraJM0di,ension JM0QestadoBdi,ension JM0Q$a3orB'i

  • 8/17/2019 Manual Programación Lógica.pdf

    55/58

    /anual de Programación ,ógica

    eer F& JM0Qestadoi JM0Q$a3ori& JM0Q$a3ori'4inMientrascerrar F&

    // AGora procesar e3 arcGi$o con 3os pesos K a3turas

    a!rir 28AOS.I2 co,o F'Mostrar 2Estado nutriciona3: 2eer F' no,!re seNo peso a3turaMientras no eofLF' Hacer

    JM0

  • 8/17/2019 Manual Programación Lógica.pdf

    56/58

    /anual de Programación ,ógica

    cada pro$incia y cuantos empleados *ay en total en todo el pas. De paso) paracomplicar el algoritmo ;ueremos saer cuantos empleados tiene la sucursal ;uem"s empleados tiene.

    Digamos ;ue por pantalla ;ueremos ;ue nos salga la inormación m"s o

    menos as+istado de 0antidad de persona3

    Pro$incia: IIIIIIIIIIIIII

      Sucursa3: IIIIIIIIIIIIIIIIIIIII

      Encargados: ??

      Ad,inistrati$os: ??

      Operati$os: ??

      Sucursa3: IIIIIIIIIIIIIIIIIIIII

      Encargados: ??

      Ad,inistrati$os: ??  Operati$os: ??

      ota3 e,p3eados pro$incia: ????

    Pro$incia: IIIIIIIIIIIIII

      Sucursa3: IIIIIIIIIIIIIIIIIIIII

      Encargados: ??

      Ad,inistrati$os: ??

      Operati$os: ??

      Sucursa3: IIIIIIIIIIIIIIIIIIIII

      Encargados: ??

      Ad,inistrati$os: ??

      Operati$os: ??

      ota3 e,p3eados pro$incia: ????

    ota3 e,p3eados de3 paCs: ???????

    a sucursa3 con ,s e,p3eados tiene: ??? e,p3eados.

    >n posile algoritmo para solucionar el prolemas sera+

    Proceso 0orte0ontro3  e,p3eadosota3

  • 8/17/2019 Manual Programación Lógica.pdf

    57/58

    /anual de Programación ,ógica

      Mientras no eofLF& K auN0odPro$ codPro$ Hacer  // itu3os de 'do corte LSucursa3  Mostrar 2 Sucursa3: 2* 6o,!Suc  // Taria!3e auNi3iar para detectar e3 corte de contro3  auN6o,!Suc

  • 8/17/2019 Manual Programación Lógica.pdf

    58/58

    /anual de Programación ,ógica

      // En e3 siguiente cic3o !usco coincidencia en e3 cdigo  // K $erifico no pasar,e de3 fina3 de3 $ector  Mientras i