Está en la página 1de 41

Programación Digital (IC246)

“Guía de Programación para Python 3.x”

Docente: M.Sc. Ing. Edmundo Canchari Gutiérrez

Universidad Nacional de San Cristóbal de Huamanga


Escuela Profesional de Ingeniería Civil

17 de diciembre de 2017

UNSCH, Ingeniería Civil (Universidad Nacional


Guía de
de San
Programación
Cristóbal de
enHuamanga)
PyThon . . . 17 de diciembre de 2017 1 / 37
Contenido
1 Algoritmos
2 Elementos del Lenguaje de programación
3 Programación modular
4 Programación estructurada
Estructuras de decisión
Estructuras iterativas
5 Matrices
6 Gráficos
7 GUI and OOP
GUI
OOP
Contenido
1 Algoritmos
2 Elementos del Lenguaje de programación
3 Programación modular
4 Programación estructurada
Estructuras de decisión
Estructuras iterativas
5 Matrices
6 Gráficos
7 GUI and OOP
GUI
OOP
Algoritmo

Definición de algoritmo
Un algoritmo es un conjunto de instrucciones o reglas bien definidas,
ordenadas y finitas que permite llevar a cabo una actividad mediante pasos
sucesivos que no generen dudas a quien deba hacer dicha actividad.

Medios de expresión de un algoritmo


Diagrama de flujo.
Pseudocódigos.
Diagrama Nassi-Shneiderman (diagramas NS).
...

UNSCH, Ingeniería Civil (Universidad Nacional


Guía de
de San
Programación
Cristóbal de
enHuamanga)
PyThon . . . 17 de diciembre de 2017 4 / 37
Diagrama de flujo

Figura: Símbolos para crear diagramas de flujo

UNSCH, Ingeniería Civil (Universidad Nacional


Guía de
de San
Programación
Cristóbal de
enHuamanga)
PyThon . . . 17 de diciembre de 2017 5 / 37
Contenido
1 Algoritmos
2 Elementos del Lenguaje de programación
3 Programación modular
4 Programación estructurada
Estructuras de decisión
Estructuras iterativas
5 Matrices
6 Gráficos
7 GUI and OOP
GUI
OOP
Tipos de datos

Tabla: Tipos de datos básicos en PyThon 3.x

Descripción Tipo Ejemplo


