Вы находитесь на странице: 1из 11

1.

La forma del programa


El objetivo de este libro es ensear a pensar como un cientfico de la computacin. Esta forma de
pensar combina algunas de las mejores caractersticas de las matemticas, la ingeniera y las
ciencias naturales. Al igual que los matemticos, los informticos utilizan lenguajes formales para
denotar las ideas (clculos en concreto).Al igual que los ingenieros, que disean cosas, el montaje
de componentes en sistemas y evaluar las compensaciones entre las alternativas. Al igual que los
cientficos, que observan el comportamiento de sistemas complejos, formular hiptesis y
predicciones de prueba.
La habilidad ms importante para un cientfico de la computacin es la resolucin de
problemas. La resolucin de problemas, la capacidad de formular problemas, pensar de forma
creativa sobre las soluciones, y expresar una solucin clara y precisa. Como resultado, el proceso
de aprender a programar es una excelente oportunidad para practicar las habilidades de
resolucin de problemas. Es por eso que este captulo se llama el camino del programa.
En un nivel, usted aprender a programar, una habilidad til por s mismo. En otro nivel, que va a
utilizar la programacin como un medio para un fin. A medida que avanzamos, ello se har ms
claro.

1.1. El lenguaje de programacin Python


El lenguaje de programacin que aprender es Python. Python es un ejemplo de un lenguaje de
alto nivel ; otros lenguajes de alto nivel es posible que haya odo hablar son C ++, PHP, Pascal, C
# y Java.
Como se pueden deducir del nombre de lenguaje de alto nivel, tambin hay lenguajes de bajo
nivel , a veces se hace referencia como lenguajes de mquina o lenguajes ensambladores. En
trminos generales, los equipos slo pueden ejecutar programas escritos en lenguajes de bajo
nivel. Por lo tanto, los programas escritos en un lenguaje de alto nivel tienen que traducirse en
algo ms adecuado antes de que puedan funcionar.
Casi todos los programas estn escritos en lenguajes de alto nivel debido a sus ventajas. Es
mucho ms fcil de programar en un lenguaje de alto nivel para que los programas toman menos
tiempo para escribir, que son ms pequeos y ms fciles de leer, y que tienen ms
probabilidades de ser correcta. En segundo lugar, los lenguajes de alto nivel son porttiles , lo
que significa que pueden funcionar con diferentes tipos de ordenadores con pocas o ninguna
modificacin.
El motor que se traduce y ejecuta Python se llama el intrprete de Python : Hay dos formas de
usarlo: el modo inmediato y el modo de secuencia de comandos . En el modo inmediato, que
escribe las expresiones de Python en la ventana de Python intrprete, y el intrprete muestra
inmediatamente el resultado:

La >>> se llama el prompt de Python . El intrprete utiliza el smbolo para indicar que est
listo para recibir instrucciones. Escribimos 2 + 2 , y el intrprete evaluamos nuestra expresin, as
como sus respuestas 4 , y en la lnea siguiente le dio un nuevo smbolo, que indica que est listo
para ms de entrada.
Alternativamente, se puede escribir un programa en un archivo y usar el intrprete para ejecutar
el contenido del archivo. Este tipo de archivo se llama una secuencia de comandos. Scripts
tienen la ventaja de que se pueden guardar en el disco, impresos, y as sucesivamente.
En este Rodas edicin local del libro de texto, se utiliza un entorno de desarrollo de programa
llamado PyScripter . (Est disponible enhttp://code.google.com/p/pyscripter .) Hay varios otros
entornos de desarrollo. Si est utilizando uno de los otros, usted podra ser mejor trabajar con el
libro original de los autores en lugar de esta edicin.
Por ejemplo, hemos creado un archivo llamado firstprogram.py usando PyScripter. Por convencin,
los archivos que contienen programas de Python tienen nombres que terminan con .py
Para ejecutar el programa, podemos hacer clic en el Run botn en PyScripter:

La mayora de los programas son ms interesantes que ste.

Trabajando directamente en el intrprete es adecuado para probar pequeos trozos de cdigo


debido a que obtiene una retroalimentacin inmediata. Piense en ello como papel borrador se
utiliza para ayudarle a resolver problemas. Nada ms que unas pocas lneas se debe poner en un
script.

1.2. Qu es un programa?
Un programa es una secuencia de instrucciones que especifican cmo llevar a cabo un
clculo. El clculo puede ser algo matemtico, como resolver un sistema de ecuaciones o la
bsqueda de las races de un polinomio, pero tambin puede ser un clculo simblico, como
buscar y reemplazar texto en un documento o (curiosamente) compilar un programa.
Los detalles se ven diferentes en diferentes idiomas, pero unas pocas instrucciones bsicas
aparecen en casi todos los idiomas:
entrada
Obtener datos desde el teclado, un archivo, o algn otro dispositivo.
salida
Mostrar los datos en la pantalla o enviar datos a un archivo u otro dispositivo.
mates
Realizar operaciones matemticas bsicas como suma y la multiplicacin.
ejecucin condicional
Compruebe si hay ciertas condiciones y ejecutar la secuencia de instrucciones apropiada.
repeticin
Realizar alguna accin en varias ocasiones, por lo general con alguna variacin.
Lo creas o no, eso es prcticamente todo lo que hay que hacer. Cada programa que ha utilizado
nunca, no importa lo complicado, se compone de instrucciones para que se parezcan ms o
menos como estos. Por lo tanto, podemos describir la programacin como el proceso de romper
una tarea grande y compleja en subtareas ms pequeas hasta las subtareas son lo
suficientemente simple para ser realizado con secuencias de estas instrucciones bsicas.
Eso puede ser un poco vago, pero vamos a volver a este tema ms adelante, cuando hablamos
de algoritmos .

1.3. Lo que se depura?


La programacin es un proceso complejo, y porque se hace por los seres humanos, que a menudo
conduce a errores. Los errores de programacin se llaman errores y el proceso de seguimiento y
corregirlos ellos se llama depuracin . El uso del trmino error de describir las dificultades de
ingeniera pequeos data de al menos 1889, cuando Thomas Edison tena un error con su
fongrafo.
Existen tres tipos de errores pueden ocurrir en un programa: errores de sintaxis , errores de
ejecucin y errores semnticos . Es til distinguir entre ellos a fin de localizarlos con mayor
rapidez.

1.4. Los errores de sintaxis

Python slo puede ejecutar un programa si el programa es sintcticamente correcto; de lo


contrario, el proceso falla y devuelve un mensaje de error. Sintaxis se refiere a la estructura de
un programa y las reglas de esa estructura. Por ejemplo, en Ingls, una oracin debe comenzar
con una letra mayscula y terminar con un punto. esta frase contiene un error de sintaxis . Lo
mismo ocurre con ste
Para la mayora de los lectores, algunos errores de sintaxis no son un problema significativo, por
lo que podemos leer la poesa de EE Cummings y sin problemas. Python no es tan indulgente. Si
hay un solo error de sintaxis en cualquier parte de su programa, Python mostrar un mensaje de
error y dejar de fumar, y usted no ser capaz de ejecutar su programa. Durante las primeras
semanas de su carrera de programacin, es probable que pasar mucho tiempo buscando errores
de sintaxis. A medida que adquiera experiencia, sin embargo, va a cometer menos errores y
encontrarlos ms rpido.

1.5. Errores de ejecucin


El segundo tipo de error es un error de ejecucin, llamado as porque el error no aparece hasta
que se ejecute el programa. Estos errores tambin se llaman excepciones porque por lo general
indican que algo excepcional (y malo) ha ocurrido.
los errores de ejecucin son poco comunes en los programas simples se pueden ver en los
primeros captulos, por lo que podra ser un tiempo antes de encontrar uno.

1.6. Los errores semnticos


El tercer tipo de error es el error semntico. Si hay un error semntico en su programa, pondr
en funcionamiento con xito, en el sentido de que el ordenador no generar ningn mensaje de
error, pero no va a hacer lo correcto. Se va a hacer otra cosa. En concreto, se har lo que le dijo
que hiciera.
El problema es que el programa que escribi no es el programa que quera escribir. El significado
del programa (su semntica) es incorrecto. La identificacin de los errores semnticos puede ser
complicado, ya que requiere que trabajar hacia atrs mirando la salida del programa y tratando
de averiguar lo que est haciendo.

1.7. Depuracin experimental


Una de las habilidades ms importantes que adquirir es la depuracin. Aunque puede ser
frustrante, la depuracin es una de las partes ms ricas intelectualmente, desafiantes, e
interesantes de la programacin.
En cierto modo, la depuracin es como el trabajo de detective. Se enfrenta a las pistas, y hay que
inferir los procesos y eventos que llevaron a los resultados que se ven.
La depuracin es tambin como una ciencia experimental. Una vez que tenga una idea de lo que
va mal, se modifica el programa y vuelva a intentarlo. Si su hiptesis era correcta, entonces se
puede predecir el resultado de la modificacin, y se da un paso ms cerca de un programa de
trabajo. Si su hiptesis era incorrecta, usted tiene que llegar a una nueva. Como dijo Sherlock
Holmes, Cuando se ha eliminado lo imposible, lo que queda, por improbable que parezca, debe
ser la verdad. (A. Conan Doyle, El signo de los cuatro )

Para algunas personas, la programacin y la depuracin son la misma cosa. Es decir, la


programacin es el proceso de depuracin de un programa gradual hasta que hace lo que
quiere. La idea es que usted debe comenzar con un programa que hace algo y hacer pequeas
modificaciones, la depuracin a medida que avanza, por lo que siempre tiene un programa de
trabajo.
Por ejemplo, Linux es un ncleo de sistema operativo que contiene millones de lneas de cdigo,
pero que comenz como un simple programa de Linus Torvalds utiliza para explorar el chip Intel
80386. Segn Larry Greenfield, uno de los primeros proyectos de Linus fue un programa que
cambiar entre mostrar AAAA y BBBB. Esto se desarroll ms tarde para Linux ( Los usuarios de
Linux 'Gua de la versin Beta 1).
En captulos posteriores se harn ms sugerencias sobre la depuracin y otras prcticas de
programacin.

1.8. Los lenguajes formales y naturales


Los lenguajes naturales son los idiomas hablados por seres humanos, tales como Ingls,
espaol y francs. No fueron diseados por personas (aunque la gente trata de imponer un poco
de orden en ellos); evolucionaron de forma natural.
Los lenguajes formales son lenguajes que estn diseados por la gente para aplicaciones
especficas. Por ejemplo, La notacin matemtica, es el uso de un lenguaje formal que es
particularmente bueno en que denota relaciones entre nmeros y smbolos. Los qumicos usan un
lenguaje formal para representar la estructura qumica de las molculas. Y ms importante:
Los lenguajes de programacin son lenguajes formales que se han diseado para expresar
computaciones.
Los lenguajes formales tienden a tener reglas estrictas acerca de la sintaxis. Por ejemplo, 3 + 3 =
6 es una declaracin matemtica sintcticamente correcta, pero 3 = + 6 $ no lo es. H 2 O es un
nombre qumico sintcticamente correcta, pero Zz no lo es.
Las reglas de sintaxis son de dos tipos, perteneciente a fichas y estructura. Las fichas son los
elementos bsicos del lenguaje, tales como palabras, nmeros, parntesis, comas, y as
sucesivamente. En Python, una declaracin como
la impresin ( "Happy New Year para ", 2013) tiene 6 fichas: un nombre de funcin, un parntesis

abierto (soporte y vuelta), una cadena, una coma, un nmero y un parntesis de cierre.
Es posible hacer que los errores en la forma en uno construye tokens. Uno de los problemas con 3
= + 6 $ es que $ no es una unidad matemtica (por lo menos hasta donde sabemos). De manera
similar, 2 Zz no es un contador legal en notacin qumica porque no hay ningn elemento con la
abreviatura Zz .
El segundo tipo de regla de sintaxis se refiere a la estructura de una declaracin-es decir, la
forma en que las fichas estn dispuestas. La declaracin 3 = + 6 $ es estructuralmente ilegal
porque no se puede poner un signo ms inmediatamente despus de un signo igual. Del mismo
modo, las frmulas moleculares que tener subndices despus del nombre del elemento, no
antes. Y en nuestro ejemplo Python, si omitimos la coma, o si cambiamos los dos parntesis
alrededor decir impresin) "Feliz Nuevo Ao para ", 2013 ( nuestro estado todava tiene seis fichas
legales y vlidas, pero la estructura es ilegal.

Cuando se lee una frase en Ingls o una declaracin en un lenguaje formal, usted tiene que
averiguar cul es la estructura de la frase es (aunque en un lenguaje natural hace esto
inconscientemente). Este proceso se denomina anlisis sintctico .
Por ejemplo, cuando se oye la frase, "El otro zapato cay", se entiende que el otro zapato es el
sujeto y cay es el verbo. Una vez que haya analizado sintcticamente una oracin, se puede
averiguar lo que significa, o los semntica de la frase. Suponiendo que usted sabe lo que es un
zapato y lo que significa a caer, va a entender la implicacin general de esta frase.
Aunque los lenguajes formales y naturales tienen muchas caractersticas en comn - fichas,
estructura, sintaxis y semntica - hay muchas diferencias:

ambigedad
Los lenguajes naturales estn llenas de ambigedades que se ocupan de mediante el uso de
claves contextuales y otra informacin. Los lenguajes formales estn diseados para ser casi o
completamente inequvoca, lo que significa que cualquier declaracin tiene exactamente un
significado, independientemente del contexto.

redundancia
Con el fin de compensar la ambigedad y reducir los malentendidos, los lenguajes naturales
utilizan bastante redundancia. Como resultado, a menudo son detallado.Los lenguajes formales
son menos redundante y ms concisa.

literalidad
Los lenguajes formales significan exactamente lo que dicen. Por otra parte, los lenguajes
naturales estn llenos de lenguaje y la metfora. Si alguien dice: "El otro zapato cay",
probablemente no hay nada de zapatos y caer. Tendr que encontrar la broma original de
entender el significado idiomtico de la cada de otro zapato.Yahoo! Respuestas piensa que sabe!
Las personas que crecen hablando un lenguaje natural, todo el mundo, a menudo tienen
dificultades para adaptarse a los lenguajes formales. En cierto modo, la diferencia entre el
lenguaje formal y natural es como la diferencia entre la poesa y la prosa, pero ms an:

poesa
Las palabras se usan por sus sonidos, as como por su significado, y todo el poema en conjunto
crean un efecto o respuesta emocional. La ambigedad no es slo es comn, pero a menudo
deliberada.

prosa
El significado literal de las palabras es ms importante, y la estructura contribuye con ms
significado. La prosa es ms susceptible de anlisis de la poesa, pero todava a menudo ambigua.

programa
El significado de un programa de ordenador es inequvoco y literal, y puede ser comprendido en
su totalidad por el anlisis de las fichas y estructura.
Aqu estn algunas sugerencias para los programas de lectura (y otros lenguajes formales). En
primer lugar, recuerde que los lenguajes formales son mucho ms densos que los lenguajes
naturales, por lo que se necesita ms tiempo para leerlos. Adems, la estructura es muy
importante, por lo que por lo general no es una buena idea leer de arriba a abajo, de izquierda a
derecha. En su lugar, aprender a analizar el programa en su cabeza, la identificacin de las fichas
y la interpretacin de la estructura. Por ltimo, los detalles importan. Las pequeas cosas como

errores de ortografa y mala puntuacion, que puede salirse con la de las lenguas naturales,
pueden hacer una gran diferencia en un lenguaje formal.

1.9. El primer programa


Tradicionalmente, el primer programa escrito en un lenguaje nuevo se llama Hola, mundo! Porque
todo lo que hace es mostrar las palabras, Hola, mundo! En Python, el guin es el siguiente: (Para
los scripts, vamos a mostrar los nmeros de lnea a la izquierda de las sentencias de Python).

print("Hello, World!")

Este es un ejemplo del uso de la funcin de impresin, que en realidad no imprime nada en
papel. Se muestra un valor en la pantalla. En este caso, el resultado mostrado es
Hello, World!

Las comillas en el programa marcan el comienzo y el final del valor; que no aparecen en el
resultado.

Algunas personas juzgan la calidad de un lenguaje de programacin por la simplicidad de la Hola,


mundo! programa. Segn esta norma, Python lo hace tan bien como sea posible.

1.10. comentarios
A medida que los programas se hacen ms grandes y ms complicadas, que se vuelven ms
difciles de leer. Los lenguajes formales son densos, y con frecuencia es difcil mirar a un trozo de
cdigo y descubrir lo que est haciendo, o por qu.
Por esta razn, es una buena idea aadir notas a sus programas de explicar en lenguaje natural lo
que est haciendo el programa.
Un comentario en un programa de ordenador es el texto que se piensa solamente para el lector
humano - que es completamente ignorado por el intrprete.
En Python, el # contador comienza un comentario. El resto de la lnea se ignora. Aqu es una
nueva versin de Hello Mundo .

1
2
3
4
5
6
7

#--------------------------------------------------# This demo program shows off how elegant Python is!
# Written by Joe Soap, December 2010.
# Anyone may freely copy or modify this program.
#--------------------------------------------------print("Hello, World!")

# Isn't this easy!

Tambin se dar cuenta de que hemos dejado una lnea en blanco en el programa. Las lneas en
blanco tambin son ignorados por el intrprete, pero los comentarios y lneas en blanco pueden
hacer que sus programas mucho ms fcil para los seres humanos para analizar. Utilizarlos
libremente!

1.11. Glosario
algoritmo
Un conjunto de medidas especficas para resolver una categora de problemas.
error
Un error en un programa.
comentario
La informacin contenida en un programa que se quiere decir para otros programadores (o
cualquiera que lea el cdigo fuente) y no tiene ningn efecto en la ejecucin del programa.
depuracin
El proceso de bsqueda y eliminacin de cualquiera de los tres tipos de errores de programacin.
excepcin
Otro nombre para un error de ejecucin.
lenguaje formal
Cualquiera de los idiomas que la gente ha diseado para fines especficos, tales como la
representacin de las ideas matemticas o programas de ordenador; todos los lenguajes de
programacin son lenguajes formales.
lenguaje de alto nivel
Un lenguaje de programacin como Python que est diseado para que sea fcil para los seres
humanos a leer y escribir.
modo inmediato
Un estilo de uso de Python en el que escriba expresiones en el smbolo del sistema, y los
resultados se muestran inmediatamente. Contraste con la escritura , y ver el texto
correspondiente terminal de Python .
intrprete
El motor que ejecuta las secuencias de comandos de Python o expresiones.
lenguaje de bajo nivel
Un lenguaje de programacin que est diseado para ser fcil para un ordenador
ejecute; tambin llamado lenguaje de mquina o lenguaje ensamblador.
lenguaje natural
Cualquiera de los idiomas hablados por seres humanos que se desarroll de forma natural.

cdigo de objeto
La salida del compilador despus de que traduce el programa.
analizar gramaticalmente
Para examinar un programa y analizar la estructura sintctica.
portabilidad
Una caracterstica de un programa que puede funcionar con ms de un tipo de ordenador.
funcin de impresin
Una funcin que se utiliza en un programa o script que hace que el intrprete de Python para
mostrar un valor en su dispositivo de salida.
la resolucin de problemas
El proceso de formulacin de un problema, la bsqueda de una solucin, y expresando la
solucin.
programa
una secuencia de instrucciones que especifican acciones a un informticos y los clculos a
realizar.
terminal de Python
Una interfaz de usuario interactiva para el intrprete de Python. El usuario de un terminal de
Python tipos comandos en el indicador (>>>), y pulsa la tecla de retorno para enviar estos
comandos inmediatamente al intrprete para su procesamiento. La palabra cscara proviene de
Unix. En el PyScripter utilizado en esta versin RLE del libro, la ventana de intrprete es donde
nos gustara hacer la interaccin modo inmediato.
error de ejecucin
Un error que no se produce hasta que el programa ha comenzado a ejecutar, sino que previene
que el programa continua.
guin
Un programa almacenado en un archivo (por lo general uno que ser interpretada).
error semntico
Un error en un programa que hace que sea hacer algo distinto de lo que el programador
pretende.
semntica
El significado de un programa.
cdigo fuente
Un programa en un lenguaje de alto nivel antes de ser compilado.
sintaxis

La estructura de un programa.
error de sintaxis
Un error en un programa que hace que sea imposible analizar - y por lo tanto imposible de
interpretar.
simblico
Uno de los elementos bsicos de la estructura sintctica de un programa, de forma anloga a una
palabra en un lenguaje natural.

1.12. ejercicios
1. Escribe una sentencia de Ingls con la semntica comprensible, pero una sintaxis
incorrecta. Escribir otra frase Ingls que tiene la sintaxis correcta, pero tiene errores
semnticos.
2. Usando el intrprete de Python, tipo 1 + 2 y luego pulsa
retorno. Python evala esta expresin , muestra el resultado, y luego muestra otro
smbolo. * Es el operador de multiplicacin , y ** es el operador de
exponenciacin . Experimento mediante la introduccin de diferentes expresiones y el
registro de lo que se muestra por el intrprete de Python.
3. Tipo 1 2 y luego pulsa retorno. Python trata de evaluar la expresin, pero no puede debido
a que la expresin no es sintcticamente legal. En su lugar, se muestra el mensaje de
error:

File "<interactive input>", line 1


12
^
SyntaxError: invalid syntax
En muchos casos, Python indica dnde se produjo el error de sintaxis, pero no siempre es
correcto, y no le da mucha informacin sobre lo que est mal.
As, en su mayor parte, la carga est en que usted pueda aprender las reglas de sintaxis.
En este caso, Python se quejaba de que no hay ningn operador entre los nmeros.
Vea si usted puede encontrar algunos ejemplos ms de las cosas que producirn mensajes de
error cuando se introducen en el indicador de Python. Escribe lo que entra en el smbolo y la
ltima lnea del mensaje de error que Python informa de nuevo a usted.
4. Tipo print hello . Python ejecuta este, que tiene el efecto de la impresin de las letras
hola. Observe que las comillas que utiliz para delimitar la cadena no son parte de la
salida. Ahora escriba "hola" y describir su resultado. Tome nota de cuando vea las comillas
y no cuando lo hace.
5. Tipo print cheese sin las comillas. La salida ser algo como esto:

Traceback (most recent call last):


File "<interactive input>", line 1, in ?
NameError: name 'cheese' is not defined
6. Este es un error de tiempo de ejecucin; especficamente, es un NameError, y an ms
especficamente, es un error porque el nombre de queso no est definido. Si usted no sabe
lo que eso significa, sin embargo, pronto lo sabr.
7. Tipo 6 + 4 * 9 en el indicador de Python y pulsa enter. Grabar lo que sucede.
Ahora crear una secuencia de comandos de Python con el siguiente contenido:

6 + 4 * 9

Qu ocurre cuando se ejecuta este script? Ahora cambia el contenido del script para:

print(6 + 4 * 9)

y ejecutarlo de nuevo.
Qu ha pasado esta vez?
Cada vez que una expresin se escribe en el indicador de Python, se evala y el resultado
es automticamente muestra en la lnea de abajo. (Al igual que en la calculadora, si escribe esta
expresin que obtendr el resultado 42.)
Un guin es diferente, sin embargo. Las evaluaciones de las expresiones no se muestran de forma
automtica, por lo que es necesario el uso de la impresin defuncin para realizar la respuesta
apareci.
Casi nunca es necesario utilizar la funcin de impresin en el modo inmediato en el smbolo del
sistema.

Вам также может понравиться