Tema2

  • Uploaded by: ByronFreire
  • 0
  • 0
  • August 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Tema2 as PDF for free.

More details

  • Words: 3,178
  • Pages: 84
TEMA 2 PROGRAMACIÓN

TEMA 2. PROGRAMACIÓN      

2.1 2.2 2.3 2.4 2.5 2.6

Algoritmos Tipos de datos simples y variables Instrucciones básicas Estructuras de control Tipos de datos estructurados: Secuencias Funciones

2.1 Algoritmos Un algoritmo es una secuencia finita de acciones primitivas, entendiendo como tales, aquellas que pueden ser ejecutadas por el procesador.

Técnicas para el diseño de algoritmos: 

Programación estructurada • Programa con diseño modular • Cada módulo tiene diseño descendente • Cada módulo se codifica con estructuras de control secuenciales, selectivas e iterativas

2.1 Algoritmos Lenguaje Python Python fue creado a principios de los noventa por Guido van Rossum en los Países Bajos. Es relativamente joven. Ventajas 



Python es un lenguaje muy expresivo, es decir, los programas Python son muy compactos. Un programa Python suele ser bastante más corto que su equivalente en lenguajes como C. Python llega a ser considerado por muchos un lenguaje de programación de muy alto nivel. Python es muy legible. La sintaxis de Python es muy elegante y permite la escritura de programas cuya lectura resulta más fácil que si utilizáramos otros lenguajes de programación.

2.1 Algoritmos Lenguaje Python Ventajas 







Python ofrece un entorno interactivo que facilita la realización de pruebas y ayuda a despejar dudas acerca de ciertas características del lenguaje. El entorno de ejecución de Python detecta muchos de los errores de programación que escapan al control de los compiladores y proporciona información muy rica para detectarlos y corregirlos. Python puede usarse como lenguaje imperativo procedimental o como lenguaje orientado a objetos. Posee un rico juego de estructuras de datos que se pueden manipular de modo sencillo.

2.2 Tipos de datos simples y variables Estructura básica de un programa En nuestros programas utilizaremos:  Identificadores: Designan datos y partes del programa. Formados por letras minúsculas, mayúsculas, dígitos y/o el carácter de subrayado, con una restricción: que el primer carácter no sea un dígito.  Python distingue mayúsculas de minúsculas  Palabras reservadas: and, as, assert, break, class, continue, def, del, elif, else, except, False, finally, for, from, global, if, import, in, is, lambda, nonlocal, None, not, or, pass, raise, return,True, try, with, while y yield.

2.2 Tipos de datos simples y variables Programas o scripts Los programas en Python tienen extensión .py

Ejemplos:

2.2 Tipos de datos simples y variables 

Tipos simples:  



Enteros int, reales float y lógicos boolean. No existe el tipo carácter.

Tipos compuestos: 

Inmutables: 





Conjunto congelado frozenset : colección de elementos, potencialmente de distinto tipo (mientras estén entre los simples e inmutables), no repetidos y sin orden entre sí. Ejemplo: congelado=frozenset({3,5,6.1}) Cadena str : secuencia de caracteres Ejemplo: cadena=’buenos días’ Tupla tuple: secuencia de 0, 1 o n elementos, potencialmente de distinto tipo Ejemplo: t1=(1,’a’,3,3)

2.2 Tipos de datos simples y variables 

Tipos compuestos: 

Mutables: 





Conjunto set: colección de elementos (sin orden y no repetidos), potencialmente de distinto tipo simple al que se le pueden añadir nuevos elementos o eliminar existentes. Ejemplo: conj1={’infinito’,1,0,5,(’a’,1)} Lista list: secuencia de elementos, potencialmente de distinto tipo (incluidos mutables), a la que se le puede eliminar elementos, añadir nuevos, y modificar valores individuales. Ejemplo: lista=[’hola’,4, (1,2),{3,4}] Diccionario dict: colección (conjunto) de pares de clave-valor. La clave es de cualquier tipo inmutable. Los valores pueden ser de cualquier tipo. Ejemplo: ingredientes={’tomate’:(1,’Kg’), ’pepino’:2,’sal’:’1 cucharilla’, ’aceite’:.1, ’oregano’:’1 pizca’}

2.2 Tipos de datos simples y variables 

Entero int 16 bits de representación. 

Operadores   

