Download - Capitulo 4-Repaso
-
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(