capitulo 4-repaso

Upload: harrison-avella

Post on 01-Mar-2018

219 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/26/2019 Capitulo 4-Repaso

    1/20

    Versin: 2 - Capitulo 4 Repaso

    Pgina 1Curso de Ingreso Expresin de Problemas !lgoritmos

    Captulo 4

    Repaso

    Objetivos

    "asta a#ora se #a de$inido la manera de es%ribir programas utili&ando el lengua'e del

    ambiente del robot R-in$o( )ambi*n se #a presentado la sintaxis utili&ada +ue permite

    trasladar al robot, re%oger o depositar $lores papeles saber si #a o no $lores en la

    es+uina o en la bolsa(

    Por otro lado se #an anali&ado di$erentes situa%iones +ue re+uieren la posibilidad de

    representar in$orma%in espe%.$i%a del problema(

    El ob'eti/o de este %ap.tulo es presentar, anali&ar resol/er di$erentes e'emplos +ue

    permitirn la e'er%ita%in de los temas /istos en los %ap.tulos anteriores(

    Temas a tratar

    Presenta%in, anlisis resolu%in de e'emplos(

    Con%lusiones(

    E'er%ita%in(

    1.

    2.

  • 7/26/2019 Capitulo 4-Repaso

    2/20

    4.1 Repaso de variables

    En los %ap.tulos anteriores se #a de$inido la sintaxis de las a%%iones u rdenes +ue el

    robot puede lle/ar a %abo se #a indi%ado %omo se representar traba'ar %on lain$orma%in rele/ante +ue presenta el problema a resol/er utili&ando el lengua'e del

    ambiente del robot R-in$o(

    Como a #emos /isto:

    !dems, sabemos +ue dentro de un mismo programa pueden utili&arse tantas /ariables

    %omo sean ne%esarias para representar ade%uadamente todos los datos presentes en el

    problema(

    0in embargo, de todos los e'emplos /istos en los %ap.tulos 2 podr.amos pensar +ue

    %ada /e& +ue un enun%iado re+uiere in$ormar una %antidad, es ne%esario re%urrir a una

    /ariable( ! tra/*s de un e'emplo, podemos obser/ar +ue esto no siempre es as.(

    !nali%emos el siguiente e'emplo:

    Ejemplo 4.1: Programe al robot para +ue re%orra la %alle 4 deteni*ndose %uandoen%uentre una es+uina +ue no tiene $lores, sabiendo +ue esa es+uina seguro existe( !lterminar debe in$ormar la %antidad de pasos dados(Este problema admite dos solu%iones( 3na de ellas utili&a una /ariable para representar

    la %antidad de pasos +ue da el robot la otra no(

    programa cap4Ejemplo1aareas

    ciudad: AreaC(1,1,100,100)

    robots

    robot robot1

    comenzar

    mientras(HayFlorEnLaEsuina)

    mo!er"n#ormar ($osA!%1)

    fin

    variables

    &%in#o: robot1

    comenzar

    Asi'narArea(&%in#o,ciudad)

    "niciar(&%in#o,1,1)

    fin

    programa cap4Ejemplo1bareas

    ciudad: AreaC(1,1,100,100)

    robots

    robot robot1

    variables

    pasos: numero

    comenzarpasos: 0 1*

    mientras (HayFlorEnLaEsuina)

    mo!er

    pasos: pasos + 1

    "n#ormar (pasos) *

    fin

    variables

    &%in#o: robot1

    comenzar

    Asi'narArea(&%in#o,ciudad)

    "niciar(&%in#o,1,1)

    fin

    En general, durante la e'e%u%in de un programa es ne%esario manipular in$orma%in

    +ue puede %ambiar %ontinuamente( Por este moti/o, es ne%esario %ontar %on un

    re%urso +ue permita /ariar la in$orma%in +ue se mane'a en %ada momento( Este

  • 7/26/2019 Capitulo 4-Repaso

    3/20

    El e'emplo 4(1 demuestra +ue antes de de%idir representar nue/a in$orma%in dentro

    del programa, es importante anali&ar si el robot no %uenta %on la posibilidad de mane'ar

    los datos pedidos de este modo e/itar la de%lara%in de un dato(

  • 7/26/2019 Capitulo 4-Repaso

    4/20

    !nali%emos:

    Por +u* en el programa Cap4E'emplo1a el +ue no usa la /ariable5 se

    in$orma Pos!/-156

    78u* o%urrir.a en Cap4E'emplo1b si la l.nea 15 es reempla&ada por pasos:91 la l.nea 25 es reempla&ada por In$ormar pasos 1 5 6

    7Cul de las $ormas de resol/er el problema le pare%e ms ade%uada6

    usti$i%ar la respuesta(

    4.2Repaso de expresiones lgias

    Re%ordemos +ue las expresiones lgi%as pueden $ormarse %on /ariables expresionesrela%ionales utili&ando los operadores lgi%os de la tabla 2((

    !nali%emos los siguientes e'emplos para e'er%itar la resolu%in de expresiones lgi%as

    +ue %ombinan /arias proposi%iones:

    Ejemplo 4.2: Programe al robot para +ue in$orme si en la es+uina ;,45 #a solo$lor o solo papel pero no ambos5(

    programa cap4Ejemploareas

    ciudad: AreaC(1,1,100,100)

    robots

    robot robot1

    comenzar

    $os(-,4)

    si (HayFlorEnLaEsuina . / Hay$apelEnLaEsuina) 1*

    (/ HayFlorEnLaEsuina . Hay$apelEnLaEsuina) *

    "n#ormar()

    sino

    "n#ormar( F )

    fin

    variables

    &%in#o: robot1

    comenzar

    Asi'narArea(&%in#o,ciudad)

    "niciar(&%in#o,1,1)

    fin

    Como puede /erse en este e'emplo, +ue en la sele%%in se #a utili&ado una disun%in

    de %on'un%iones( Es de%ir +ue basta %on +ue una de las dos %on'un%iones sea /erdadera

    para +ue toda la proposi%in lo sea(

    Cada una de las %on'un%iones re+uiere +ue #aa uno solo de los dos elementos: la

    primera pide +ue #aa $lor no papel 15 la segunda +ue #aa papel no $lor 25(

  • 7/26/2019 Capitulo 4-Repaso

    5/20

  • 7/26/2019 Capitulo 4-Repaso

    6/20

    Ejemplo 4.!: Programe al robot para +ue re%orra la a/enida 1= bus%ando una $lor+ue puede no existir( !l $inali&ar in$ormar donde est si la en%ontr5 o > $also5 en %aso%ontrario(

    programa cap4Ejemplo2

    areas

    ciudad: AreaC(1,1,100,100)

    robots

    robot robot1

    comenzar

    $os(13,1)

    recorre la Av.16 buscando la flor *mientras / HayFlorEnLaEsuina . ($osCa 100) 1*

    mo!er

    ver si encontr la flor o no }

    si HayFlorEnLaEsuina *

    "n#ormar ( $osCa )

    sino

    "n#ormar( F )

    fin

    variables

    &%in#o: robot1

    comenzarAsi'narArea(&%in#o,ciudad)

    "niciar(&%in#o,1,1)

    fin

    Como podemos obser/ar, en la l.nea 15 se utili&a una proposi%in mole%ular para

    %ontrolar la itera%in( !#ora no al%an&a %on /eri$i%ar solamente +ue la $lor no exista

    ?"a>lorEn@aEs+uina5 sino +ue adems es ne%esario tener en %uenta +ue no setermine la a/enida PosCa A 1BB5(

    ado +ue ambas %ondi%iones deben %umplirse simultneamente, se las #a unido por una

    %on'un%in( Esta proposi%in mole%ular ser /erdadera %uando ambas proposi%iones lo

    sean( @a itera%in puede leerse %omo: Dmientras no en%uentre la $lor a la /e&, el robot

    no llegue a la %alle 1BB, debe seguir a/an&ando(

    @a itera%in termina %uando la %on'un%in es $alsa( Esto o%urre por tres moti/os:

    1( En%ontr la $lor durante el re%orrido de la a/enida( Es de%ir +ue la %ondi%in

    PosCa A 1BB5 es /erdadera pero la proposi%in ?"a>lorEn@aEs+uina 5 es

    $alsa(

    2( Fo en%ontr la $lor pero lleg a la %alle 1BB( Es de%ir +ue ?"a>lorEn@aEs+uina

    5 es /erdadera PosCa A 1BB5 es $alsa(

    ( En%ontr la $lor sobre la %alle 1BB( En este %aso ambas %ondi%iones son $alsas(

    Por lo tanto, la itera%in no ne%esariamente termina %uando la $lor #a sido #allada para

    poder in$ormar lo soli%itado en el enun%iado del problema, ser ne%esario distinguir lo+ue pas( Esa es la $un%in de la sele%%in +ue apare%e en la l.nea 25(

  • 7/26/2019 Capitulo 4-Repaso

    7/20

    !nali%emos:

  • 7/26/2019 Capitulo 4-Repaso

    8/20

    0i se logra el mismo resultado reempla&ando la %ondi%in +ue apare%e en

    la l.nea 25 por PosCa91BB( usti$i%ar la respuesta(

    Pensar en otra proposi%in +ue permita dar a la sele%%in de 25 el mismo

    $un%ionamiento(

    4.!Ejemplos"abiendo repasado los aspe%tos ms importantes para la e'er%ita%in propuesta para este

    %ap.tulo, a %ontinua%in se presentan di$erentes e'emplos +ue %ombinan los temas /istos

    #asta a+u.( Es re%omendable +ue prestemos espe%ial aten%in a la de$ini%in

    e/alua%in de proposi%iones(

    Ejemplo 4.4: Programe al robot para +ue re%orra la %alle 2G #asta en%ontrar unaes+uina /a%.a +ue puede no existir( En %aso de en%ontrarla depositar en ella una $lor( 0ino pudo depositar por+ue no ten.a5 in$ormar > $also5(

    El siguiente programa resuel/e este problema:

    programa cap4Ejemplo4

    areas

    ciudad: AreaC(1,1,100,100)

    robots

    robot robot1

    comenzar

    {ubicar el robot al comienzo de la calle 29}

    $os(1,5)

    derec6a{recorrer la calle hasta encontrar una esquina vaca o hasta terminar}

    mientras (HayFlorEnLaEsuina Hay$apelEnLaEsuina).($osA! 100)

    mo!er

    {si la encontr depositar en ella una flor}

    si /HayFlorEnLaEsuina . /Hay$apelEnLaEsuinasi HayFlorEnLa7olsa

    depositarFlor

    sino

    "n#ormar(F)

    fin

    variables&%in#o: robot1

    comenzar

    Asi'narArea(&%in#o,ciudad)

    "niciar(&%in#o,1,1)

    fin

    !nali%emos:

    7Cuales son los %asos en los +ue la e/alua%in de la proposi%in mole%ular

    +ue mane'a la itera%in da %omo resultado $also6

  • 7/26/2019 Capitulo 4-Repaso

    9/20

    7Puede reempla&arse la sele%%in anterior por la siguiente6:

  • 7/26/2019 Capitulo 4-Repaso

    10/20

    si /HayFlorEnLaEsuina . /Hay$apelEnLaEsuina . HayFlorEnLa7olsa

    depositarFlor

    sino"n#ormar(F)

    Ejemplo 4.": Programe al robot para +ue in$orme la %antidad de papeles +ue #a enla es+uina =;,25 0IF modi$i%ar el %ontenido de la es+uina(

    Este problema es una /ariante del e'emplo (, donde no se pide +ue se re%o'an los

    papeles sino slo +ue in$orme la %antidad( 0abemos +ue para poder resol/er esto ser

    ne%esario 'untar los papeles %ontando luego depositar exa%tamente la %antidad de

    papeles re%ogidos( Fotemos +ue no es lo mismo /a%iar los papeles de la bolsa por+ue

    ella podr.a %ontener papeles !F)E0 de %omen&ar a re%oger( El programa es el

    siguiente:

    programa cap4Ejemplo8

    areas

    ciudad: AreaC(1,1,100,100)

    robots

    robot robot1

    variables

    cant$: numero

    comenzar

    Pos(3-,2)

    {ndicar que aun no se ha reco!ido nada}

    cant$ : 0

    mientras Hay$apelEnLaEsuina

    tomar$apelcant$ : cant$ + 1

    {Ahora la esquina "a no tiene papeles}

    "n#ormar (cant$)

    {#olver a de$ar los papeles en la esquina}

    repetir cant$

    deposita$apel

    fin

    variables

    &%in#o: robot1

    comenzar

    Asi'narArea(&%in#o,ciudad)

    "niciar(&%in#o,1,1)

    fin

    0e #a utili&ado una repeti%in para /ol/er a poner los papeles en la es+uina por+ue,

    luego de #aberlos re%ogido, se %ono%e exa%tamente la %antidad de papeles +ue se +uiere

    depositar( !dems, para depositar no es ne%esario preguntar si #a papeles en la bolsa

    para satis$a%er esta demanda por+ue se #a re%ogido la misma %antidad de papeles a

    tra/*s de la itera%in Es ms, suponiendo +ue originalmente no #ubiera #abido papeles

    en =;,25, cantP /aldr %ero en %uo %aso el repetir no e'e%utar ninguna instru%%in(

  • 7/26/2019 Capitulo 4-Repaso

    11/20

    Propon* otra $orma de es%ribir el segmento de %digo +ue /uel/e a

    poner los papeles en la es+uina Hltimo repetir5(

  • 7/26/2019 Capitulo 4-Repaso

    12/20

    Ejemplo 4.#: Programe al robot para +ue in$orme la %antidad de $lores +ue #a en%ada una de las es+uinas de la a/enida 1(

    Para resol/er este problema al%an&ar %on una Hni%a /ariable +ue represente la %antidad

    de $lores de la es+uina a%tual( Cada /e& +ue llega a una es+uina, el robot ini%iali&ar la

    /ariable en %ero, anotar en ella %ada /e& +ue logre re%oger una $lor $inalmente

    in$ormar su /alor( Esto se debe repetir para %ada es+uina de la a/enida 1( El programa

    ser el siguiente:

    programa cap4Ejemplo3

    areas

    ciudad: AreaC(1,1,100,100)

    robots

    robot robot1

    variables

    #lores: numerocomenzar

    {%e recorrer&n las primeras 99 esquinas}

    repetir 55

    {ndicar que aun no se ha reco!ido nada en esta esquina}

    #lores : 0 {1}

    mientras HayFlorEnLaEsuina

    tomarFlor

    #lores : #lores + 1

    {Ahora la esquina "a no tiene flores}

    "n#ormar(#lores)

    {'asar a la esquina si!uiente}

    mo!er

    {(alta la esquina )1*1++,} {2}

    {ndicar que aun no se ha reco!ido nada en esta esquina}

    #lores : 0

    mientras HayFlorEnLaEsuina

    tomarFlor

    #lores : #lores + 1

    {Ahora la esquina "a no tiene flores}

    "n#ormar(#lores)

    fin

    variables

    &%in#o: robot1

    comenzar

    Asi'narArea(&%in#o,ciudad)

    "niciar(&%in#o,1,1)

    fin

    !nali%emos:

    78u* o%urrir.a si la l.nea 15 $uera trasladada antes del repetir, es de%irantes de %omen&ar la repeti%in6 78u* /alores in$ormar.a6

    7Por +u* es ne%esario pro%esar por separado la es+uina 1,1BB56 Vea +ue

    apare%e $uera de la repeti%in en la l.nea 25(

    7Cmo modi$i%ar.a el programa anterior para +ue el robot tambi*n pueda in$ormar para

    %ada es+uina, el nHmero de %alle la %antidad de $lores +ue %ontiene(

  • 7/26/2019 Capitulo 4-Repaso

    13/20

    4.4 Conlusiones

    0e #an presentado /arios e'emplos +ue muestran el uso de los dos tipos de datos +ue

    puede mane'ar el robot: /alores num*ri%os /alores booleanos( ! tra/*s de ellos se #a

    mostrado la $orma de me'orar la poten%ia de las solu%iones o$re%idas, permitiendo +ue el

    robot registre /alores para un pro%esamiento posterior(

    )ambi*n se #a de$inido e'empli$i%ado el uso de los %one%ti/os lgi%os permitiendo

    mane'ar las estru%turas de %ontrol sele%%in e itera%in a tra/*s de proposi%iones

    mole%ulares(

  • 7/26/2019 Capitulo 4-Repaso

    14/20

    Ejeritain

    1( Indi+ue +u* #a%en los siguientes programas %onsiderando las di$erentes situa%iones

    +ue podr.an presentarse:

    a) programa ueHace1

    areas

    ciudad: AreaC(1,1,100,100)

    robots

    robot robot1

    comenzar

    $os (4,2)

    si ((HayFlorEnLaEsuina) . /(Hay$apelEnLaEsuina))

    tomarFlor

    "n#ormar ()

    sino

    "n#ormar (F)

    fin

    variables

    &%in#o: robot1

    comenzar

    Asi'narArea(&%in#o,ciudad)

    "niciar(&%in#o,1,1)

    fin

    b) programa ueHace

    areas

    ciudad: AreaC(1,1,100,100)

    robots

    robot robot1comenzar

    $os (3,1)

    mientras ((HayFlorEnLaEsuina) . ($osCa 100))

    mo!er

    tomarFlor

    fin

    variables

    &%in#o: robot1

    comenzar

    Asi'narArea(&%in#o,ciudad)

    "niciar(&%in#o,1,1)

    fin

    c) programa ueHace2

    areas

    ciudad: AreaC(1,1,100,100)

    robots

    robot robot1

    comenzar

    repetir 55

    mientras (HayFlorEnLaEsuina)

    mo!er

    tomarFlor

    mientras (HayFlorEnLaEsuina)

    tomarFlor

    finvariables

    &%in#o: robot1

  • 7/26/2019 Capitulo 4-Repaso

    15/20

    comenzar

  • 7/26/2019 Capitulo 4-Repaso

    16/20

    Asi'narArea(&%in#o,ciudad)

    "niciar(&%in#o,1,1)

    fin

    d) programa ueHace4

    areasciudad: AreaC(1,1,100,100)

    robots

    robot robot1

    !ariables

    nro : numero

    comenzar

    nro := 0

    si /((HayFlorEnLaEsuina) (Hay$apelEnLaEsuina))

    mo!er

    nro : nro + 1

    "n#ormar (nro)

    fin

    variables&%in#o: robot1

    comenzar

    Asi'narArea(&%in#o,ciudad)

    "niciar(&%in#o,1,1)

    fin

    e) programa ueHace8

    areas

    ciudad: AreaC(1,1,100,100)

    robots

    robot robot1

    !ariables

    9inFlor : numero

    comenzar

    SinFlor := 0

    Pos (1,20)

    derecha

    mientras ((HayFlorEnLaEsuina). ($osA! 100))

    tomarFlor

    si / (HayFlorEnLaEsuina)

    9inFlor : 9inFlor + 1

    mo!er

    "n#ormar (9inFlor)

    fin

    variables

    &%in#o: robot1comenzar

    Asi'narArea(&%in#o,ciudad)

    "niciar(&%in#o,1,1)

    fin

    f) programa ueHace3

    areas

    ciudad: AreaC(1,1,100,100)

    robots

    robot robot1

  • 7/26/2019 Capitulo 4-Repaso

    17/20

    comenzar

  • 7/26/2019 Capitulo 4-Repaso

    18/20

    repetir

    mientras ((HayFlorEnLaEsuina). (Hay$apelEnLaEsuina))

    tomarFlor

    tomar$apel

    mo!er

    mientras ((HayFlorEnLaEsuina). (Hay$apelEnLaEsuina))

    tomarFlortomar$apel

    fin

    variables

    &%in#o: robot1

    comenzar

    Asi'narArea(&%in#o,ciudad)

    "niciar(&%in#o,1,1)

    fin

    2( Programar al robot para +ue re%orra la %alle desde la a/enida #asta la a/enida 2B

    depositando un papel en %ada es+uina( 0i durante el re%orrido se +ueda sin papeles para

    depositar, debe detenerse(

    ( 0uponiendo +ue el robot %uenta %on su$i%iente %antidad de $lores papeles en su bolsa,

    es%ribir un programa +ue le permita re%orrer la %alle 4 de'ando en las a/enidas pares

    solo una $lor en las impares solo un papel(

    4( Programar al robot para +ue re%orra la %alle 2B e in$orme %untas es+uinas tienen slo

    $lores %untas es+uinas tienen slo papeles( Fo debe modi$i%arse la %antidad de $lores

    papeles de %ada es+uina(

    ( Programar al robot para +ue re%orra el per.metro de la %iudad de'ando un papel en

    a+uellas es+uinas +ue slo tienen papel una $lor en las es+uinas +ue tienen slo $lores(

    El re%orrido debe $inali&ar al terminar de re%orrer el per.metro(

    =( Programar al robot para +ue re%orra el per.metro de la %iudad bus%ando una es+uina %on

    exa%tamente $lores papeles, suponiendo +ue esta es+uina existe( ebe in$ormar

    %ual es la es+uina en%ontrada(

    ;( Idem =( pero no se puede asegurar +ue tal es+uina existe( En %aso de en%ontrarla,in$ormar %ual es esa es+uina(

    ( Indi+ue si son /erdaderas o $alsas las siguientes a$irma%iones de a%uerdo al programa

    J8ue "a%eK( 30)I>I83E %ada respuesta(

    programa ueHace-

    areasciudad: AreaC(1,1,100,100)

    robots

  • 7/26/2019 Capitulo 4-Repaso

    19/20

    robot robot1

    comenzar

    repetir !

  • 7/26/2019 Capitulo 4-Repaso

    20/20

    mover

    derecha

    mientras(((HayFlorEnLaEsuina)(Hay$apelEnLaEsuina)).

    ($osA! 100))

    mo!er

    mientras (HayFlorEnLaEsuina)

    tomarFlormientras (Hay$apelEnLaEsuina)

    tomar$apel

    fin

    variables

    &%in#o: robot1

    comenzar

    Asi'narArea(&%in#o,ciudad)

    "niciar(&%in#o,1,1)

    fin

    a(- Re%orre la %alle (

    b(- El robot se puede %aer de la %iudad(%- )odas las es+uinas por las +ue pas el robot #a $lores #a papeles(

    d(- !l detenerse le/anta todas las $lores papeles de la es+uina(

    e(- !l $inali&ar el re%orrido el robot tiene $lores papeles en la bolsa(