Ejemplos:

Binarios de relación:==, <, >, !=, <=, >= Aritméticos: +, -, *, //, %, ** Casting (convertir el valor de una variable de un tipo a otro): int() 5 // 3 es 1 5 % 3 es 2 5 ** 2 es 25 int(-2.9) es -2 int(‘2’) es 2

2.2 Tipos de datos simples y variables 

Real float Python utiliza doble precisión: 64 bits  Operadores  Relacionales: ==, <, >, !=, <=, >=  Aritméticos: +, -, *, /  Funciones:  Predefinidas: abs, round, float…  Definidas en módulos: sin, cos (módulo math)… Ejemplo: abs(-3) es 3 

float(‘3.2’) es 3.2

2.2 Tipos de datos simples y variables 

Lógico boolean Un dato de tipo lógico sólo puede presentar uno de dos valores: True o False  Operadores  Relacionales: ==, <, >, !=, <=, >=  Lógicos: and, or, not Ejemplos: 3!=5 es True 3<5 and 17<10 es False 

2.2 Tipos de datos simples y variables 

Lógico boolean

2.2 Tipos de datos simples y variables

2.2 Tipos de datos simples y variables Utilizaremos variables en nuestros programas para guardar valores. Estas variables serán de los tipos que hemos descrito.  El nombre de una variable es su identificador: formado por letras minúsculas, mayúsculas, dígitos y/o el carácter de subrayado, con una restricción: que el primer carácter no sea un dígito.  Este identificador no debe coincidir con ninguna palabra reservada: and, as, assert, break, class, continue, def, del, elif, else, except, False, finally, for, from, global, if, import, in, is, lambda, nonlocal, None, not, or, pass, raise, return,True, try, with, while y yield.  Python distingue entre mayúsculas y minúsculas, así que área, Área y ÁREA son tres identificadores válidos y diferentes.

2.2 Tipos de datos simples y variables Ejemplo: Supongamos que deseamos efectuar el cálculo del perímetro y el área de un círculo. La fórmula del perímetro es 2*pi*r, donde r es el radio, y la fórmula del área es pi*r**2. Si el radio es 1.298373 m, tenemos:

2.3 Instrucciones básicas 

Asignación En Python, la primera operación sobre una variable debe ser la asignación de un valor. variable=expresion Se evalúa la expresión a la derecha del símbolo igual y se guardar el valor resultante en la variable indicada a la izquierda del símbolo igual.  Recuerda que comparar == no es asignar = Asignaciones con operador: +=, -=, *=, /=, %=, //=, **= Ejemplos:

2.3 Instrucciones básicas 

Lectura

Vamos a aprender a hacer que nuestro programa, cuando se ejecute, pida datos que se introduzcan desde teclado: utilizaremos input() 

Esta función detiene la ejecución del programa y espera a que el usuario escriba un texto y pulse la tecla de retorno de carro; en ese momento prosigue la ejecución y la función devuelve una cadena con el texto que tecleó el usuario.

Ejemplo: Tres formas de leer datos para calcular el volumen de una esfera

2.3 Instrucciones básicas 

Escritura

Vamos a aprender escribir valores en pantalla: print(variable) Ejemplo:

Para que no haya retorno de carro:

print(variable,end=‘ ‘)

2.3 Instrucciones básicas



Formato de escritura format 

Interpolar valores en una cadena: 

También podríamos haber escrito la instrucción como: ‘Los números {} y {} han sido interpolados.’.format(1.23, 9.9999)





Cuidado:

Para mostrar los valores en coma flotante con un solo decimal:

2.4 Estructuras de control 

Sentencias condicionales   



Sentencia if Sentencia if-else Forma compacta elif

Sentencias iterativas  

Sentencia while Sentencia for-in

2.4 Estructuras de control. Sentencias condicionales 

Sentencia if

F Cond V acción acción…

2.4 Estructuras de control. Sentencias condicionales 

Sentencia if

Ejemplo:

2.4 Estructuras de control. Sentencias condicionales 

Sentencia if

2.4 Estructuras de control. Sentencias condicionales 

Se pueden establecer sentencias if anidadas

2.4 Estructuras de control. Sentencias condicionales 

Sentencia if-else que equivale a:

V

F Cond

acción acción…

acción acción… .

2.4 Estructuras de control. Sentencias condicionales 