Entero int 3
De punto flotante float 10.25
Complejos complex 4 ` 3j
Cadenas de texto str "Hola mundo"
Valores booleanos bool True (cierto), False (Falso)
Listas list [1,3,4,"hola mundo"]
Tuplas tuple (1,3,4,"hola mundo")
Diccionarios set {“lluvia” : “Arco iris” , “Noche” : “Luna” }

UNSCH, Ingeniería Civil (Universidad Nacional


Guía de
de San
Programación
Cristóbal de
enHuamanga)
PyThon . . . 17 de diciembre de 2017 7 / 37
Operadores aritméticos

Tabla: Operadores aritméticos en PyThon 3.x

Operación Operador Aridad Asociatividad


Exponenciación ** Binario Por la derecha
Identidad + Unario
Cambio de signo - Unario
Multiplicación * Binario Por la izquierda
División / Binario Por la izquierda
División entera // Binario Por la izquierda
Módulo o resto) % Binario Por la izquierda
Suma + Binario Por la izquierda
Resta - Binario Por la izquierda

UNSCH, Ingeniería Civil (Universidad Nacional


Guía de
de San
Programación
Cristóbal de
enHuamanga)
PyThon . . . 17 de diciembre de 2017 8 / 37
Operadores relacionales

Tabla: Operadores relacionales en PyThon 3.x

Operación Operador Aridad Asociatividad


Igual que == Binario
Distinto de != Binario
Menor que < Binario
Menor o igual que <= Binario
Mayor que > Binario
Mayor o igual que >= Binario

UNSCH, Ingeniería Civil (Universidad Nacional


Guía de
de San
Programación
Cristóbal de
enHuamanga)
PyThon . . . 17 de diciembre de 2017 9 / 37
Operadores lógicos

Tabla: Operadores lógicos en PyThon 3.x

Operación Operador Aridad Asociatividad


Negación not Uniario
Conjunción and Binario Por la izquierda
Disyunción or Binario Por la izquierda

Tabla: Tabla de valores de verdad

X Y not(X) not(Y) X and Y X or Y


V V F F V V
V F F V F V
F V V F F V
F F V V F F

UNSCH, Ingeniería Civil (Universidad Nacional


Guía de
de San
Programación
Cristóbal de
enHuamanga)
PyThon . . . 17 de diciembre de 2017 10 / 37
Operador de asignación y variables

En PyThon (al igual que otros muchos lenguajes de programación), el


operador de asignación es:


Asignar a una variable un tipo de dato admitido:

A “ 12.56
B “ t1, 2, ”Hola”u

UNSCH, Ingeniería Civil (Universidad Nacional


Guía de
de San
Programación
Cristóbal de
enHuamanga)
PyThon . . . 17 de diciembre de 2017 11 / 37
Palabras reservadas

Palabras reservadas en Python 3.x


and, as, assert, break, class, continue, def, del, elif, else, except, finally, for,
from, global, if, import, in, is, lambda, nonlocal, not, or, pass, raise, return,
try, while, with, yield

Nota!
Las palabras reservadas no deben utilizarse como nombre de variables,
funciones, clases, . . .
Para su uso es necesario tener en cuenta su sintaxis.
Qué hace cada palabra reservada? (semántica).
...
...

UNSCH, Ingeniería Civil (Universidad Nacional


Guía de
de San
Programación
Cristóbal de
enHuamanga)
PyThon . . . 17 de diciembre de 2017 12 / 37
Contenido
1 Algoritmos
2 Elementos del Lenguaje de programación
3 Programación modular
4 Programación estructurada
Estructuras de decisión
Estructuras iterativas
5 Matrices
6 Gráficos
7 GUI and OOP
GUI
OOP
Funciones creados por el usuario en Python

1 def MyFunction(x,y,z):
2 # Sintaxis de una función general en Python 3.x
3 accion1
4 accion2
5 accion3
6 ...
7 accionn
8 return (variable)

Listing 1: Sintaxis para crear funciones en Python

UNSCH, Ingeniería Civil (Universidad Nacional


Guía de
de San
Programación
Cristóbal de
enHuamanga)
PyThon . . . 17 de diciembre de 2017 14 / 37
Funciones creados por el usuario en Python

Donde:
def variable reservada, indica creación de una función.
MyFunction nombre de la función, debe cumplir las reglas del nombre
de una variable.
(x,y,z) datos de ingreso requeridas por la función, todos los datos
necesarios separados por comas, si la función no requiere datos, es
necesario especificar paréntesis.
: los dos puntos, es necesario por su sintaxis.
Accione1, AcciónN acciones asignadas a la función.
return variable reservada que especifica la variable de retorno de la
función.

UNSCH, Ingeniería Civil (Universidad Nacional


Guía de
de San
Programación
Cristóbal de
enHuamanga)
PyThon . . . 17 de diciembre de 2017 15 / 37
Contenido
1 Algoritmos
2 Elementos del Lenguaje de programación
3 Programación modular
4 Programación estructurada
Estructuras de decisión
Estructuras iterativas
5 Matrices
6 Gráficos
7 GUI and OOP
GUI
OOP
Estructura selectiva o alternativa

Sintaxis estructura de decisión simple

1 # flujo del programa antes de la estructura de decisión.


2 if (condición):
3 # Nota: estas acciones solamente se ejecutan cuando la
ãÑ condición es verdadero.
4 Acción 01
5 Acción 02
6 ...
7 Acción n
8 # flujo del programa después de la estructura de decisión.
9 # ...
10 # ...

UNSCH, Ingeniería Civil (Universidad Nacional


Guía de
de San
Programación
Cristóbal de
enHuamanga)
PyThon . . . 17 de diciembre de 2017 17 / 37
Estructura selectiva o alternativa

Sintaxis estructura de decisión doble

1 # flujo del programa antes de la estructura de decisión.


2 if (condición):
3 # Nota: estas acciones se ejecutan cuando la condición
ãÑ es verdadero.
4 ProcesoA 1
5 ...
6 ProcesoA N
7 else:
8 # Nota: estas acciones se ejecutan cuando la condición
ãÑ es falso.
9 ProcesosB 1
10 procesosB N
11 # flujo del programa después de la estructura de decisión.

UNSCH, Ingeniería Civil (Universidad Nacional


Guía de
de San
Programación
Cristóbal de
enHuamanga)
PyThon . . . 17 de diciembre de 2017 18 / 37
Estructura selectiva o alternativa
Sintaxis estructura de decisión múltiple

1 # flujo del programa antes de la estructura de decisión.


2 if (condición1):
3 # Procesos Condicion 1
4 elif (condición2):
5 # Procesos Condición 2
6 elif (condición3):
7 # Procesos Condición 3
8 #...
9 elif (CondiciónN):
10 # Procesos condición N
11 else:
12 # Proceso cuando ninguna condición anterior es
ãÑ verdadero
13 # flujo del programa después de la estructura de decisión.
UNSCH, Ingeniería Civil (Universidad Nacional
Guía de
de San
Programación
Cristóbal de
enHuamanga)
PyThon . . . 17 de diciembre de 2017 19 / 37
Estructuras iterativas

Estructura iterativa for ... in

1 secuencia = range(1,10,2)
2 for elemento in secuencia:
3 Proceso 1
4 ...
5 Proceso n

Se utiliza cuando se conoce con exactitud el número de veces que se


repetirá el proceso.
for inicia la estructura repetitiva, elemento toma cada componente
de secuencia para cada iteración.
El proceso repite tantas veces como componentes tenga secuencia.
se utiliza frecuentemente range([start], stop[, step]) para generar la
secuencia.
UNSCH, Ingeniería Civil (Universidad Nacional
Guía de
de San
Programación
Cristóbal de
enHuamanga)
PyThon . . . 17 de diciembre de 2017 20 / 37
Estructuras iterativas

Estructura iterativa while

1 # códigos anteriores
2 while (condición):
3 Proceso 1
4 ...
5 Proceso n

Se utiliza cuando no conoce con exactitud el número de veces que se


repetirá el proceso, pero se dispone de una condición para finalizar.
while inicia el proceso iterativo, para su ejecución requiere una variable
booleana.
El proceso repite tantas veces mientras la condición sea evaluada a
verdadero (True).

UNSCH, Ingeniería Civil (Universidad Nacional


Guía de
de San
Programación
Cristóbal de
enHuamanga)
PyThon . . . 17 de diciembre de 2017 21 / 37
Ecuaciones que aproximan Pi

b
a? ? a ?
2 2 2` 2 2` 2` 2
“ ˚ ˚ ... (1)
π 2 2 2
8 ˆ ˙
ÿ 1 4 2 1 1
π“ ´ ´ ´ (2)
k“0
16k 8k ` 1 8k ` 4 8k ` 5 8k ` 6
8
π ÿ p´1qn
“ (3)
4 n“0 2n ` 1
8
π ÿ p2qn pn!q2
“ (4)
2 n“0 p2n ` 1q!

π2 1 1 1 1 1
“ 2 ` 2 ` 2 ` 2 ` 2 ` ... (5)
6 1 2 3 4 5

UNSCH, Ingeniería Civil (Universidad Nacional


Guía de
de San
Programación
Cristóbal de
enHuamanga)
PyThon . . . 17 de diciembre de 2017 22 / 37
Fracciones continuas generalizadas (π )

Figura: Representación de π mediante fracciones continuas (I)

UNSCH, Ingeniería Civil (Universidad Nacional


Guía de
de San
Programación
Cristóbal de
enHuamanga)
PyThon . . . 17 de diciembre de 2017 23 / 37
Fracciones continuas generalizadas (π )

Código fuente en Python 3.6.3 de la Ecuación anterior, la implementación


del diagrama de flujo y pseudocódigo queda a cargo de los estudiantes.

1 def AproxPi_fcA(n):
2 #n es un número muy grande
3 fc=1
4 #Genera números consecutivos (descendente) desde n
ãÑ hasta cero
5 num=range(n,0,-1)
6 #Aproximación de PI mediante fracciones continuas
ãÑ generalizadas
7 for i in num:
8 fc=(2*i-1)+i**2/fc
9 return 4/fc

UNSCH, Ingeniería Civil (Universidad Nacional


Guía de
de San
Programación
Cristóbal de
enHuamanga)
PyThon . . . 17 de diciembre de 2017 24 / 37
Fracciones continuas generalizadas (π )

Figura: Representación de π mediante fracciones continuas (II)

UNSCH, Ingeniería Civil (Universidad Nacional


Guía de
de San
Programación
Cristóbal de
enHuamanga)
PyThon . . . 17 de diciembre de 2017 25 / 37
Fracciones continuas generalizadas (π )
Código fuente en Python 3.6.3 de la Ecuación anterior, implementar el
diagrama de flujo y pseudocódigo.

1 def AproxPi_fcB(n):
2 #n es un número muy grande
3 fc=1
4 #n necesariamente debe ser impar
5 if (n%2)==0:
6 n=n+1
7 #Genera números impares (descedente) desde n hasta 3
8 impar=range(n,1,-2)
9 #Aproximación de PI mediante fracciones continuas
ãÑ generalizadas
10 for i in impar:
11 fc=6+i**2/fc
12 return 3+1/fc

UNSCH, Ingeniería Civil (Universidad Nacional


Guía de
de San
Programación
Cristóbal de
enHuamanga)
PyThon . . . 17 de diciembre de 2017 26 / 37
Contenido
1 Algoritmos
2 Elementos del Lenguaje de programación
3 Programación modular
4 Programación estructurada
Estructuras de decisión
Estructuras iterativas
5 Matrices
6 Gráficos
7 GUI and OOP
GUI
OOP
Matrices

1 # Importar librería
2 import numpy as np
3 # Crear matrices
4 m=4; n=3; p=6
5 C = np.zeros([m,p])
6 D = np.identity(m)
7 X = np.random.randint(-1000,1000,(m,n))
8 Y = np.random.randint(-500,500,(m,n))
9 # Obtener el elemento de la primera fila y primera columna
10 a = X[0,0]
11 # Modificar un elemento de una matriz
12 X[1,2]=200.56
13 # Número de filas y columnas de una amtriz
14 a=np.shape(X)

UNSCH, Ingeniería Civil (Universidad Nacional


Guía de
de San
Programación
Cristóbal de
enHuamanga)
PyThon . . . 17 de diciembre de 2017 28 / 37
Contenido
1 Algoritmos
2 Elementos del Lenguaje de programación
3 Programación modular
4 Programación estructurada
Estructuras de decisión
Estructuras iterativas
5 Matrices
6 Gráficos
7 GUI and OOP
GUI
OOP
Gráficos

1 import numpy as np
2 import matplotlib.pyplot as plt
3 x=np.linspace(-50,50,200)
4 y=x*np.sin(x)
5 plt.figure()
6 plt.plot(x, y, linewidth=1, linestyle="-", color="red",
ãÑ marker="None", label="Basilea")
7 plt.legend(loc=4)
8 plt.xlabel("Número de Iteracion")
9 plt.ylabel("Valor de PI")
10 plt.title("Aproximación de PI por Distintos Métodos")
11 plt.axis("tight")
12 plt.grid(True)
13 plt.show()

UNSCH, Ingeniería Civil (Universidad Nacional


Guía de
de San
Programación
Cristóbal de
enHuamanga)
PyThon . . . 17 de diciembre de 2017 30 / 37
Contenido
1 Algoritmos
2 Elementos del Lenguaje de programación
3 Programación modular
4 Programación estructurada
Estructuras de decisión
Estructuras iterativas
5 Matrices
6 Gráficos
7 GUI and OOP
GUI
OOP
Interfaz gráfica de usuario

GUI:
Graphical user interface (Interfaz gráfica de usuario). Utilizaremos QT
Designer, se encuentra incluido en Anaconda 5.0.1, a tener en cuenta
OOP:
Object-oriented programming (Programación orientada a objetos)

UNSCH, Ingeniería Civil (Universidad Nacional


Guía de
de San
Programación
Cristóbal de
enHuamanga)
PyThon . . . 17 de diciembre de 2017 32 / 37
Interfaz gráfica de usuario

UNSCH, Ingeniería Civil (Universidad Nacional


Guía de
de San
Programación
Cristóbal de
enHuamanga)
PyThon . . . 17 de diciembre de 2017 33 / 37
Interfaz gráfica de usuario

UNSCH, Ingeniería Civil (Universidad Nacional


Guía de
de San
Programación
Cristóbal de
enHuamanga)
PyThon . . . 17 de diciembre de 2017 33 / 37
Interfaz gráfica de usuario

UNSCH, Ingeniería Civil (Universidad Nacional


Guía de
de San
Programación
Cristóbal de
enHuamanga)
PyThon . . . 17 de diciembre de 2017 33 / 37
Interfaz gráfica de usuario

Nota: se trabaja con dos archivos:


Archivo con extensión .ui (contiene la interfaz gráfica de usuario,
creado desde QT designer)
Archivo .pyw (contiene el código fuente implementado, creado desde
un IDE: Pycharm, spyder, ...)

UNSCH, Ingeniería Civil (Universidad Nacional


Guía de
de San
Programación
Cristóbal de
enHuamanga)
PyThon . . . 17 de diciembre de 2017 34 / 37
Interfaz gráfica de usuario

UNSCH, Ingeniería Civil (Universidad Nacional


Guía de
de San
Programación
Cristóbal de
enHuamanga)
PyThon . . . 17 de diciembre de 2017 35 / 37
Interfaz gráfica de usuario

UNSCH, Ingeniería Civil (Universidad Nacional


Guía de
de San
Programación
Cristóbal de
enHuamanga)
PyThon . . . 17 de diciembre de 2017 35 / 37
Interfaz gráfica de usuario

UNSCH, Ingeniería Civil (Universidad Nacional


Guía de
de San
Programación
Cristóbal de
enHuamanga)
PyThon . . . 17 de diciembre de 2017 35 / 37
Programación orientada a objetos

GUI: Object-oriented programming (Programación orientada a objetos)

La Programación Orientada a Objetos (POO u OOP según sus siglas en


inglés) es un paradigma de programación que usa objetos y sus
interacciones para diseñar aplicaciones y programas de computadora. Está
basado en varias técnicas, incluyendo herencia, modularidad, polimorfismo,
y encapsulamiento.

UNSCH, Ingeniería Civil (Universidad Nacional


Guía de
de San
Programación
Cristóbal de
enHuamanga)
PyThon . . . 17 de diciembre de 2017 36 / 37
Programación orientada a objetos

UNSCH, Ingeniería Civil (Universidad Nacional


Guía de
de San
Programación
Cristóbal de
enHuamanga)
PyThon . . . 17 de diciembre de 2017 37 / 37