0% found this document useful (0 votes)
60 views89 pages

Basic 2 Course

The document provides code for a basic robotics course, including procedures for painting shapes, navigating mazes to find beacons, and using sequences of procedures to draw more complex images like a robot portrait. It demonstrates various programming concepts like conditionals, loops, and user-defined procedures to control a robot's movements and sensors.

Uploaded by

Héctor D.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
60 views89 pages

Basic 2 Course

The document provides code for a basic robotics course, including procedures for painting shapes, navigating mazes to find beacons, and using sequences of procedures to draw more complex images like a robot portrait. It demonstrates various programming concepts like conditionals, loops, and user-defined procedures to control a robot's movements and sensors.

Uploaded by

Héctor D.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 89

BASIC 2 COURSE

LETS WARM UP: PAINT A SQUARE

paintwhite

repeat (1){

forward (3)

right

forward(3)

right

forward(3)

right

forward(3)

Go to the wall and stop


repeat (1)

{forward (3)

if (frontIsObstacle )

Follow the white trail


repeat (1)

{ forward (1)

if (frontiswhite) {

forward

left

forward (7)

left
forward (3)

pickup

end

if (frontisbeacon){

left

forward (3)

pickup

end

FrontIsBeacon

Follow the white trail even further


repeat (1)

{ forward (1)

if (frontiswhite) {

forward

left

forward (7)

left

forward (6)

left

forward (2)

pickup

end

}
if (frontisbeacon){

left

forward (3)

pickup

end

FrontIsBeacon

Follow a pepper-and-salt trail


repeat (1)

if (frontisblack)

forward

right

forward (4)

right

forward (1)

if (frontiswhite)

{ forward

left

forward (5)

right

forward

pickup

end

}}
}

if (frontisbeacon)

right

Follow another pepper-and-salt trail


repeat (1)

if (frontiswhite){

forward

left

forward (6)

left

forward (2)

if (frontisblack)

forward

right

forward (6)

left

forward

pickup

end

if (frontisbeacon)

{
}

Follow a secret trail!


repeat (1)

{forward

if (frontiswhite and rightiswhite)

right

forward (6)

left

forward(3)

left

forward(8)

right

if (frontiswhite and leftiswhite)

forward

pickup

end}

if(frontisbeacon)

Follow another secret trail


repeat (1)

{forward
if (frontiswhite and rightiswhite)

right

forward (6)

left

forward(3)

left

forward(8)

right

if (frontiswhite and leftiswhite)

forward

pickup

end}

if(frontisbeacon)

Finding beacons in a maze


repeat (1)

{ forward (5)

if (frontisobstacle)

pickup

end
}

if (frontisbeacon)

Finding beacons in a maze: turn right


repeat (1)

{ forward (6)

right

forward (5)

if (frontisobstacle)

pickup

end

if (frontisbeacon)

Finding beacons in a maze: turn left


repeat (1)

{ forward (6)

right
forward (8)

left

forward (2)

left

forward (2)

if (frontisobstacle)

pickup

end

if (frontisbeacon)

Finding beacons in a small maze


repeat (1)

left

forward (2)

right

forward (2)

left

forward (2)

right

forward (2)

left
forward (4)

left

forward (4)

right

forward (5)

right

forward

left

forward

right

forward (3)

right

forward (4)

right

forward (2)

right

forward}

if (frontisobstacle)

pickup

end}

if(frontisbeacon)

Finding beacons in a big maze


repeat (1){

forward (4)
right

forward(4)

right

forward (2)

left

forward (5)

left

forward (2)

left

forward(2)

right

forward (2)

left

forward (9)

right

forward (2)

right

forward (5)

left

forward (4)

right

forward (9)

right

forward (2)

left

forward (2)

left

forward (2)

right
forward

if (frontisobstacle)

pickup

end

if(frontisbeacon)

A maze with obstacles!


repeat (1){

left

forward (3)

right

forward (4)

right

forward (3)

left

forward (4)

right

forward

left

forward (2)

left

forward(2)

if(frontisobstacle)
{

eatup

forward(3)

left

forward(4)

right

forward (5)

left

forward(2)

left

if (frontisobstacle)

eatup

forward (3)

right

forward (2)

right

forward (3)

left

if (frontisobstacle)

eatup

forward

}
if(frontiswhite)

forward

Sequences of procedures

number4

number4

number4

number4

number4

number4

procedure number1

right

forward

left

paintWhite

forward(2)

stopPainting

backward(2)

right

forward

left

}
procedure number4

forward

paintWhite

forward

backward

right

forward

left

forward

backward(2)

stopPainting

right

forward

left

Procedure square
square

procedure square

paintwhite

forward

right

forward

right

forward

right
forward

right

Draw two squares ...

square

procedure square

paintwhite

forward

right

forward

right

forward

right

forward

right

stoppainting

right

forward(4)

left

paintwhite

forward

right

forward

right

forward
right

forward

right

Draw a robot portrait ..


square

procedure square

paintwhite

forward

right

forward

right

forward

right

forward

right

stoppainting

right

forward(4)

left

paintwhite

forward

right

forward

right
forward

right

forward

right

stoppainting

left (2)

forward

right

forward (2)

right

paintwhite

forward

right

forward

right

forward

right

forward

right

stoppainting

left

forward

left

forward(2)

right (2)

paintwhite

forward

right

forward
right

forward

right

forward

right

right

forward

paintwhite

left

forward

right

forward

right

forward

right

forward

right(2)

forward

paintwhite

left

forward

right

forward

right

forward

right

forward

right
}

Add the finishing touches ...


square

procedure square

paintwhite

forward

right

forward

right

forward

right

forward

right

stoppainting

right

forward(4)

left

paintwhite

forward

right

forward

right

forward

right

forward

right
stoppainting

left (2)

forward

right

forward (2)

right

paintwhite

forward

right

forward

right

forward

right

forward

right

stoppainting

left

forward

left

forward(2)

right (2)

paintwhite

forward

right

forward

right

forward

right

forward
right

right

forward

paintwhite

left

forward

right

forward

right

forward

right

forward

right(2)

forward

paintwhite

left

forward

right

forward

right

forward

right

forward

right

stoppainting

right (2)
forward

paintblack

right

forward(4)

right

forward (7)

right

forward (7)

right

forward (7)

right

forward (7)

right

forward (7)

Create procedure head ..


head

procedure head

paintwhite

forward

right

forward

right

forward

right
forward

right

stoppainting

right

forward(4)

left

paintwhite

forward

right

forward

right

forward

right

forward

right

stoppainting

left (2)

forward

right

forward (2)

right

paintwhite

forward

right

forward

right

forward

right

forward
right

stoppainting

left

forward

left

forward(2)

right (2)

paintwhite

forward

right

forward

right

forward

right

forward

right

right

forward

paintwhite

left

forward

right

forward

right

forward

right

forward

right(2)

forward
paintwhite

left

forward

right

forward

right

forward

right

forward

right

stoppainting

right (2)

forward

paintblack

right

forward(4)

right

forward (7)

right

forward (7)

right

forward (7)

right

forward (7)
right

forward (7)

Draw a whole robot family


head

procedure head

paintwhite

forward

right

forward

right

forward

right

forward

right

stoppainting

right

forward(4)

left

paintwhite

forward

right

forward

right

forward

right
forward

right

stoppainting

left (2)

forward

right

forward (2)

right

paintwhite

forward

right

forward

right

forward

right

forward

right

stoppainting

left

forward

left

forward(2)

right (2)

paintwhite

forward

right

forward

right

forward
right

forward

right

right

forward

paintwhite

left

forward

right

forward

right

forward

right

forward

right(2)

forward

paintwhite

left

forward

right

forward

right

forward

right

forward

right

stoppainting
right (2)

forward

paintblack

right

forward(4)

right

forward (7)

right

forward (7)

right

forward (7)

right

forward (7)

right

forward (7)

right

forward (7)

right

forward (7)

left

stoppainting

forward

left
repeat(7)

paintblack

forward (7)

right

forward (7)

right

forward (7)

right

forward (7)

right

stoppainting

forward (4)

right

forward

left

paintwhite

forward

right

forward

right

forward

right

forward
right

stoppainting

right

forward(4)

left

paintwhite

forward

right

forward

right

forward

right

forward

right

stoppainting

left (2)

forward

right

forward (2)

right

paintwhite

forward

right

forward

right

forward

right

forward

right
stoppainting

left

forward

left

forward(2)

right (2)

paintwhite

forward

right

forward

right

forward

right

forward

right

right

forward

paintwhite

left

forward

right

forward

right

forward

right

forward

right(2)

forward

paintwhite
left

forward

right

forward

right

forward

right

forward

right

stoppainting

right(2)

forward

left

forward (4)

left

}}

repeat(1)

Robo cleans up his shop!


# Get all products from conveyor belt

repeat()

getProduct # Get something.

putProductBack # Put it away.

goBackToStart # Prepare for next.

}
procedure putProductBack()

# 1. Palm oil->set correct barcode:

if (frontIsBlack and leftIsBlack)

# Robo returns to start

goToStart

# 2. Set correct number

# of steps to storage:

bringBack(9)

# 3. Water->set correct barcode:

else if (frontIsBlack and leftIsBlack)

# Robo returns to start

goToStart

# 4. Set correct number

# of steps to storage:

bringBack(9)

# 5. Crates->set correct barcode:

else if (frontIsBlack and leftIsBlack)

# Robo returns to start


goToStart

# 6. Set correct number

# of steps to storage:

bringBack(9)

# 7. Vegatables->set correct barcode:

else if (frontIsBlack and leftIsBlack)

# Robo returns to start

goToStart

# 8. Set correct number

# of steps to storage:

bringBack(9)

# hmm, something wrong??? Going to stop.

else

end

procedure bringBack(n)

repeatWhile( frontIsClear)

{
forward(1)

right

forward(n)

left

repeatWhile( frontIsClear)

forward(1)

backward(1)

putDown

procedure goToStart

right

right

repeatWhile( frontIsClear)

forward(1)

right

procedure goBackToStart

right

right

repeatWhile( frontIsClear )
{

forward(1)

right

repeatWhile( frontIsClear )

forward(1)

right

backward(6)

procedure getProduct

right

repeat()

if (frontIsClear)

forward(1)

else if (frontIsBeacon)

pickUp

return

else

end
}

Robo's cleanup program


# Get all products from conveyor belt

repeat()

getProduct # Get something.

putProductBack # Put it away.

goBackToStart # Prepare for next.

procedure putProductBack()

# 1. Palm oil->set correct barcode:

if (frontIsBlack and leftIsBlack)

# Robo returns to start

goToStart

# 2. Set correct number

# of steps to storage:

bringBack(9)

# 3. Water->set correct barcode:

else if (frontIsBlack and leftIsBlack)

{
# Robo returns to start

goToStart

# 4. Set correct number

# of steps to storage:

bringBack(9)

# 5. Crates->set correct barcode:

else if (frontIsBlack and leftIsBlack)

# Robo returns to start

goToStart

# 6. Set correct number

# of steps to storage:

bringBack(9)

# 7. Vegatables->set correct barcode:

else if (frontIsBlack and leftIsBlack)

# Robo returns to start

goToStart

# 8. Set correct number

# of steps to storage:

bringBack(9)

}
# hmm, something wrong??? Going to stop.

else

end

procedure bringBack(n)

repeatWhile( frontIsClear)

forward(1)

right

forward(n)

left

repeatWhile( frontIsClear)

forward(1)

backward(1)

putDown

procedure goToStart

right

right
repeatWhile( frontIsClear)

forward(1)

right

procedure goBackToStart

right

right

repeatWhile( frontIsClear )

forward(1)

right

repeatWhile( frontIsClear )

forward(1)

right

backward(6)

procedure getProduct

right

repeat()

{
if (frontIsClear)

forward(1)

else if (frontIsBeacon)

pickUp

return

else

end

Put back the palm oil


# Get all products from conveyor belt

repeat()

getProduct # Get something.

putProductBack # Put it away.

goBackToStart # Prepare for next.

procedure putProductBack()

# 1. Palm oil->set correct barcode:

if (frontIswhite and leftiswhite)


{

# Robo returns to start

goToStart

# 2. Set correct number

# of steps to storage:

bringBack(11)

# 3. Water->set correct barcode:

else if (frontIsBlack and leftIsBlack)

# Robo returns to start

goToStart

# 4. Set correct number

# of steps to storage:

bringBack(18)

# 5. Crates->set correct barcode:

else if (frontIsBlack and leftIsBlack)

# Robo returns to start

goToStart

# 6. Set correct number

# of steps to storage:

bringBack(25)
}

# 7. Vegatables->set correct barcode:

else if (frontIsBlack and leftIsBlack)

# Robo returns to start

goToStart

# 8. Set correct number

# of steps to storage:

bringBack(33)

# hmm, something wrong??? Going to stop.

else

end

procedure bringBack(n)

repeatWhile( frontIsClear)

forward(1)

right

forward(n)

left
repeatWhile( frontIsClear)

forward(1)

backward(1)

putDown

procedure goToStart

right

right

repeatWhile( frontIsClear)

forward(1)

right

procedure goBackToStart

right

right

repeatWhile( frontIsClear )

forward(1)

right

repeatWhile( frontIsClear )
{

forward(1)

right

backward(6)

procedure getProduct

right

repeat()

if (frontIsClear)

forward(1)

else if (frontIsBeacon)

pickUp

return

else

end

Put back the water


# Get all products from conveyor belt

repeat()

getProduct # Get something.

putProductBack # Put it away.

goBackToStart # Prepare for next.

procedure putProductBack()

# 1. Palm oil->set correct barcode:

if (frontIsblack and leftiswhite)

# Robo returns to start

goToStart

# 2. Set correct number

# of steps to storage:

bringBack(18)

# 3. Water->set correct barcode:

else if (frontIsBlack and leftIsBlack)

# Robo returns to start

goToStart

# 4. Set correct number

# of steps to storage:
bringBack(18)

# 5. Crates->set correct barcode:

else if (frontIsBlack and leftIsBlack)

# Robo returns to start

goToStart

# 6. Set correct number

# of steps to storage:

bringBack(25)

# 7. Vegatables->set correct barcode:

else if (frontIsBlack and leftIsBlack)

# Robo returns to start

goToStart

# 8. Set correct number

# of steps to storage:

bringBack(33)

# hmm, something wrong??? Going to stop.

else

end
}

procedure bringBack(n)

repeatWhile( frontIsClear)

forward(1)

right

forward(n)

left

repeatWhile( frontIsClear)

forward(1)

backward(1)

putDown

procedure goToStart

right

right

repeatWhile( frontIsClear)

forward(1)

right
}

procedure goBackToStart

right

right

repeatWhile( frontIsClear )

forward(1)

right

repeatWhile( frontIsClear )

forward(1)

right

backward(6)

procedure getProduct

right

repeat()

if (frontIsClear)

forward(1)

else if (frontIsBeacon)
{

pickUp

return

else

end

Put back the crates


# Get all products from conveyor belt

repeat()

getProduct # Get something.

putProductBack # Put it away.

goBackToStart # Prepare for next.

procedure putProductBack()

# 1. Palm oil->set correct barcode:

if (frontIsblack and leftisblack)

# Robo returns to start

goToStart

# 2. Set correct number


# of steps to storage:

bringBack(26)

# 3. Water->set correct barcode:

else if (frontIsBlack and leftIsBlack)

# Robo returns to start

goToStart

# 4. Set correct number

# of steps to storage:

bringBack(18)

# 5. Crates->set correct barcode:

else if (frontIsBlack and leftIsBlack)

# Robo returns to start

goToStart

# 6. Set correct number

# of steps to storage:

bringBack(25)

# 7. Vegatables->set correct barcode:

else if (frontIsBlack and leftIsBlack)

{
# Robo returns to start

goToStart

# 8. Set correct number

# of steps to storage:

bringBack(33)

# hmm, something wrong??? Going to stop.

else

end

procedure bringBack(n)

repeatWhile( frontIsClear)

forward(1)

right

forward(n)

left

repeatWhile( frontIsClear)

forward(1)

backward(1)
putDown

procedure goToStart

right

right

repeatWhile( frontIsClear)

forward(1)

right

procedure goBackToStart

right

right

repeatWhile( frontIsClear )

forward(1)

right

repeatWhile( frontIsClear )

forward(1)

right

backward(6)
}

procedure getProduct

right

repeat()

if (frontIsClear)

forward(1)

else if (frontIsBeacon)

pickUp

return

else

end

# Get all products from conveyor belt

repeat()

getProduct # Get something.

putProductBack # Put it away.

goBackToStart # Prepare for next.

}
procedure putProductBack()

# 1. Palm oil->set correct barcode:

if (frontIsblack and leftisblack)

# Robo returns to start

goToStart

# 2. Set correct number

# of steps to storage:

bringBack(33)

# 3. Water->set correct barcode:

else if (frontIsBlack and leftIsBlack)

# Robo returns to start

goToStart

# 4. Set correct number

# of steps to storage:

bringBack(18)

# 5. Crates->set correct barcode:

else if (frontIsBlack and leftIsBlack)

# Robo returns to start


goToStart

# 6. Set correct number

# of steps to storage:

bringBack(25)

# 7. Vegatables->set correct barcode:

else if (frontIswhite and leftisblack)

# Robo returns to start

goToStart

# 8. Set correct number

# of steps to storage:

bringBack(33)

# hmm, something wrong??? Going to stop.

else

end

procedure bringBack(n)

repeatWhile( frontIsClear)

{
forward(1)

right

forward(n)

left

repeatWhile( frontIsClear)

forward(1)

backward(1)

putDown

procedure goToStart

right

right

repeatWhile( frontIsClear)

forward(1)

right

procedure goBackToStart

right

right

repeatWhile( frontIsClear )
{

forward(1)

right

repeatWhile( frontIsClear )

forward(1)

right

backward(6)

procedure getProduct

right

repeat()

if (frontIsClear)

forward(1)

else if (frontIsBeacon)

pickUp

return

else

end
}

Put everything back!


# Get all products from conveyor belt

repeat()

getProduct # Get something.

putProductBack # Put it away.

goBackToStart # Prepare for next.

procedure putProductBack()

# 1. Palm oil->set correct barcode:

if (frontIswhite and leftiswhite)

# Robo returns to start

goToStart

# 2. Set correct number

# of steps to storage:

bringBack(10)

# 3. Water->set correct barcode:

else if (frontIsBlack and leftIswhite)


{

# Robo returns to start

goToStart

# 4. Set correct number

# of steps to storage:

bringBack(18)

# 5. Crates->set correct barcode:

else if (frontIsBlack and leftIsBlack)

# Robo returns to start

goToStart

# 6. Set correct number

# of steps to storage:

bringBack(25)

# 7. Vegatables->set correct barcode:

else if (frontIswhite and leftisblack)

# Robo returns to start

goToStart

# 8. Set correct number

# of steps to storage:

bringBack(33)
}

# hmm, something wrong??? Going to stop.

else

end

procedure bringBack(n)

repeatWhile( frontIsClear)

forward(1)

right

forward(n)

left

repeatWhile( frontIsClear)

forward(1)

backward(1)

putDown

procedure goToStart

right
right

repeatWhile( frontIsClear)

forward(1)

right

procedure goBackToStart

right

right

repeatWhile( frontIsClear )

forward(1)

right

repeatWhile( frontIsClear )

forward(1)

right

backward(6)

procedure getProduct

right

repeat()
{

if (frontIsClear)

forward(1)

else if (frontIsBeacon)

pickUp

return

else

end

Put it back differently!


# Get all products from conveyor belt

repeat()

getProduct # Get something.

putProductBack # Put it away.

goBackToStart # Prepare for next.

procedure putProductBack()

# 1. Palm oil->set correct barcode:


if (frontIswhite and leftiswhite)

# Robo returns to start

goToStart

# 2. Set correct number

# of steps to storage:

bringBack(33)

# 3. Water->set correct barcode:

else if (frontIsBlack and leftIswhite)

# Robo returns to start

goToStart

# 4. Set correct number

# of steps to storage:

bringBack(18)

# 5. Crates->set correct barcode:

else if (frontIsBlack and leftIsBlack)

# Robo returns to start

goToStart

# 6. Set correct number


# of steps to storage:

bringBack(25)

# 7. Vegatables->set correct barcode:

else if (frontIswhite and leftisblack)

# Robo returns to start

goToStart

# 8. Set correct number

# of steps to storage:

bringBack(33)

# hmm, something wrong??? Going to stop.

else

end

procedure bringBack(n)

repeatWhile( frontIsClear)

forward(1)

right
forward(n)

left

repeatWhile( frontIsClear)

forward(1)

backward(1)

putDown

procedure goToStart

right

right

repeatWhile( frontIsClear)

forward(1)

right

procedure goBackToStart

right

right

repeatWhile( frontIsClear )

forward(1)

}
right

repeatWhile( frontIsClear )

forward(1)

right

backward(6)

procedure getProduct

right

repeat()

if (frontIsClear)

forward(1)

else if (frontIsBeacon)

pickUp

return

else

end

}
Using flipCoin
if(flipCoin)

right

else

left

Create a kind of dice


right

repeat(6)

if (flipCoin)

paintWhite

else

paintBlack

stopPainting

forward(1)

A somewhat stranger dice


right

repeat(3)
{

if (flipCoin)

paintWhite

else

paintBlack

stopPainting

forward(1)

About the dice .


right

repeat(6)

if (flipCoin)

paintWhite

else

paintBlack

stopPainting

forward(1)

}
Robo finds a beacon all by himself!
repeat

if(frontIsBeacon)

eatup

end

if (flipCoin)

forward (2)

right

else

# 3. Complete:

left

Robo searches for another beacon


repeat

if(frontIsBeacon)
{

eatup

end

if (flipCoin)

forward

right

else

# 3. Complete:

left

Automatic vacuum cleaning


paintwhite

repeat

if(frontIsBeacon)

eatup

eatup

eatup
eatup

end

if (flipCoin)

forward

right

else

# 3. Complete:

left

No more collisions ..
paintwhite

repeat

if(frontIsBeacon)

eatup

eatup
eatup

eatup

end

if (leftisobstacle)

right

forward

if (rightisobstacle)

left

forward

if (flipCoin)

forward

right

else

# 3. Complete:

left
}

Robo finds a beacon all by himself!


repeat

if(frontIsBeacon)

# 1. Complete:pickUppickUp

eatUp

end

if (flipCoin)

# 2. Complete:

forward

left

forward

right

backward

backward
backward

backward

else

# 3. Complete:left

right

Find a pothole to fill with the beacon

repeat(1)

if(frontisclear)

forward(4)

right
if (frontisbeacon)

pickup

forward (5)

right

putdown

if (flipcoin)

left

procedure findpothole

Find another pothole to fill

repeat(1)

if(frontisclear)

right

forward (4)

left

forward

right
forward (2)

if (frontisbeacon)

pickup

left (2)

forward (5)

right

forward

putdown

Mark several potholes!

repeat(1)

if(frontisclear)

forward

right

forward (8)

if (frontisbeacon)

pickup

}
left (2)

forward

putdown

if (flipcoin)

left

procedure findpothole

Improve the procedure 'findBeacon'


repeat

findBeacon

findPothole

# 1. Complete:

procedure findBeacon

repeat

if (frontIsBeacon and frontIsBlack )

{
right

right

forward

else if(frontIsBeacon)

pickUp

break

if(flipCoin )

left

forward (1)

else

right

forward(1)

}
}

procedure findPothole

repeat

if (frontIsBlack )

putDown

break

if (flipCoin )

left

forward(1)

else

right

forward(1)

}
}

return

Improve the procedure 'findPothole'


repeat

findBeacon
findPothole

# 1. Complete:

procedure findBeacon

repeat

if (frontIsBeacon and frontIsBlack )

right

right

forward

else if(frontIsBeacon)

pickUp

break

if(flipCoin )

left

forward (1)

else

{
right

forward(1)

procedure findPothole

repeat

if (frontIsBlack )

putDown

break

if (flipCoin )

left

forward(1)
}

else

right

forward(1)

}
return

Repair a whole square!


repeat

findBeacon

findPothole

# 1. Complete:

procedure findBeacon

repeat

if (frontIsBeacon and frontIsBlack )

right

right

forward

else if(frontIsBeacon)

pickUp

break
}

if(flipCoin )

left

forward (1)

else

right

forward(1)

procedure findPothole

repeat

if (frontIsBlack )

{
putDown

break

if (flipCoin )

left

forward(1)

else

right

forward(1)

}
}

return

EL CURSO TE DARA EL 94 PORCIENTO, ES LO MINIMO QUE EL PROFE PIDE, POR LO QUE HASTA AHÍ
LLEGUE JEJEJE

-Ricardo

You might also like