Sentencia if-else

Ejemplo:

2.4 Estructuras de control. Sentencias condicionales Sentencia if-else Ejemplo:

2.4 Estructuras de control. Sentencias condicionales 

Forma compacta elif

que equivale a:

2.4 Estructuras de control. Sentencias condicionales 

Forma compacta elif

Ejemplo:

2.4 Estructuras de control. Sentencias iterativas 

Sentencia while

2.4 Estructuras de control. Sentencias iterativas 

Sentencia while

Ejemplo:



Ten cuidado con los bucles infinitos:

2.4 Estructuras de control. Sentencias iterativas Sentencia while Ejemplo: un programa que calcula la suma de los 1000 primeros números 

2.4 Estructuras de control. Sentencias iterativas 

Sentencia for-in

2.4 Estructuras de control. Sentencias iterativas 

Sentencia for-in

Otro ejemplo:

Una versión más simple:

2.4 Estructuras de control. Sentencias iterativas 

Función range

Ejemplos:

range(2, 10) es [2, 3, 4, 5, 6, 7, 8, 9] range(0, 3) es [0, 1, 2] range(-3, 3) es [-3, -2, -1, 0, 1, 2] range(-10, -1) es [-10, -9, -8, -7, -6, -5, -4, -3, -2]

2.4 Estructuras de control. Sentencias iterativas 

Función range

Podemos usar range con uno, dos o tres argumentos: range(5) es [0, 1, 2, 3, 4] range(2, 10, 2) es [2, 4, 6, 8] range(2, 10, 3) es [2, 5, 8] range(10, 5, -1) es [10, 9, 8, 7, 6] range(3, -1, -1) es [3, 2, 1, 0] range(10, 1, -3) es [10, 7, 4]

2.4 Estructuras de control. Sentencias iterativas 

for-in como forma compacta de ciertos while

Ciertos bucles se ejecutan un número de veces fijo y conocido a priori:

Ejemplo: Calcula el sumatorio de los 1000 primeros números

2.4 Estructuras de control. Sentencias iterativas 

for-in como forma compacta de ciertos while

Podemos escribirlos de la siguiente forma:

En el ejemplo:

2.4 Estructuras de control. Sentencias iterativas 

Rotura de bucles: break

2.4 Estructuras de control. Sentencias iterativas 

Índice del bucle for-in

En un bucle for-in, las variables de índice solo deben usarse para consultar su valor, nunca para asignarles uno nuevo. Ejemplo: Es incorrecto:

O utilizar el mismo índice para dos bucles anidados:

2.5 Tipos de datos estructurados: Secuencias 

Cadenas str

Python ofrece una serie de operadores y funciones predefinidos para las secuencias de caracteres: 







Operador + : acepta dos cadenas como operandos y devuelve la cadena que resulta de unir la segunda a la primera. Operador *: acepta una cadena y un entero y devuelve la concatenación de la cadena consigo misma tantas veces como indica el entero. int: recibe una cadena cuyo contenido es una secuencia de dígitos y devuelve el número entero que describe. float: acepta una cadena cuyo contenido describe un flotante y devuelve el flotante en cuestión.

2.5 Tipos de datos estructurados: Secuencias 

Cadenas str

Podemos también manipular cadenas mediante métodos que les son propios: 







a.lower() (paso a minúsculas): devuelve una cadena con los caracteres de a convertidos en minúsculas. a.upper() (paso a mayúsculas): devuelve una cadena con los caracteres de a convertidos en mayúsculas. a.format(expr1 expr2 . . . ) (sustitución de marcas de formato): devuelve una cadena en la que las marcas de formato de a se sustituyen por el resultado de evaluar las expresiones dadas. a.split() : obtiene una lista con todas las palabras de una cadena.

2.5 Tipos de datos estructurados: Secuencias 

Cadenas str

Python ofrece una serie de operadores y funciones predefinidos: 







str: se le pasa un entero o flotante y devuelve una cadena con una representación del valor como secuencia de caracteres. ord: acepta una cadena compuesta por un único carácter y devuelve su código Unicode (un entero). chr: recibe un entero y devuelve una cadena con el carácter que tiene a dicho entero como código Unicode. len: devuelve la longitud de una cadena

2.5 Tipos de datos estructurados: Secuencias 

