Tema4 Prog
Tema4 Prog
Tema4 Prog
10 PRINT “HOLA”
20 GOTO 10
Esta forma de trabajar provocaba que, a medida que el tamaño de los programas iba
aumentando, estos resultaran cada vez más difíciles de leer y corregir, puesto que era
necesario analizar paso a paso de qué punto a qué otro punto del programa se saltaba: es lo
que se llamó código espagueti. Como alternativa, a mediados de los años sesenta se diseñaron
lenguajes que incorporaban estructuras más legibles, que permitían que un fragmento de un
programa se repitiera mientras se cumpliera una cierta condición o descomponer un programa
en bloques, denominados subrutinas. Este hecho supuso el comienzo de la programación
estructurada, que se aplicó a lenguajes como ALGOL, PL/I o Pascal.
Con el paso de los años, se han diseñado otras metodologías más apropiadas para crear
programas de gran tamaño (formados por miles de órdenes), como la programación orientada
a objetos.
El problema radica en que el lenguaje que un ordenador entiende, esto es, el «código
máquina», que es el ejemplo más claro de lenguaje de bajo nivel, es muy diferente a los
idiomas hablados por las personas. Resulta difícil de aprender y es fácil cometer errores con él.
Por eso, es habitual emplear otros más parecidos a los de los humanos (los denominados
lenguajes de alto nivel) y utilizar herramientas que conviertan el programa a código máquina.
Normalmente, estos son muy similares al inglés, aunque más estrictos.
Por su parte, un intérprete es otro tipo de traductor. La diferencia con el compilador es que, en
los intérpretes, no se crea ningún programa ejecutable capaz de funcionar por sí solo. En el
momento de ponerlo en funcionamiento, el intérprete convierte cada orden del programa
fuente en su equivalente en código máquina y la pone en marcha, y luego la siguiente, y así
sucesivamente. Si encuentra un error, el programa se detiene en ese punto, pero las órdenes
anteriores ya se habrán ejecutado.
Esto supone que, normalmente, un programa interpretado comenzará a funcionar antes que
un programa compilado (pues no es necesario traducirlo todo para empezar, sino solo la
primera orden), pero será más lento en los procesos de cálculo intensivo (porque cada orden se
puede tener que traducir varias veces: tantas como se ejecute dicha orden).
1.3. Pseudocódigo
Aunque los lenguajes de alto nivel se asemejan al lenguaje natural, es habitual no usar ninguno
concreto al plantear, inicialmente, los pasos necesarios para resolver un problema, sino
emplear uno ficticio, no tan estricto, que puede escribirse, incluso, en castellano. Este recibe el
nombre de pseudocódigo:
PEDIR numero1
PEDIR numero2
SI numero2 <> 0
SI NO
Existen rankings de valoraciones, como el índice TIOBE, que ordenan los lenguajes de mayor a
menor popularidad, a partir de ciertos criterios, como la cantidad de búsquedas realizadas
sobre ellos en Google y otros buscadores, o la cantidad de programas escritos en ese lenguaje
que se pueden encontrar en almacenes de programas fuente, como GitHub y SourceForge.
Algunos de los lenguajes de programación más extendidos son C, C++, C#, Java, JavaScript, PHP
y Python. C se suele usar para crear sistemas operativos y programas que deban acceder al
hardware, Java, para aplicaciones en servidores web de gran tamaño y para el sistema Android;
C++, en aplicaciones de escritorio y videojuegos, y Python se emplea, cada vez más, como
lenguaje de propósito general, pero también en sectores como el del análisis de datos. Se trata
de un lenguaje potente, con una sintaxis razonablemente sencilla, y para el que hay multitud
de bibliotecas, que permiten aplicarlo a muy distintos ámbitos. Además, su intérprete está
disponible para la gran mayoría de sistemas operativos actuales, de modo que se pueden crear
aplicaciones para Linux, macOS o Windows, entre otros.
1.5. Hola, mundo
El primer programa que se suele crear, al comenzar a trabajar con un lenguaje de
programación, consiste en escribir algo en pantalla. Con frecuencia, ese texto que escribe el
programa es un saludo al mundo que le rodea, un «Hola, mundo». En otros más antiguos y
simples, como BASIC, esto se podía conseguir así:
PRINT “HOLA MUNDO“
La mayoría de los lenguajes modernos añaden nuevas posibilidades, como el acceso a Internet
o la manipulación de textos de gran tamaño y de imágenes, pero, a cambio, pueden complicar
un programa simple. Por ejemplo, el equivalente al programa anterior, escrito en Java, sería:
class HolaMundo
{
public static void main( String args[] )
{
System.out.print( "Hola, mundo” );
}
}
Por el contrario, Python supone una vuelta a la simplicidad. En este lenguaje, un programa
básico tendría esta apariencia:
print("Hola, mundo”)
Esta sencillez aparente no quiere decir que Python sea un lenguaje menos potente que Java,
sino que se ha diseñado pensando en que su curva de aprendizaje sea menos pronunciada.
Es habitual que estos estén divididos en dos paneles, uno al lado del otro. Normalmente, el
panel izquierdo se deberá emplear para teclear el programa, mientras que el panel derecho
mostrará los resultados.
Para lanzar el programa, existirá un botón como Run o Execute, o uno que recuerde al botón
Play de los equipos de música y multimedia.
https://www.online-python.com/?utm_content=cmp-true
1.7. Probar un programa en LliureX
En LliureX, al igual que en la mayoría de distribuciones de Linux, es habitual que Python esté
preinstalado y sea accesible a través del menú del sistema, en un abartado llamado Desarrollo
o Programación. En caso de no existir ese menú, Python se podría lanzar desde un terminal
(como Konsole):
Así, desde la consola, bastaría con teclear «python3», para entrar en su entorno básico de
programación.
Si existe un apartado para Python en el menú del sistema, es habitual que aparezca también la
opción Idle, que es el editor de texto que viene preinstalado como parte de la distribución
estándar de Python, el cual será más cómodo que el entorno básico y suficiente para
programas cuya complejidad no sea muy grande. Una vez dentro de ldle, para crear programas
formados por varias órdenes, se deberá acceder al menú File y usar la opción New File.
Tras teclear el programa, será necesario acceder al menú Run y escoger la opción Run Module.
Si el programa no se hubiera guardado, en ese momento se dará la posibilidad para ello.
Para programas más complejos, existe la alternativa de emplear entornos más avanzados,
algunos de los cuales cuentan con versiones gratuitas para uso general o para uso educativo,
como PyCharm, creado por JetBrains.
2 UN PROGRAMA QUE CALCULA
2.1. Realizar operaciones prefijadas
Realizar operaciones matemáticas en Python es fácil: basta con indicar la oberación sin
encerrarla entre comillas:
Si se desea, es posible incluir espacios adicionales entre los paréntesis, o separar los números
de los operadores, para conseguir una mejor legibilidad. Las operaciones de suma, resta,
multiplicación y división son sencillas. Sin embargo, una operación muy habitual en
programación, pero que suele resultar más difícil de comprender, es el resto o módulo: el
resultado de 21%5 es el resto de dividir 21 entre 5; es decir, 1:
Otras dos operaciones frecuentes que permite realizar Python, y que no están disponibles en
todos los lenguajes de programación, son la potencia (que se expresa con dos asteriscos
seguidos) y la división entera (sin decimales, con dos barras de división seguidas):
Desde Python 3.6, se permite usar cadenas con formato (en inglés, f-stríngs, abreviatura de
formatted string literals). Estas comienzan con una letra f e indican, entre llaves, aquello que se
deba analizar y sustituir por su valor, como en este ejemplo:
2.3. Comentarios
Las líneas que comiencen por un símbolo de almohadilla o hash (#) se consideran comentarios.
Estos se incluyen para ayudar al programador o la programadora a recordar mejor qué se
pretendía con un fragmento del programa o cuál es su cometido. Para el ordenador, se
comportan como si no se hubiera escrito nada:
2.4. Pedir datos a la persona usuaria
Un programa en el que todos los datos están prefijados es poco útil, no tiene mucho sentido
que sea preciso modificar el código fuente y relanzar el programa cada vez que se hace
necesario probar otros nuevos. Por el contrario, lo habitual es que esos datos sean introducidos
por el usuario o la usuaria —la alternativa más sencilla— o se lean desde un fichero, una base
de datos o una red de ordenadores (Internet o cualquier otra). Para leer datos en Python, se
emplea la orden input(), y será necesario disponer de un lugar donde guardarlos, un espacio de
memoria al que se le dará un nombre: es lo que se conoce como una variable. En otros
lenguajes de programación, es necesario declarar aquellas que un programa va a emplear,
detallando, además, el tipo de datos que se van a guardar (por ejemplo, si será un texto o un
número entero). En Python, esto no es necesario, ya que el propio sistema se encargará de
deducir qué tipo de datos debe guardar cada variable y de almacenarlos correctamente. Por
ejemplo, el siguiente programa pregunta a la persona usuaria su nombre y luego la saluda:
Ese programa puede abreviarse un poco, porque, entre los paréntesis de la orden input(), se
puede indicar un mensaje de aviso, que ayude al usuario o la usuaria a saber qué tipo de
información debe introducir. En este caso, y al contrario que en el ejemplo anterior, el texto se
introducirá en la misma línea, a continuación del aviso, y sin ningún espacio adicional de
separación:
En ambos ejemplos, se pide a la persona que introduzca su nombre, y el texto que teclee se
almacena en un espacio de memoria, al que se podrá acceder usando la palabra «nombre».
Esta palabra se ha elegido por legibilidad, pero también podría haber sido algo tan breve como
«n», o algo más detallado, como «nombreDelUsuario». Los nombres de las variables deben
empezar por una letra, no deben contener espacios intermedios, y respetar las mayúsculas y
minúsculas que se hayan escogido, de modo que el siguiente programa daría un mensaje de
error al llegar a la segunda línea, porque la palabra «nombre» empieza por mayúsculas en la
orden print:
2.5. Operaciones con datos numéricos introducidos por el usuario o la usuaria
Si lo que se desea es que el usuario o la usuaria introduzca un número, será necesario indicar a
Python que el resultado de input() debe ser tratado como un número. En programación, se
suele distinguir entre números enteros (sin decimales) y números reales o de coma flotante
(que sí permiten decimales, pero pueden tener cierta pérdida de precisión y, según el sistema
concreto, ser algo más lentos de manipular que los números enteros). Así, el siguiente
programa pide un número entero a la persona usuaria y, cuando se introduce, calcula su triple:
Tal como se puede observar, para que un dato introducido por la persona se tome como
número entero, basta con encerrarlo dentro de int()
Es habitual que un programa emplee varias variables, tanto si se van a solicitar varios datos al
usuario o la usuaria como si se van a realizar cálculos intermedios. Por ejemplo, se podría
calcular la suma de dos números reales así:
x elevado a y: math.powt(x,y)
Coseno: math.cos(x)
Seno: math.sin(x)
Tangente: math.tan(x)
Estas funciones no son parte del lenguaje base, sino de la biblioteca math, por lo que, para
utilizarlas, el programa deberá comenzar con la línea import math, como en el siguiente
ejemplo:
Para las funciones trigonométricas, el ángulo se indica en radianes en vez de en grados. Así, si
el dato original está en grados, habrá que convertirlo a radianes, teniendo en cuenta la
equivalencia 180 grados = π radianes. El número π, en Python, se representa como math.pi, tal
como se puede ver en el siguiente ejemplo:
2.7. Partir líneas largas
A pesar de que, por lo general, Python es más compacto que otros lenguajes de programación,
en ocasiones una orden ocupará más que el ancho visible de la pantalla, lo que puede
disminuir la legibilidad del programa, al tener que hacer scroll a un lado y a otro, para revisarlo.
En la práctica, se recomienda que una línea no esté formada por más de 80 caracteres, y que si
una orden concreta va a ser más larga, se descomponga en varias líneas.
Existen dos formas de partir líneas: dentro de un paréntesis, se podrá partir la línea Clo
deseable, tras una coma o un operador matemático) y tabular la continuación a la derecha
(habitualmente, cuatro espacios); o bien, en líneas que no contengan paréntesis, se puede
emplear la barra invertida (\), para indicar que una determinada orden no está completa, sino
que continúa en la Iinea siguiente:
Dentro de un paréntesis
3 TOMA DE DECISIONES
3.1.If
Para comprobar si se cumple una determinada condición e indicar qué pasos se deben dar en
dicho caso, se emplea la orden if («si» condicional). Una vez escrita, tras la palabra if, se
señalará la condición que se desea evaluar, seguida de dos puntos ( :). La orden u órdenes que
se deban realizar, en caso de que se cumpla esa condición, se detallará en la línea o líneas
siguientes, tabulando un poco más a la derecha (de nuevo, cuatro espacios es el estándar más
aceptado por regla general):
3.2. Operadores relacionales: <=, >, >=, ==, !=
Igual que se observa en el ejemplo del apartado anterior, el símbolo mayor que (>) se emplea
para comprobar si un número es mayor que otro. Por su parte, el simbolo menor que (<)
también es sencillo, pero los demás operadores de comparación son un poco menos evidentes,
tal como se puede observar en la siguiente tabla:
Es importante tener en cuenta que los operadores formados por dos símbolos, como >=, no
deben tener un espacio entre ambos símbolos, o no se reconocerán correctamente, tal como
muestra el siguiente ejemplo:
3.3. El caso contrario: else
También es habitual indicar lo que debe hacer el programa si no se cumple una determinada
condición, para lo cual se añade la cláusula else. Al igual que ocurre con el bloque que sigue a
if, las órdenes que siguen a else deben tabularse a la derecha: