Sei sulla pagina 1di 137

N ot es:

El Raspberry Pi

Educacin

ntroduccin
1

El Raspberry Pi

Educaci Manual
n

Esta obra est bajo una licencia de Creative Commons Reconocimiento-No comercial-Compartir bajo la misma 3.0.

El Manual de Raspberry Pi Educacin


Contenido

000
001

000
0. Introduccin .................................................. ........................... 5

001
1. Una gua del principiante a los
araazos............................................. 7
1.1 Conceptos bsicos de
Scratch ................................................ ............... 9
1.2 Mudanza sprites ................................................ ..............
15
1.3 Animacin (bucles) .............................................. ............
18
1.4 Gato
Matemticas ................................................ ..................... 23
1.5 Inteligencia artificial ................................................ ...... 29

010
011

2. Greenfoot en la Raspberry Pi ..............................................


Prximamente!

3. Experimentos en Python .................................................. ..... 72


3.1 Llegar a enfrentarse con
Python ......................................... 73
3.2 MasterPy ................................................. ..................... 86
3.3 Nmeros romanos y manipulacin de datos ..........................
89
3.4 Obtener artstica ................................................ ..............
94
3.5 Simulaciones y juegos ............................................. 100
3.6 Los recursos limitados - de memoria y

100

4. interfaz hombre-mquina......................................... 113


4.1 Twitter ................................................. ...................... 115
4.2 Aplicacin de correo
electrnico ................................................ ....... 116
4.3 Llamada a procedimiento
remoto ............................................. 118
4.4 Aplicaciones Web ................................................ ....... 120

101
110

5. GeoGebra: la diversin con las


matemticas!.................................................. ...
Prximamente!

6. La lnea de comandos de Linux ...............................................


152
6.1 Los comandos se acaba de
programas ................................... 153
6.2 Sintaxis y la estructura de archivos de
comandos ........................... 155
6.3 El superusuario ................................................ ........... 161

111

7. Y ahora qu? .................................................. ........................


169

Dnde estn los captulos Greenfoot y GeoGebra?


Los captulos Greenfoot y GeoGebra se han quedado fuera de esta edicin
del manual. Estos programas se basan en software llamado una mquina
virtual Java, que est siendo optimizado actualmente para el Raspberry Pi
para mejorar el rendimiento. Usted puede mirar adelante a disfrutar de estos
captulos una vez que estamos felices de que su usuario

Este manual fue trado a usted por ...


Este manual es un poco diferente. Fue escrito en su totalidad por voluntarios
no remunerados, todos los cuales estn dispuestos a compartir sus
conocimientos y entusiasmo para el clculo de la mayor
Lo que todos estos contribuyentes tienen en comn, adems de un joven
dedicado principalmente en el interior en frente de ZX Spectrums y Commodore
64s, es que son todos los miembros de la organizacin de la Escuela de
Informtica (CAS). Para saber ms acerca de CAS y su trabajo de promocin de
la enseanza de ciencias de la computacin, dirgete

Colaboradores Manual
Introduccin por Andrew Haya
Una gua del principiante a Scratch de Graham
Hastings Greenfoot en la Raspberry Pi de
Experimentos Michael Klling en Python por Andrew
Haya
Interfaz hombre-mquina por Ben Croston
GeoGebra: la diversin con las matemticas!
por Adrian Oldknow La lnea de comandos de
Linux por Brian Lockwood

Produccin Manual
Karl Wright, Robert Cruse y Paul Kingett de Publicis Blueprint

Colaboradores Digital
Las siguientes personas ofrecieron contribuciones que no estn cubiertos en el
manual, pero est disponible
en lnea y en la tarjeta SD.
Rasca Pong por Bruce Nightingale
La cifra de Csar por Brian
Starkey
Fly by Alan Holt

Gracias Especiales
Martin Richards (Universidad de
Cambridge) Simon Humphreys
(Computacin en las Escuelas)
Alex Bradbury (Universidad de Cambridge / Fundacin
Raspberry Pi) Liz Upton (Fundacin Raspberry Pi)

Hola, usuarios Raspberry


Pi
Enhorabuena! Usted tiene en su poder una Raspberry Pi. Una
pequea
pero potente equipo diseado para ayudarle a entender y explorar
el mundo casi mgico de la informtica. salo con sabidura; es un
objeto de gran poder.

N otas:

Whunt yos the Runspberry Pyo?


El Raspberry Pi es un ordenador, muy parecido a los equipos con los que ya
est familiarizado. Se utiliza un tipo diferente de procesador, por lo que no puede
instalar Microsoft Windows en l. Pero usted puede instalar varias versiones del
sistema operativo Linux que verse y sentirse mucho como Windows. Si lo desea,
puede utilizar el Raspberry Pi para navegar por Internet, enviar un correo
electrnico o escribir una carta utilizando una palabra
Fcil de usar, pero potente, asequible y (siempre y cuando usted tiene
cuidado) difcil de romper, el Raspberry Pi es la herramienta perfecta para los
aspirantes a cientficos de la computacin. Qu entendemos por ciencia de la
computacin? Nos referimos a aprender cmo funcionan las computadoras para
que pueda hacer que hagan lo que usted quiere que hagan, no lo que alguien
que usted piensa
Y quin Qu queremos decir con cientficos de la computacin? Le
referimos. Usted puede terminar este manual y decide que quiere estar al lado de Tim
Berners Lee, pero incluso si no lo hace, esperamos que te diviertas, aprender algo nuevo y tener
una idea de cmo las computadoras

Introduccin
5

N otas:

Whunt unm YO goyong to leunrn?


Este manual del usuario es diferente. No hay que esperar una descripcinseca como polvo de cmo conectar cosas en o dnde encontrar su nmero de
serie. Y ciertamente no va a aprender cmo crear una hoja de clculo o una
presentacin. Eso no es realmente la computadora
En su lugar, pensar en este manual, junto con su Raspberry Pi,
como
"Conjunto de la informtica". Alguna vez ha dado un juego de qumica? Con
un juego de qumica, se puede hacer un montn de explosiones, olores y pegote
extraa de color a aprender todo acerca de los elementos, molculas y compuestos.
No vamos a hacer pegote extraa de color, pero vamos a utilizar experimentos
para descubrir cmo programar una computadora para crear sus propios juegos
y animaciones, cmo hacer grficos aparecen en pantalla con tan slo escribir
en el cdigo correcto (al igual que los desarrolladores de tus juegos favoritos
hacen), la forma de obtener una gato a hacer tus cuentas
Al hacer todo esto, usted aprender los principios bsicos de la
computadora
ciencia. Y ese es el primer paso en el camino de convertirse en un
programador de computadoras real, un desarrollador de juegos, un berhackers al igual que en las pelculas (solamente ms fresco y mantenerse
estrictamente dentro de la ley), y muchas otras cosas adems. Exactamente lo

Quin es este manual?


Cuando escribimos este manual, nuestro objetivo era para que sea adecuado
para la mayora de la gente a ocho aos. Pero eso no quiere decir que es para
nios de ocho ao. Este libro es para todo el mundo que es la curiosidad de
saber ms acerca de la informtica y la creacin de programas de ordenador. Si
usted no tiene experiencia de la computadora de programacin
Comenzamos el manual con algunos experimentos relativamente fciles en la
informtica. Cosas luego se van haciendo progresivamente ms difcil con cada
ejercicio sucesivo. Trate de pasar tiempo con cada experimento y, una vez que tienes
un ejercicio de hacer lo que el manual dice que debe, no dude en cambiar el cdigo
para ver lo que sucede:

Voy a romper?
No se puede romper tu Raspberry Pi realizando cualquiera de los experimentos en
este libro, pero que slo podra sorprenderse con lo que puede lograr. Usted estar
trabajando

travs

aprender

conceptos

genuinamente

difciles

pero

emocionantes, y por la que se


As que, sin ms demora, que todo el mundo en la sala de un paso atrs: vamos
a hacer
Ciencias de la Computacin!

Introduccin
6

Una gua del principiante a los


araazos
Scratch es un entorno de programacin visual. Con l, usted puede
crear su
animaciones propias, juegos y obras de arte interactivas. Y,
mientras que usted est haciendo eso, usted aprender algunos
principios y tcnicas de programacin importantes sin tener que
escribir su propio cdigo. Es una gran manera de empezar. Para
saber ms sobre Scratch, visite la direccin web scratch.mit.edu

Cmo utilizar esta gua


Hemos tratado de hacer esta gua tan sencillo de usar como sea posible. Para
ayudarle con los ejercicios de este captulo, ya hemos recogido algunos pequeos
trozos y piezas que se necesitan, tales como fondos, trajes para sprites, sonido
efectos y ejemplos completos de proyectos de
Scratch.
Estos se pueden encontrar en el comunicado de la educacin tarjeta SD
Raspberry Pi, en la carpeta
margen, eso significa que nos estamos refiriendo a un archivo que se puede
encontrar en su tarjeta SD Raspberry Pi. Ir a echar un vistazo! Tambin se pueden
descargar desde Google Drive http://goo.gl/MpHUv

Gua de un principiante 's de


los araazos
7

N otas:

La interfaz de Scratch

Estilo rotacin Sprite

Modo de
presentacin
Ir a pantalla completa
para mostrar
fuera de sus proyectos

actual informacin Sprite barra de herramientas


Cuota
Guardar
idioma

TAB
S
Esto
s donde
me
permiteguiones,
editar Tumes o
cos sonidos

el modo de
Cambiarvista
el
tamao
de la Etapa

Seal De
Stop
Detiene
las

bandera
verde
Una manera
de empezar

Bloque
s
paleta
Los bloques
de cdigo
que va a
utilizar
al
programa
tus sprites

Etapa
Donde sus proyectos
de Scratch hagan lo
suyo
Ratn X-Y
PANTALLA
Muestra la ubicacin
del cursor del ratn
new Sprite
botones
Crear o importar
nuevos sprites

rea de los scripts


Arrastre bloques, snap juntos en guiones

Gua de un principiante 's de


los araazos
8

Lista de Objetos
Encuentra todos sus
sprites aqu. Haga
clic en uno para
seleccionar y trabajar
con ella

N otas:

Lesson 1.1: Scruntch bunsyocs


Objetivo de aprendizaje: En este ejercicio, aprender cmo utilizar la interfaz
grfica de usuario de Scratch (GUI), cmo crear personajes (sprites y trajes)
y etapas (fondos) para sus proyectos, y cmo aadir scripts.
Recursos:

Los sprites "gato" y "roman_cat", y el fondo

"Etapa roman_".
Alguna vez has estado en una obra de la escuela? Si usted tiene, usted sabr
que para poner en un juego que necesita una etapa, actores, trajes y un guin.
Piense araazos de ser un poco

Puedes vestir a tus sprites en "trajes", y cada uno de sprites puede tener ms de un disfraz. El
"escenario" es el rea de la pantalla en la que sus sprites voluntad
realizar las tareas que usted escribe para ellos.

Para hacer sus sprites se mueven y hablan, es necesario darles instrucciones. Esto se hace
mediante "scripts" de escritura utilizando bloques de cdigo en la paleta y Scripts Bloques
pestaa a la izquierda de la pantalla.
Eso es suficiente por ahora introducciones; vamos a poder familiarizarse
con el programa en s.
Abrir los araazos de su men Aplicaciones de Raspberry Pi. Ahora debera
estar buscando en la interfaz grfica de usuario de Scratch, o GUI (pronunciado
"pegajosa").

1. La etapa (una pantalla blanca grande)


2. Un sprite (pista: es un gato)
3. Los dos trajes que tu sprite puede usar (click en la pestaa de
disfraces)
4. La pestaa Scripts
Haga clic en la ficha Scripts, hay algn instrucciones para el gato a seguir?

Gua de un principiante 's de


los araazos
9

N otas:

Let's huncinco some Fun wyoth the cunt


En primer lugar, vamos a dar el gato algo que decir. Vamos a empezar con "Hola,
mundo". Esto es generalmente lo primero que un programador de computadoras
aprende a hacer (no me pregunten por qu). Como usted ahora est aprendiendo
un lenguaje de programacin, te empiezas mejor con

Hacer la charla del gato


Para hacer que el gato decir "Hola, mundo", vamos a trabajar con "bloques". Se trata de piezas
tiles de cdigo, cada uno con una instruccin para tu sprite
seguir.
Hay ocho tipos diferentes de bloques. Estos se pueden encontrar en la esquina
superior izquierda de la interfaz grfica de usuario de Scratch. Son un cdigo
de colores, as que recuerda los colores. Encontrar

M ...

c ...

L ...

S ...

S ...

o ...

P ...

v ...

Ahora, siga estos sencillos pasos para hacer su charla


del gato:

Lista Sprites (tom bot


derecha) para
asegrese de que est

Haga clic en "Miradas", pero


entonelada
el Bloques Palet te hacer
aparecen los bloques
parece.

Haga clic en el bloque


etiquetado
"Decir
[Hola] para [2]

y arrstrelo a la pestaa
Scripts.
segundos"

Gua de un principiante 's de


los araazos
10

Reemplazar "Hola" con


"Hola, ". Haga doble clic en
Mundial
bloquear y su gato debe

la

decir: "Hola, mundo".

Tenemos que ejecutar un programa para que funcione. Usted puede hacer esto al
hacer doble clic en la secuencia de comandos, si slo tienes un guin. Pero si
tenemos ms de una secuencia de comandos, puede ser que desee comenzar al
mismo tiempo. Podemos utilizar un "evento de bandera verde"

Para encontrar el bloque de eventos de bandera verde:


1. Haga clic en el botn de control en la Paleta de Bloques.
2. Encuentra el bloque denominado "cuando [la imagen de una bandera verde]
hace clic".
3. Seleccionar, luego arrastrarlo a la cima de la secuencia de comandos que ha
creado en el
Ahora est listo para ejecutar correctamente su primer programa de Scratch. Simplemente haga
clic en el smbolo de la bandera verde en la parte superior derecha de la ventana de Scratch,
justo por encima del

a usted
Pregunta: Durante cunto tiempo dur el gato decir "Hola, mundo"? _____
segundos
Tarea: Vea si usted puede cambiar el bloque para que el gato decir "Hola,
mundo" para

Gua de un principiante 's de


los araazos
11

N otas:

N otas:

cde hanging the wuny the spRhode Islandte looks

En el clic
rea en
de Scripts,
haga
clic
Haga
su sprite
para
en el
Ficha Disfraces.

Vamos a hacer una tercera


traje para el gato, as que haga

clic

seleccionarlo.

en Copiar. Un nuevo traje de


gato

haga clic en Aceptar. Le di mi


sprites una toga para que se

A continuacin, seleccione
la ficha Scripts,
haga clic en las apariencias,

y seleccione el
"interruptor de
pero tonelada
traje [] "bloque.

Seleccione "costume3" y haga


clic en
Editar. Esto abrir la pintura
Editor. Experimente con todos
los pero toneladas y

debera aparecer.

algo de ropa en el vestuario y

vea

herramientas para saber

Arrastre bajo la pestaa Procesos


y
utilizar el men desplegable
seleccione "costume3". Haga

para doble clic en este bloque y el


gato

Ahora usted tiene dos bloques en la pestaa Scripts, uno para decir "Hola,
mundo" y otro para cambiar el traje. Puedes ponerlos juntos moviendo una
manera que es justo por encima o por debajo de la otra. Si aparece una lnea
blanca, los dos bloques se ajustarn

a usted
Pregunta: Ahora que tenemos un guin con dos bloques, lo que sucede
cuando se hace doble clic en l?
Tarea: A ver si se puede organizar tres bloques para hacer el cambio gato a la
toga
traje, decir "Hola, mundo", a continuacin, cambiar de nuevo a su traje normal.

el derecho
de ese
gato: l
parece que ha
perdido en una
tormenta de nieve.
Tenemos que

Gua de un principiante 's de


los araazos
12

N otas:

The stunge
Es el momento de dar ese gato un escenario. Podramos ser perezoso y
simplemente importar una imagen para utilizarla como
un fondo, pero digamos que estamos siente con energa y quieren llamar nuestra

la pantalla). Ahora haga clic en la pestaa de Fondos


para el
escenario y haga clic en Editar pero tonelada.

de fondo. Seleccione Etapa, a continuacin,


Fondos y
a continuacin, haga clic en el t Impor pero

Como antes, el Editor de pintura se abrir. Dibuja


una etapa
para tu sprite. Cuando haya terminado, haga clic en

Puede realizar cambios ther piel en cualquier momento


haciendo clic
Aceptar.
en Editar.

Echa un vistazo a todos los fondos


disponibles
antes de elegir la que desea. Nosotros elegimos
"Roman_stage". Seleccione el fondo
haciendo clic
en l con el ratn, a continuacin, haga clic en

Gua de un principiante 's de


los araazos
13

N otas:

Sunvyong your work


Este es un buen momento para guardar el proyecto. Usted hara bien en hacer
esto cada 10 minutos o as, entonces usted puede estar seguro de que usted
no perder ninguno de su trabajo duro.
Para guardar el proyecto, haga clic en Archivo y luego Guardar - la ventana Guardar proyecto
se abrir.

Tip ...
Por defecto, se guardar su trabajo a la carpeta Proyectos de Scratch. Este es
un lugar sensato para guardar su trabajo, por lo que escribir un nuevo nombre
de archivo, en la parte inferior. He llamado a la ma "roman_play", por lo que
elegir un nombre de archivo diferente para su proyecto o te voy a salvar la tuya
Guauu! Eso es mucho para la primera leccin. Tener un juego con araazos experimentar con diferentes bloques de cdigo para saber lo que hacen. Luego
regresa cuando se tiene

Gua de un principiante 's de


los araazos
14

Utilice un nombre
que le ayude a
encontrar de
nuevo el
proyecto. Utilice
siempre un _
(guin bajo) entre
las palabras en
los nombres de
archivos - no

N otas:

Lesson 1.2: Movyong sprellaes

Objetivo de aprendizaje: En este ejercicio, aprender cmo mover sprites por


la pantalla araazos de una manera controlada y la forma de contar una broma.
Recursos: El sprite "roman_cat" y la "etapa roman_" de fondo.

El gato se siente un poco solo, as que ser mejor que crear algunos
personajes para que pueda jugar. Usted puede pintar sus propios sprites
sprites o importacin del rasguo

pintar la nueva Sprite


Elegir un Sprite Nuevo de
archivo
obtener una
sorpresa Sprite

En la parte derecha del programa, justo debajo del escenario y por encima de
la Sprite
Lista, vers tres botones: los botones Nueva Sprite. Es esto que vamos a
Quiero aadir un nio viaje en el tiempo a mi escenario. Para simplificar las cosas, y
dejar
a conseguir con un poco ms de la programacin, slo vamos a l importar.
Haga clic en el botn Nuevo Sprite media e importar el sprite "boy4-pie-c". Pero
espera un segundo: l est mirando el camino equivocado! No hay problema. Ir a
la ficha Disfraces y

Gua de un principiante 's de


los araazos
15

N otas:

utilizar la
importacin
Botn de
Sprite para
encontrar e
importar el sprite

desde el
pestaa
trajes, haga
clic en editar
y usar la tapa
herramienta

Tambin hay botones para hacer que tu sprite grande, ms pequeo, gire hacia
la izquierda, girar en sentido horario, as como flip horizontal y voltear
verticalmente. Trate de ellos

Haga que sus sprites cuentan una broma


Vamos a hacer los sprites dicen entre s una broma. Usted puede hacer esto
mediante el discurso
bloquear de la categora miradas.
Usted podra tratar de un simple 'toc toc' broma para empezar.
Pero espera! Ests encontrando que ambos de sus sprites estn hablando
al mismo tiempo.
Para solucionar esto, desde el bloque de control tiene que aadir "esperar [1] segundos" bloque
a la segunda
sprite, antes de que el bloque de "decir".

Gua de un principiante 's de


los araazos
16

N otas:

Posentarseyoonyong your sprellae


Ok, nos hemos dicho una broma. Pero esta obra est buscando un poco
esttica, por lo que vamos a hacer nuestros personajes se mueven. El primer
trabajo es mover nuestros dos personajes a sus puntos de inicio.
es posible que
tenga
venir a travs
de ejes x e y al
crear grficos.

la

Y
coordinar

la

Xcoordinar

Las coordenadas de cualquier punto en el escenario se muestran en su parte


inferior-derecha
esquina. Mueva el puntero del ratn por la pantalla y ver el cambio de nmeros.
Tarea: Utiliza el ratn para encontrar el centro de la pantalla. Mueva el puntero
del ratn

Tip ...

hasta que sea exactamente sobre el punto x: 0 y: 0. Ahora vamos a posicionar


1. Seleccione el sprite gato entonces, en la paleta de bloques, haga clic en el
bloque de movimiento con la etiqueta "ir a la x: [0] y [0]".
2. Cambie los valores en el bloque de x: -240 y: -80. Esto se llevar el gato al
extremo izquierdo de la etapa.
3. Luego se coloca un "esperar [1] segundos" bloque en su guin. Esto le dar
tiempo para ver a su gato antes de que se mueve.
4. Ahora agregue un segundo "ir a x: [0] y [0]" bloque. Utilice su ratn para
resolver el

Utilice el puntero
del ratn para
encontrar las
coordenadas de
una posicin en el
escenario y hacer
una nota de las
coordenadas
en

x coordenada justo a la izquierda del centro en el escenario, a la que queremos


Repita este proceso para el otro sprite, posicionndolo ligeramente a la derecha
del centro de la escena. Idealmente, los dos sprites deben moverse desde los
bordes de la pantalla para
Ahora lo que necesita para hacer los sprites cuentan una broma. Recuerde que
debe dejar un pequeo retraso despus habla cada sprite, de lo contrario van a
hablar sobre la otra. Echa un vistazo a la

esto es lo que
nuestro
cdigo de

Gua de un principiante 's de


los araazos
17

y aqu est nuestro cdigo para el


sprite gato.
Su apariencia lo mismo?

N otas:

ocincor to you
Tarea: Ahora aadir un poco de cdigo a su otro personaje para moverlo a la
derecha de la
escenario y luego, despus de un breve retraso moverlo en el centro del
Bien hecho! Por supuesto que tienes el truco de mover sprites sobre
la pantalla. Por qu no aadir algunos ms personajes para su
escenario y hacer que contar chistes?
Si usted est teniendo problemas, puede cargar el cdigo de ejemplo,
"roman_play.sb", para ver cmo el programa est organizado. No dude en para
cambiar las cosas y experimentar,

Leccin 1.3: Animacin (bucles)


Objetivo de aprendizaje: En este ejercicio, aprender cmo utilizar la repeticin
bucles para crear animaciones simples.
Recursos:

El sprites "abeja", "female_flower" y "male_flower", y la

fondo "cama flower_".


Con sus personajes animados, Scratch es ideal para contar historias. Tengo que
hacer un proyecto de ciencias de la escuela de la polinizacin, as que he
decidido utilizar Scratch para contar la historia de la polinizacin en imgenes
en movimiento. Usted me puede ayudar siguiendo estos
En primer lugar, abra el archivo "Bee1" de la carpeta "Animales" en la galera de
Scratch. A continuacin, importe el fondo "cama flower_", esta vez de la carpeta
"Naturaleza" en el
Copiar "Bee1", a continuacin, editar "bee2" utilizando el Seleccionar y Voltear
horizontalmente herramientas, para hacer sus alas apuntan hacia abajo. Juntos,
los dos trajes - "Bee1" y
copiar la abeja,
luego editar
"bee2" para que
sus alas apuntan
hacia abajo.

Gua de un principiante 's de


los araazos
18

Necesitamos un poco de script para hacer la mirada de abeja como si estuviera


volando. Hacemos esto mediante el cambio de un traje a otro y viceversa, por lo que
la abeja parecen aletear su
Ahora, construye tu propio guin para hacer la mosca de abeja. Usted
necesitar cuadras de control, las miradas y de movimiento. Si te quedas
atascado, echar un vistazo a la pantalla de nuestro cdigo.
este es el
cdigo para
hacer su mosca
de abeja. en lugar
de utilizar la
bandera verde para
ejecutar mi cdigo,
voy a utilizar un
bloque "cuando
sprite1 clic" de
control. el cdigo se

Estos son los pasos que debe seguir:

1. Comience con el traje "Bee1".


2. Aadir un bloque "espera [0,2] segundos", de modo que el espectador tiene
tiempo para ver el traje.
3. Mueva la abeja en 10 pasos, antes de cambiar al vestuario "bee2".
4. Aadir otro bloque "espera [0,2] segundos", de modo que el espectador tiene
tiempo para ver el segundo traje.
5. Mueva la abeja en otros 10 pasos.
Pero tenemos que hacer esto ms de una vez. Para hacer que la mosca de
abeja por la pantalla,
podramos tener que repetir esto 20 veces.
no te asustes! Est utilizando un ordenador. Las computadoras son fantsticas en hacer
las cosas una y otra vez. Pueden hacerlo de forma muy precisa y nunca te aburres, cansado
o harto.
Lo que necesitamos es un
bucle de repeticin.

Esto es lo que utilizamos para programar el ordenador para repetir algo una y
otra
de nuevo. Encontrar el bucle de repeticin ("repeat [10]") en los bloques de

Gua de un principiante 's de


los araazos
19

N otas:

Se ve un poco diferente, ya que tiene un hueco para que podamos poner el


cdigo que desea repetir en su interior. Slo tienes que arrastrar la "repeticin

N otas:

[10]" bloque para sentarse directamente en el bloque "cuando sprite1 clic". Se


encaja automticamente alrededor de su bloque de cdigo,
Aqu est el cdigo que necesitamos para animar la abeja de manera que vuela
hasta el final de un
lado de la pantalla a la otra.
utilizando la
repeticin
lazo, usted puede
hacer el sprite
hacer las mismas
acciones una y
otra vez.
As que la abeja bate
sus alas hacia arriba

a usted
Pregunta: Por qu crees que he aumentado el nmero de veces que se
repite de 10 a 20?
Tarea: Algunos de los sprites de Scratch ya tienen dos trajes. Echa un vistazo a
la
Sprites gato rayado. Utilice sus dos trajes y un cdigo similar al ejemplo de la
izquierda para hacerla caminar.

Tip ...
Si su abeja vuela
en la direccin
equivocada,
verifique el sprite
para asegurarse
de que se oriente
en la direccin
correcta. Con el
sprite
seleccionado,
mirar en la barra
de arriba
la pestaa
Scripts. La
direccin "hacia
adelante" de un
sprite se indica
con un poco de
azul
la lnea. La
abeja de la
izquierda se
mover
la lnea para
cambiar el
mover la
direccin de un

Gua de un principiante 's de


los araazos
20

N otas:

Hunnds on: tl Pollyon / Atyoon Project


Este es el guin de mi proyecto polinizacin. he aadido dos ms
trajes a mi abeja de sprites para mostrar que llevar el polen y yo
hemos elaborado un sprite de la flor con algunos estambres en azul.
Pero yo no quiero parar all. Yo quera que la abeja para visitar la segunda flor una hembra - desde el otro lado de la pantalla, as que copi los cuatro trajes para el
sprite de abeja y les volc horizontalmente.
Tambin he copiado, volteado y editado el flor masculina para crear una hembra
sprite. He dado dos trajes. Uno muestra el estigma y sin polen y el otro
con el polen. Vamos a echar un vistazo a la animacin resultante.

1. Una abeja vuela hacia una flor


masculina.

2. La abeja hace una pausa para


chupar el nctar
y recoger el polen.

3. La abeja se vuela con el polen

4. La abeja vuela hacia la hembra