Cadenas str Es posible incluir ciertos caracteres especiales que no tienen una representación trivial: Ejemplo: Saltos de línea \n

También tenemos: \t tabulador horizontal \\ barra invertida \’ comilla simple \” comilla doble \ y salto de línea: para expresar una cadena en varias líneas

2.5 Tipos de datos estructurados: Secuencias 

Cadenas str Podemos acceder a cada uno de los caracteres de una cadena utilizando un operador de indexación: a[i] es el carácter que ocupa la posición i+1 en a

2.5 Tipos de datos estructurados: Secuencias 

Cadenas str 

Cuidado: Las cadenas son inmutables

2.5 Tipos de datos estructurados: Secuencias 

Cadenas str Podemos recorrer de izquierda a derecha una cadena con un bucle for-in. Veamos tres ejemplos:

2.5 Tipos de datos estructurados: Secuencias 

Cadenas str Ejemplo: Contador de palabras.

2.5 Tipos de datos estructurados: Secuencias 

Cadenas str Subcadenas: El operador corte La expresión a[i:j] significa que se desea obtener la subcadena formada por los caracteres a[i] , a[i+1] , . . . , a[j-1].

a[2:5], a[-5:5] , a[2:-2] y a[-5:j-2] es la cadena ‘emp’ El corte a[:j] es equivalente a a[0,j] y el corte a[i:] equivale a a[i:len(a)] Se pueden utilizar cortes con tres parámetros: a[0:len(a):2] selecciona los caracteres de índice par: ‘Eepo’ Así se puede invertir la cadena a con la siguiente expresión: a[::-1]

2.5 Tipos de datos estructurados: Secuencias 

Cadenas str Referencias a cadenas:

2.5 Tipos de datos estructurados: Secuencias 

Listas list

Python nos permite definir secuencias de valores de cualquier tipo. Los valores de una lista deben estar entre corchetes y separados por comas.

2.5 Tipos de datos estructurados: Secuencias 

Listas list

Muchos de los operadores y funciones que trabajan sobre cadenas, también lo hacen sobre listas: len, +,*,operador de corte:

Podemos construir listas que contienen réplicas de un mismo valor:

2.5 Tipos de datos estructurados: Secuencias 

Listas list Operador is

2.5 Tipos de datos estructurados: Secuencias 

Listas list Modificación de elementos de listas:

2.5 Tipos de datos estructurados: Secuencias Listas list Mutabilidad, inmutabilidad y representación de la información en memoria:  Python procura almacenar en memoria una sola vez cada valor inmutable 



Los arrays se representan en memoria siguiendo la figura de la derecha

2.5 Tipos de datos estructurados: Secuencias 

Listas list

Diferencia entre el operador + y append:

2.5 Tipos de datos estructurados: Secuencias 

Listas list

Para leer una lista podemos hacerlo elemento a elemento:

Si usamos append evitaremos que cada concatenación genere una nueva lista:

2.5 Tipos de datos estructurados: Secuencias 

Listas list

Otra forma de leer una lista:



Con las siguientes instrucciones estamos leyendo una cadena, no una lista. 



Lista

Tal y como vimos, para transformarlo en una lista podríamos utilizar lista.split()

2.5 Tipos de datos estructurados: Secuencias 

Listas list

Para eliminar elementos de una lista tenemos utilizamos del:

 

La sentencia del modifica directamente la lista sobre la que opera. Ten cuidado al borrar un elemento ya que estarás modificando también el tamaño de la lista.

2.5 Tipos de datos estructurados: Secuencias 

Listas list

Podemos también iterar sobre los elementos de una lista mediante el operador in:

2.5 Tipos de datos estructurados: Secuencias 

Listas list

Se puede hacer una asignación de una lista a otra:

puede escribirse:

Esto permite intercambiar dos variables de forma sencilla:

2.5 Tipos de datos estructurados: Secuencias 

Listas list

Podemos representar una matriz con una lista de listas de números:

2.5 Tipos de datos estructurados: Secuencias 

Listas list

Así crearemos una matriz con tres filas y seis columnas:

2.5 Tipos de datos estructurados: Secuencias 

Listas list

Vamos a ver ahora cómo podemos leerla desde teclado:

2.6 Funciones En capítulos anteriores hemos aprendido a utilizar funciones:  Predefinidas: abs, round, etc.  Importadas de módulos: sin, cos del módulo math