de estambres de la flor.

flor.

5. La abeja chupa el nctar y esta


vez

6. La abeja vuela dejando polen en


el estigma.

depsitos de polen.
Tambin decid que slo quera una flor en la pantalla a la vez. Por lo tanto, tuve que
agregar secuencias de comandos para hacer mis flores desaparecen y aparecen en
los puntos adecuados en el

Gua de un principiante 's de


los araazos
21

Aqu est el cdigo para los tres sprites en el proyecto de la


polinizacin.
cdigo para la
abeja

N otas:

cdigo de la flor
masculina

cdigo de la flor femenina

Porque yo tena tres

diferentes sprites con sus propios guiones, yo usamos el

"Cuando [bandera verde] hace clic" evento para


ejecutar a todos juntos.
Guauu! Ese es un proyecto complicado, pero si se rompe su
la animacin en un montn de pequeas escenas que hace que sea
ms fcil planear y programar.
Para ver lo que todo el proyecto se ve como una vez que est terminado,
abierta
RPiScratch / Proyectos / polinizacin.

Tip ...
Importacin
sprites y un
fondo de las
carpetas de
imgenes
araazos
existente. Esto
puede ahorrar

Gua de un principiante 's de


los araazos
22

N otas:

Lesasn 1.4: Menhs Cen


Objetivo de aprendizaje: Usted aprender cmo utilizar variables para almacenar datos
para su uso en un programa. Usted tambin aprender cmo utilizar los operadores para hacer
sumas simples.

encuentra usted las


matemticas difcil?
Te imaginas lo que sera como para ser capaz de hacer millones de sumas en
cuestin de segundos
y siempre hacerlo bien? Incluso las cantidades ms complicados que se pueda
Las computadoras son fantsticos para las matemticas. De hecho, las
matemticas es lo que mejor saben hacer. Podemos programar el gato Scratch
para hacer matemticas. El gato le pedir algunos nmeros y luego hacer las
sumas. As que, cmo vamos a poner los nmeros en el programa para el gato
Cuando nosotros, los nmeros de entrada (poner nmeros en un ordenador), el
ordenador tiene que tener un lugar para almacenarlos. Diferentes personas
pueden de entrada diferentes nmeros, por lo que
En la programacin, almacenamos nmeros en algo que se llama una "variable".
Una forma de pensar acerca de una variable es como una caja o contenedor, en
el que podemos almacenar
Podemos tener ms de una variable en un programa, por lo que darles diferentes
nombres. El nombre puede ser tan simple como una sola letra (o tan complicado
como usted

7
n

en el diagrama, hemos almacenado el nmero "7" en la variable "n".


As que ahora podemos decir "n = 7".
En el ejemplo anterior, hemos creado una variable llamada "n" y se almacena el
nmero "7"
en eso. En Scratch, podra hacer esto en dos pasos: primero crear la variable "n",
y luego usando un bloque de variables para establecer su valor a "7".

Gua de un principiante 's de


los araazos
23

N otas:
Tip ...
D a cada
variable de un
nombre que le
recuerde lo que
se almacena en el
mismo.
Por ejemplo,
si va a crear un
juego y se utiliza
una variable para
almacenar el
marcador, luego
un buen nombre
para la variable
Si desea utilizar un nombre de dos palabras de la variable, usted separar la
palabras con un guin bajo (el carcter "_"), no es un espacio en blanco.

utilizando variables de Scratch


Ok, ahora vamos a crear y utilizar variables. Haga clic en Variables en los
Bloques
Paleta y crear una variable llamada "game_score".

la alta sociedad, pero la etiqueta "Haz

Arrastre "Ajuste [game_score] a


[0]" para
la pestaa Scripts. Luego, a partir de

una variable". Esto abre el "Nombre


de la variable?" Ventana de dilogo.

arrastrar el bloque "cuando


Control,sprite1 clic". nete a los dos

Introduzca el nombre de

juntos

"game_score" para la variable

las variables es "0". Seleccione el


bloque
"Ajuste [game_score]

Por ltimo, desde miradas, he


utilizado un
"Decir [Hola] para [2]
cambiado a "decir [Gran, tengo

segundos"
bloque
pero ".
100 puntos]
para [2] segundos

a [0]" y cambie el

Gua de un principiante 's de


los araazos
24

En este ejemplo, hemos creado la puntuacin del gato a 100 puntos haciendo clic
en el sprite gato. Pero hay un montn de otras maneras de poner un nmero en
una variable. El mtodo que

la introduccin de los nmeros


Su profesor le ha puesto cuatro sumas. Las sumas son:

56 + 39 =
87-42 =
16 x 9 =
240 6 =
Vamos a mostrarte cmo conseguir Gato Matemticas hacerlo tarea para usted.
Vamos a empezar con la primera pregunta, 56 + 39. Si te quedas atascado, se
refieren a la imagen de la

En primer lugar, crear tres variables, y el nombre de los dos primeros


"first_number" y
"Second_number". Vamos a usar estos para almacenar dos nmeros. Nombre
de la tercera "nmero" variable. Este es el lugar donde almacenar la respuesta

Para introducir el primer nmero es necesario utilizar un bloque de deteccin de avisar al usuario
qu hacer. Arrastre el bloque de "pedir [Cul es tu nombre?] Y esperar" a la pestaa Scripts.
Cambio
La respuesta dada por el usuario se introduce a continuacin a una variable,
en donde se almacena para su uso en su suma, mediante el uso de una
combinacin de un conjunto de bloques "variable" de Variables

Haga clic en Variables, seleccione el bloque de "ajuste [first_number] a [0]",


arrastrarlo a los Scripts
ficha y que encaje en el bloque anterior.

Gua de un principiante 's de


los araazos
25

N otas:

N otas:

Haga click en la deteccin, seleccione el bloque etiquetado como "respuesta" y


arrstrelo hasta el nmero "0" en el bloque anterior. La secuencia de comandos
debe ser similar a la de la

Ahora el programa conoce el primer nmero de la suma. Para decir que el


segundo nmero, repita el proceso anterior pero recuerde que debe cambiar
"first_number" para

ahora para el bit realmente inteligente


Para hacer sumas en Scratch, usted necesita algo que se llama un "operador". Eso es slo un
trmino de lujo para matemticas signos tales como +, -, y . S, lo has adivinado, nos
encontramos con estos
haga clic
operadores:
el operador "add"
("[] + []") es el
primero en
la lista en la
paleta de

Vamos a usar el operador "aadir", as que arrastrarlo a la pestaa Procesos.


Nosotros usaremos para
agregar las variables "first_number" y "second_number".
De Variables, agarrar el "first_number" variable y soltarlo en el primer espacio en
blanco en el operador "aadir". Drop "second_number" en el segundo espacio en
blanco

Gua de un principiante 's de


los araazos
26

N otas:

Todava no hemos terminado. Le hemos dicho programa para agregar nuestros


nmeros, pero necesitamos
para almacenar esa respuesta en una de nuestras variables.
De Variables en la Paleta de Bloques, arrastre "ajuste [first_number] a [0]" a los
Scripts ficha. Cambio "first_number" para "nmero" y arrastre el operador "aadir" a
la

Por ltimo, tambin tenemos que decirle a los araazos para ver la respuesta a la
suma. De lo contrario,
que se mantendr a s mismo (y que no es bueno es para nosotros).
Haga click en la mira en la Paleta de Bloques. Seleccione "decir [Hola!]" Y
arrastrarlo a la
Pestaa Scripts. A partir de variables, arrastre el "nmero" variable y colquelo
en "Hola!". La imagen de abajo le mostrar lo que queremos decir.

y
Y eso es todo! He incluido todo el programa a continuacin. Hemos aadido
en algunos bloques de ms, para que el gato un poco chattier pero los
fundamentos son los mismos que el
utilizar este
cribado
tiro de construir
todo el guin. y
recuerde, cada
vez que se desea
que el gato a
hacer otra suma
que usted tendr
que hacer clic en

Tip ...
Asegrese de
que todos los
bloques de
encajar en su
sitio
correctamente,
especialmente
cuando se tiene

Pero espera un momento: si se trat de hacer que el gato haga todas las tareas
se quiere
han notado un gran problema.
El gato slo puede hacer sumas! No entre en pnico - una edicin rpida para
cambiar el programa
poco har el truco.

Gua de un principiante 's de


los araazos
27

Haz clic en Operadores de nuevo en el bloque de secuencias de comandos y


vers que hay
otros bloques operador all tambin: para la resta, multiplicacin y divisin.

aadir
brecha
multiplic
ar restar

Si desea que el gato para llevar luego simplemente cambiar el bloque de "aadir"
en el script anterior para un bloque de "restar", y as sucesivamente hasta que el
gato se ha hecho todo lo que la tarea
Lo que un gato til!

a usted
Tarea: Programar el gato Matemticas para hacer el resto de la hoja de tarea que se
tener que cambiar el operador cada vez para que el gato lo hace el tipo correcto
Para ver un ejemplo de trabajo de este script, abierta RPiScratch / Proyectos / maths_cat.

Gua de un principiante 's de


los araazos
28

N otas:

Lesson 1.5: Lar tsi yocIowal yontelligence


Objetivo de aprendizaje: En este ejercicio, aprender cmo poner los datos en
un programa y conseguir que su programa para tomar una decisin sobre la base
de esos datos. Recursos: Los sprites "gato" y "bluedog"; el fondos "ladrillo-wall1",
"Sydney", "Pars" y "york new_".
La inteligencia artificial es un rea de la informtica, donde la gente trata de
hacer que los programas de ordenador que son inteligentes de alguna u otra
manera. La idea es hacer que las computadoras parecen que estn pensando
como los humanos. Esto es en realidad bastante complicado, como se puede
imaginar, asi que aqu nos vamos a darle una pequea degustacin de cmo
puede
El gato piensa claramente que es inteligente, as que vamos a darle una
oportunidad de mostrarnos cun inteligente es. Para ello, vamos a utilizar
algunos ms entradas y salidas, junto con algo que se llama una "declaracin
condicional". Eso suena muy complicado, pero
Para mi ejemplo, he creado dos sprites: un gato y un perro. El gato va a pedir al
perro una serie de preguntas, as que necesitamos algunas variables en el que
almacenar
Crea las siguientes variables (le diremos qu son en un minuto):
eda
d
Nombre
del
turismo
Antes de comenzar, usted tambin debe importar el sprite "bluedog" y los fondos
"Ladrillo-wall1", "sydney", "Pars" y "york new_". Los necesitar para lo que
viene despus.

el perro desean unas vacaciones?

En primer lugar, tenemos que averiguar si el perro realmente quiere ir de


vacaciones. Seleccione el sprite gato y construir la secuencia de comandos se
puede ver en la imagen de arriba para ayudar al

Gua de un principiante 's de


los araazos
29

N otas:

Cada vez que utilice este programa la variable pas se establecer en una carta.
Pero la prxima vez que usamos el programa, queremos la variable de un pas a
estar vaco. As que
Pregunta: Estudia el guin. Puedes trabajar en lo que va a hacer cuando el
programa
est dirigido?
Como el gato hace preguntas, las respuestas de los perros se almacenan en
las dos variables
"Vacaciones" y "edad". El guin utilizar estos ms tarde.
Ahora viene la parte inteligente: la sentencia condicional. Vamos a averiguar si
el perro quiere ir de vacaciones. Tiempo para pensar lgicamente: el perro, ya
sea respuesta
Tenemos que encontrar una manera de dejar que el gato sabe la respuesta del perro
y de incitar
el gato para actuar en esa respuesta.
De control en la paleta de bloques, seleccione un "si"
bloque.

Usted tambin necesitar un bloque operador de operadores para probar la entrada. Coge la
"Iguales" operador ("[] = []") de la Paleta de Bloques.
De Variables en la Paleta de Bloques, arrastre y suelte la variable "da de fiesta" en
el
lado izquierdo del operador y tipo "no" en el otro lado.
Por ltimo, arrastrar y soltar el bloque de operador en el "si" de
bloque.
Ahora, desde miradas colocar el bloque ", dicen [Hola] para [2] segundos" dentro
de su "si" bloquear es decir, en el "soporte" cortado en el lado del bloque, de modo que el "si" bloque
rodea. Cambio "Hola" a "OK, no hay vacaciones para usted!".
el cdigo
para
encontrar
si perro quiere ir

Pero espera un segundo, y si el perro no quiere ir de vacaciones? Nuestro "si"


bloque
no nos permite incluir una posibilidad de que un "s" como respuesta.
Si el perro no quiere ir de vacaciones algo ms debe suceder. Necesitamos
reemplazar nuestro "si" bloque con un "si / else" bloque.

Gua de un principiante 's de


los araazos
30

N otas:

N otas:

el "if /
else"
bloqu

Tome el pequeo script que estaba en su bloque "if" y lo puso en el "si" el soporte de un
"If / else" bloque. El resultado debe ser similar a la siguiente imagen.

es el perro lo suficientemente mayor como para ir de vacaciones?


Tambin necesitamos saber si el perro tiene la edad suficiente para ir de vacaciones
por s misma. Tendremos que utilizar un segundo "if / else" bloque. Arrstrelo a la
pestaa Procesos, pero no lo hacen
Vamos a pedirle al perro qu edad tiene. En funcin de su respuesta, hay
dos resultados posibles:
1. Su edad es inferior a 10, y ella no se le permite ir de
vacaciones.
2. Su edad es superior a 10, y se le permite ir de vacaciones.
Si la edad del perro es de menos de 10, queremos que el gato a decir, "perro Lo
sentimos, eres demasiado
joven para ir de vacaciones ".
el
"menor
que"

Usando su (<) operador "menor que", as como los bloques de variables y


miradas,
la construccin de la pieza de la escritura que se ve en la captura de pantalla en
Construir este script dentro del "si" el soporte de su segundo bloque
"if / else".

Gua de un principiante 's de


los araazos
31

N otas:

Antes de pasar al siguiente paso, tome su segundo bloque "if / else" y colocarlo
en el interior del soporte de "cosa" de su primer bloque "if / else": la que utiliz
para averiguar

Su script debe parecerse al bloque de cdigo en la pantalla de arriba.

a usted
Pregunta: Cul ser el gato decir si la edad del perro
es 9?
Pregunta: Cul ser el gato decir si la edad del perro
es 12?

De dnde viene el perro quiere ir?


Para ser justos con el perro, debemos dejar a elegir dnde ir de vacaciones. Vamos a dar al
perro tres posibles destinos de vacaciones: Australia, Francia y los EE.UU.. Para hacerlo simple,
no vamos a pedirle al perro para introducir el nombre del pas, slo el
letra inicial.
El uso de la informacin se puede ver en la siguiente imagen, aadir bloques a
su script para que sea pedir al perro donde ella quiere ir de vacaciones. Guarde
el perro
Usted necesitar cuadras de miradas, de deteccin y variables. Colquelos en el "otro"
soporte de la segunda "if / else" bloque.

Gua de un principiante 's de


los araazos
32

Por ltimo, completar la secuencia de comandos con un bloque de "esperar []


segundos" y "parar todo" manzana de

N otas:

De control. Establezca el valor de los "esperar [] segundos" a "4" y colocar


ambos bloques en el final de su script, fuera tanto "si / else" bloques.

el gato
tiene
elegido a.

u
n

countr y

u
n

countr y

As que A se
almacena
en la variable
"Pas".

el destino del perro elige ser almacenado en el


"pas" variable. esto es importante,
porque esta variable ser utilizada por el guin de la etapa de determinar la salida del script.

El guin de la etapa
Para completar el programa que necesitamos para programar los fondos. Si usted no tiene
ellos importados de RPiScratch \ Resources \ Fondos, ahora es el momento de
hacerlo.

Tip ...

Seleccione la etapa en la Lista de Sprites y construir la secuencia de comandos


se puede ver en el
captura de pantalla anterior.
Aqu, hemos creado tres "anidadas Si" declaraciones condicionales, que
cambiar el fondo de acuerdo a la eleccin del perro. Utilizamos el trmino
"anidado" cuando
Cada vez que usamos este programa, la etapa ha de restablecer al "ladrillo
wall1"
de fondo. Las sentencias condicionales necesitan para mantener la
comprobacin hasta que el perro ha hecho su eleccin, as que les han puesto

Los usuarios
no siempre
hacen lo que
son
supone que
debe hacer. Si
un usuario
proporciona una
entrada
inesperada, esto
puede causar un
"error" en el
programa, que a
menudo hacer
que el programa
"Crash". Los
programas que
tienen errores en
ellos se dice que
contienen
programa para
asegurarse de
que est libre de

Gua de un principiante 's de


los araazos
33

El guin completo
Uf, que se complic. Pero esperemos que se las arregl todo en el final. Slo
para hacer las cosas un poco ms fcil, aqu estn los guiones completos tanto
para el sprite gato y

El cdigo para el gato

El cdigo para la etapa

N otas:

Para ver una muestra del cdigo de esta leccin, abierta


RPiScratch / Proyectos / holiday_dog.

Gua de un principiante 's de


los araazos
34

N otas:

ocincor to you
Pregunta: Estudie la palabra clave para el sprite gato y el escenario.
Entiendes eso?
Tarea: Experimentar con el cdigo. Vea si usted puede agregar algunas
preguntas adicionales.

una ltima palabra


De hecho, el gato no es inteligente en absoluto. Las computadoras tienen
ninguna inteligencia - es los programas que se ejecutan en ellos que los hacen
parecer inteligente. Es por eso que usamos el trmino "inteligencia artificial". Las
nicas cosas inteligentes aqu son el programador,

Leccin 1.6: Control


Objetivo de aprendizaje: En este ejercicio, aprender cmo escribir programas
de control que responden de diferentes maneras dependiendo de insumos para
el programa.

El robot
as es como
pensamos
robots, pero la mayora
de los robots no se

Probablemente ests acostumbrado a los robots de las pelculas: los hombres de metal
haciendo sonar y hablando en voz metlicos. Esto es en realidad una idea pasada de moda de
un robot. Data de un
Una forma ms moderna de pensar acerca de un robot es como cualquier cosa que
puede ser controlado por una computadora. Esto se conoce como "ingeniera de
control". Este dispositivo podra ser un avin, una lavadora, un torno, una mquina
de soldar, un paso a nivel
Pero vamos a empezar con un robot adecuado, pasado de moda. No tenemos
un robot real, o todos los cables y circuitos que bamos a necesitar para
controlar una. As, en lugar, vamos a utilizar un robot que vive dentro de la
etapa de Scratch. Lo que se aprende al hacer esto es cmo hacer que su
Vamos a programar nuestro robot para que podamos controlarlo utilizando la "flecha
hacia arriba"
clave. Para que sea ms fcil ver nuestro movimiento robot, tenemos que ser
capaces de verlo desde arriba.
Importar el sprite "robot_ arriba" de RPiScratch / Resources /
Disfraces. Mientras estamos en ello, importe el fondo "fondo Green_"
de

Gua de un principiante 's de


los araazos
35

N otas:

Este
script
hacer nuestro
robot se
mueva en
nuestro
sistema, pero

Echa un vistazo a la imagen de arriba. Hemos utilizado la "llave cuando


[espacio] presionado" evento de control para ejecutar el programa. El sprite
robot se mueve hacia el centro de la pantalla mediante un "ir a la x: [0] y [0]"
manzana de movimiento (ver "Posicionamiento
El resto del cdigo se coloca dentro de una "repeticin hasta" loop (de control).
Dentro del bucle de repeticin, tenemos un "si" (una sentencia condicional) que
comprueba si la tecla "flecha arriba" ha sido presionado. Esto se ha
establecido en una "clave [flecha arriba] presiona" evento
El "tocando []?" Manzana de deteccin se establece en "borde". Eso significa
que si el robot toca el borde de la pantalla del rasguo, el evento se detendr
la secuencia de comandos.
en este script, hay dos situaciones posibles:
1. La tecla "flecha arriba" se ha pulsado - en cuyo caso, el robot caminar hasta
la pantalla de 20 pasos, el cambio de vestuario como lo hace.
2. La tecla "flecha hacia arriba" no se ha pulsado - en cuyo caso, el robot
hacer nada.
Eso no va a ser muy til. Vamos a ver si podemos hacer algo
mejor.
Para ver un ejemplo de este script, abierta RPiScratch / Proyectos / robot_v1.

Gua de un principiante 's de


los araazos
36

N otas:

robot project

Recursos: El sprite "robot_control" y el fondo "laberinto robot_".


Hemos incluido en el cdigo de una versin ms completa del programa del robot,
"Robot_2" (ver la imagen de arriba). En esta versin, el robot puede moverse hacia
arriba,
Tarea: Ahora es tu turno de hacer algo de programacin. Programar el robot y
luego usar su programa para hacer que el robot siga el camino amarillo en el
fondo "robot_ laberinto".
Tarea: Cargue el cdigo y luego cambiarlo a hacer el paseo robot ms
rpidamente.
Para un ejemplo de este script en accin, abierta RPiScratch / Proyectos /
robot_v2.

Gua de un principiante 's de


los araazos
37

Tip ...
Esto es til
para
controlar
cdigo de
caracteres
en los juegos.

N otas:

Lyone-Follayyong cincohyocle (LFv )


Recursos: El sprite "yellow_car" y el fondo "fondo line_".
Ese robot es como algo salido de una pelcula de ciencia-ficcin cursi. Veamos
un ejemplo ms moderno. Los cientficos estn experimentando con vehculos
que pueden conducir a s mismos. Una forma de hacerlo es mediante la
programacin del vehculo para seguir una lnea pintada en la superficie de la
carretera. Estos vehculos son conocidos como "los vehculos de la lnea de
seguimiento",
En este ejercicio, vamos a ver con ms detalle los bloques en la seccin de
deteccin.
la
deteccin
scripts bloques
permiten su
programa para
detectar los
cambios en su
entorno, ya sea
en
respuesta a la
entrada del

Nuestra tarea es hacer un coche para seguir una lnea, al igual que el verdadero
diseo de los ingenieros
LFVs para su uso en las carreteras. Nuestra principal herramienta va a ser el "color []
est tocando []?"

Este bloque permite a un programa para detectar cuando un rea de uno


toques de color en contra de otro color: por ejemplo, como en la imagen de
arriba, una mancha de rojo toca un

Gua de un principiante 's de


los araazos
38

Una vez que el programa puede detectar dos colores tocando, entonces
podemos decir que la forma de responder cuando esto sucede. El evento de

N otas:

color se convierte en un gatillo, haciendo que el


Para configurar los colores de su bloque, haga clic en uno de los pequeos cuadrados de
colores. Su puntero del ratn se convertir en un "cuentagotas". Utilice el cuentagotas para
hacer clic en la

Pero cmo podemos utilizar la capacidad de detectar el color para ayudar a


hacer nuestra LFV sigue una lnea en la carretera? Bueno, vamos a empezar
importando nuestro "fondo line_" y el sprite

Fjate bien en el coche, y vers que hay una mancha de verde en su


parachoques. Vamos a utilizar ese verde como nuestra primera "sensor".
Construir la secuencia de comandos que pueda

Ahora, haga clic en la bandera verde y ver qu pasa. Dios mo, todo est bien,
siempre y cuando las curvas de la lnea a la izquierda pero tan pronto como se
curva a la derecha del coche
El problema es que el coche necesita dos sensores. Actualmente, si la lnea se
dobla a la derecha, la lnea de negro va a tocar el sensor de color verde - el
programa lo detectar y

Gua de un principiante 's de


los araazos
39

Tip ...
Si usted no puede
dejar su coche
durante el tiempo
suficiente para
probar un color,
golpe el "dejar
de guiones" botn
rojo en el
la parte

Ahora, tenemos que usar el parche rojo en el parachoques del coche como un
sensor de color rojo. El programa ser capaz de detectar cuando la lnea gira a
la izquierda y decirle al coche para girar
Aqu est el cdigo que necesita para terminar su
programa LFV:

Tip ...
Si su coche se
detiene en un
ngulo extrao, y
no se puede
enderezarlo,
puede importar el
sprite
"yellow_car" de
nuevo, arrastre y
suelte el guin
terminado en el
nuevo Sprite y
elimine la
el viejo.

Tip ...

Como se puede ver, el programa se ejecuta con un evento bandera


verde. Despus de esto:
nUn bloque de "ir a" se utiliza para colocar el coche en la lnea.
nNos la hemos utilizado un bucle "para siempre" para mantener el coche en marcha.
nEl coche se mueve 0,5 pasos (para cada ciclo del bucle).
nUn "si" bloque se utiliza para comprobar si la mancha verde en el coche ha

tocado la lnea de negro. Si es as, el coche va a girar a la derecha en 1


grado.
nOtro "si" bloque se utiliza para comprobar si la mancha roja en el coche ha

tocado
Para un ejemplo de una versin completa de este proyecto,
abierta
RPiScratch / Proyectos / LFV.

El paso a nivel
Recursos: Los sprites "luces" y "barrera", el fondo "level_crossing"
y el sonido "level_crossing_ a".
Sistemas de control de la computadora pueden salvar vidas. En un paso a nivel
que tenemos que asegurarnos de que los coches y los trenes nunca se
encuentran. Esto se hace con un sensor en la pista que
Luego, una computadora responde a este evento al detener el trfico que se acerca
el paso a nivel y cerrar la barrera. Este programa de control puede ser escrita en los
araazos. Pero antes de empezar, tenemos que importar los sprites necesarios y
de fondo.
En primer lugar, importe el fondo "level_crossing". Como se puede ver en la
imagen de la pgina siguiente, el fondo muestra el camino que lleva hasta el
cruce, la

Gua de un principiante 's de


los araazos
40

Ejecute el
programa en
modo de pantalla
completa - es
ms
impresionante.
Haga clic en el
botn de la
derecha en el
la parte superior
derecha de la
ventana de

N otas:

apoyo barrera
cuadro de
semforo

Ahora necesitamos nuestros sprites. Importacin "luces" y


"barrera" de la
RPiScratch Recursos carpeta / / Disfraces.

Mira la imagen de arriba, y vers que el "luces" sprite tiene cuatro trajes
diferentes. Al cambiar trajes rpidamente, podemos hacer que se vea como si
las luces
La ltima cosa que necesitamos hacer antes de empezar a construir nuestro
script es importar el sonido de la alarma de nivel de cruce. Para ello, haga clic
en la ficha Sonidos, encontrar el sonido "level_crossing_ a" y luego utilizar la
funcin de importacin, tal como lo hizo con

Gua de un principiante 's de


los araazos
41

N otas:

importar el efecto de sonido


desde la ficha Sonidos.
usted lo encontrar justo al
lado de las secuencias de
comandos y trajes

Ahora, vamos a construir nuestro script. Antes de empezar, seleccione la opcin


"luces" de sprites en el
Lista Sprites.
Lo primero es lo primero: que quieren empezar con las luces apagadas. As que
usamos un evento de bandera verde
para cambiar nuestras luces sprite para "costume1", que muestra tres luces

Cuando el tren se aproxima a la barrera del paso a nivel, he utilizado un bloque


"cuando [] tecla pulsada" de control para detectarlo, estableciendo el valor de
"t". Este evento

Construir la secuencia de comandos se puede ver en la imagen anterior. Esto


har que la alarma para
suena cuando se pulsa la tecla "t".

Gua de un principiante 's de


los araazos
42

Para hacer que las luces rojas parecen parpadear tenemos que cambiar los dos trajes de luz
roja en varias ocasiones. Usamos un bucle de "repeticin" para esto. Construir la secuencia de
comandos en la pgina anterior.

Este es el programa completo de las luces, con todos los bloques en su lugar.
Tenga en cuenta que
usted tiene tres guiones distintos, no se toquen entre s.

La barrera

Ya por la barrera: arrastrarla hasta que se sienta en el apoyo de barrera, con su


extremo ms grueso simplemente descansando en la parte superior del poste.
Cada vez que se inicia el programa, la barrera debe estar apuntando hacia
arriba. El uso de un "punto en el sentido [90]" bloque (de movimiento) se llevar
a

Gua de un principiante 's de


los araazos
43

N otas:

En el guin de la barrera, he utilizado un bloque "cuando [] tecla pulsada" de

N otas:

control, con su valor establecido en "t". Piense de nuevo - el guin de las luces
tambin se inicia cuando se pulsa la tecla "t". De esta manera, las luces y la
barrera se sincronizan: que
Para bajar la barrera, vamos a girar la pole en etapas usando un bloque de "repetir".
Experimente con el nmero de repeticiones y el ngulo de giro para mover la barrera
la cantidad justa.
Despus de un tiempo determinado, 13 segundos, nos plantean la barrera
utilizando otro bloque de repeticin.
El tren ha pasado, todos los coches son seguros. Bien hecho!
Para ver un ejemplo de este proyecto en su estado
acabado, abierta
RPiScratch / Proyectos / level_crossing.

a usted
Tarea: Como una caracterstica adicional para este programa, crear un sprite
de tren que se mueve
por la pantalla cuando la barrera cae.

Leccin 1.7: Juegos raspaditos


Objetivo de aprendizaje: En este ejercicio, aprender algunas de las tcnicas
utilizado para la programacin de juegos por jugar algunos juegos de Scratch.
Algunos de los ms divertidos que se pueden tener con cero es a travs de
juegos de programacin. Usted puede hacer juegos sobre lo que quieras.
Hemos incluido dos juegos de muestra para que investigue, y hay un montn
ms juegos y otro
El punto de partida de cada nuevo juego es el tema o idea, y el objetivo del
juego. Cuando usted tiene una idea para un juego, pensar en la "historia" que
quieres contar y los personajes del juego, los jugadores, los pedazos etc. que
usted necesita. Estos sern
Usted puede encontrar grandes imgenes para sprites y fondos importndolos de las carpetas
de marcar el papel o mediante la bsqueda en Google, el ahorro y la importacin a los araazos.
Si quieres tener una idea de cmo empezar y lo que puede hacer, echar un vistazo a los juegos
de algunas otras personas. La mejor manera de aprender a programar es examinar los guiones
de otras personas para ver cmo hicieron fresco
las
pasan.

cosas

Tip ...

Finalmente, necesitar fondos para su etapa de crear las habitaciones, los


niveles y
escenas en su juego, para que sus personajes tienen un lugar para moverse.

Gua de un principiante 's de


los araazos
44

No se olvide de
agregar sonidos
y msica, ya que
esto mejora en
gran medida un
juego.

N otas:

Poney Pisador juego

Recursos: Los sprites: "pony" y "nia" y el "campo" de fondo.


El objetivo del juego: Un caballo se mueve alrededor de un campo, haciendo
cambios aleatorios de direccin. Con el ratn, el jugador controla el sprite chica.
Para ganar puntos, debe poner a la nia en el potro.
Hay cuatro tareas para programar:
1. Mueva el pony alrededor del campo.
2. Hacer cambios aleatorios en direccin del pony.
3. Mueva la chica con el puntero del ratn.
4. Aadir un punto a la puntuacin cada vez que la nia se coloca
en el potro.
Por lo tanto,
vamos a llegar a

Moviendo el pony
1. mantener el movimiento de
caballo

Seleccione el sprite pony y arrastra un evento de bandera verde a la pestaa


Scripts. Usaremos
el evento bandera verde para ejecutar todas las secuencias de comandos en
Hemos utilizado un bucle "para siempre" para mantener nuestro pony en movimiento
(recuerde su LFV). Para cada ciclo del bucle, el pony avanza 3 pasos. Si se golpea el
borde de la

Gua de un principiante 's de


los araazos
45

N otas:

2. Los cambios
aleatorios
en la direccin

Si el potro no cambia de direccin, excepto cuando golpea una ventaja, el juego


va a ser un poco aburrido. As que vamos a utilizar otro bucle "para siempre"
para que el pony cambiar al azar
El "pick aleatoria [] a []" bloque de operador se ha fijado para recoger un
nmero aleatorio
de 1 a 4. Si el nmero elegido es 1, el potro dar vuelta 180 grados.
Esto se establece a suceder cada 0,5 segundos por el
bloque de "esperar".
3. Mueva la chica con el ratn
puntero

Seleccione el sprite chica en la Lista de Sprites. El uso de otro bucle "para


siempre", as
como bloques de Movimiento y Percepcin:
nEstablezca la coordenada X del sprite nia a la posicin x del puntero del

ratn.
nEstablezca la coordenada y del sprite chica a la posicin y del puntero del

4. Marca un
punto
cada vez que
la nia se
coloca en el

En esta secuencia de comandos, se


puede ver lo siguiente:
nHemos creado una variable para manejar la puntuacin y la llam "marcar" (con

imaginacin!).
nCuando el juego comienza la puntuacin se establece en "0".
nLos "siempre si" controles de bucle para ver si el color rojo de la parte

superior de la nia est en contacto con un pequeo punto azul en la silla del
caballo.

Gua de un principiante 's de


los araazos
46

Espera un momento! Cada vez que el rojo toca el punto azul, "puntuacin" se
cambia a "marcar + 1". Si usted es bueno en matemticas que debe establecer
la seal de alarma!
No te preocupes; programadores suelen hacer esto. Recuerde que una variable
no es un nmero; es un contenedor que puede almacenar nmeros. Podemos
hacer una suma con la
Para ver un ejemplo de trabajo del juego Pony Pisador, abierta
RPiScratch / Proyectos / pony prancing_.

juego de carreras
Recursos: El sprite "red_car" y el fondo "pista".
El objetivo del juego: Un juego para dos jugadores. Cada jugador controla a
un coche de carreras en una pista. Si el coche se sale de la pista, que se estrelle. El
primero de ellos sobre la lnea es el ganador.
Hay cinco tareas para programar cada
vehculo:
1. Lnea de coches para arriba en la lnea de salida.
2. Establezca los coches en movimiento.
3. Crash el coche si se sale de la pista.
4. Declarar el primer coche de la raya como el ganador.
5. Oh, s - y los jugadores tienen que ser capaces de controlar
los coches!
1. Traslado de la
carro rojo

Comience con un evento de bandera verde. Cuando se hace clic en la


bandera, el coche para que:
ncambiar a "costume1"
nposicionarse en las coordenadas x: 35 y:

130
npropio punto a la derecha (direccin 90)

Gua de un principiante 's de


los araazos
47

Tip ...
Recuerde que para
parar todo
movindose de
manera que se
puede degustar el
color de la parte
superior de la
nia con el
herramienta
cuentagotas,
apret el botn
rojo "detener
guiones".
Si usted no puede
encontrar el sprite
chica, echar un
vistazo en la
esquina inferior
izquierda. Ella
pudo haber huido

N otas:

Para hacer todo esto, usted necesitar, junto con la bandera verde, manzanas de miradas y de
movimiento. Para mover el coche, usamos nuestro viejo amigo el bucle "para siempre". El coche
se mueve un paso
Si el coche sale de la pista, que va a tocar la hierba verde. Este evento har que
el
primero "si" bloque de estrellarse el coche y detener la secuencia de comandos para
Cuando el coche cruza la lnea de meta, se tocar la lnea blanca. Este evento
causar
el segundo bloque "if" para decir "yo gano!" y detener toda la secuencia de
2. control
el coche rojo

Ok, as que podemos conseguir el movimiento coche rojo. Pero tenemos que
ser capaces de dirigirlo. Para ello necesitamos dos "cuando [] tecla pulsada" (de
control) eventos se utilizan para el control
Como era de esperar, la tecla "flecha derecha" convierte el coche a la derecha
y la "flecha izquierda"
Resulta clave el coche a la izquierda.
3. hacen lo mismo
para el coche
prpura

Cdigo similar se utiliza para controlar el coche prpura con algunas


modificaciones ligeras. La forma ms sencilla de hacerlo es hacer que el coche
rojo y luego duplicar el sprite.

Gua de un principiante 's de


los araazos
48

N otas:

Los cambios que necesita hacer en su cdigo para el coche


prpura son:

N otas:

El coche prpura debe alinearse al lado del coche rojo en x:


30 y: 115.

Tambin debe utilizar la tecla "x" para encender el coche a la derecha y la tecla "Z" para activar

Tip ...

el coche a la izquierda.
Para ver un ejemplo acabado de este juego, abierta
RPiScratch / Proyectos / racing_game_v1.

ocincor to you
Tarea: Aadir el sonido de los coches de carreras para mejorar el juego. Tendr
que grabar o crear su propio archivo de sonido.
Tarea: Trate de hacer estas mejoras en el juego de carreras:
En el juego de carreras que acaba de crear, el coche dice "yo gano!" Cuando
llegue a la lnea. Pero la burbuja del discurso se ha ido tan rpido, es difcil de
leer. Sin embargo, si cambiamos el guin para que la burbuja de dilogo
permanece en la pantalla para, por ejemplo, 2 segundos, entonces hay una
posibilidad de que el segundo coche tambin llegar a la lnea de meta en ese
momento y tambin dicen
Trate de crear una nueva versin del juego, guardarlo como algo parecido
"Racing_game_v2", esta vez haciendo que el coche perder para
detener en seco el momento el ganador cruza la lnea de meta.
Para ello, tendrs que usar una variable.
Llame a esta nueva variable de algo as como "have_winner". El valor por defecto
de "have_winner" debe ser "0". Siempre que sea coche gana, al tocar la lnea de
acabado blanco, se debe establecer el valor de "have_winner" a "1". Este debera
ser el
Por ltimo, en lugar de tener los coches se estrellan cuando llegan a la hierba,
tratar de hacer
ellos reducir la velocidad, por lo que el jugador tiene la oportunidad de
Para ver un ejemplo acabado de este juego, abierta
RPiScratch / Proyectos / racing_game_v2.

Gua de un principiante 's de


los araazos
49

Cuando se crea
un juego, no
tenga exceso
ambicioso al
principio.
Programe su
idea bsica y
asegurarse de
que funciona. A
continuacin,
desarrollar su
juego poco a
poco, aadiendo
nuevos
personajes,
eventos y niveles.
Es una buena
idea
guardar cada
nueva versin
con un nmero
diferente, de
modo que usted
pueda realizar un
seguimiento de
los cambios que
tu has hecho. Es
posible que se

Que es lo siguiente?
Enhorabuena! Ahora eres un programador de Scratch. Con suerte, esto es slo
el comienzo para usted, y usted se inspir para crear sus propios programas
utilizando el lenguaje de Scratch. Hay muchas otras habilidades y tcnicas de
programacin
Afortunadamente, una de las mejores cosas de cero es la riqueza de apoyo y
asesoramiento en el Internet. He incluido algunos enlaces a algunos tutoriales
en lnea para usted
http: //learnscratch.org http:
//www.scratch.iehttp://scratch.redware.
com/index.pCV
http://blogs.wsd1.org/etr /? P = 395
http: //scratched.media.mit.edu
http://morpheus.cc/ict/scratch/default.ht m
Y por qu no decirle a sus profesores acerca de Scratch? Tal vez usted ya
otros nios como de mentalidad de su escuela podra incluso establecer un
rasguo Club. Y cuando usted tiene proyectos para hacer, usted podra pedir
a sus maestros si se puede hacer usando los araazos.
Atascado y no
hacis
saben cmo salir
del atasco? No
sufra en silencio.
hay algunos
grandes foros,
amable en el
sitio web de
Scratch en los
que hay un
montn de otros
usuarios de

Gua de un principiante 's de


los araazos
50

N otas:

buyold your ayn blocks


Cuando usted se convierte en un usuario avanzado de Scratch, usted puede
encontrar que no hay un bloque de script para un trabajo concreto que quieres
hacer. O es posible que desee mejorar su programa mediante la creacin de
mejores bloques. La ayuda est a la mano con BYOB en

Gracias por leer esta gua. Espero que le ayuda a tener horas de diversin con
su
Raspberry Pi.
Ahora es el momento de pasar al siguiente captulo, en el que aprender a
programa en el lenguaje Python tambin. Cosas increbles!

Gua de un principiante 's de


los araazos
51

Los experimentos en
Python
En las secciones anteriores que han visto cmo desarrollar programas
utilizando
Araazos y Greenfoot. Estas son grandes ambientes para el
aprendizaje de cmo construir un programa de piezas. Se toman
los datos del programa y el usuario, manipularla y luego cambiar lo
que ve en la pantalla siguiendo las instrucciones en su programa.
Sin embargo, este estilo de programacin tiene limitaciones cuando
se trata de
la construccin de soluciones a problemas complejos mucho ms
grandes y ms. Para obtener el mejor rendimiento de un ordenador
y de conseguir la mayor flexibilidad, hay muchos otros lenguajes y
tcnicas de programacin de computadoras. Ellos contarse por
cientos, y cada uno tiene su propio lugar en la solucin de
problemas del ordenador en la ciencia. Su Raspberry Pi poda
Para ayudarle a moverse ms cerca del proceso por el cual muchos en el mundo real
aplicaciones se desarrollan, este captulo muestra cmo los programas
estn escritos en un idioma muy popular, llamado Python. Segn
Wikipedia, "Python fue concebido a finales de 1980 y su aplicacin se
inici en diciembre de 1989 por Guido van Rossum en el CIT en los
Pases Bajos." Python es un lenguaje que pretende ser divertido de
usar. Lleva el nombre de la serie de televisin britnica de la comedia
de Monty Python Flying Circus. Si no lo encuentra divertido, esperar
hasta que lo intente algunos otros lenguajes de programacin!
Este captulo no pretende ser una gua tutorial o referencia a la Python
lengua - si quieres estos, entonces hay muchos recursos finas en
internet. Sin embargo, es de esperar, estos anuncios ser un gran
punto de partida para que usted pueda experimentar usted mismo.

E x por iments en P y thon


72

N otas:

N otas:

Lesson 3.1: Gettyong to grips wyoth Python


En el men de su escritorio, usted debera ser capaz de encontrar "Programacin" y
luego "Idle3". Seleccione esta opcin para abrir un editor especial de Python para la
creacin de programas en Python, llamados "IDLE". Si no lo encuentra, presione
ALT + F2 y escriba "Idle3"
Lo primero que IDLE te da es un "Python Shell". Las serpientes no tienen
conchas pero si
Python fuera una tuerca, este sera su caparazn.
Ahora pulse la tecla de retorno unas cuantas veces y vers que aparece ">>>"
al comienzo de cada lnea. Eso se llama la "pronta". El mensaje es la manera en
que le dice que est esperando para que usted pueda darle algunas
instrucciones de Python. Prompts se utilizan en
En primer lugar, tienes que escribir algunos comandos en el smbolo para hacer
su Python
cscara de hacer algo. As que escribir esto (no escriba el prompt >>>):

>>> W = 20
>>> impresin (W)
Esto le mostrar el nmero 20 en la ventana de shell. "W" es una variable que
han establecido en el valor 20. A continuacin, imprimir ese valor en la salida.
Vamos a usar "w" de una manera ms
interesante. Prueba esto:

>>> W = 20
>>> para yoen el rango(W):impresin(">"+""* (W-i) +"."* I * 2 +""*
(W-i) +"<")
Utilice la funcin "imprimir"
de IDLE
para crear esta

Pulse Intro dos veces. Ahora, eso es un poco ms impresionante. Si quieres


puedes
cambiar "w", escribiendo:

>>> W = 35

E x por iments en P y thon


73

A continuacin, puede utilizar las teclas de flecha para mover el cursor hasta la
lnea que empieza con "a" y pulse Retorno, dos veces. Si usted se est
preguntando por qu hay que pulsar Intro dos veces; la primera vez es
completar el "para" comandos. Al pulsar el segundo tiempo, Python reconoce
que haya terminado ese comando y ejecuta
Ahora vamos a obtener algunos grficos por ordenador
reales van. Introduzca este:

>>> importacin pygame


Despus de un par de segundos ver el reaparecen
pronta.

>>> importacin pygame


>>>
Guauu! Usted importado "PyGame". Entonces, qu es eso, y qu significa? Una
vez ms, no te preocupes por eso. Usted acaba de dicho Python que desea utilizar
sus funciones de creacin Game-. "Importar" cargas comandos adicionales en Python
que puede utilizar

Una nota acerca de los colores del texto


Mientras estabas escribiendo "pygame importacin" que debera
haber dado cuenta de que la palabra "importacin" cambiado de
color tan pronto como se termine de escribirlo. Esto se debe a IDLE
tiene una caracterstica llamada "resaltado de sintaxis". El color no
es necesario para cualquier programa de Python para trabajar, pero
es til para los programadores al leer el cdigo. Cuando el texto de
un programa se destaca con colores,
que hace que sea ms fcil de detectar errores.
Por ahora, slo pensar en l como lo contrario de los pequeos
garabatos rojos que marcan los errores de ortografa al escribir un
ensayo en un procesador de textos. No sealan errores, pero destaca
que IDLE ha reconocido un comando de teclado Python.
Cmo hacer una increble juego se llevar a las edades y un montn de
comandos, pero mientras estamos construyendo hasta que, aqu son slo unas
pocas lneas ms para que escriba para ver algo

>>> Deepblue = (26,0,255)


>>> Mintcream = (254255250)
Esto ha dado algunos nombres de un par de "tuplas" para su uso posterior.
Estos tuplas son slo de datos para el ordenador, y van a utilizar para crear
colores en

>>> Pygame.init ()
>>> Size = (500,500)
>>> Superficie = pygame.display.set_mode (tamao)

E x por iments en P y thon


74

N otas:

Ahora debera tener una pantalla en la pantalla, que tiene una superficie de 500 x 500 puntos
diminutos, o "pxeles". Eso es un gran total de 250.000 pxeles. Vamos a cambiar todo
250.000 pxeles a un color azul profundo que utilizan ese tupla "deepblue" hemos
creado.

>>> Surface.fill (deepblue)


Has llenado la superficie con el color azul, pero no pasar nada en la pantalla. La computadora
no sabe que usted ha terminado de dibujar cosas a la superficie, por lo que no hace nada por el
momento. Vamos a decirle PyGame que puede actualizar la pantalla
con este comando:

>>> Pygame.display.update()
Actualice su pantalla
para
hacer el relleno azul
profundo que ha

Ahora tendr una superficie azul en la ventana que aparece. As que, eso fue bien divertido,
bien o realmente aburrido. Esperemos que al menos bien.
Qu tal con el otro color? Tipo:

>>> Surface.fill (mintcream)


>>> Pygame.display.update()

Actualice su
pantalla
otra vez para que
aparezca la menta

Oye ... eso es bastante


sencilla.

E x por iments en P y thon


75

N otas:
Tip ...
Pixel es la forma
abreviada de
"elemento de
imagen". En la
programacin,
un pxel puede
ajustarse a
cualquier color
que te gusta, y su
"pantalla" se
compone de
muchas filas y
columnas de
ellos, lleno tan
juntos que
desdibujan
uno en el otro y

Trate de hacer sus propios colores.

>>> PiColour = (123456789)


>>> Surface.fill (PiColour)
>>> Pygame.display.update ()
Argh! Ahora que no era divertido. Ha creado un mal color y Python le ha dicho
(En las Amricas).

TypeError: argumento no vlido de color


Usted tendr que mirar para grafas estadounidenses como estos comandos al escribir
a las computadoras, ya que se desarrollan una gran cantidad de normas de
cmputo en los EE.UU..
Python le est diciendo que la tupla color no es vlida. La documentacin
PyGame dice que la tupla color slo debe tener valores entre 0 y 255. Cada
nmero representa la cantidad de rojo, verde o azul que quieras en el color
(en ese orden). Mezclando estos le dar todos los colores que el equipo
puede mostrar. Eso es
256 x 256 x 256 colores diferentes. Pruebe a escribir esto en el indicador para
obtener la respuesta

>>> 256 * 256 * 256


O
incluso:

>>> 256 ** 3
Los smbolos ** significa "elevado a la potencia de". Note "print ()" que no he
usado.
Python puede ser una gran calculadora, tambin!
El ordenador puede
mostrar
256 x 256 x 256 colores.
Eso es 16.777.216
colores

Gua de un principiante 's de


los araazos
76

N otas:

Going round en circles

N otas:

EesootNN:s:

Ahora que usted ha llenado el fondo, vamos a aadir un crculo a la superficie.

>>> Surface.fill (deepblue)


>>> Posicin = (250,250)
>>> Radio = 50
>>> Ancho de lnea = 2
>>> Pygame.draw.circle (superficie, mintcream, posicin, radio,
anchura de lnea)
Actualizacin de nuevo para ver el
crculo agreg.

>>> Pygame.display.update()

Intente cambiar algunos de los nmeros para dibujar el crculo y ver qu pasa.
Recuerde actualizar despus de cada crculo se agrega a la superficie.

Gua de un principiante 's de


los araazos
77

Tip ...
A veces,
tenemos ms
cdigo para
escribir que
cabe
en una lnea.
Cuando vea una
lnea de cdigo,
tales como el
ltimo aqu, que
va en una nueva
lnea sin un
smbolo o guin,
que es realmente
una sola lnea de
cdigo. No
presione
Vuelva a iniciar
una nueva lnea,

>>> Posicin = (280,300)


>>> Radio = 80
>>> Pygame.draw.circle (superficie, mintcream, posicin, radio,
anchura de lnea)
>>> Pygame.display.update()

Si desea empezar de nuevo, slo tiene que rellenar la superficie con el


azul, y actualizar de nuevo.

>>> Surface.fill (deepblue)


>>> Pygame.display.update()

No responde
Cuando se utiliza PyGame interactiva, como este, puede quedar
atascado en ocasiones. Esto se debe a PyGame est tratando de
enviar eventos de nuevo a usted - informacin sobre las cosas que
quiere que usted sepa acerca. En esta etapa, usted no necesita
saber acerca de ellos, pero an debe decirle a Python para
responder a ellas.
Escriba el cdigo y pulse Intro dos veces, y ver todo el
"eventos" que PyGame quiere que usted sepa acerca.

>>> para evento en funcin pygame.event.get ():


impresin(Evento)
Para cerrar la ventana PyGame, utilice el cerrar [x] en la esquina superior

E x por iments en P y thon


78

N otas:

N otas:

Munths casawok
Qu pesadilla. Slo acaba de empezar y ya no hay tarea. Computadoras e
informtica comparten mucho con las matemticas. Tenemos
dibujado un crculo colorido o dos, pero ahora es el momento de mirar a algn
nmero crujido.
Para empezar, vamos a ir a travs de un problema de matemticas simple que probablemente
haya sido
establecido en la escuela en algn momento:
Cules son los factores de todos los nmeros de 1 a 50? Es decir, cules son los
aspectos positivos
divisores de los nmeros de 1 a 50?

Sin una Raspberry Pi


Los primeros son fciles, porque se puede dividir el nmero por los nmeros
ms pequea de lo que en su cabeza y ver si hay un resto.
1 -> 1
2 -> 1 y 2 se dividen en 2
3 -> 1 y 3
4 -> 1, 2 y 4. 3 no divide en 4
5 -> 1 y 5 solamente. 2, 3 y 4 no se dividen en 5 sin dejar resto
6 -> 1, 2, 3 y 6
7 -> 1 y 7 slo
8 -> 1, 2, 4 y 8
Saltando por delante, vamos a tratar de 26. Tenemos que dividir 26 por todos los
nmeros menores que
que sea seguro de que todos tenemos.
26/1 = 26
26/2 = 13
26/3 8 = 2/3
26/4 6 = 1/2
26/5 5 = 1/5
26/6 4 = 1/3
...
26/13 = 2
...
26/26 = 1
Para calcular los nmeros ms grandes, es necesario ver cul de esos nmeros ms pequeos
de lo que no tendr que queda cuando se dividen en ella. En el caso de 26: 1, 2, 13 y 26
no dejar residuo.
Imagina que la cuestin estaba encontrando los factores de 12.407? Usted
tendra que comenzar en 1 y su forma de trabajo a travs de ms de 6.000
nmeros para descubrir todo

E x por iments en P y thon


79

N otas:

Just undd Runspberry Pyo


Por lo tanto, la misma pregunta. Cules son los factores de todos los nmeros
de 1 a 50? Antes de empezar la programacin, usted tendr que poner en
marcha un editor para que pueda escribir
Abra una nueva ventana de
edicin
en el men Archivo en IDLE.
Esto le permitir trabajar en
el editor de texto IDLE.

Tip ...
Abre el editor de IDLE como antes, pero esta vez utilice el men Archivo para
seleccionar una nueva ventana de edicin. Esto ya no es el shell de Python,
pero un editor de texto. Puede escribir en su programa pero no va a ser
interpretado por el Raspberry Pi hasta que le indique a "Ejecutar". Este editor de
texto se ha ajustado para que sea muy bueno para escribir Python,
En esta ventana, escribe exactamente lo que ves aqu, incluyendo los espacios
correctos antes de cada lnea y todo en minsculas. Usted puede usar Tab para
sangrar sus lneas en el

para nmero en el rango(1, 51):


impresin(Nmero, ":", Final
="")
para divisor en el rango(1, nmero + 1):
si Nmero% divisor == 0:
impresin(Divisor, final ="")
impresin()
Este programa utiliza dos bucles, "rango", "imprimir", "si", "%" y "==", y dos
variables para almacenar los datos. La funcin de "rango" generar los
nmeros de la primera a uno por debajo de la ltima; en este caso, del 1 al 50.
El operador "%" dar el resto despus
Tambin, notar cmo "==" se utiliza en lugar de slo "=". Esto es porque, en un
ordenador, el establecimiento de una variable a un nmero es diferente a la
comparacin de la igualdad de nmeros.
La funcin de impresin normalmente termina la lnea con un retorno de carro (el
mismo que cuando ha pulsado la tecla de retorno). Para detener esto, usted
puede decirle a la funcin de impresin lo que quiere al final. En este programa, le
estamos diciendo "imprimir" para poner un espacio en blanco al final de

E x por iments en P y thon


80

El guin de
cuatro espacios
debe aparecer
automticamente
despus de la
lnea que
termina con dos
puntos (:). El
guin de ocho
espacios
aparecer
despus de la
segunda lnea
que termina con

Tip ...
En matemticas
informticos, los
siguientes
smbolos se
utilizan en lugar
de lo que podra
ser utilizado para:
*para
multiplicar,
en lugar de x
/para la
divisin, en
lugar de

Para hacer este programa de ejecucin, puede seleccionar "Mdulo Ejecutar" en el men de
depuracin del editor o simplemente presione F5 y se le pedir que guarde antes de poder
ejecutar. Prensa
Nota: Es importante incluir la parte ".py" de este nombre, para que Python puede
reconocer fcilmente esto como un programa que puede interpretar.
Despus de presionar "Guardar", el programa se ejecutar y podrs ver un
montn de pantalla de los nmeros en la cscara pitn. Este es el resultado de
su programa, que muestra toda la

>>> ============= REINICIAR ================


>>>
1: 1
2: 1 2
3: 1 3
4: 1 2 4
5: 1 5
6: 1 2 3 6
7: 1 7
8: 1 2 4 8
9: 1 3 9
Estos son sus factores para los nueve primeros
nmeros enteros.
La ventana de la derecha
mostrar la salida de la
Cdigo Python a la
izquierda.

E x por iments en P y thon


81

N otas:

N otas:

tl Fyobonuncci Sequence
Vamos a escribir otro programa para elaborar una famosa secuencia
matemtica. Cada nmero en la secuencia de Fibonacci es simplemente los dos
nmeros anteriores sumados; empezando por 0 y 1. Crear un nuevo archivo
usando IDLE y el nombre de
El siguiente ser calcular los nmeros en la secuencia hasta el primer valor que
es mayor que 100.

primero = 0
impresin(Primero, final ="")
segundo = 1
mientras (Primera <100):
impresin(Segundo
extremo ="") Tercero =
primero + segundo
primero = segundos
segundo = tercero
Y el resultado
es:

0 1 1 2 3 5 8 13 21 34 55 89 144
Este programa debe ser ms fcil de seguir que el primero. Tiene un solo lazo,
pero, en lugar de usar "para", utiliza "tiempo". Este bucle continuar mientras
que la variable "primero" es menos de 100. Usted debe ser capaz de ver que
"144" en la pantalla, ya que es el primer valor que pas esta prueba. Vea lo
que sucede cuando se cambia

el nmero 0
En casi toda la computacin, el nmero de recuento comienza con 0. En el
mundo real, es comn a contar desde 1. Esto puede ser muy confuso hasta que
se acostumbre a ella - y an ms confuso si usted comienza a usar uno de los
pocos lenguajes de programacin eso contar desde 1. La historia de contar
desde 0 en la informtica se deriva de la indexacin en la memoria. Se puede
decir el primer elemento de la memoria es una distancia 0 desde el inicio de su
memoria. Los idiomas que se basan en 1 compensar este
Esto puede llevar a an ms confusin en el otro extremo de su rango de
contado. Si usted comienza a 0 y necesita 10 nmeros consecutivos, el ltimo
nmero ser 9. El "rango ()" funcin no est generando los nmeros de la
primera a la ltima serie, que est empezando en el primer nmero y que le da
los valores consecutivos despus de eso. Es por ello que en el ejemplo de los
factores, el programa parece contar del 1 al 51. Comenzar en
1 y me dan 51 nmeros consecutivos. He aqu una manera de iterar (es decir,
recuento) a travs de
>>> [X

para

Xen

el rango(0,

10)]

# 10 nmeros que comienzan en 0

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> [X

para

Xen

el rango(1,

51)]

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
47, 48, 49, 50]