Vamos ahora a aprender a definir nuestras funciones.

2.6 Funciones La siguiente función recibe un número y devuelve el cuadrado de dicho número:

Nuestros programas definirán funciones y las llamarán:

2.6 Funciones

Las reglas para dar nombre a las funciones y a sus parámetros son las mismas que seguimos para dar nombre a las variables

2.6 Funciones Otro ejemplo:

Aunque hemos aprendido a calcular sumatorios con bucles, desde la versión 2.3, Python ofrece una forma mucho más cómoda de hacerlo: la función predefinida sum

2.6 Funciones Otro ejemplo: Este programa calcula el máximo de los elementos de una lista de números.

2.6 Funciones También se pueden definir funciones con varios parámetros

2.6 Funciones No es obligatorio utilizar parámetros en las funciones:

2.6 Funciones Un ejemplo típico son los menús que leen opciones:

Que se llamaría de la siguiente forma:

2.6 Funciones Existen funciones que no devuelven valores, por ejemplo, las que se utilizan para escribir valores en pantalla: Ejemplo: Solicita al usuario un número y muestra por pantalla todos los números perfectos entre 1 y dicho número.



Esta funciones no tienen sentencia return.

2.6 Funciones Una función puede devolver varios valores mediante una lista:

Más apropiado:

Llamada: [a, b]= minmax(10, 2, 5) print(‘El mínimo es ‘, a) print(‘El máximo es ‘, b)

2.6 Funciones Variables globales y locales Vamos a estudiar la diferencia entre las variables definidas en el programa principal y dentro de las funciones. Ejemplo: Definamos una función que, dados los tres lados de un triángulo, devuelva el valor de su área.

La variable s es una variable local. a, b y c son también variables locales.

2.6 Funciones Variables globales y locales

Este programa provoca un error al ejecutarse porque intenta acceder a s desde el programa principal. Las variables que sólo existen en el cuerpo de una función se denominan variables locales. El resto de variables se llaman variables globales.

2.6 Funciones Variables globales y locales Otro ejemplo: Queremos ayudarnos con un programa en el cálculo del área de un triángulo de lados a, b y c y en el cálculo del ángulo (en grados) opuesto al lado a.

2.6 Funciones Variables globales y locales



Observa que tenemos dos variables s diferentes y que cada una toma valores distintos sin interferir en la otra. Una es local y la otra global.

2.6 Funciones Variables globales y locales



Cada función define un ámbito local propio: su cuerpo. Los identificadores de las variables locales sólo son visibles en su ámbito local. Por ejemplo, la variable opción definida en la función menú solo es visible en el cuerpo de menú.

2.6 Funciones Variables globales y locales En nuestros programas tendremos ámbitos locales y globales.





Cuidado: Si el identificador de una variable (o función) definida en el ámbito global se usa para nombrar una variable local en una función, la variable (o función) global queda oculta y no es accesible desde el cuerpo de la función. Esto ocurre con la variable s. Como norma general, no utilizaremos los mismos nombres para las variables globales y locales.

2.6 Funciones Más sobre el paso de parámetros ¿Qué ocurre si el parámetro es modificado dentro de la función? ¿Se modificará igualmente la variable o parámetro del ámbito desde el que se produce la llamada? Veamos un ejemplo: 5

6

2

3

2.6 Funciones Más sobre el paso de parámetros Más ejemplos:

a: 1 b: 2

0 [1, 1, 2]

En el segundo programa, la lista b se ha modificado al ejecutarse la función.

2.6 Funciones Más sobre el paso de parámetros Si un parámetro modifica su valor mediante una asignación, (probablemente) obtendrá una nueva zona de memoria y perderá toda relación con el argumento del que tomó valor al efectuar el paso de parámetros.  Cuidado: dentro de una función se puede modificar una lista (mutable): Operaciones como append, del o la asignación a elementos indexados de listas modifican la propia lista, por lo que los cambios afectan tanto al parámetro como al argumento.  Las cadenas son inmutables y, por tanto, no se modifican. 

Related Documents

Tema2
May 2020 7
Tema2
August 2019 22
Tema2
October 2019 33
Tema2
May 2020 11
Tema2
November 2019 22
Tema2
November 2019 10

More Documents from ""

Tema2
August 2019 22