E x por iments en P y thon


82

N otas:

Byots unnd bytes


Si usted no lo sabe ya, las computadoras trabajan en "binario". En lugar de
contar desde
0 a 9 para cada unidad lo que hacemos todos los das, que cuentan de 0 a 1 para
cada unidad. En nmeros decimales, por la derecha, los nmeros son unidades,
luego 10s, 100s, 1000 y as sucesivamente. Cada uno es 10 veces la anterior. En
binario, los nmeros ms a la derecha es una unidad, a continuacin, 2s, 4s, 8s, y
as sucesivamente. Cada uno es 2 veces (doble) de la anterior.
Cada unidad en binario se llama un "bit", y esto puede tener uno de dos valores:
0 1 (elctricamente, "on" u "off"; lgicamente, "verdadero" o "falso"). Cuando
las computadoras se suman los nmeros, que necesitan tener filas de bits para
representar los nmeros. Agrupando
8 bits, podemos hacer todos los nmeros de 0 a 255. Esto se conoce como un
"byte". Si duplicamos a 16 bits podemos tener 65.536 nmeros diferentes (64k).
Usted debe comenzar a reconocer algunos de estos nmeros informticos: 2, 4, 8,
16, 32, 64, 128, 256 ... A menudo, la memoria del ordenador se vende en estos
tamaos, y eso se debe a que estn hechos
Aqu estn los nmeros decimales de 0 a 9, tal como
aparecen en binario:
Binario

Decimal

10

11

100

101

110

111

1000

1001

Pitones en directo
Los experimentos anteriores que han tirado en la parte ms profunda, usando
IDLE para entrar en los programas y ejecutarlos. IDLE requiere que usted
tenga un escritorio grfico (llamado un "interfaz grfica de usuario", o "GUI"),
pero cuando empezaste tu Raspberry Pi, slo te muestra una gran cantidad de
texto en la pantalla. Esto se llama el "Terminal
En la infancia del sistema operativo Linux (el sistema utilizado por el Raspberry
Pi), interfaces grficas no eran comunes. Acceso a una sola computadora se
pareca mucho el acceso a la Internet hoy en da: una pantalla y un teclado fijado
en una consola con un cable en la parte posterior de una caja grande que
contiene el hardware. Al acceder a su ordenador a travs de un cable de este
tipo, que no quieres que esperar para las imgenes para descargar, por lo que
simplemente tena una pantalla de texto. Ver cualquier pelcula que contiene un
ordenador viejo que 1990 y vers algunos ejemplos. Sin embargo, esto sigue
siendo la forma ms eficaz para controlar un ordenador y muchos servidores web
(esas cosas que

E x por iments en P y thon


83

Entonces, qu tiene esto que ver con pitones vivas? Cuando estabas
escribiendo lneas de cdigo Python para dibujar crculos en PyGame al

N otas:

comienzo de este captulo, que estaba controlando pantalla grfica del


Raspberry Pi al igual que los servidores web son controlados por sus amos.
Cada comando se interpreta lnea por lnea, y el equipo est esperando

Interpretacin Python
Los equipos utilizan instrucciones en el microprocesador para el control de ellos,
y estos son muy rpidos pero muy complicado. Los lenguajes de programacin,
como Python, se inventaron para cerrar la brecha entre lo que la gente piensa
acerca de los problemas y la forma en que un ordenador puede procesar datos.
Para mantener el mejor rendimiento, las computadoras se convierten, o
"compilar",

las

instrucciones

legibles

en

esas

complejas

instrucciones

computacionales antes de ejecutarlos. Python no est obligado a hacerlo;


aunque puede. Al sacrificar velocidad, programas Python no necesitan ser
compilados, pero puede ser
Usted puede probar esto por ti mismo. Abra una ventana de terminal Linux desde el men
en el escritorio, usted debera ser capaz de encontrar "Accesorios" y luego
"LXTerminal".
Como alternativa, puede pulsar Alt-F2 y escriba
"LXTerminal".
En el tipo de ventana de
terminal:

$ Python
Usted debe ver:

pi @ raspberrypi: ~$ Python
Python 3.2.2 (por defecto, 04 de septiembre 2011,
09:51:08) [Raspberry Pi] Tipo "ayuda", "derecho de
autor", "crditos" o "licencia"
para ms informacin.
>>>
Observe cmo el indicador ha cambiado de "$" para ">>>". Esto muestra que
Python est activo. Cuando desee volver a la terminal de Linux, escriba "quit ()"
y pulse Intro, pero no hagas eso todava. Cuando vea el "$" del sistema, usted
tiene
Ahora, en el Python, escriba:

Tip ...

>>> A = 0
>>> mientras (A <10 000): a + = 1; impresin("Raspberry Pi ="
Usuarios,
A)
...

E x por iments en P y thon


84

Un punto y coma
(;) se utiliza para
separar dos
comandos sin
necesidad de
pulsar Intro.

No es una buena prctica para poner todo el cdigo para un bloque en una lnea
como sta. Puede pulsar Retorno despus de cada instruccin aqu y Python se
mostrar "..." para indicar que est esperando ms instrucciones, pero recuerde
que debe sangrar cada lnea

>>> A = 0
>>> mientras (A <10 000):
... A + = 1
...
impresin("Raspberry Pi =" Usuarios, A)
...

Runnyong Python progrsoys


Programas Python no tienen que ejecutar desde el ralent tampoco. Usted
podra utilizar cualquier aplicacin para crear el texto y luego ejecutar el
programa directamente utilizando Python. Incluso se puede utilizar un
procesador de textos, pero usted encontrar que sigue tratando de capitalizar
palabras al comienzo de cada lnea y corregir la gramtica. No se recomienda
intentar utilizar
Esos programas que ha creado antes se pueden editar con el editor de texto
"nano", por ejemplo. Abre la terminal de Linux para que pueda ver un "$" del
sistema. Abre el

$ Nano factors.py
Con un poco de ensayo y error, usted debera ser capaz de utilizar nano para
cambiar el programa
leer:

para nmero en el rango(1,


51): factores = 0
impresin(Nmero, final
=":")
para divisor en el rango(1, nmero + 1):
si Nmero% divisor == 0:
impresin(Divisor, final
="") Factores + = 1
si (Factores == 2):
impresin("Y es un nmero primo")
ms:
impresin()
Gurdelo ("Ctrl-O"), cerca nano ("Ctrl-X") y, a continuacin, para ejecutar en la
ventana de terminal,
escriba lo siguiente:

$ Python factors.py
Usted debe ver la salida del programa en la ventana de terminal de Linux, como lo hizo en el
IDLE Python Shell.
Para el resto de esta seccin Python, utilizaremos IDLE, pero, si lo prefiere, puede
utilizar un editor de texto diferente y ejecutar sus programas de la terminal de Linux
como

E x por iments en P y thon


85

N otas:
Tip ...
Cuando vea
puntos
suspensivos (...)
significa que
Python est
esperando ms
instrucciones a
seguir sus
instrucciones ",
mientras que".
Simplemente
pulse Retorno

N otas:

Lesson 3.2: MunsterPy


Hemos tenido un calentamiento, as que vamos a ver si podemos crear un juego
usando Python. Alguna vez has jugado el juego Mastermind, donde tienes que
adivinar los colores ocultos? Podemos hacer lo mismo aqu, pero con letras en lugar
de las clavijas de colores. Tambin lo har
Aqu est el cdigo que vamos a utilizar:

Tip ...

importacin
cadena
importacin
aleatorio
# Crear una lista de 4 caracteres
= secretas [random.choice ('ABCDEF')para artculo en el rango(4)]
# Decirle al jugador lo que est pasando
impresin("He seleccionado un cdigo secreto de 4 caracteres de
las letras
A, B, C, D, E y F. ")
impresin("Puede que haya repetido alguna.")
impresin("Ahora, tratar de adivinar lo que eleg.")
yourGuess = []
mientras que la lista(YourGuess) = secreto:
yourGuess = entrada("Introduzca un 4 letras conjetura: por
ejemplo ABCD:") .upper ()
si len(YourGuess) = 4:
continuar
# Gire la conjetura en una lista, como el
secreto impresin("Lo has adivinado",
YourGuess)
# Crear una lista de tuplas que comparan el secreto con la
conjetura comparingList = cremallera(Secreto, yourGuess)
# Crear una lista de las letras que coinciden
# (Esto ser 4, cuando las listas coinciden exactamente)
correctList = [Speg para Speg, el grupo de expertos en
comparingList si Speg
== El grupo de expertos]
# Contar cada una de las letras en el secreto y la conjetura
# Y anote la menor cantidad en cada
fewestLetters = [min(Secret.count (j), yourguess.count (j)) para
jen 'ABCDEF']
Puedes adivinar la secuencia nmero establecido por el equipo? El equipo
selecciona una secuencia de cuatro cartas de un conjunto de seis. Usted entra
en una secuencia de cuatro letras que usted piensa que el equipo seleccionado y
se informe cuntos eran exactamente

E x por iments en P y thon


86

Aqu, de nuevo,
se puede ver
lneas de cdigo
que no caben
en una sola
lnea. No
presione
Regresar al
inicio de una
nueva lnea,
acaba de dejar

Este es un programa mucho ms largo, que sigue pidiendo una nueva


conjetura mientras que la conjetura no coincide con el secreto. Lo primero que
hace es seleccionar al azar una secuencia de cuatro letras de una seleccin de
seis. Se basa esta secuencia de la lista, que se denota por "[" y "]", haciendo
un bucle en cuatro ocasiones y elegir al azar una carta de
El equipo recibe el usuario de adivinar por la espera de la entrada de los
mismos. Hasta que el usuario escribe en algo y prensas de entrar en el
programa se detendr. El primero que lo hace con la entrada es para
convertirlo en maysculas (maysculas) y comprobar que tiene al menos
cuatro letras. El equipo ahora tiene que comparar la respuesta secreta a la
conjetura. A continuacin, convierte la secuencia de letras de la funcin de
entrada a una lista de
La siguiente parte de Python magia es "zip". Toma las dos listas y hace una
nueva lista, donde cada entrada tiene dos partes; una parte izquierda y parte
derecha. Esto puede ser usado para
Ahora su programa construye una nueva lista de letras que eran correctos; que
es la parte izquierda y parte derecha eran los mismos en la lista de la
comparacin. Se crea la lista llenndolo con entradas "SPEG". "Speg" significa
"peg secreto", y "el grupo de expertos" significa "peg conjetura". El programa
recibe el "Speg" de la lista comparando junto con el "el grupo de expertos",

Cartas Corregir
= Nmero en
correctList
= 2.
Las cartas no
utilizadas
= Menor
cantidad correcta

E x por iments en P y thon


87

N otas:

El siguiente bit de informacin que necesita el jugador es el nmero de cartas


eran en su conjetura, pero no en los lugares correctos. Dado que no importa la
posicin, slo estamos contando cartas. Para cada posible carta, contamos
cuntos estn en el secreto y cuntos estamos en la suposicin. Esto incluir
los que estn en la posicin correcta tambin, pero vamos a deshacerse de
esos cargos en un minuto. Tambin slo queremos que el nmero mnimo ya
que slo estamos contando los de la suposicin de que tambin estn en el
secreto. Sumando todos estos aspectos, y restando los que fuera correcta,
Esto le da al jugador las pistas que necesitan para adivinar
la respuesta.
Este ejemplo es bastante difcil, pero es la capacidad de seguir y entender este
tipo de programa que le ayudar a ser un gran programador. La capacidad de
crear un proceso lgico para resolver un problema le ayudar en su viaje para
ser un

Comentarios (# y "" ")


En el cdigo, ver el carcter "#" antes de alguna lnea de Ingls. El
carcter "#" inicia un "comentario" en el cdigo. Es decir, todo lo
que

viene

despus

del

"#"

es

ignorado

por

el

ordenador.

Programadores de Python utilizan "#" para escribir pequeas notas a


s mismos ya cualquiera que lea el cdigo.
El arte de escribir comentarios tiles es muy importante y una
habilidad que debe aprender si quieres ser un buen programador.
Despus de haber escrito algunos programas sin comentarios, los
dej por un mes y luego regresar a ellos, vas a entender el valor de
buenos comentarios.
Los comentarios tambin se pueden poner dentro de un par de
comillas triples: "" ".. Usted ver esto en algunos de los anuncios
Estos comentarios, cuando se coloca en el inicio de un mdulo,
funcin

clase,

que

se

conoce

como"

cadenas

de

documentacin ", que otro programa de computadora (pydoc) se


reunirn para crear un "manual de instrucciones" a su programa.

E x por iments en P y thon


88

N otas:

Lesasn 30.3: Romunn Numerunls Y duntun munnipuluntyoon

def int2roman(Nmero):
numeralOrder = [1000,900,500,400,100,90,50,40,10,9,5,4,1]
numeralLetters = {
1000: "M", 900: "CM", 500: "D", 400: "CD",
100: "C", 90: "XC", 50: "L", 40: "XL",
10: "X", 9: "IX", 5: "V", 4: "IV",
1: "YO" }
resultado = ""
si nmero <1 o nmero> 4999:
aumentar ValueError
para valor en numeralOrder:
mientras nmero> = valor:
resultado + = numeralLetters
[valor]
nmero - =
valor retorno resultado
probar:
impresin(Int2roman (int(entrada("Introduzca un nmero entero
(1-4999):"))))
excepto ValueError:
Este programa introduce la idea de una funcin. A los grupos de funciones
junto comandos en un bloque. Es el mtodo bsico por el cual usted puede
crear sus propios comandos de Python. Las funciones pueden tener variables
que se les da y que puede devolver una respuesta una vez que se hayan
terminado. Son grandes para la reutilizacin de las instrucciones sobre
diferentes datos y la obtencin de resultados. En este caso, se necesitar un
nmero decimal normales
El siguiente comando ejecuta una serie de funciones en un
solo:

impresin(Int2roman (int(entrada("Introduzca un nmero entero


(1-4999):"))))
Se imprime el resultado de la funcin "int2roman". Se inicia (llamado) con el
resultado de "int" y "entrada". La funcin "int" es convertir las letras que escriba
en un nmero. La funcin de "entrada" permite Python para conseguir algunos
nmeros del usuario.
Para calcular el equivalente nmero romano para un nmero, slo tiene que seguir tomando el
mayor nmero romano posible del nmero dado, y aadiendo el nmero romano a la cadena
como lo hace. Una cadena es cmo los informticos
describir una secuencia de caracteres; letras, nmeros y otros smbolos
especiales
Observe que la secuencia "numeralLetters" est hecho de un par de nmeros y
letras. Este es un tipo particular de secuencia conocida como un "diccionario".
El orden de las entradas en el diccionario no se garantiza que sea la misma
medida que la ingresa. Esto es lo que el equipo puede optimizar cmo se
almacenan los datos y le dar acceso rpido despus. La parte izquierda de la
entrada del diccionario es la "clave", y puede ser casi cualquier cosa. Para
obtener el valor de la entrada (la parte derecha), puedes pedirlo con la tecla,
utilizando corchetes "[]" en torno a la tecla. El "numeralOrder" es una lista de lo
normal, donde se mantiene el orden. Esto se usa para descomponer el nmero

E x por iments en P y thon


89

N otas:

La parte principal del programa de nmeros romanos tambin introduce la idea


de
"excepciones". Cuando una funcin se escribe detecta algo mal, es necesario
dejar que las personas que llaman de su cdigo saben. Usted puede hacer esto

si nmero <1 o nmero> 4999:


aumentar ValueError
"ValueError" se eleva por otras partes de Python cuando se
intenta una operacin sobre una variable que no se puede
hacer, por lo que hemos utilizado aqu. El programa de
capturas de la

excepto ValueError:
impresin("Intntalo de nuevo")

solucionar
esos bichos
Un "error" es la jerga informtica por un error en su programa. No he
puesto intencionadamente errores en los listados, as que si usted
encuentra que no puede ejecutar un programa o se da una respuesta
extraa, que ha introducido alguna manera un error. El trmino ha estado
presente desde la poca de Thomas Edison (c. 1878), pero a menudo el
caso reportado de una polilla que causa un problema dentro de una
computadora alrededor 1947 consolid el trmino en el mundo de las
computadoras.
La capacidad de localizar a los insectos es una habilidad invaluable
para todos los programadores. Con todas las mejores intenciones y
planificacin, se pueden cometer errores. Al iniciar el programa, es
mejor que escribir en los ejemplos enumerados aqu. Puede ser que
tome ms tiempo, pero que estn en formacin. Usted est entrenando
para escribir y cmo evitar cometer errores de escritura. Su capacidad
de cdigo de prueba de lectura se incrementar a medida que trabaja a
travs de estos ejemplos.
Cuando usted encuentra un error, don't pnico y empezar a cambiar el
cdigo al azar. Mira el perfil, mirar a su cdigo, y trabajar a travs de cada
parte, lgicamente, para averiguar lo que usted debe ver, en comparacin
con lo que en realidad se est viendo. Los errores dadas por Python ser
confuso pero es slo siguiendo las instrucciones en el cdigo y que le
dice por qu no puede continuar.
En algn momento, usted descubrir que los programadores utilizan
otro programa llamado un depurador para analizar y encontrar errores
en su cdigo ya que se ejecuta. Usted no necesita el depurador por el
momento, pero no hay un mtodo alternativo. El mtodo ms fcil es
aadir "imprimir ()" comandos a su cdigo para averiguar lo que est
pasando en las variables y lo lejos Python es a travs de su programa.
Piense en ello como la insercin de una sonda en el cdigo que le diga
lo que est sucediendo.

E x por iments en P y thon


90

N otas:

N otas:

Sorteng unnd sunrcheng


Vamos a intentar algo un poco ms prctico, como la manipulacin de datos y el
uso de los archivos. Para este experimento, es necesario utilizar una ventana de
texto en IDLE para crear una lista de nombres de cine. Escriba los nombres de
cine tal como se muestran en el editor y guardarlo
Inception (2010)
Cdigo fuente (2011)
Avatar (2009)
The Simpsons Movie (2007)
X-Men Origins: Wolverine (2009)
Rango (2011)
The Green Hornet (2011)
Grown Ups (2010)
Harry Potter y las Reliquias de la Muerte: Parte 1
(2010) Harry Potter y las Reliquias de la Muerte: Parte
2 (2011) Star Trek (2009)
Spider-Man 3 (2007)
Transformers (2007)
Shrek Tercero (2007)
Kung Fu Panda (2008)
Mamma Mia! (2008)
Quantum of Solace (2008)
WALL-E (2008)
El caballero de la noche
(2008) Up (2009)
La Saga Crepsculo: Luna nueva (2009)
Sherlock Holmes (2009)
Toy Story 3 (2010)
Despicable Me (2010)
Cmo entrenar a tu dragn (2010)
Ahora, vamos a escribir algo de cdigo para ordenar estas pelculas en
orden por fecha de lanzamiento.

E x por iments en P y thon


91

# Ordenar un archivo completo de nombres de cine


# Definir una funcin que devolver el ao se hizo una pelcula
# Divide el lado derecho de la lnea en el primero "("
def filmYear(Pelcula):
retorno film.rsplit ('(', 1) [1]
# Cargar el archivo en una lista en la memoria de Python
# Y cierre el archivo porque el contenido se encuentra ahora en la
memoria
con abierta("Filmlist","R")como archivo:
filmlist = expediente.leer (). splitlines ()
# Ordenar por nombre usando la funcin de biblioteca
filmlist.sort ()
# Ordenar por ao con la tecla a la funcin de la biblioteca - la
lista de pelcula
# Debe terminar con un ao en el formato (NNNN)
filmlist.sort (clave = filmYear)
# Imprimir la lista
para pelcula en filmlist:
En lugar de tomar la entrada del usuario del programa, este experimento toma la
entrada de un archivo que contiene el texto. Se procesa el archivo para ordenar
sus lneas en nombre y ao
Obtencin de los datos de un archivo requiere que se abri, ley en una lista
de Python y luego cerrada. Hay una posibilidad de que el archivo podra ser
muy grande y no cabe en el
Ordenar la lista es fcil, ya que hay una funcin llamada "clase", que dirige una
bien establecida algoritmo de ordenacin en la lista. Ordena por las letras
iniciales (en orden alfabtico) de cada lnea. Esto se realiza por primera vez en
este ejemplo. Si desea ordenar de alguna otra manera, tiene que proporcionar
la clave de clasificacin. Esta clave es el bit de cada entrada de la lista que se
va a
El segundo tipo utiliza una clave para el ao pelcula. Para obtener el ao fuera
de cualquier entrada de la lista, la funcin "filmYear" divide la entrada en dos a
lo ms a la derecha "(" y utiliza eso. Este es el ao de la pelcula, en nuestro
caso. Este programa se producir un error si el ttulo de la pelcula no tiene un
ao despus de la primera final "(" en el nombre, o si hay una lnea en el
archivo que contiene el nombre de la pelcula. Normalmente usted tendr que
validar la entrada. Una de
Trate de no incluir cada especie para ver qu pasa. Trate de poner extra "(" en algunos de los
nombres de cine.

E x por iments en P y thon


92

N otas:

N otas:

Fyolm search
# Ordenar un archivo completo de nombres de cine
# Funcin para comparar el elemento minsculas con el
searchfor def Comparar (artculo):
retorno buscar en item.lower ()
# Cargar el archivo en una lista y
# Cierre el archivo porque el contenido se encuentra ahora en la
memoria
con abierta("Filmlist","R")como pelcula:
filmlist = film.read (). splitlines ()
searchfor = entrada("Enter parte de la pelcula \
nombre que est buscando: ") .lower (). Tira ()
# Usar la funcin incorporada de filtro, que lo har
# Llamar al primer parmetro en cada artculo en
# La lista y, si es verdad, utilizar el elemento
foundlist = filtro(Comprese, filmlist)
para nombre en foundlist:
impresin(Nombre)
Al igual que en el experimento anterior, el plan consiste en cargar una lista de
nombres de cine y despus
procesarlos. En este caso, el requisito es encontrar una pelcula solicitada por el
La lista de pelculas que hemos creado previamente se carga en memoria.
Texto para "searchfor" se solicita por parte del usuario. Esto es inmediatamente
convertido a caracteres en minsculas y espacios adicionales despojados.
Durante la bsqueda, cualquier ttulo de la pelcula tambin se convertir en
minsculas antes de comprobar de manera que el caso no ser relevante para
Hay una funcin de Python llamado "filtro", que tendr una lista y generar una
nueva lista mediante la filtracin de las entradas que no pasan una prueba. En
este caso, nuestra prueba de la voluntad
Por ltimo, las entradas de la lista de elementos encontrados se
imprimen a la pantalla.

Lneas
largas
La lnea de entrada tiene una mitad de camino carcter "\" a travs de
la pregunta. Esto se aadi porque la cola era larga. Si la pregunta de
entrada se escribe en una sola lnea, no necesitara este personaje. Un
carcter "\" al final de una lnea es un marcador de continuacin.
Indica que la lnea no ha terminado todava y continuar en la
siguiente lnea del programa. Cuando se ejecuta el programa, este
personaje no aparecer en el resultado - que slo es utilizado por el
intrprete programa para no perder de vista el flujo del cdigo.

E x por iments en P y thon


93

N otas:

Lesson 3.4: Getting unr tistic


Ahora hemos aprendido a utilizar las funciones, as como la manipulacin de los
datos, vamos a volver a algo un poco ms visual. Esta vez vamos a seguir
adelante con la visualizacin

# Incluye el sistema y mdulos de interfaz grfica de


usuario importacin sys
desde PySide.QtGui importacin *
clase MyWindow(QWidget):
def
en eso (Self):
sper(MyWindow, auto). en eso __ ()
# Nombrar el widget
self.setWindowTitle ('Ventana
Eventos')
# Crear una etiqueta (un poco de texto)
self.label = QLabel ("Read Me", Auto)
# Crear un widget de botn, posicionarlo y
# Conectar una funcin cuando se hace
clic botn = QPushButton ('Push Me',
Auto) button.clicked.connect
(self.buttonClicked)
# Crear un cuadro de diseo orientado verticalmente
# Para los otros widgets
layout = QVBoxLayout (auto)
layout.addWidget (botn)
layout.addWidget
(self.label)
# Rastrear el ratn
self.setMouseTracking
(Verdadero)
def buttonClicked(Self):
"" "Actualizar el texto cuando se hace clic en el
botn" "" self.label.setText ("clicked")
def mouseMoveEvent(Self, evento):
"" "
Actualizar el texto cuando las orugas) (ratn se mueve sobre
MyWindow
"" "
self.label.setText (str(Event.x ()) + "," + str(Event.y ()))
# Iniciar una aplicacin y crear un widget para la ventana,
# Dndole un nombre
aplicacin = QApplication (sys.argv)
# Construir un widget llamado
MyWindow Reproductor = MyWindow ()
# Muestran el
widget

E x por iments en P y thon


94

Hasta este punto, que los datos sean procesados se ha impreso a la pantalla;
pero podra fcilmente haber sido impreso en papel o por escrito en un archivo.
Hemos estado poniendo el texto directamente sobre la salida de la consola. Si
desea dibujar en una ventana en la que tendr que utilizar una biblioteca grfica
ventana. En esta seccin estamos utilizando la biblioteca "PySide" (una versin
de la biblioteca "Qt4"), aunque otro - llamado "Tk" - viene
Cuando le dices a un ordenador para cambiar la imagen que est mostrando, lo
hace cambiando el color de los pxeles en la pantalla de ordenador. Como
ocurre con casi todos los ordenadores actuales, la pantalla en un Raspberry Pi
es separada en lo que se denominan "ventanas". Estas ventanas "ven" sobre
una superficie estirable. Todo lo que ves en una pantalla grfica del ordenador
es en realidad un dibujo dentro de una ventana; incluso el dibujo de texto
Una ventana debe ser controlado por una aplicacin (una aplicacin), por lo que este
se crea por primera vez. La aplicacin debe estar en ejecucin para la ventana que
se mostrar y, para ello, debe quedarse en un bucle sin fin: el bucle principal. Antes
de bucle, debe definir cmo desea que la ventana para mirar y cmo cada parte va a
reaccionar a
Para responder a las influencias externas, como el movimiento del ratn o del teclado
pulsaciones de teclas, debe reemplazar funciones de eventos. Algunos "widgets" (como empuje
botones) pueden conectarse una funcin a una seal, como "clic".
En el experimento, se demuestran los dos mtodos
para la deteccin de cambios. Cuando se hace clic
en el botn, la funcin "buttonClicked" se llama. El
otro est respondiendo al cursor del ratn se mueve
sobre el widget y cambiar la etiqueta para mostrar la
posicin del ratn (pero slo cuando en la ventana,
no cuando el

E x por iments en P y thon


95

N otas:

N otas:

LyoNebraska drawyong
# Incluye el sistema, matemticas y mdulos de interfaz grfica
de usuario importacin sys, matemticas
desde PySide.QtGui importacin *
desde PySide.QtCore importacin *
clase SketchWindow(QWidget):
def
en eso (S, el ttulo, sorteo,
tamao): sper(SketchWindow, auto).
init () self.setWindowTitle (ttulo)
anchura, altura = self.setGeometry
tamao (60, 60, ancho, alto)
self.windowSize = tamao
self.draw = empate
def paintEvent(Self, evento):
qp = QPainter () qp.begin
(auto)
pen = QPen (Qt.yellow, 4)
qp.setPen (pluma)
self.draw (qp, self.windowSize)
qp.end ()
# Esta funcin empate no est dentro de la clase
SketchWindow def drawSine(Contexto, tamao):
puntos anchura,
altura = size = []
para Xen el rango(Ancho):
ngulo = 5 * x * 2 * math.pi / anchura
QPoint = QPoint (x, (altura / 2) * (1 + Math.sin
(ngulo)))
points.append (QPoint)
context.drawPolyline (puntos)
# Crear la aplicacin y el widget y iniciarlo
aplicacin = QApplication (sys.argv)
Reproductor = SketchWindow ('Sine', DrawSine, (320200))
widget.show ()
application.exec_ ()

E x por iments en P y thon


96

Para dibujar una lnea, o un grupo de lneas, primero requiere la unin del evento de pintura a
una funcin. Por lo tanto, cuando el sistema de ventanas est listo para sacar a la ventana lo
har
Antes de ir al bucle principal, tenemos que establecer una QWidget dentro de la
aplicacin. Este experimento y el ltimo introdujo el concepto de una "clase". La
comprensin de una clase es bastante complicado, pero piense en ello como un
bloque de datos que tambin define las funciones que pueden manipular los
datos. Puede crear varios bloques de datos con la misma clase y todos ellos
tendrn las mismas funciones estn realizando en
El "SketchWindow" es un tipo de QWidget, y compartir todas las funciones
tenido por un QWidget. El SketchWindow aade una nueva forma de inicializar
(__init__) o configurar el QWidget. Tambin define una nueva forma de dibujar
el contenido del widget. Eso es todo lo que tenemos que cambiar, la funcin
normal de la QWidget sigue siendo el mismo y
Observe cmo se ha redefinido el "paintEvent" con su propia funcin de la
pintura. Esta funcin pintura establece una pluma amarilla y luego utiliza la
funcin de dibujo que se le dio a la ventana de dibujo. La funcin de dibujo
dibuja una curva sinusoidal cinco veces, entre el borde izquierdo y el borde
derecho del marco de la ventana. Lo hace mediante la creacin de una lista de
puntos que representan la curva. Sine puede ir -1-1 pero el clculo hace que
esta gama de 0 a 200. Por ltimo, se une todos los puntos utilizando
En este y en el ltimo experimento, habrs notado que la parte superior izquierda
de la pantalla y el contenido de la ventana se encuentra en las coordenadas 0, 0.
Al dibujar en papel cuadriculado el origen (0,0) est en la parte inferior izquierda.
Es importante recordar esto cuando
Computadoras abordan la
pantalla con el origen de
coordenadas (0,0) en la
parte superior izquierda, a
diferencia de dibujar un

E x por iments en P y thon


97

N otas:

N otas:

Munkeng un nois
Los grficos son muy bien, pero si vamos a crear software multimedia cierto,
entonces vamos a tener que dominar salida de audio tambin. Vamos a ver si
nos

importacin
numpy
importacin
ola
importacin
pygame
# Frecuencia de muestreo de un archivo WAV
SAMPLERATE = 44100 # Hz
def createSignal(Frecuencia, duracin):
muestras = int(Duracin * SAMPLERATE)
periodo = SAMPLERATE / frecuencia # En los puntos
de muestreo omega = numpy.pi * 2 / perodo
eje x = numpy.arange (muestras, dtype = numpy.float) * omega
yaxis = 16384 * numpy.sin (eje x)
# 16384 es mxima amplitud (volumen)
retorno yaxis.astype ('Int16') .Encadenar ()
def createWAVFile(Nombre de archivo, la seal):
expediente = Wave.open (nombre de archivo, 'Wb')
expediente.setparams ((1, 2, SAMPLERATE, len(Seal), 'NINGUNO',
'No comprimida'))
expediente.writeframes
(seal) expediente.close ()
def playWAVFile(Nombre del archivo):
pygame.mixer.init ()
sonar = pygame.mixer.Sound (nombre de archivo)
Sound.play ()
# Esperar a sonido para detener
la reproduccin mientras
pygame.mixer.get _ ocupada ():
pasar
# Programa principal comienza aqu
filename = '/tmp/440hz.wav'
Reproduccin de sonidos en un ordenador simplemente significa tomar datos de
un archivo, la conversin a la forma de onda de datos y luego enva de que a
hardware que convierte la forma de onda
En el Raspberry Pi, PyGame se puede utilizar para reproducir sonidos desde
un archivo. En lugar de proporcionar un archivo con algn sonido en l, vamos
a generar un archivo con los datos dentro de ella para jugar sonido. Usted
probablemente sabe que el sonido es en realidad la compresin y

E x por iments en P y thon


98

Esa "accin" se almacena en un ordenador como nmeros que van desde


algunas grandes cifras negativas al mismo nmero positivo, dicen 16384 (2 14 Recordar su binario), con una duracin de tiempo determinado, dicen los 4
segundos!. Si nos movemos hacia arriba y abajo de ese rango de manera uniforme,
por ejemplo, 440 veces por segundo, y pasamos esos nmeros para el hardware de
sonido en el Raspberry Pi, debemos escuchar la nota musical "A", por encima de
Los sin () devuelve la
funcin
un valor numrico entre
-1 Y 1, que representa
el seno del
parmetro
introducido entre los

La uniformidad de este movimiento est dada por la funcin matemtica hemos


visto anteriormente, llamado sinusoidal, que cuando se le da un ngulo rangos
de -1 a 1 para cada
180 grados. Teniendo en cuenta los 360 grados que va -1-1 y luego de vuelta a -1 nuevo.
Esto da a los picos y valles. La funcin de "pecado" en Python no utiliza
No podemos pasar 440 picos y valles cada segundo porque habamos perdemos
todos esos valores en el medio. En el mundo de la msica digital, CD y MP3 envan
44.100 nmeros para obtener los nmeros en el medio de cada segundo de
sonido. Podemos hacer
que tambin, y esto nos da la tasa de muestreo de la msica.
La celebracin de una gran cantidad de datos en Python puede ser ineficiente,
por lo que algunas soluciones inteligentes para la celebracin de los nmeros
puede ser encontrado en una biblioteca llamada "numpy". La primera "arange"
genera una larga lista de nmeros consecutivos - 44,100 por cada segundo de
la msica. Cada uno es un punto en el tiempo de cada muestra de sonido. La
funcin de "pecado" tiene la lista de nmeros, ajustados por omega para la
frecuencia correcta, y le da una lista de
Esta lista de sonidos se pueden guardar en un archivo en un formato de onda
particular. Finalmente,
que onda de sonido se puede jugar en el mezclador de sonido en PyGame.
Normalmente, usted no generar sonidos y luego reproducirlos inmediatamente.
Los archivos de sonido como stas seran creados de antemano, y slo jugaban
dentro de sus propios programas cuando sea necesario. Sin embargo, si
estuviera desarrollando un programa de sonido-manipulacin, lo que se necesita
para crear y manipular los datos de sonido directamente, un poco as. Hay
mejores formas de hacerlo que no requieren escribir en un archivo,

E x por iments en P y thon


99

N otas:

N otas:

Lesson 3.5: Simuluntyoons unnd gunmes


Ahora podemos manejar grficos y sonidos, as como la manipulacin de los
datos y el uso de funciones y clases. Podemos poner todo esto junto para crear
algo realmente

Vamos a ir a esquiar!
Para este experimento, usted necesitar algunas pequeas imgenes ("sprites"),
que se movan alrededor de la pantalla. Puede utilizar cualquier software de
"pintura" para crear una imagen de un esquiador, que es de 20 pxeles de alto y 20
pxeles de ancho. Adems, crear una imagen de un rbol,

# PyGameSkier.py
importacin
pygame
# Un sprite mundo es un sprite pygame
clase
worldSprite(Pygame.sprite.Sprite):
def
en eso (S, la ubicacin, la
imagen): pygame.sprite.Sprite. init
(auto) self.image = foto
self.rect = self.image.get_rect ()
self.rect.left, self.rect.top = ubicacin
def dibujar(Auto, pantalla):
screen.blit (self.image, self.rect)
# Dibujar este elemento sprite en la pantalla (blit)
# Un esquiador en el mundo sabe lo rpido que va
# Y se puede mover
horizontalmente clase
worldSkier(WorldSprite):
velocidad = 5
def actualizacin(Self, direccin):
self.rect.left + = direccin * self.speed
self.rect.left = max(0, min(380, self.rect.left))
clase
SkiWorld(objeto):
Correr = Falso
keydir = 0
def

en eso (Self):
self.running = Verdadero
self.skier = worldSkier ([190,
50], pygame.image.load ("Skier.png"))
def updateWorld(Self):
# El esquiador es parte del mundo y necesita una
reforma self.skier.update (self.keydir)

E x por iments en P y thon


100

N otas:

Crear estas dos sprites


utilizando algn software
de pintura. Guardar como
"skier.png" y "block.png"
(el rbol).

Los juegos son esencialmente simulaciones en tiempo real de un sistema de


reglas que tienen una condicin de partida que se modifica con el tiempo
debido a la entrada externa. Aparte de la
Aqu es una simulacin de slalom de esqu, donde un esquiador hace su camino
a travs de brechas en filas de rboles. El juego utiliza un generador de
nmeros aleatorios para definir dnde poner la brecha entre los rboles. En
lugar de competir verdaderamente el jugador por una pendiente, esta
Este es un sistema mucho ms complicado y la explicacin de la simulacin es
en dos partes. En primer lugar, cmo el programa mueve el esquiador en la
pantalla. En segundo lugar, cmo
Antes de que se inicie el bucle principal, el mundo del juego se debe crear o
inicializado. Mundos del juego estn formados por objetos y, en nuestro caso, se
trata de los pequeos sprites
En la parte superior del programa, se crea una clase "worldSprite", que define lo
que un sprite es y lo que puede hacer con ella. Entonces, creamos un esquiador y
permitirle moverse horizontalmente por una distancia cuando se actualiza. Por
ltimo, definimos el mundo, que es slo un esquiador y un poco de informacin
acerca de las teclas del teclado que tiene
A pesar de que hemos definido estas cosas, no hemos hecho los cre.
Esto sucede cuando creamos el SkiWorld.

E x por iments en P y thon


101

def KeyEvent(Self, evento):


# Evento debe ser acontecimiento clave pero slo movimiento
# Si se pulsa la tecla hacia abajo y no lanzado
hasta self.keydir = (0 si Event.type ==
pygame.KEYUP ms
-1 si event.key == pygame.K_LEFT ms
1 si event.key == pygame.K_RIGHT ms 0)
Biblioteca # pygame quiere hacer un par de cosas antes de que
podamos usarlo pygame.init ()
pygame.display.set_caption ("Ski Slalom")
pygame.key.set_repeat (100, 5)
# Crear algo para aprovechar con un tamao de 400 de
ancho lienzo = pygame.display.set_mode ([400, 500])
# Tendremos que tener una constante de tiempo entre
tramas reloj = pygame.time.Clock ()
mundo = SkiWorld ()
# Echa de entrada, cambiar el mundo del juego y mostrar el nuevo
mundo del juego mientras (World.running):
# Comprobar eventos externos (pulsaciones de teclas, por
ejemplo)
para evento en funcin pygame.event.get ():
si Event.type == pygame.QUIT: # Dejar de correr el
juego world.running = Falso
elif (Hasattr (evento, 'Clave')): # Proceso de esta entrada
del teclado world.keyEvent (evento)
# Actualiza el mundo
del juego
world.updateWorld ()
# Dibujar el mundo en el
lienzo world.drawWorld
(lienzo)
# Importante contar con una constante de tiempo entre cada
flip pantalla.
# En este caso, espere por lo menos hasta 1/30 de segundo
ha pasado clock.tick (30)
# Voltear la pantalla para mostrar la pantalla

E x por iments en P y thon


102

N otas:

N otas:

Laddeng trees
importacin aleatorio
clase worldTreeGroup(Pygame.sprite.Group):
velocidad = 5
def

en eso (Auto, imagen):


pygame.sprite.Group. init (auto)
treePicture = foto
treerow = pygame.sprite.Group ()
# En filas con una brecha en un punto intermedio
# Slo tienen una lnea de rboles cada quinta fila o la
# Juego es demasiado difcil
para yen el rango(0, 400):
si (Y 5% == 0): # Cada quinta, agregar fila rbol con
un hueco gapsize = 3 + random.randint (0,6) #
Tamao de brecha
# Posicin del hueco de partida
gapstart = random.randint (0,10 - (gapsize // 2))

# Crear una hilera de 20 rboles, pero 'gapsize'


# Saltar rboles en el
medio para ben el
rango(0,20):
si b> = gapstart y gapsize> 0:
gapsize= 1 ms:
NewTree = worldSprite ([b * 20, (y
+ 10) * 20], treePicture)
treeRow.add
(NewTree)
self.add
(treerow)
def actualizacin(Self):
para treerow en auto:
Ahora, si podemos conseguir hileras de rboles que avanzan sobre la posicin
del esquiador, este juego lo har
ser mucho ms difcil. Adems, si el esquiador realiza un rbol, el juego debe
Para configurar el "fuera de pista", esta clase adicional establece filas de rboles que tienen un
hueco en el centro para el esquiador pase a travs. El initialiser crea un grupo de rboles
mediante el uso de la imagen que se da y la adicin de un nmero de veces (dejando un
espacio) a un grupo que representa a una hilera de rboles. A continuacin, aade que el grupo
al grupo ms grande que representa a un grupo de filas de rboles. Note el uso de la divisin
entera, "//", para dividir el "gapsize". Sin ella, dividiendo gapsize un 2 puede dar un medio y no un
conjunto
La parte actualizacin de la clase define lo que es un grupo de rboles puede
hacer cuando se actualiza. El grupo tomar todas las hileras de rboles dentro
de ella y moverlos por una pequea distancia. Adems, cuando la fila de
rboles va detrs del esquiador, de la parte superior de la

E x por iments en P y thon


103

Este grupo del rbol del mundo no hace nada todava, porque no ha sido
utilizada por el principal
juego. La siguiente lista cambia el juego principal de usar la nueva clase.

SkiWorld
Hacer estos cambios en la clase "SkiWorld", no aadirlos al final de su
programa. Vea si usted entiende cmo extender la SkiWorld lo que crear
rboles, actualizarlos, dibujarlos y compruebe si el esquiador choca con el
grupo

def

en eso (Self):
self.running = Verdadero
self.skier = worldSkier ([190, 50], pygame.image.load
("Skier.png"))
## aadiendo rboles
self.trees = worldTreeGroup (pygame.image.load ("Block.png"))
def updateWorld(Self):
# El esquiador es parte del mundo y necesita una
reforma self.skier.update (self.keydir)
## Mover las filas de rboles - la eliminacin de cualquier
## Lnea que es la parte superior de la
pantalla self.trees.update ()
## Comprobar si el esquiador ha colisionado con cualquier
## Sprites rbol en las filas de rboles en el grupo de rboles
si pygame.sprite.spritecollide (self.skier, self.trees,
Falso):
self.running = Falso
##
de
##
la

Comprobar si el grupo de rboles se ha quedado sin hileras


rboles Esquiador lleg a la parte inferior de
pista si len(Self.trees) == 0:
self.running = Falso

def drawWorld(Self, lienzo):


canvas.fill ([255, 250, 250]) # Hacer un fondo blanco
En el SkiWorld, se aade uno de estos grupos de rboles cuando se inicializa el
mundo, los rboles se actualizan cuando se actualiza el mundo y se comprueba
por la colisin entre el esquiador y cualquier elemento sprite en el grupo de filas
de rboles. Por ltimo, si el grupo rbol
El nico cambio en el bucle principal es que el grupo se basa en el
lienzo.
Usted podra intentar agregar efectos de sonido utilizando el ejemplo de sonido antes. Si usted
puede encontrar algunos archivos "wav" de otra fuente, slo tiene que jugar con ellos. Esto har
guarda les genera a s mismo.

E x por iments en P y thon


104

N otas:

N otas:

Ahora tenemos nuestro


esquiador,
nuestros rboles y
nuestro juego. A ver si
se le puede llegar al

E x por iments en P y thon


105

Lesson 3.6: Lyomyoted resources - memor y Y storunge


importacin tempfile, heapq
# Esto es un generador (observe el rendimiento)
def linesFromFile(SortedFile):
while True:
elemento = (). sortedFile.readline tira ()
si no elemento: # Ningn elemento, por lo que el archivo
est vaco
rendimiento
de ruptura
elemento
# Abrir la filmlist (esto nada no ha ledo an)
pelculas = abierto('Filmlist','R')
generatorList = []
while True:
# Leer hasta a 10 lneas en una
matriz elementsToSort = []
para yoen el rango(10):
pelcula = films.readline () # Solo lee una lnea si no
pelcula:
rotur
a
elementsToSort.append (pelcula)
# Si se leyeron sin lneas, hemos terminado de leer el archivo
muy grande
si no elementsToSort:
rotura
# Crear un archivo temporal y ordenar los 10 elementos en
ese archivo sortedFile = tempfile.TemporaryFile ()
para artculo en ordenados(ElementsToSort):
sortedFile.write (bytes(Item.encode ()))
# Devolver este archivo al comienzo lista para
# Leer de nuevo por el
heapq sortedFile.seek (0)
# Poner el generador en la matriz generatorList;
# Recordar esta funcin no se ejecuta
# Hasta que un bucle pide al siguiente valor.
generatorList.append (linesFromFile
(sortedFile))

E x por iments en P y thon


106

N otas:

El almacenamiento permanente en un equipo (donde todos los datos se


mantienen cuando la mquina est apagada) suele ser mayor que el
almacenamiento temporal (memoria interna del ordenador, que se pierde
cuando se va la luz). Por Raspberry PI, su tarjeta SD (almacenamiento
permanente) es probable que sea mucho mayor que la 256Mb de RAM
(almacenamiento temporal). Mirar hacia atrs en el experimento anterior, que
carga un archivo de texto, ordenadas segn las entradas y luego muestra la
lista ordenada. Si el archivo fue mayor que el
Sistema operativo Linux del Raspberry Pi tiene una solucin de memoria
virtual, pero lo que si se quera mantener bajos la memoria Python se utiliza?
La respuesta es ordenar parte de la lista, guardar esa lista parcialmente
ordenada al almacenamiento permanente, y repetir. Una vez que todo el
archivo de gran tamao ha sido parcialmente ordenados a archivos ms
pequeos, unir todas las entradas en los archivos juntos, uno por uno para que
el archivo final. Muy poco es
La parte ms inteligente aqu es utilizar un generador de Python y
cola montn.
La comprensin de un "generador" es bastante difcil, pero imagino que es como
una funcin que genera los elementos de una secuencia. Despus de que "cede"
un elemento de la secuencia, no hace nada hasta que se llama de nuevo. As
que el generador de aqu toma un archivo, lee una lnea de ella y los
rendimientos que se alinean a lo que llam. Una vez que no puede encontrar
ningn ms lneas, simplemente deja de volver artculos, que la persona que
llama se dar cuenta y hacer
El archivo que se pasa a este generador es un subconjunto del archivo ms
grande que queremos ordenar. El primer bucle crea una gran cantidad de
archivos temporales en su almacenamiento permanente, cada uno de los
cuales contiene 10 lneas que han sido ordenados. El primer bucle no hace uso
de los archivos parciales ordenados inmediatamente. Se anexa el generador a
una

lista.

Est

haciendo

una

lista

de

las

funciones

del

generador

(linesFromFile) que leer las lneas de una en una


La funcin de fusin "heapq" recorre los valores dados por los generadores y
los combina en orden. Se asume que los elementos del generador vendrn en
una forma ordenada. As, imagine que toma las entradas iniciales de cada
archivo parcial hasta que se haya resuelto cul de ellos es el primero. Da que
volver, entonces contina haciendo esto, uno por uno, que slo cuenten con
una pequea cantidad en la memoria. Todo lo que queda es

E x por iments en P y thon


107

N otas:

Lesson 3.7: Laccessyong the web - provyoding un weunther Forecunst


desde urllib.request importacin
urlopen desde xml.dom importacin
minidom
importacin tiempo
# Extraer informacin sobre el tiempo por el acaparamiento de las
etiquetas de la fuente RSS
# 'Canal' contiene todos los ttulos que contienen texto
encabezado tiempo def ExtractWeather(Doc):
para nodo en doc.getElementsByTagName ('Canal'):
para ttulo en node.getElementsByTagName ('Ttulo'):
impresin(Title.firstChild.data)
Resultados = []
bbc_weather = "Http://open.live.bbc.co.uk/weather/feeds/en/"
Locaciones = ["2653941","2655603","2633352","2653822","2650752"]
Pronosticar = "/3dayforecast.rss"
start = time.time ()
para ubicacin en lugares:
# Abrir el feed RSS y analizar el resultado en un documento
web
# Y aadir el doc a la final de la lista results.append
(minidom.parse (urlopen (bbc_weather + ubicacin +
Previsin)))
elapsedTime = (time.time () - inicio))
para webdoc en
resultados:
Estamos llegando al final de los experimentos ahora, y stos se requiere que usted
tenga una conexin a Internet. La primera parte de este experimento que muestra
cmo obtener informes de tiempo en un feed RSS. Una fuente RSS es como una
pgina web recortado hacia abajo con solamente un conjunto estndar de datos que
pueden ser agarr y se muestra. Cuando nos fijamos en una pgina web o un feed
RSS, usted realmente est agarrando una lista de instrucciones sobre
Este programa est configurado para encontrar el pronstico de tres das por
cinco lugares diferentes en el Reino Unido. Se agarra a las pginas en lo que
se conoce como un "Documento" y luego se extrae la informacin marcada
como "ttulos" de ese documento. Estos contienen la
La funcin principal de acaparamiento de datos de la web es "urlopen". Un URL
es un "localizador uniforme de recursos", que es el equivalente en Internet de
una direccin de calle para cualquier cosa y todo en la web. Un llamado a la
"urlopen" se detendr el programa Python hasta que encuentra lo que busca y
devuelve un resultado. Esto puede tardar menos de un segundo, pero tambin
podra llevar varios segundos. Esto podra ser un problema, y explica por qu
usted tiene que esperar a que su navegador para responder a
Este programa puede tardar unos segundos antes de que se complete ir a
buscar los cinco informes. La lista toma una instantnea de las veces antes de
llamar "urlopen" y de nuevo despus de que

E x por iments en P y thon


108

N otas:

N otas:

threundyong - why wunyot For responses?


importacin enhebrar
desde urllib.request importacin
urlopen desde xml.dom importacin
minidom
importacin tiempo
# Extraer informacin sobre el tiempo por el acaparamiento de las
etiquetas de la fuente RSS
# 'Canal' contiene todos los ttulos que contienen texto
encabezado tiempo def ExtractWeather(Doc):
para nodo en doc.getElementsByTagName ('Canal'):
para ttulo en node.getElementsByTagName ('Ttulo'):
impresin(Title.firstChild.data)
clase urlOpenThread(Threading.Thread):
def
en eso (Self, host):
threading.Thread. init (auto)
self.host = anfitrin
def carrera(Self):
# Abrir el feed RSS y luego analizar el resultado en un
# Documento web - aadir esto a final de la lista de
resultados resultados results.append global
(minidom.parse (urlopen (self.host)))
bbc_weather = "Http://open.live.bbc.co.uk/weather/feeds/en/"
Locaciones = ["2653941","2655603","2633352","2653822","2650752"]
Pronosticar = "/3dayforecast.rss"
Resultados = []
startingThreads = threading.activeCount ()
start = time.time ()
# Crear un hilo para cada url abierto y comenzar
funcionando para ubicacin en lugares:
urlOpenThread (bbc_weather + ubicacin + prnostico) .start
()
mientras threading.activeCount ()> startingThreads:
pasar
impresin("Tiempo transcurrido:% s" % (Time.time () - inicio))

E x por iments en P y thon


109

Al acceder a la web, no obtendr una respuesta inmediata a sus peticiones. Al


ejecutar el experimento anterior Python es posible que haya tenido suerte y
tena
Las computadoras pueden hacer muchas cosas muy rpidamente y es una
vergenza para dejar un equipo de espera. Este experimento demuestra que el
computador puede tejer hilos de
Para evitar la espera de todas las pginas para responder, se puede decir que el equipo
funcione las cinco solicitudes de estos informes del tiempo, al mismo tiempo y no esperar a que
otros a
La tcnica se llama "enhebrar". Cada hilo se ejecuta al mismo tiempo que los
dems. Cada solicitud de informe del tiempo se realiza mediante "urlopen",
como antes, y cada detendr su hilo hasta que tenga una respuesta pero no va
a detener a los otros. Una vez finalizada cada uno que va a continuar. Los
temas pueden ser utilizados para cualquier cosa que usted desea ejecutar al
mismo tiempo, pero los problemas se producen si empiezan a cambiar el
mismo bit de memoria - as, ser advertidos. Imagina escribir un correo
electrnico en su ordenador y
El experimento define una clase que puede abrir una URL como un hilo y
registrar los datos devueltos en una lista global de los resultados. Esta clase
crea un nuevo hilo para abrir una direccin URL para cada direccin web, y la
inicia. El programa principal espera hasta que el nmero
Observe cmo se tarda mucho menos tiempo para las cinco direcciones URL
que se solicitarn cuando
se ejecutan simultneamente.

E x por iments en P y thon


110

N otas:

thyos yos only the begyonnyong - where do nosotros go From here?


Estos experimentos pueden haber dejado exhausta y un poco confuso, pero
espero que tambin han despertado su curiosidad para aprender ms sobre la
programacin informtica, ciencias de la computacin y la informtica en
general. Esta es slo
Este no es un manual de referencia o un tutorial, pero el lenguaje Python viene
con una gua de referencia completa. Si usted no tiene acceso a internet,
puede

$ Pydoc -g y
Seleccione "del navegador abierta" en el cuadro de dilogo que aparece. Esto
puede tardar 20 segundos en aparecer, as que tenga paciencia. A partir de
aqu, se puede ver todo el Python
Si usted tiene acceso a internet, hay un montn de recursos que cubren cmo
programar usando Python. Ahora usted tiene una habilidad para introducir el
cdigo, la ejecucin de cdigo
lLectura para principiantes

http://wiki.python.org/moin/BeginnersGuide/NonProgrammers
lEl aprender con Python

http://openbookproject.net/thinkcs/python/english2e /
lAprender Python The Hard Way

http://learnpythonthehardway.org/book /
lInventar con Python

http://inventwithpython.com/chapters /
lTutorial de Python

http://docs.python.org/tutorial /
Cuando usted est atascado puede probar la principal fuente de todo
conocimiento (para Python). Por ejemplo, la informacin sobre str, chr, archivo,
al azar, matemticas, PySide y heapq
lPython Reference Library

http://docs.python.org/library/
lPySide

http://www.pyside.org/docs/pyside /
lPyGame

http: //www.pygame.org
lPython ndice Paquete

http: //pypi.python.or g
Para obtener informacin acerca de impresin, mientras que, el
rendimiento, para, descanso, pasar mira:
lReferencia del lenguaje Python

http://docs.python.org/reference /

E x por iments en P y thon


111

N otas:

N otas:

XKCD # 353 "Python"


http://xkcd.com

E x por iments en P y thon


112

Interfaz hombre-mquina
Captulo 4

Od la palabra "equipo" y probablemente piense en una caja con un monitor


conectado, como un PC de escritorio. Pero en estos das, casi todos los
dispositivos electrnicos, desde su TV o navegacin va satlite de sus padres,
hasta el piloto automtico de un avin jumbo, es
Con el fin de hacer el trabajo que estn programados para, las computadoras
tienen que recibir informacin del mundo real que les dicen qu hacer; estos son
llamados "insumos". Una entrada puede ser un usuario escribiendo un comando
o hacer clic en algo con el ratn, o podra ser las lecturas de los sensores en un
ala de avin, que cuentan la piloto automtico la ubicacin velocidad del viento,
presin atmosfrica y la brjula del avin. Todo

Funcionar,
ordenadores
necesitan insumos informacin de una
fuente externa.
Procesan esta
informacin y
producir un
resultado, llamado

Diversin con los puertos


Las entradas y salidas tambin pueden venir en forma de una conexin de datos,
como por ejemplo un enlace de red a Internet. Piense en el Internet, y
probablemente piense en la web
Hay un montn de otras maneras de utilizar el Internet, como el correo
electrnico, mensajera instantnea, grupos de noticias basados en texto o
iniciar sesin en otro equipo mediante el Shell (SSH) protocolo de red segura.
Cada una de estas diferentes formas de uso de Internet tiene un
Por "puerto", no me refiero a una conexin fsica real en el equipo, como por
ejemplo un puerto USB o FireWire. En este contexto, un puerto es una conexin
de software. Un puerto puede ser abierta o cerrada. Si est abierto, entonces
eso significa simplemente que el programa aceptar conexiones a travs de
ella. Si el puerto est cerrado, entonces el programa no aceptar
Por ejemplo, el protocolo HTTP utilizado por la World Wide Web acepta entradas
utilizando el puerto TCP 80. Si el puerto 80 est abierto, un servidor web
responder a una peticin de un cliente, como el navegador web, mostrando la
pgina web solicitada . Si uno de los administradores del servidor que ha cerrado el
puerto 80, entonces usted no ser capaz de

Entre paramento hombremquina


113

N otas:

Otros puertos comunes incluyen puerto TCP 25, que se utiliza para el
protocolo de correo electrnico SMTP; los puertos 20 y 21, que se utilizan
para el protocolo de transferencia de archivos (FTP); y el puerto 161, para el
protocolo de gestin de red SNMP. Hay miles de diferentes puertos
disponibles para su uso y por lo tanto miles de diferentes maneras a
En este captulo, vamos a utilizar el Raspberry Pi para interactuar con una amplia
gama de aplicaciones de Internet, incluyendo Twitter y correo electrnico. Nos
comunicamos con cada programa a travs del puerto correspondiente,
aportaciones que hace que el programa para ejecutar una funcin especfica. Y
vamos a hacerlo todo mediante la programacin Python
Todos los ejemplos de esta seccin estn diseados para ser lo ms simple
posible. Cada ejercicio demuestra slo un tipo de comunicacin. Piense en
estos ejemplos como ingredientes de una receta que, cuando se mezclan,
producen algo mucho mejor que las partes individuales. El alcance de lo que
hacen slo est limitado por

Qu herramientas se necesitan?
Para completar los ejercicios de este captulo necesitar el programa "IDLE" que utiliz en el
ltimo captulo. Algunos de los ejercicios tambin requieren que se instale mdulos de Python
adicionales. Te lo dir cuando este es el caso. Siempre que sea posible, me han hecho estos
extras disponibles en la tarjeta SD que viene con el Raspberry Pi, a fin de buscar
por el logotipo de la
tarjeta SD!
http://goo.gl/vK3V P

Entre paramento hombremquina


114

N otas:

N otas:

Lesson 4.1: Tw yotter


Para completar este ejercicio, necesitar instalar las herramientas de Python Twitter. Usted
puede descargar estos de http://pypi.python.org/pypi/twitter /o instalarlos
desde la tarjeta SD que viene con el Raspberry Pi.
La siguiente secuencia de comandos Python twittear el mensaje "Hola,
mundo!" De su
Raspberry Pi. A continuacin, muestra una lista de todos sus tweets personales.
a la vista! Este ejemplo espect Cm simple est tipo de aplicacin lata ser
culos o
e
,
usando
Python.

Tip ...

importacin os
desde gorjeo importacin *
# Ir a https://dev.twitter.com/apps/new para crear su propio
# CONSUMER_KEY y CONSUMER_SECRET
# Tenga en cuenta que usted necesita para establecer el nivel de
acceso a leer y escribir
# Para este script para trabajar (Se encuentra en la pestaa de
configuracin una vez que
# Han creado una nueva aplicacin)
CONSUMER_KEY = '9HvofZMpvHo0KGZyg9ckg'
CONSUMER_SECRET = 'S75MwXN2H0h2qIYszc51WtHTbpbouhDkr6CCTBPzA'
# Obtener la ruta completa del archivo en el .twitterdemo_oauth
# Directorio personal del usuario actual
oauth_filename = os.path.join (os.path.expanduser ('~'),
'.twitterdemo_oauth')
# Get cuenta de twitter Entrar Info
si no os.path.exists (oauth_filename):
oauth_dance ('Raspberry Pi Twitter Demo',
CONSUMER_KEY,
CONSUMER_SECRET, oauth_filename)
(Oauth_token, oauth_token_secret) = read_token_file (oauth_filename)
# Conectarse a Twitter
auth = OAuth (oauth_token, oauth_token_secret,
CONSUMER_KEY, CONSUMER_SECRET)
Twitter Twitter = (auth = auth)
# Tweet una nueva actualizacin de estado
twitter.statuses.update (estado ="Hola
Mundo!")
# Mostrar todos mis tweets
para Tweet en twitter.statuses.user_timeline
Usted tiene la palabra
Trate de pensar en otras maneras en que usted podra utilizar este mecanismo. Por ejemplo,
tener una entrada de algn lugar, procesarla y twittear el resultado. Usted podra detectar el
tiempo fuera y twittear el resultado. Usted podra incluso hacer un tweet desde su telfono
mvil y que su Raspberry Pi leer y reaccionar a l (al jugar algunos
msica,
ejemplo)!

por

Entre paramento hombremquina


115

Al igual que en el
captulo anterior,
a veces tenemos
ms cdigo para
escribir la que
cabe en una sola
lnea. Cuando
vea una lnea de
cdigo que va en
una nueva lnea,
no pulse
Vuelva a iniciar
una nueva lnea,
simplemente
dejar
que
el
ajuste de lnea y

Lesasn 4.2: Emamyol unpplyocuntyoon


Correo electrnico se transfiere a travs de Internet usando algo llamado SMTP Protocolo simple de transferencia de correo. SMTP utiliza el puerto 25. No te
preocupes; no es necesario entender cmo funciona SMTP para poder enviar un
correo electrnico. Hay un Python
Utilice la secuencia de comandos de Python abajo
para enviar un solo correo electrnico.

email-example.py:
importacin smtplib
desde email.mime.text importacin MimeText
# Crear el correo electrnico
mensaje = "" "Esta es una prueba de uso de Python en
Raspberry Pi para enviar un correo electrnico. Que se
diviertan!" ""
msg = MimeText (mensaje) msg ['Asunto'] =
'Test RP _ Python' msg ['De'] = 'Mi RP _
<My_rpi @ example.com>'msg ['Para'] =
'vosotr @ tudomain.com'
# Enviar el correo electrnico
s = smtplib.SMTP ('smtpserver') S.login ('nombre
de usuario','contrasea') S.sendmail (msg ['De'],
Msg ['Para'], Msg.as_string ()) s.quit ()
Puede modificar el programa para enviar archivos adjuntos de correo electrnico, as como texto
simple. El ejemplo de la pgina siguiente enva una imagen (como un archivo JPG) como
archivo adjunto al mensaje.

Entre paramento hombremquina


116

N otas:

N otas:

email-attachment.py:
importacin smtplib
desde email.mime.multipart importacin
MimeMultipart desde email.mime.text
importacin MimeText
desde email.mime.image importacin MIMEImage
# Crear correo
electrnico de varias
partes msg =
MimeMultipart () msg
['Asunto'] = 'Lily'
msg ['De'] = 'Mi RP _ <My_rpi @ example.com>'
msg ['Para'] = 'vosotr @ tudomain.com'
msg.preamble = "Este es un mensaje de varias partes en formato
MIME.
# Adjuntar texto del correo electrnico
mensaje = "" "Esta es una prueba de uso de Python en
Raspberry Pi para enviar un correo electrnico. Este correo
electrnico tambin incluye una imagen como un archivo
adjunto de correo electrnico. Que se diviertan!" ""
msg.attach (MimeText (mensaje))
# Adjuntar un archivo JPG
filename = 'picture.jpg'
con abierta(Nombre del archivo, 'Rb')como f:
img = MIMEImage (f.read
())
img.add_header ('Content-Disposition','Apego', Nombre de archivo =
nombre de archivo)
msg.attach (img)

Usted tiene la palabra


Una vez ms, tratar de pensar en otras maneras que usted puede utilizar este
script. Por ejemplo, se puede generar el contenido del correo electrnico (la
salida) basado en una entrada. Por ejemplo, el control de la temperatura
ambiente y envo por correo electrnico un aviso si se est haciendo demasiado
calor. Esto se utiliza regularmente en salas de servidores, por ejemplo, para
detectar cuando el aire
Nota: Usted tendr que cambiar el texto resaltado en amarillo a su propio correo electrnico
direccin y servidor de correo electrnico detalles sobre el programa para
trabajar.
Hay ms informacin sobre los mdulos de correo electrnico en Python
disponible en
http://docs.python.org/py3k/library/email.htm l

Entre paramento hombremquina


117

Lesasn 40.3: RemAntiguo Testamentoe Procedure Cunll


Una llamada a procedimiento remoto (RPC) es algo de cdigo en un programa que
hace que otro programa para hacer algo, por ejemplo, ejecutar una subrutina (un
poco de un programa que realiza una tarea especfica). Los dos programas no
necesariamente tienen que estar en
Cuando se utiliza RPC, llamar a un subprograma se ve igual en su cdigo como
si se est ejecutando como parte de su programa. La comunicacin entre
programas sigue siendo en gran parte oculta y el programador no tiene que
preocuparse acerca de la
El lenguaje de los programas estn escritos en y tipo de computadoras no
tienen que ser los mismos, ya sea - que puede ser completamente diferente de
hardware, sistemas operativos y lenguajes de programacin. Por ejemplo, una
aplicacin de telfono mvil podra ser programado para llamar a un programa
en Python que se ejecuta en un Raspberry Pi para realizar una
El tipo de llamada a procedimiento remoto que estamos utilizando para este
ejemplo se llama XMLRPC. Extensible Markup Language (XML) es un lenguaje
de marcado que define un conjunto de reglas para codificar datos en un
formato que es a la vez legible y
Hay dos programas aqu - un "servidor" y un "cliente". El servidor se encuentra
en espera
para uno o ms clientes a pedir que haga algo.

server.py
rpc_:
desde xmlrpc.server importacin SimpleXMLRPCServer
def Hola(Name ='Mundo'):
"" "Devuelve una cadena que dice hola al nombre
dado" "" retorno "Hola,% s! ' Nombre%
def aadir(X, y):
"" "Agregue dos variables juntas y devolver el
resultado" "" retorno x + y
# Configurar el servidor
server = SimpleXMLRPCServer (("Localhost", 8000))
# Registrarse nuestras
funciones
server.register_function
(hola)
server.register_function
(aadir)

Entre paramento hombremquina


118

N otas:

N otas:

rpc_client.py
:
importacin xmlrpc.client
s = xmlrpc.client.ServerProxy ('Http: // localhost: 8000 ")
# Llamar a la funcin 'hola' sin parmetros
impresin(S.hello ())
# Llamar a la funcin 'hola' con un
nombre impresin(S.hello ('XMLRPC'))
# Sumar dos nmeros
impresin('2 + 3 =% s'
S.add% (2,3))
Para ejecutar este ejemplo, necesita dos ventanas libres separados - uno para el servidor y uno
para el cliente. Tiene que ejecutar el servidor primero para que te est esperando
solicitudes del cliente. Para detener el servidor, pulse Ctrl-C.
Como funciona? El programa servidor se sienta y espera a que las peticiones de
los clientes. El programa cliente, cuando se ejecuta, llama a las subrutinas
"hola" y "aadir". Las llamadas se pasan desde el cliente al programa servidor,
donde las funciones se ejecutan en realidad. El resultado se devuelve entonces
al programa de cliente, que muestra el resultado
Dnde se podra utilizar este mecanismo XMLRPC? Bueno, imagina que tienes
varias Raspberry Pis, cada uno conectado a una pantalla situada en una
habitacin diferente. Usted tambin tiene una computadora central que ejecuta
una aplicacin de control con un
Esta aplicacin central podra supervisar y controlar todas las habitaciones
mediante la comunicacin con persona Raspberry Pis - dicindoles lo que
desea mostrar en la pantalla, los dispositivos de control a travs de GPIO, y
devolver los datos registrados desde la habitacin (como los niveles de luz o
temperatura). Incluso se puede tomar fotos con una cmara! Cada Raspberry
Pi funcionara como un servidor XMLRPC; el programa de control central
actuara como

Usted tiene la palabra


Puedes leer ms acerca de los mdulos de Python XMLRPC aqu:
http://docs.python.org/py3k/library/xmlrpc.server.htm lht
tp://docs.python.org/py3k/library/xmlrpc.client.htm l
Hay, sin embargo, las bibliotecas XMLRPC disponibles en muchos otros
programas
idiomas.

Entre paramento hombremquina


119

N otas:

Lesson 4.4: Web unpplyocuntyoons


Una aplicacin web es un programa que se comunica en la World Wide Web. Al
igual que cualquier otro programa, que tiene entradas, las procesa y produce alguna
salida. No todos los de entrada y salida de una aplicacin web tiene que ser a travs
de una web
La World Wide Web utiliza algo llamado HTTP (Hyper Text Transfer Protocol).
Esto es lo que los servidores web y navegadores web utilizan para
comunicarse entre s en un nivel bajo. El nmero de puerto utilizado para HTTP
es 80. El detalle de cmo funciona HTTP no tiene de qu preocuparnos por el
momento - todo el trabajo se hace para nosotros por la web
Un URL (Uniform Resource Locator), tambin conocido como una direccin web, es
lo que se escriba en la barra de direcciones de un navegador web. Se puede
compone de una
protocolo: // hostname: port / direccin
Echemos un vistazo a las partes
a fin de:
Protocol
o
Para un sitio web, esto es normalmente "HTTP:" pero no tiene que ser. Sitios web
seguros utilizan los "https:" cifrados de protocolo, y la mayora de los navegadores
tambin pueden trabajar con el protocolo de transferencia de archivos ("FTP").
Nombre
de host

Tip ...

Este es el nombre del equipo, el servidor web, en la que reside la pgina web.
En estos ejemplos, se utiliza el nombre de host "localhost", que significa que el
equipo en el que reside un programa.
Puerto
Este es un nmero entre 1 y 65535, que especifica el puerto TCP que se
utilizar para la comunicacin. Si no se especifica, el puerto predeterminado,
80, es utilizado.
Direccin
Esta es la direccin de la pgina web especfica que desea ver. Por ejemplo,
en el URL www.raspberrypi.org/faq slas "preguntas frecuentes" sufijo es la
direccin.
HTML (Hypertext Markup Language) es un lenguaje utilizado para describir el
diseo de una pgina web. En estos dos ejemplos aqu, te dars cuenta de que
la pgina web creada es bastante bsico. Imagnese cmo se puede mejorar
esto slo modificando

Entre paramento hombremquina


120

Si desea
conocer la
Direccin IP de
el Raspberry Pi,
abra el Terminal,
escriba el
comando "ifconfig"
y pulse Intro.
Este comando
no hace el
mismo trabajo
que "ipconfig"
en un equipo de
MS Windows.

N otas:

YOnputs
La entrada principal a una aplicacin web se encuentra en la forma de una
"solicitud de pgina" de un navegador web. Como parte de esta solicitud, las
variables se pasan desde el navegador web al servidor web (en este caso, su
programa). Estas variables pueden incluir cosas tales como la pgina
especfica que quieres ver, datos de acceso, los detalles sobre la forma en que
lo hara
Normalmente, existen estas variables slo por el tiempo de vida de una peticin.
Una vez que cierre su navegador, se han ido, y si usted visita el sitio de nuevo,
tendrs que especificar los detalles de su solicitud al servidor de nuevo. Si
quieres variables que persisten entre las peticiones, se puede usar un tipo
especial de variable llamada "cookie".
Entradas de su aplicacin pueden ser algo ms que solicitudes de pgina desde un navegador
web, aunque - una base de datos a menudo se utiliza para almacenar datos, por ejemplo.
Incluso se puede utilizar

Salidas
Las salidas de una aplicacin web se llaman una "respuesta". La salida est
normalmente en la forma de la HTML de una pgina web, aunque podra ser
cualquier tipo de datos, como un archivo JPG (una imagen). El contenido de
esta salida es generada por la aplicacin web. Usted podra incluso hacer que
su aplicacin produzca un tipo completamente diferente de la produccin, as
como una pgina web - por ejemplo, cambiar el mensaje en una

Tratamiento
En las pginas siguientes son dos programas Python simples que se ejecutan
como servidores web. Este cdigo tambin funcionar sin modificaciones en un
servidor en ejecucin web comercial
Para completar este ejercicio, tendr que descargar e instalar el "WebOb 1.2" mdulo de Python.
Usted encontrar esta bien en la tarjeta SD Raspberry Pi o en la web
direccin http://pypi.python.org/pypi/WebOb /

Entre paramento hombremquina


121

N otas:

hello-web.py:
desde WebOb importacin Peticin, Respuesta
clase Aplicacin web(objeto):
def
llamada (Self, ambiental, start_response):
# Capturar la peticin (de entrada)
req = Request (ambiental)
# Obtener la variable de nombre,
# Valor predeterminado de 'Mundo' si no se
establece name = req.params.get
('Nombre','Mundo')
# Generar el HTML de la respuesta (salida)
html = "" "
<P> Hola% s! </ P>
<Form method = "post">
Escriba su nombre: <input type = "text" name = "nombre">
<Input type = "submit" value = "Enviar formulario">
</ Form>
"" "
# Crear y devolver la respuesta
resp = Respuesta (html% nombre)
retorno resp (ambiental, start_response)
aplicacin = mdulo web ()
# Programa principal - el
servidor web si
Nombre ==
'Principal':
desde wsgiref.simple_server importacin
make_server port = 8080
httpd = make_server ('', El puerto, la
aplicacin) impresin("Sirviendo a HTTP
Ejecutar esta aplicacin en IDLE, a continuacin, poner en marcha un
navegador web. Ir a la URL "Http: // localhost: 808 0 ". Si est trabajando
desde otro equipo disponible en la misma red, cambiar "localhost" a la
direccin IP de su Raspberry Pi. Recuerde, usted puede encontrar su
direccin IP, escriba "ifconfig" en el Terminal.
Tenga en cuenta que la mayora de las pginas web son normalmente servidos
en el puerto 80. Para poder ejecutar en un puerto por debajo de 1024, su
programa se debe ejecutar con privilegios (root) "superusuario". Hemos utilizado
el puerto 8080 con este programa - esto es comnmente utilizado por web
Como funciona? La variable "nombre" se pasa a travs de su programa en la
forma de una peticin "POST". Esto se genera mediante un formulario en HTML.
La primera vez que su pgina se ve, la variable "nombre" no est definida, por
lo que un valor por defecto de "El Mundo"

Entre paramento hombremquina


122

N otas:

Cookes decir,s
Acabamos de ver un ejemplo utilizando un sencillo formulario. Usted puede haber
notado un inconveniente - la variable "name" de esa forma slo dura el tiempo de vida
de una peticin, entonces se pierde. Si queremos una variable permanezca entre
peticiones, tenemos que utilizar otro tipo de variable llamada "cookie". El programa
siguiente se modific una

cookies.py:
desde WebOb importacin Peticin, Respuesta
clase Aplicacin web(objeto):
def
llamada (Self, ambiental, start_response):
# Capturar la peticin (de entrada)
req = Request (ambiental)
# Obtener la variable cookiechange,
Valor # defecto es una cadena vaca
cookiechange = req.params.get ('Cookiechange','')
si len(Cookiechange.strip ())> 0:
# Cambiar el valor de la cookie si la caja cookiechange
# Se ha completado
galletas =
cookiechange
ms:
# Obtener la cookie, el valor predeterminado es
una cadena vaca galletas = req.cookies.get
('Cookies','')
# Generar el HTML de la respuesta (salida)
html = "" "
<P> La cookie se establece en '% s' </ p>
<Form method = "post">
Cambiar valor de la cookie: <input type = "text" name =
"cookiechange">
<Input type = "submit">
</ Form>
"" "
# Crear la variable de
respuesta resp = Respuesta
(html% cookie)
# Almacenar la cookie como parte de la respuesta,
Max edad # 30 da (= 60 * 60 * 24 * 30 segundos)
resp.set_cookie ('Cookies', Galleta, max_age = 60 * 60 *
24 * 30)
retorno resp (ambiental, start_response)
aplicacin = mdulo web ()
# Programa principal - el
servidor web si
Nombre ==
'Principal':
desde wsgiref.simple_server importacin

Entre paramento hombremquina


123

Al utilizar este programa, te dars cuenta de que el valor de la cookie es


recordado
incluso si cierra el navegador web.
Como funciona? En primer lugar, se muestra el valor actual de la cookie. Si se
establece la variable "cookiechange", el valor de la cookie se cambia y esto se
enva de vuelta al navegador web para almacenar. La cookie tiene una edad
mxima, aunque - hemos utilizado 30 das en este ejemplo. La cookie se puede
perder incluso antes si se elimina por el usuario en el navegador web. El
navegador web, incluso puede ser configurado para ignorar las cookies
completamente y nunca almacenar ellos, aunque esto no es generalmente

Otras lecturas
Ms informacin sobre la biblioteca "WebOb" se puede
encontrar en
http://docs.webob.org/en/latest /
Tambin hay varios marcos web de Python disponibles que hacen un montn
de trabajo para usted. Se recomienda un marco si usted est pensando en
escribir un sitio web completo. Un ejemplo muy conocido es el marco de
Django; ver
Solo hemos dado una muy pequea muestra de lo que es posible aqu - hay una
enorme
cantidad que se puede aprender acerca de cmo escribir aplicaciones web.

Entre paramento hombremquina


124

N otas:

Lesson 4.5: General Purcorreosse YOnpUtah/OUtahpUtah (GPYOO)


GPIO es la abreviatura de "General Purpose Input / Output". Su teclado, el ratn
y el monitor son ejemplos de dispositivos de entrada y salida en un equipo, pero
son para tareas especializadas y bien definidos. La parte "General" de GPIO
indica que
Esta seccin explica los detalles tcnicos de cmo las entradas y salidas estn
conectadas y procesados por las computadoras. Despus de eso, hay una
referencia tcnica de las capacidades de GPIO de Raspberry Pi. Voy a terminar
con algunos circuitos electrnicos sencillos y el software que se puede
construir y utilizar en su Raspberry Pi. En esta gua, vamos a estar
concentrado en la interfaz GPIO digital, que es la
Por lo tanto, vamos a empezar por mirar cmo las computadoras reciben
y utilizan la informacin.

Los sensores y dispositivos de salida


Para producir tiles
resultados, las
computadoras
necesitan datos
para trabajar.
Los datos provienen de
los insumos, y los
insumos llegan a
Las entradas son piezas de informacin se ha enviado a un equipo, al igual que
un ser humano puede sentir, oler, gustar, or y ver cosas. Los productos son los
pedazos de informacin que se producen y envan a cabo por un equipo, todo lo
que pueda hablar o gesto. Medida que las computadoras son elctricos, entradas
y salidas se deben convertir desde y hacia una forma elctrica para que el equipo
pueda trabajar con ellos. Un sensor es una pieza de hardware elctrico que
detecta y convierte algo en el mundo real (tales como la velocidad de una rueda)
en una seal elctrica. Un dispositivo de salida es algo que

Entrada digital y analgica / ouput


Una seal digital es uno que puede existir en uno de los dos estados, tales como un
interruptor de la luz que est encendida o apagada. Mientras que un canal digital
(dgitos) puede estar encendido ("1") o desactivar ("0"), podemos combinar varios
dgitos para hacer una serie. Este es el sistema binario
Con dos bits digitales podemos
crear:
Binario

Decimal

10

11

Entre paramento hombremquina


125

N otas:

Esto nos da 4 (2 2) combinaciones que podemos utilizar. La primera "2" es el nmero de


estados en un canal digital - dentro y fuera. El segundo "2" es el nmero de la tecnologa
digital
Una seal analgica es uno que puede tener un rango de valores, mientras
que una seal digital slo tiene dos. Una forma de pensar en digital frente
analgica est comparando un tramo de escaleras con una rampa. Al subir las
escaleras puede estar seguro de que usted est en la sptima etapa, por
ejemplo. Usted no tiene ninguna opcin de pararse a medio camino entre la
sexta y sptima de la escalera. Esto es muy similar a una seal digital. Por el
contrario, al subir la rampa, se puede llegar a cualquier altura sobre el suelo,
pero con menos
Slo recuerde que una seal digital viene en pasos (posiblemente muy pequeos
pasos, pero an as los pasos), mientras que una seal analgica es suave,
permitiendo que cualquier valor, pero ms difcil de
Un ordenador slo puede comprender los datos en una forma digital, por lo que
todas las entradas analgicas tienen que ser convertidos a un formato digital antes
de que puedan ser utilizados por el ordenador. Del mismo modo, las salidas
analgicas tienen que ser creados mediante la conversin de los valores digitales
que salen de un ordenador. En la Frambuesa Pi, esta conversin se tiene que hacer
Analgico a digital
convertidores (ADC) y
de digital a analgico (DAC)
convertidores son una parte
clave en la mayora de los
sistemas de entrada de la
computadora / salida.
-Digital-analgico convertidores (DAC) y analgico-digital de convertidores
(ADC) son ampliamente utilizados en la electrnica que se conectan a las
computadoras. Los bits ms digitales que maneja el convertidor, ms resolucin
(ms preciso) la conversin ser. Por ejemplo, si un sensor de temperatura
produce una seal analgica lineal en el rango de 0 C a 100 C y que quera
ser capaz de medir, al menos, el grado ms prximo en el equipo, lo que se
necesita por lo menos siete bits digitales

Entre paramento hombremquina


126

N otas:

N otas:

Seryounl unnd punrunllel duntun


Serial

En las seales de
datos en serie,
hay dos
corrientes de
informacin:
transmitir (Tx) y

Paralelo

En una seal en
paralelo,
muchos bits de
datos pueden ser
enviados o recibidos

Los datos digitales fluye dentro y fuera de un ordenador en una de dos maneras
- en serie o en paralelo. En una interfaz paralela, hay un canal de datos para
cada bit de datos que es de entrada. Piense en ello como tener un montn de
carriles en una autopista. En una interfaz en serie, slo hay un canal de datos
para cada direccin (transmisin y recepcin), que cada bit de datos nica viaja
a lo largo, uno despus del otro. Piense en ello como un solo camino. Interfaces
en paralelo son ms fciles de disear y utilizar, pero requieren ms hardware y
cable de datos para construir (al igual que la autopista tomando ms espacio
que

Interrupciones, votacin y multitarea


Ahora sabemos lo bsico de cmo la informacin (datos) fluye dentro y fuera de
una computadora, tenemos que saber cmo manejar los datos que ha de venir
en cuando llega. Considere esta situacin: Usted est trabajando en su
computadora, pero, al mismo tiempo, tambin est esperando una o ms
llamadas telefnicas. Piense en la llamada telefnica como fuente de datos de
entrada. Hay tres maneras de ser capaz de tratar con ambas tareas en el
1. Trabajar en el equipo hasta que se le interrumpido por el timbre del telfono.
Contestar el telfono y luego continuar trabajando en su computadora.
2. Trabajar en el equipo por un minuto. Levante el telfono y comprobar para ver si
hay alguien en el otro extremo. Ponga el telfono despus haga otra minuto de
trabajo en el equipo. Compruebe que el telfono de nuevo. Repita este todo el da!
3. Trabajar en el equipo usted mismo y conseguir otra persona a tomar las llamadas
telefnicas
para ti.
El primer mtodo es un ejemplo del uso "interrupciones". Cuando en el
telfono, puede escribir una nota para usted mismo para que pueda dar
prioridad a cualquier trabajo que se produce como resultado de la llamada
telefnica de una manera oportuna. Uso de interrupciones es el uso ms
eficiente del tiempo con eventos poco frecuentes. Hay, sin embargo, una
desventaja de usar las interrupciones: requiere hardware o software de bajo
nivel (tono de llamada en el telfono)

Entre paramento hombremquina


127

El segundo mtodo es un ejemplo de "polling". Tiende a perder mucho de su


tiempo comprobando frecuentemente el telfono cuando no hay nadie all.
Tambin necesita tiempo para cambiar de una tarea a otra. Esto es lo que
tendra que hacer si el telfono no tena tono de llamada. El sondeo es el
mtodo que se utiliza cuando los acontecimientos se producen con frecuencia
El tercer mtodo es un ejemplo de "multitarea". La primera persona puede
concentrarse en su trabajo en el equipo. La segunda persona podra ser la
comprobacin (de votacin) el telfono todo el tiempo y pasar mensajes a
usted como y cuando sea necesario. El problema es que no siempre hay una
segunda persona alrededor. No te preocupes - sistemas operativos como Linux
en el Raspberry Pi no hacen posible que usted

aplicaciones embebidas
Una aplicacin embebida es donde un equipo est integrado en otro
dispositivo. Por ejemplo, un TDT caja de un televisor o un GPS en un coche.
Si se compara una PC de escritorio con una Raspberry Pi, se puede ver que
una PC de escritorio no es adecuado como un componente para construir en
dispositivos pequeos, a diferencia de un Raspberry Pi. Un PC estndar
normalmente no tiene ninguna interfaz GPIO equipados, ya sea! Un Raspberry
Pi es mucho ms

Aplicaciones en tiempo real


Una gran cantidad de aplicaciones de control del mundo real se dice que funcionar
en "tiempo real". Para las aplicaciones en tiempo real, a menudo es necesario ser
capaz de leer las entradas, procesarlos y producir salidas de miles de veces por
segundo. La tasa de este tratamiento tiene que ser predecible - un clculo en un
plazo fijo. Por ejemplo, un CD tiene una frecuencia de muestreo de 44,1 kHz - que
significa que por cada punto de muestra de datos, es suficiente 1/44100 segundos
(22,6 microsiemens) que hacer todo el proceso! En un sistema operativo multitarea,
como Linux en el Raspberry Pi, no se puede garantizar que su programa tendr el
control total de la CPU durante esos pocos microsegundos
- El sistema operativo puede ser ocupado, la comunicacin en el puerto de red,
Cuando hay una frecuencia de muestreo irregular en los datos de entrada, esto
se llama "jitter". La precisin de tiempo predecible que se requiere necesidades
los sistemas operativos en tiempo real especiales de hardware dedicado o y
lenguajes de programacin de bajo nivel, como C o ensamblador. Los sistemas
operativos disponibles actualmente en el Raspberry Pi no son realmente
adecuados para aplicaciones en tiempo real. Afortunadamente, el Raspberry Pi
s incluye un compilador de C (llamado GCC) si quieres aprender a escribir
lower-

Entre paramento hombremquina


128

N otas:

No se preocupe, sin embargo, si usted haba fijado su corazn en la creacin de


algunas aplicaciones en tiempo real. Hay otra pequea plataforma de prototipos
electrnica, llamada un Arduino, que contiene un microcontrolador programable
adecuado para aplicaciones en tiempo real. Es muy fcil de usar un Pi de
frambuesa y una placa Arduino juntos. Un Arduino se puede utilizar para la alta
velocidad, las piezas en tiempo real del diseo y una Raspberry Pi pueden
ejecutar una interfaz grfica de usuario de nivel superior o aplicacin web que
controla
Aunque el Raspberry Pi puede correr rpido de E / S aplicaciones y el Arduino
puede utilizar aplicaciones web, esto no es lo que son los ms adecuados
para. Recuerde: siempre use las herramientas adecuadas para el trabajo! Hay
un ejemplo de comunicacin entre una
//www.aurduino.c c

Interfaces de hardware GPIO en la Raspberry Pi


Hay varios tipos de pasadores de interfaz en la Frambuesa Pi. Ellos pueden
ser configurados y utilizados para muchas aplicaciones. Tenga en cuenta que
debido a que las patas de la placa Raspberry Pi se conectan directamente al
sistema en un chip (SOC), es muy fcil daar tu o tarjeta SD Raspberry Pi, si
no tienes cuidado. Asegrese de que slo utiliza 3,3 V en los pines, no 5V. Por
esta razn, se recomienda utilizar una tarjeta de interfaz, como el Gertboard,
entre la frambuesa
= DNC no se conectan.
Estos pines estn
reservados
para uso

El mximo permitido de consumo de corriente de la clavija es 3.3V 50mA. El


consumo mximo de corriente en el pin 5 V depende de su fuente de
alimentacin - usted debe dejar suficiente para la Raspberry Pi a correr!
Botones que se sealan en la tabla anterior se describen por tipo en las
siguientes secciones. Tenga en cuenta que algunos pines pueden ser
configurados para ms

Entre paramento hombremquina


129

N otas:

N otas:

GPYOO bounrd pyons


Hay 17 pines disponibles para operar en el modo de GPIO, configurables como
entradas
o salidas. Llevan un solo bit de datos digitales.
Alta = 3.3V
Bajo = 0 V
Pin Junta

Nmero BCM GPIO

Pin Junta

Nmero BCM GPIO

3*

16

23

5*

18

24

19

10

14

21

10

15

22

25

11

17

23

11

12

18

24

13

21

26

15

22
* Tenga en cuenta que estos pines tienen una resistencia de 1.8k pull-up en el
tablero de Raspberry Pi.
Inter-Circuito Integrado (IC)
IC es una interfaz en la que se puede conectar varios dispositivos esclavos
IC. El Raspberry Pi acta como el maestro en el bus.

Pin Junta

Nmero BCM GPIO

Funcin

Descripcin

3*

SDA

Datos

5*

SCL

Reloj

Serial Peripheral Interface (SPI)


SPI es una interfaz en la que se puede conectar varios dispositivos esclavos
SPI. El Raspberry Pi slo puede actuar como maestro en el bus.
Hay cinco pines disponibles para conectar dispositivos a la Raspberry Pi
usando SPI:
Pin Junta

Nmero BCM GPIO

Funcin

Descripcin

19

10

MOSI

Domina exprs, Esclavo En

21

MISO

Mster en, Esclavo de salida

23

11

SCLK

Reloj en serie

24

CE0

26

CE1

Canal Habilitar 0. Tambin conocido como Slave


Select (SS)
Canal Habilitar 1. Tambin conocido como Slave
Select (SS)

Universal asncrono receptor / transmisor (UART)


La UART es una conexin de bus serie. Tenga en cuenta que estos pines
funcionan a 3.3V y la especificacin RS232 es de 12V. Si se conecta a un
dispositivo serial RS232, usted podra daar el Raspberry Pi. Por favor, ten
Pin Junta

Nmero BCM GPIO

Funcin

Descripcin

14

TX

Transmitir

10

15

RX

Recibir

Entre paramento hombremquina


130

Tip ...
Tenga cuidado
con la conexin
UART!
Si utiliza
demasiada
corriente,
entonces
usted podra
fcilmente

N otas:

LeD cyorcuyot
Ahora sabemos todo acerca de los datos y opciones de entrada / salida del
Raspberry Pi, vamos a llegar
con la construccin de algo!
Se trata del circuito ms simple se puede construir para probar las salidas
GPIO de Raspberry Pi. Este circuito contiene slo dos componentes: una
resistencia de 1k y un LED (diodo emisor de luz). La resistencia se utiliza para
limitar la corriente que fluye fuera de la Frambuesa Pi y en el LED. Si hay
demasiada corriente, podra
Experimento circuito de
LED
diagrama de

Tip ...
Por favor, tenga
cuidado: si utiliza
demasiada
corriente,
entonces usted
podra fcilmente
romper algo!

Tenga en cuenta que usted necesita para conectar el LED de la posicin


correcta. El lado plano del LED indica el lado negativo; la pierna ms larga
indica el lado positivo de la
El siguiente programa Python le permitir cambiar el LED de encendido y
apagado. Para completar este ejercicio se necesitan los mdulos de Raspberry
Pi GPIO. Puede instalar estos desde la tarjeta SD Raspberry Pi o descargarlos
de

importacin RPi.GPIO como GPIO


# Configurar el pin 11 a la salida
GPIO.setup (11, GPIO.OUT)
Estado =
Falso
mientras 1:
GPIO.output (11, estado)
comando = entrada("Pulse Intro para cambiar el LED de
encendido / apagado o
"Q" para salir ")
si command.strip (). superior (). startswith ('Q'):
rotur
Tenga en cuenta que este script Python se debe ejecutar con privilegios de
superusuario (root). Usted puede hacer esto mediante la ejecucin de su
programa desde la lnea de comandos y poniendo "sudo" en

Entre paramento hombremquina


131

N otas:

Push-bUtahton cyorcuyot
Este es el sobre el circuito ms simple que puede utilizar para probar las
entradas GPIO con su Raspberry Pi. La resistencia de 10k es lo que se conoce
como una resistencia "pull-up" - que significa que la entrada se tir alto (a 3,3
V) cuando no se pulsa el botn. Al pulsar el botn, se conecta la entrada a 0 V
a travs de la resistencia de 1k, enviando la baja entrada. La resistencia de 1k
est presente para proteger su Raspberry Pi en el caso de configurar
accidentalmente como una salida en lugar de una entrada. El Gertboard tiene
algunos
Circuito de
pulsador
experimentar el diagrama de

En la pgina siguiente se muestra un ejemplo de algn cdigo Python que


monitorea un pulsador. Utilizamos las caractersticas multitarea de Python para
crear una clase que controla un botn pulsador para demostrar cmo se puede
utilizar la multitarea. Esto es para que no perdamos el botn de prensa,
mientras que el programa est ocupado haciendo otras cosas. Vas a
Cuando se utiliza el mdulo de Python RPi.GPIO, LOW = False y HIGH = True.
Al igual que en el ejemplo anterior, este programa debe ejecutarse como root
poniendo "sudo" delante de

importacin
enhebrar
importacin
tiempo
importacin RPi.GPIO como GPIO
clase Botn(Threading.Thread):
"" "Un hilo que controla un botn GPIO" ""
def

en eso (Self, canal):


threading.Thread. init (auto)
self._pressed = Falso
self.channel = canal
# Configurar pin como entrada
GPIO.setup (self.channel, GPIO.IN)
# Terminar este hilo al programa principal termina
self.daemon = Verdadero
Entre paramento hombremquina
132

N otas:

# Hilo de inicio de
funcionamiento
self.start ()
def planchado(Self):
si self._pressed:
# Borrar el indicador presionado ahora hemos detectado
self._pressed = Falso
Verdadero retorno
ms:
return false
def carrera(Self): =
anteriores
Ninguno
mientras 1:
# Leer canal GPIO
actual = GPIO.input (self.channel)
time.sleep (0.01) # Esperar 10 ms
# Detectar el cambio de 1 a 0 (una pulsacin de botn)
si == actual Falso y == anterior Verdadero:
self._pressed =
Verdadero
# Espera para la bandera que desea borrar
mientras
self._pressed:
time.sleep (0.05) # Esperar
50 ms anterior = corriente
def onButtonPress():
impresin('Botn ha sido presionado!')
# Crear un hilo de botn para un botn en el
pin 11 botn = Button (11)
while True:
# Pedir un nombre y decir hola
name = entrada('Introduzca un nombre (o Q para salir):')
si name.upper () == ('Q'):
impresin
descanso('Hola',
Nombre)

Entre paramento hombremquina


133

N otas:

Larduino yonterface
Para completar este ejercicio necesitar la extensin de puerto serie Python. Usted puede
instalar

esto

desde

la

tarjeta

SD

Raspberry

Pi

descargarlos

de

http://pypi.python.org/pypi/pyserial /. Tambin necesitar el paquete Debian


llamado "Arduino", con el fin de instalar el IDE de desarrollo Arduino. Puedes
descargar
Debian.

desde

el

sitio

web

de

Obviamente, tambin tendr una placa Arduino.


Arduino es una plataforma de prototipos electrnicos de cdigo abierto
basado en flexibilidad, hardware y software fcil de usar. Una placa Arduino
conectado a un Raspberry Pi es una combinacin muy til y potente. Usted
puede aprender ms sobre
En este ejemplo se utiliza una placa Arduino conectado a un Raspberry Pi
mediante un cable USB. Usted no tiene que construir cualquier circuito para
hacer de este programa de trabajo - que se deja a la imaginacin. Este
programa es muy simple; pide para un personaje en su Raspberry Pi, y luego
lo enva a la Arduino. El Arduino responde devolviendo el personaje y su
cdigo ASCII. Por ltimo, la respuesta se imprime en la pantalla de

Entre paramento hombremquina


134

N otas:

Cdigo para el Arduino:


// Configurar la velocidad de
conexin en serie vaco configurar()
{
Serial.begin(9600);
}
vaco bucle()
{
int inByte;
si (Serial.available() > 0)
{
// Leer los datos de la Raspberry
Pi inByte = Serial.read();
// Enviaremos los datos de
Raspberry Pi
Serial.write(inByte);
Serial.print("=");
Serial.println(inByte);
}
}
Cdigo Python para la Raspberr y
Pi:
importacin serial
# Configurar la velocidad de conexin en serie
Ser = serial.Serial ('/ Dev / ttyACM0', 9600)
# Bucle
principal
mientras 1:
c = entrada('Introduzca un char:')
si len(C) == 1:
# Enviaremos los datos de
Arduino ser.write
(c.encode ())
# Recibir datos desde el
Arduino respuesta =
ser.readline ()

Entre paramento hombremquina


135

La lnea de comandos de
Linux
El sistema operativo en el Raspberry Pi es una versin de Linux. Con toda
probabilidad, se ve un poco como Windows o - ms probable - como el Mac
OS. Cuenta con una interfaz grfica de usuario (GUI) que le permite interactuar
con sus carpetas y archivos haciendo doble clic, clic derecho o izquierdo, o
arrastrando y soltando. Si quieres
Todo eso est muy bien, pero no hay otra manera de interactuar con Linux:
usando la interfaz de lnea de comandos (CLI). Con la CLI no hay imgenes;
nada que haga clic en. Para conseguir que su equipo haga algo, debe escribir
un comando de texto bien construido. A menudo, slo se sabr que su
comando se ha ejecutado con xito porque el equipo no responde. Si no
responde, algo
Eso suena como un trabajo duro. Realmente queremos que molestarse con
ella? S lo hacemos! Para empezar, de forma predeterminada, algunas
versiones de Linux arrancar directamente en el CLI. Para abrir la interfaz
grfica de usuario, con todas sus hermosas ventanas y mens, entonces tienes
que escribir el comando "startx" y pulse Intro. Pero eso es de ninguna manera
es la nica razn para poder familiarizarse
Con la lnea de comandos que puede hacer las cosas que no se puede hacer
uso de la interfaz grfica de usuario y se pueden hacer cosas fcilmente que
son difciles en la GUI. En comparacin con la interfaz grfica, la lnea de
comandos apenas utiliza cualquier tratamiento o grficos de potencia, por lo que
es grande si usted tiene un trabajo pesado para que el equipo haga. Y, si se
conecta remotamente a un Pi de frambuesa que no tiene su propio monitor,
entonces usted tendr que
Si eres nuevo en Linux, es posible que no est familiarizado con la lnea de
comandos en general y con los comandos de Linux en particular (que son a
veces similares a sus equivalentes de Windows, pero a menudo son
completamente diferentes). Este captulo es una breve introduccin a la magia de
la lnea de comandos. Contiene todo lo necesario para

E l L inu x C ommand L ine


152

N otas:

N otas:

Lesson 6.1: Communnds unre just progrunSra


Al escribir en el terminal est ejecutando programas. La mayora de los
comandos que aparecen aqu ejecutar programas que le dan la capacidad de
ordenar el sistema para hacer algo. Al agregar programas a su Pi frambuesa,
usted ser capaz de correr
Si introduce un comando y no funciona, puede significar que el programa no est
instalado todava. Por ejemplo, si intenta crear un nuevo archivo de texto llamado
"Mi Linux

sudo nano "Mi Linux Comandos"


Pero podra ser que, en lugar de abrir el nuevo archivo de texto, el sistema
devuelve el
mensaje de error:

bash: nano: comando no encontrado


Esto slo significa que no ha instalado Nano todava. Sin embargo, la mayora
de los comandos que se describen en esta pgina son la clase de comandos
"limpieza" que vienen por defecto, por lo que no debera tener este problema.
Cada programa tiene una
No se preocupe demasiado acerca de los comandos reales utilizados all - Voy a
explicar
todo a medida que avanzamos.

El shell Bash
Para utilizar la CLI, lo que necesita saber los comandos. El conjunto de comandos por defecto
est contenida en la "cscara" que est utilizando. Hay un montn de conchas por ah, pero el
de este Raspberry Pi se llama "Bash". Bash es el shell de lnea de comandos por defecto
en la mayora de versiones de Linux, as como Mac OS, por lo que vale
la pena aprender.
Este captulo cubre muchos de los comandos ms comunes y tiles. Si usted
no puede encontrar el comando que necesita, intente buscar en lnea. Hay un
montn de buenos guas en

Tip ...
Si conoce el comando que desea usar, pero no sabe exactamente cmo usarlo
- Por ejemplo, usted no sabe exactamente la "sintaxis" derecho - se puede utilizar el
comando "man" (manual) en Linux. En la lnea de comandos puede escribir:

$ Man <comando>

hombre
Muestra informacin sobre el blanco, procedente de los manuales de
referencia en lnea.

E l L inu x C ommand L ine


153

El "sintaxis" de un
comando significa
la manera que
debe ser escrito
para hacerlo
funcionar. Que
significa el orden
de las palabras,
as como cualquier
puntuacion
importante que
tambin es

N otas:

O bien, puede utilizar el comando


"info":

$ Info <command>

info
Muestra documentacin en lnea sobre el objetivo.

En los ejemplos anteriores, el sustituto de <command> con el comando que


desea saber ms acerca de. Una palabra de advertencia: la orientacin dada por
el "hombre" a veces es un poco formal y muy, muy detallada. Casi se podra
decir: "Si crees que sabes un comando y luego ir a pgina de manual del
comando con el fin de descubrir que
Para saber ms sobre Bash, echar un vistazo a su entrada de Wikipedia:
http://en.wikipedia.org/wiki/Bash_%28Unix_ shell% 2 9
Al escribir "man apt-get"
en la lnea de
comandos de regresar toda
esta informacin en el
comando "apt-get" y cmo
utilizarlo.
"El hombre" es la
abreviatura de manual.

MARCADOR

E l L inu x C ommand L ine


154

N otas:

Lesson 6.2: Communnd syntunX unnd file structure


Comandos toman la
forma:

<Comando> | <Interruptores> | <Parmetros> | <destino>


En las guas, como ste, los soportes "<" y ">" se utilizan a menudo para indicar
el lugar un comando tomara en una cadena de texto que se escriben en la CLI.
La lnea horizontal "|" se utiliza para denotar "o". Confundido? Bien, veamos el
ejemplo anterior. Leamos que, como diciendo que los comandos se pueden
utilizar por
Interruptores: cartas individuales, precedidos por un guin, que se ajustan lo
que hace el comando
Parmetros: cosas que las necesidades de comando para saber para
trabajar
Un objetivo: la cosa (tal como un archivo) que el comando se aplicar a
Veamos un ejemplo. Vamos a empezar con el comando "ls", que se puede
utilizar para
ver una lista de contenido de una carpeta.

ls -l / home / brian
Interruptor de
comandos

Objetivo

Este comando le dice a la lnea de comandos a la lista, en formato largo, el


contenido del directorio "/ home / brian". El comando es "ls"; el interruptor "-l" le
dice a Linux que desea la lista en formato largo; y el objetivo de este comando
es el directorio "/ home / brian". En este ejemplo, no hay parmetros, por lo
que parte de la

ls
Enumera los contenidos de directorios.

Para un ejemplo un poco ms detallada, echemos un vistazo a la orden de


"montar", que narra Linux para incorporar un nuevo sistema de archivos (como un
CD o DVD) en su propio archivo

mount -F smbfs // grupo de trabajo; Fred: foo@192.168.1.99 / casas /


mnt / net
Comando

Interru
ptor

Parmetros

Objetivo

Este comando indica al sistema operativo para utilizar el nombre de usuario


"fred" y la contrasea "foo" (parmetros) para que la unidad compartida
llamada "hogares" en el servidor de Windows en 192.168.1.99 (parmetro)
aparecer en el rbol de directorios en el punto " / mnt neto "(objetivo) con el
mensaje del sistema Bloquear Presentacin / Servidor

monte
Hace una estructura de archivos disponibles en una nueva ubicacin.

E l L inu x C ommand L ine


155

Nunvyoguntyong the file system usyong "cd"

N otas:

El sistema de archivos de Linux es jerrquica con directorios anidados (a


menudo llamado "carpetas") en un "rbol". La parte superior de la estructura de
directorios se denota por el smbolo "/" y directorios debajo "/" se refieren a la
utilizacin de "caminos", al igual que en las URL
Para ir a un lugar particular en la estructura del directorio, se utiliza el comando "cd", que significa
"cambio de directorio", seguido por su ubicacin en el rbol. Por ejemplo, el siguiente comando
te llevar a la carpeta "Documentos" de Brian de
su
directorio
personal.

cd / home / brian / Documentos


Si desea mover el rbol de directorios, utilice el comando:

cd ..
Por ejemplo, si est trabajando en la carpeta "/ home / brian / Documentos /
Proyecto", el comando "cd .." le tomara de nuevo a "/ home / brian / Documents".
Asegrese de dejar un espacio entre las letras "CD" y los dos puntos, de lo
contrario el
Para obtener ms informacin sobre el comando "cd" ver su entrada de
Wikipedia:
http://en.wikipedia.org/wiki/Cd_%28command%2 9

CD
Cambia el directorio de trabajo actual.

E l L inu x C ommand L ine


156

Tip ...
Los nombres de
archivos y
directorios
(carpetas) son
entre maysculas
y minsculas en
Linux, por lo que
el archivo
"my_stuff" es

Lyostyong the files unnd Folders yon un punrtyoculunr plunce


Los "ls" comando lista todos los contenidos del directorio en el que estn
trabajando. Hay una serie de interruptores que puede utilizar con "ls" para
hacer que se vea exactamente los archivos que le interesan y toda la
informacin til sobre esos archivos. Hemos enumerado algunas de
l"ls", el comando sin modificadores, enumera todos los archivos en el
directorio actual.
l"Ls -l" enumera los archivos y muestra la versin larga de la informacin
acerca de cada archivo o directorio. La salida puede ser un cdigo de
colores en funcin de las preferencias de terminal que ha establecido.
l"Ls -R" pide una lista "recursiva" - es decir, una lista que incluye el
contenido de los subdirectorios, as como este directorio.
l"Ls -A" obliga al sistema para mostrar archivos "ocultos". Los archivos
ocultos tienen nombres que comienzan con un punto, que no suele ser
visible cuando se hace una normal,
Veamos dos ejemplos. En el primero, usamos las "ls" llano de comandos con
no hay interruptores.

$ ls
An_Gott_und_meine_Mutter.mid programacin domstica aparatos
test.mid An_Gott_und_meine_Mutter.mscz Ingeniera Fsica Cuntica
Tutora FluidR3 _ GM.ins Escuela Windaz
En el segundo, utilizamos "ls -l". Esto muestra los archivos en formato largo, que
le dice,
entre otras cosas, el tamao, el propietario y la seguridad en la configuracin de

$ Ls -l
total de 336
-rw-rw-r--. 1 brian brian 2429 02 de abril 20:27
An_Gott_und_meine_Mutter.mid
-rw-rw-r--. 1 brian brian 4085 02 de abril 19:52
An_Gott_und_meine_Mutter.mscz drwxrwxr-x. 4 brian brian 4096 02 de abril
20:38 electrodomsticos
No te preocupes, vamos a entrar en los detalles de esta
informacin ms adelante.
Para saber ms acerca de los "ls" de comandos, echar un vistazo a su entrada de
Wikipedia:
http://en.wikipedia.org/wiki/L s

E l L inu x C ommand L ine


157

N otas:

Chunnge aynershyop oF dyorectoryoes unnd files


En la Lista de larga anteriormente, los archivos son propiedad de Brian y tambin
estn en el grupo de Brian. Lo que si queramos cambiar la propiedad de algunos
de esos archivos? Luego nos hara
Usaremos el archivo "brotplot.odt" como ejemplo. Digamos que queremos hacer Fred
el
propietario del archivo. Queremos utilizar el comando:

$ Chown fred brotplot.odt


Si ejecutamos el comando "ls -l" de nuevo, ahora vamos a ver
el resultado:

-rw-rw-r--. 1 fred brian 10919 02 de abril 19:52 brotplot.odt


El archivo se encuentra todava en grupo Brian pero ahora es propiedad de
Fred. Pero lo que si queremos hacer el usuario "Foo" el dueo del archivo y
tambin mover el archivo al grupo "foo".

$ Chown foo: foo brotplot.odt


Si utilizamos "ls -l" de nuevo para ver el nombre de largo formato de
nuestro archivo, vamos a ver:

-rw-rw-r--. Foo foo 1 10919 02 de abril 19:52 brotplot.odt


Para obtener ms informacin sobre el comando "chown" ver su entrada de
Wikipedia:
http://en.wikipedia.org/wiki/Chow n

chown
Cambia la propiedad de uno de los ms archivos.

Mientras estamos en ello, echar un vistazo a "chgrp" para ver


cmo se compara:
http://en.wikipedia.org/wiki/Chgr p

chgrp
Cambia el grupo de uno o ms archivos.

E l L inu x C ommand L ine


158

N otas:

Chunnge unccess to dyorectoryoes unnd files


Cuando se utiliza el modificador "-l" para ver la larga lista de informacin de
contenido de un directorio, los resultados que se ven estn precedidos por una
cadena de letras y guiones.

-rw-rw-r--. 1 estudiantes fred 10919 02 de abril 19:52 brotplot.odt


El primer carcter de la secuencia, en este caso un guin, nos dice lo que es el
objeto.
Los personajes ms comnmente utilizados son:
d

Indica un directorio

Indica un enlace

Indica un archivo

Nuestro ejemplo anterior comienza con un guin, as que s que es un archivo.


En este caso, es
en realidad un archivo de procesador de textos.
Los nueve caracteres que siguen, describen los derechos de acceso para el
propietario (usuario), el grupo y el mundo (todos los dems que puede ser
capaz de acceder al archivo), en ese orden,
r

Acceso de lectura

w Acceso de escritura
x
-

El permiso para ejecutar el


programa
No hay acceso de este tipo

Por lo tanto, si los tres grupos tuvieron los tres tipos de acceso, veramos
"rwxrwxrwx". Sin embargo, cada vez que alguien no tiene un tipo de acceso, es
reemplazado su carta
Si volvemos a mirar nuestro ejemplo anterior, podemos
ver que:
lBrian ha de lectura y escritura en el archivo.
lLos miembros del grupo llamado "estudiantes" tambin han de lectura y
escritura en el archivo.
lTodos los dems (el "mundo"), slo tiene acceso de lectura al archivo.
La bandera "x" no aparece en absoluto. Recuerde, X representa la capacidad
de ejecutar un archivo.
Si la x de la bandera no se establece a continuacin, el archivo no se ejecutar
Pero lo que si queremos cambiar los permisos del archivo? Hay varias maneras
de utilizar el comando "chmod" para hacer esto, pero probablemente el ms fcil
es utilizar
u

para el

usuario /

propietario

u
n

para el grupo

E l L inu x C ommand L ine


159

N otas:

N otas:

Ahora, vamos a probar el comando


"chmod":

chmod o + w brotplot.odt
Esto significa agregar el acceso de escritura para el grupo "otros" a
"brotplot.odt". Aadir es
indicado por el signo "ms".

chmod a-r brotplot.odt


Esto significa eliminar el acceso de lectura para los tres (usuario, grupo y otros)
todos de
"Brotplot.odt". Quite se indica por el signo "menos".

chmod u + x brotplot.odt
Esto significa agregar ejecutar acceso para el usuario / propietario
para "brotplot.odt".
Para obtener ms informacin sobre el comando "chmod" ver su entrada de
Wikipedia:
http://en.wikipedia.org/wiki/Chmo d

chmod
Cambia el modo de acceso (permisos) de uno o ms archivos.

E l L inu x C ommand L ine


160

N otas:

Lesasn 60.3: The superuser


El comando "sudo" introduce el "superusuario" o "root". El trmino "raz"
es el nombre para el administrador principal de un sistema "Unix", como Linux.
Hay muchos comandos que slo el usuario root puede ejecutar.
Dependiendo de la versin de Linux que est utilizando, que o bien tiene que
iniciar sesin como usuario root o el prefijo de su comando con "sudo". La
distribucin Debian por defecto de Linux, por ejemplo, no tiene configurada la
contrasea de root. As que usted tendr que utilizar el
Al utilizar "sudo", ests diciendo: "Haz el siguiente comando como usuario root."
Al hacer esto, se le pedir su contrasea y, si tiene los permisos del sistema de
un usuario root (comnmente llamado " estar en el grupo de administracin "), a
continuacin, se ejecuta el comando. Si usted no tiene permisos de root, usted
recibir una
Veamos el ejemplo de la adicin de un nuevo usuario al sistema, algo que
slo el usuario root puede hacer. En Debian, el comando sera el siguiente:

sudo adduser brian


Esto iniciar una secuencia de comandos que le permite configurar un nuevo
usuario llamado "brian". Si alguna vez se trata de hacer algo en la lnea de
comandos y el mensaje de error: "Slo la raz
Para saber ms acerca de comando "sudo", consulte la entrada de Wikipedia:
http://en.wikipedia.org/wiki/Sud o

sudo
Si tiene los permisos adecuados, ejecute el siguiente comando como
superusuario.

Convertirse en el usuario admin


Hay otra manera de hacer las cosas como usuario root y que es mediante el
uso de la "Unin Sovitica"
comando, que significa "usuario sustituto" (o superusuario). Invocando el "Do"
comando significa "convertirse en el usuario root".
Al igual que antes, se le pedir que introduzca su contrasea para asegurarse
de que usted tiene los derechos de superusuario. Una vez que haya
autenticado correctamente con su contrasea,
En algunos sistemas, sin embargo, usted no ser capaz de utilizar el comando
"su" porque, por defecto, el usuario root no est habilitado. En este caso, usted
tendr que permitir a la raz

passwd root

E l L inu x C ommand L ine


161

Se le pedir que introduzca y confirme una nueva contrasea de root. Suponiendo que usted
puede llegar a introducir la misma contrasea dos veces, ahora tiene un usuario root y usted

N otas:

puede emitir el comando:

do Al entrar en las claves de los sistemas tipo Unix, el indicador permanece en


blanco: sin manchas o asteriscos destacan por los personajes de su contrasea.
No se desanime;
Por ltimo, una palabra de advertencia: si habitualmente haces todo como
usuario root, con el tiempo que va a hacer algo a la vez educativo y desastrosa.
Por ejemplo,

rm -r -f / *

Tip ...
Esto eliminar todos los archivos en todo el
sistema.
O es posible que distradamente
tipo:

$ Rm -r -f ./*
Eso sera simplemente eliminar los archivos en el directorio actual. Y que no
suelen obtener advertencias como usuario root (excepto sta). La primera cosa
que usted sabe sobre su
Utilice slo los privilegios de root cuando
realmente los necesite.
Para obtener ms informacin sobre el comando "su". consulte la entrada de
Wikipedia:
http://en.wikipedia.org/wiki/Su_%28Unix%2 9

Do
Convirtase en superusuario.

passwd
Crear o cambiar una contrasea asociada con el usuario
identificado.

E l L inu x C ommand L ine


162

No utilice nunca
estos comandos
cuando se opera
como
superusuario!

Lesson 6.4: Creuntyong unnd destroyyong files unnd directoryoes


Por ltimo, echemos un vistazo a la creacin y destruccin de archivos y
directorios, as como tomar
una mirada ms cercana en el comando mount.

Crear un nuevo archivo vaco


Para crear un nuevo archivo vaco, vaya a donde desea que el archivo sea y escriba:

$ Touch <nombre de archivo>


El "toque" de comandos realidad actualiza "ltimo acceso" tiempo de un
archivo a la hora y fecha actuales, pero si dicho archivo no existe ya
continuacin, se crear un nuevo archivo
Para obtener ms informacin sobre el comando "touch", consulte la entrada de
Wikipedia:
http://en.wikipedia.org/wiki/Touch _ (Unix)

tocar
Actualizar el tiempo de acceso y modificacin de tiempo del archivo
con el nombre (y fechas) a la hora y fecha actuales. Si un archivo no
existe entonces un nuevo archivo se crear con un tamao de archivo
de 0.

Crear un nuevo directorio vaco


Para crear un nuevo directorio, vaya a donde desea que el directorio sea y escriba:

$ Mkdir <nombre del directorio>


Para saber ms acerca de comando "mkdir", consulte la entrada de Wikipedia:
http://en.wikipedia.org/wiki/Mkdi r

mkdir
Crear uno o varios directorios en la ubicacin actual.

Eliminar un archivo
Para eliminar un archivo, vaya de que la ubicacin del
archivo y escriba:

$ Rm <nombre de archivo>
Para obtener ms informacin sobre el comando "rm", consulte la entrada de
Wikipedia:
http://en.wikipedia.org/wiki/Rm_%28Unix%2 9

rm
Quitar (eliminar) uno o ms archivos en la ubicacin actual.

E l L inu x C ommand L ine


163

N otas:

N otas:

Remove un dyorector y
Para eliminar un directorio, vaya a su ubicacin y el
tipo:

$ Rm -r -f <nombre del directorio>


Este utiliza el comando "rm" se utiliz anteriormente, pero los interruptores
adicionales decirle que para eliminar el directorio, todo su contenido y tambin
cualquier subdirectorios y
La "r" significa "recursivo", que - en el caso de un directorio - elimina todo el
directorio y todos sus contenidos, incluyendo los subdirectorios. No estar muy
seguro de que usted
El interruptor "f" indica que la accin est "obligado" - es decir, el programa
eliminar los archivos protegidos contra escritura sin preguntar. Esto tambin
es peligroso, as que
A ms seguro, pero menos potente, la opcin es utilizar el comando
"rmdir":

$ Rmdir <nombre del directorio>


Esto tambin eliminar los directorios, pero slo si
estn vacos.

rmdir
Quitar (eliminar) uno o ms directorios en la ubicacin actual, siempre
y cuando estn vacos.

Conectarse a un sistema o dispositivo de presentacin


El comando "mount" le permite conectar un sistema Unix para dispositivos
externos. No hay unidad "C", como en Windows. Lo que sucede en Linux es
que un dispositivo se "monta" en alguna parte del sistema de archivo. Cuando
se desplaza a ese lugar, el
Este es un comando complejo. Los interruptores, parmetros y destino del
comando de montaje variar de acuerdo con el protocolo del sistema que se
montan. Algunas cosas se "auto-montaje". Es por ello que, al conectar una
tarjeta SD en un moderno
Montaje manual requiere un "punto de montaje". Eso significa un directorio que
se llena con el dispositivo montado cuando se monta. A menudo, esto est en el
directorio "/ mnt /" en algn lugar. Por lo general, antes de montar los nuevos
medios, primero debe asegurarse de que haya un punto de montaje. Si no la
hay, entonces debe crear un directorio en el

$ Mkdir / mnt / NetFolder

E l L inu x C ommand L ine


164

Tambin debe asegurarse de que utiliza los interruptores necesarios, parmetros y


directorios. Por ejemplo, desde el ejercicio anterior:

mount -F smbfs // grupo de trabajo; Fred: foo@192.168.1.99 / casas /


mnt / net
Esto, como hemos aprendido antes, le dice al sistema para montar la unidad
compartida llamada
"hogares" en el servidor de Windows en 192.168.1.99, en el rbol de
directorios en el punto
Para obtener ms informacin sobre el comando "mount", consulte la entrada de
Wikipedia:
http://en.wikipedia.org/wiki/Mount_%28Unix%2 9

Adems del aprendizaje


Los comandos que se presentan aqu son slo una pequea seleccin de todos
los comandos disponibles en el sistema. Usted puede encontrar una lista
completa de los comandos de Linux en el sitio web de O'Reilly:
http://www.oreillynet.com/linux/cm d

E l L inu x C ommand L ine


165

N otas:

N otas:

Lesson 6.5: Remote unccess to the Runspberr y Pyo


OpenSSH es una aplicacin que le permite acceder de forma segura los
sistemas Linux de forma remota sobre la red. Puede utilizar OpenSSH
simplemente para compartir archivos de forma segura. Pero tambin le permite
iniciar sesin en un sistema y controlarlo travs de la red, incluso
La instalacin por defecto de Linux en su Raspberry Pi debe tener "demonio
SSH" corriendo. Esto significa que su Raspberry Pi est escuchando en el
puerto 22 para un equipo remoto pidiendo para hacer una conexin a la misma.
En su caso, esto probablemente significar

Ejecucin de una CLI remota


Para conectarse a la Raspberry Pi, se necesita un programa cliente SSH. Linux y Mac OS ya se
han

instalado

estos.

Para

Windows,

puede

descargar

PuTTY

(Http://www.chiark.greenend.org.uk/~sgtatham/putt y). Consulte el manual de


su programa cliente SSH elegido para obtener ms informacin sobre cmo instalar
y utilizar.
Con el fin de hacer una conexin exitosa, debe tener el puerto 22 abierto tanto en
el host remoto y el PI frambuesa. Usted tambin tendr que configurar un usuario
adecuado
Si est utilizando un cliente Linux o Mac, entra esto en la lnea de
comandos:

<direccin IP del RP _> ssh -l <nombre de usuario en RP _>


<Direccin IP del RP _> debe sustituirse por la direccin IP de su Raspberry Pi, y
<nombre de usuario en RP _> debe ser reemplazado con el nombre de usuario de
la frambuesa
Usted debe ver una salida similar a la
siguiente:

[Brian @ fc16toshibun ~] $ ssh -X 192.168.1.104 -l brian


La autenticidad de acogida '192.168.1.104 (192.168.1.104)' no se puede
establecer.
RSA huella de la clave es 26: a4: a1: ab: c2: ff: 50: 99: d7: e1: 49: 6e: f2: 90: fb: 90.
Seguro que quieres continuar la conexin (s / no)? s
Advertencia: Permanentemente aadido "192.168.1.104" (RSA) a la lista de
hosts conocidos. brian@192.168.1.104 de contrasea:
Linux raspberrypi 3.1.9+ # 9 lun 09 de abril 20:50:36 BST 2012 armv6l
Los programas incluidos con el sistema Debian GNU / Linux son software
libre;
los trminos de distribucin exactas para cada programa se describen
en la
archivos individuales en / usr / share / doc / * / copyright.
Debian GNU / Linux viene con ABSOLUTAMENTE NINGUNA GARANTA, en
la medida permitida por la ley aplicable.
En este punto, usted est en marcha y funcionando. Todo lo que escribe est
sucediendo realmente en
su Frambuesa Pi.

E l L inu x C ommand L ine


166

N otas:

Runnyong un remote GUYO


Para conectarse de forma remota a su Raspberry Pi y utilizar su interfaz grfica de usuario que
tendr que
instalar un "servidor X" en su mquina. Linux tiene un servidor X incorporado.
pr
Xming (Http://www.straightrunning.com/XmingNote s)
o
Cygwin
ob
(Http://www.cygwin.co m) - Se puede descargar tanto de forma gratuita. Para el Mac OS, vaya
a "Shell> Nueva conexin remota" y elegir la opcin "Secure Shell (SSH)".
El siguiente comando utiliza el interruptor X para decirle SSH para enviar el X
manda
el servidor X en su host. Escriba lo siguiente:

ssh -X <direccin IP del RP _> -l <nombre de usuario en RP _>

Qu es un servidor X?
Un ordenador Linux (u otro sistema Unix) que se ejecuta una interfaz grfica de
usuario es casi seguro que ejecutan "X", y tambin un servidor X. El X enva
comandos al servidor X sobre
Esto significa que la interfaz grfica de usuario y el servidor de X estn
separados. Esto tambin significa que puede ejecutar un programa en el
Raspberry Pi y tienen la salida grfica aparece en la pantalla del servidor X en
otro lugar de la red. Esto elimina una gran cantidad de demanda procesador de
la Frambuesa Pi. Y tambin significa que usted puede conectar su Raspberry
Pi en su red, en lugar de darle su propio

E l L inu x C ommand L ine


167

N otas:

Open un remote brayser


Vamos a ver lo que pasa cuando trato de ejecutar un navegador web de forma
remota. El navegador web en el Raspberry Pi se llama Midori, as que esto es lo
que necesitamos para entrar

brian @ raspberrypi: ~$
Midori y [1] 5773
Tenemos que incluir el smbolo "&" despus del nombre del programa, porque este le
dice al servidor para lanzarlo como un proceso independiente, lo que significa que
conseguimos nuestro comando
Recibimos la respuesta "[1] 5773", que es el nmero de proceso del Midori
programa ahora corriendo.
A veces obtendr errores GTK, que reportan deficiencias biblioteca en el host
(RPI) o servidor (el servidor X), pero el proceso es bastante robusto.
Midori se ejecuta en
remoto
Gnome 3 UI utilizando
el

E l L inu x C ommand L ine


168

Que es lo
siguiente?
Si usted ha trabajado a travs de este manual usted tiene una buena
comprensin de los conceptos bsicos de la informtica y usted ser capaz de
escribir un programa informtico para resolver problemas sencillos. Esta pena
repetirlo: se puede escribir una serie de instrucciones para hacer que un equipo
haga algo. Esta simple declaracin abarca un conjunto de poderosas habilidades
de pensamiento que incluyen el razonamiento lgico, la resolucin de problemas,
diseo de algoritmos y mucho ms. A partir de ahora, usted ya no es slo un
consumidor de productos digitales
Esperamos que esta breve introduccin que ha demostrado la utilidad de la
informtica, emocionante y divertido es como un hobby o una carrera. Si, en cualquier
momento mientras se sigue esta gua, sonri para s mismo o gritaste abajo, "Venid y
ved lo que he hecho!", Entonces hemos hecho nuestro trabajo - esto es, despus de
todo, por qu la Raspberry Pi se hizo. Si no ir ms lejos con su viaje Raspberry Pi,
entonces por lo menos saber lo que todo el alboroto y que no es tan difcil como la
gente piensa. Es muy probable, sin embargo, que usted ha cogido el gusanillo de
computacin y quieres
Y ahora qu? Realmente no hay manera correcta o incorrecta para continuar su
exploracin de la Raspberry Pi. Todo depende de lo que te interesa. Podra ser
tan simple como conseguir mejor en su lenguaje de programacin elegido, o la
mejora de sus habilidades de la lnea de comandos de Linux. Los proyectos
pequeos, como por ejemplo la creacin de un servidor de medios en casa o
escribiendo un juego simple, son tambin una buena manera de empezar. En
algn momento, la mayora de la gente quiere tener un ir en la interfaz del
Raspberry Pi con el mundo exterior (este es uno de sus puntos fuertes),
utilizando una tabla de ruptura como el Gertboard, o haciendo su propia interfaz.
Una vez ms, un proyecto simple como el monitoreo
A medida que su comprensin de la Raspberry Pi crece y mejorar sus
habilidades de programacin, usted encontrar que sus proyectos se vuelven
ms y ms compleja, y que el Raspberry Pi se convierte en una herramienta
muy til para la experimentacin y la creatividad. Mantenga prctica - una de
las cosas bellas acerca de la programacin es que se puede tener un archivo
de texto en blanco y crear algo que antes slo exista en su cabeza.

Dnde puedo obtener ayuda, ideas e inspiracin?


El mejor recurso para ayudar a que contine su viaje computing es la web. Es
inmensa, llena de personas con cerebros grandes, llenos de conocimientos
diversos y arcano, ya diferencia de este manual que se actualiza con
frecuencia. Para ahorrar tiempo solo nos bamos a robar una enorme lista de
enlaces desde algn lugar, pegarlos aqu y hacernos escasos. Pero nuestros
editores nos dijeron apagado. He aqu, pues son nuestros vnculos con un
1

Descargo de responsabilidad: si un recurso se menciona aqu, no quiere decir que sea el


mejor en su clase. Asimismo, si no se menciona un recurso, que no quiere decir que no
es bueno. No tenemos ninguna agenda, aparte de hacer que la gente en la informtica y
no tenemos ninguna afiliacin con cualquiera de los sitios o las personas mencionadas.
Lo hacemos ms bien como la Fundacin Raspberry Pi, sin embargo.

W sombrero
nex t?
169

N otas:

Se concentra en la programacin porque el Raspberry Pi se hizo para fomentar


una nueva generacin de programadores. Si bien hay mucho ms para
cmputo de la programacin, es un muy buen lugar para empezar.

Recursos generales y ayuda


El primer lugar para buscar es el sitio web oficial Raspberry Pi y foro (Http:
//raspberrypi.or g). Hay mucho que hacer en los foros y hay subforos para temas especficos como GPIO,
programacin, sistemas operativos y la educacin. Los miembros son un grupo muy amigable que en conjunto
tienen una gran cantidad de experiencia y conocimientos. Ellos estarn encantados de responder a cualquier
pregunta, le ayudar con los problemas y apuntar en la direccin correcta. Si usted tiene alguna pregunta
sobre su Frambuesa Pi o est tratando de conseguir algo para trabajar luego
este es probablemente el mejor lugar
para empezar.

El wiki Raspberry Pi en eLinux (Http://elinux.org/R-Pi_ Hu b) Tambin es una gran fuente de


informacin y se actualiza constantemente. Es un wiki, as que sintete libre de aadir a
y mejorarlo como su conocimiento crece y ampla su experiencia!
Tal vez lo ms til que se puede hacer es unirse a algunos foros (no, no los foros)
y hablar con la gente. Participar, hacer preguntas, ayudar a los dems. Por
encima de todo mantener en la informtica y divertirse!

Programacin
La primera pregunta que los nuevos en la programacin se preguntan es:
"Cul es el mejor lenguaje para aprender?" En pocas palabras - no hay uno.
Slo discutir lenguajes de programacin llenara otro volumen (y te hara garra
frenticamente a su
Cada idioma tiene sus ventajas, desventajas y usos particulares, y todos los
programadores tienen sus favoritos. Todo puede ser un poco, que no es tan til
si no sabes por dnde empezar "es mejor que tu pap Mi pap". En ltima
instancia, son los conceptos computacionales subyacentes que se aprende
durante la programacin que realmente
La primera lengua que se aprende no es importante. Elige uno y obtener la
programacin!
[Actualizacin: el autor de esta declaracin ha tenido desde que esconderse,
despus de que fue atacado en su supermercado local por una horda de
programadores enojados, que arroj
Por lo tanto, elegir un idioma y empezar. A menos que tenga razones para no
hacerlo, luego continuar con Python parece sensato. Con el tiempo, aprender
otros idiomas

W sombrero
nex t?
170

N otas:

N otas:

Runspserrr y Pyo-specyofic rESOurces


Liam Fraser ha hecho una serie de tutoriales Raspberry Pi-especficas de
YouTube, que
se pueden encontrar en http://goo.gl/MM9hLa
El MAGPI, la revista de los libres Raspberry Pi Usuarios (Http://themagpi.co m) Tiene
artculos y tutoriales excelentes para principiantes.

Python tutoriales en lnea, recursos y referencias


El sitio oficial de Python mantiene una lista enorme de recursos de calidad,
tanto para principiantes
(Http://goo.gl/MMo5 G). Debe mantenerlo ocupado durante algn tiempo.

Los cursos en lnea


Cursos gratuitos en lnea por las principales universidades han despegado
recientemente, y ensear a muchos temas relacionados con la computacin, como
la programacin, la electrnica, la inteligencia artificial y la lgica. Los cursos se
asentaron en la universidad / nivel universitario, pero el
Los cursos suelen ser entregados a travs de video conferencias y folletos, con
ejercicios que acompaan. Muchos tienen fechas de inicio y final definidos, con
plazos de tareas y exmenes formales, aunque algunos - como el curso
Udacity CS101
- Ahora est "abierta" y usted puede comenzar (y terminar) en cualquier momento.
Estos cursos son ideales para las personas que quieren hacer algunas cosas ms
en profundidad y me gustara matrcula guiada
En la actualidad, los principales
proveedores son:
Udacity (Http://udacity.co m)
En la Introduccin a la Informtica (CS101) curso no necesita ninguna
experiencia informtica o programacin previa. Te lleva de la nada a la
construccin de su propio motor de bsqueda (aunque no creemos que Google
Coursera (Http: //coursera.or g)
Coursera ofrece 120 cursos en 16 categoras. Ciencias de la Computacin 101
es el curso de computacin para principiantes obvio, pero no se ha iniciado a
partir de octubre de 2012. Una de las ventajas es que tiene una opcin de autoestudio en el que se procede a su propio ritmo (pero no obtiene un certificado).
edx (Http: //edx.or g)
Una colaboracin de MIT, Harvard y Berkeley, edx ofrece actualmente dos cursos
introductorios de computacin: CS50x Introduccin a la Informtica I (Harvard) y
6.00x Introduccin a la Ciencia y Programacin (MIT) que comenzar en
Octubre de 2012.

W sombrero
nex t?
171

N otas:

Onlyone prunctyoce unnd tutoryounls


Ms formas informales de aprender a programar en lnea incluyen Codingbat
(Http://codingbat.co m) Y Codecademy (Http://codecademy.co m). Codingbat es una serie de retos de
programacin que ayudan a construir fortalezas en reas especficas, como el manejo de cadenas y la lgica.
Los profesores pueden seguir el progreso de los estudiantes, y las herramientas incluyen un grfico til que
registra los intentos incorrectos y parcialmente correctas en una solucin (esto hace que sea difcil de
engaar!). Cuenta con ejercicios para Java y Python. Codecademy es un gran lugar para que cualquiera
pueda empezar a programar desde cero. Es fcil de usar y hace un seguimiento de su progreso. Ensea
Javascript sino un Python
Recientemente
"mdulo".

se

ha

aadido

Menos desafos en lnea formales pueden ser un gran motivador. Estos existen
para

ambos

lenguajes

especficos,

como

el

adictivo

Python

Desafo

(Http://www.pythonchallenge.co m), Y para la solucin de problemas especficos, tales como el Proyecto


Euler basada matemticas- (Http://projecteuler.ne t). La lista completa se puede encontrar
en los foros Raspberry Pi en http://goo.gl/n7ej 4.

Ms all de aprendizaje en lnea


La prctica y ejercicios en lnea son tiles, pero la mejor motivacin para
aprender a programar es hacer realidad algo. Esto significa empezar un
proyecto con un fin especfico. Otra forma de mejorar es trabajar en proyectos
con otras personas. A ver si hay un grupo local de usuarios Raspberry Pi o
Linux cerca de usted. Si usted est en
Mira cdigo de otros programadores y tratar de entenderlo. Cambiar para su
propio propsito o tratar de mejorarlo. Si se ha roto, tratar de averiguar por qu.
No se olvide que la programacin a este nivel debe ser divertido - que se
extiende a s mismo es una cosa, pero no lo entiendo tan frustrado que usted da
para arriba. Hable con la gente en los foros y echar un vistazo a cmo

El fin
Esperamos que usted haya encontrado este manual til y que el aprendizaje de
programa ha sido como la mente en expansin como lo fue para los autores cuando
escribieron sus primeras lneas de cdigo. Las computadoras son cosas asombrosas
y ser capaz de controlarlos es un
Mantenga en la programacin, la piratera, jugar, experimentar y crear. Y por encima
todo, divertirse!

W sombrero
nex t?
172

Potrebbero piacerti anche