Estrcuturas en Python
Estrcuturas en Python
Estructuras de Programacin
Unidad 2
Estructuras de Programacin
Conceptos Generales:
20/04/2014
Estructuras de Programacin
Conceptos Generales:
Estructuras de Programacin
Conceptos Generales:
20/04/2014
Estructuras de Programacin
Anlisis de Datos:
Tipos de Datos:
Estndar: Vienen incorporados en el lenguaje
No estndar: Son definidos por el usuario, por ejemplo un registro de alumno
Estructuras de Programacin
Anlisis de Datos (cont):
20/04/2014
Estructuras de Programacin
Anlisis de Datos (cont):
Estructuras de Programacin
Elementos de un Diagrama Nassi Schneiderman:
Tarea o Accin
Procesos paralelos
Condicin Mientras
Decisin mltiple
Condicin Hasta
8
20/04/2014
Estructuras de Programacin
Ejemplo Diagrama Nassi Schneiderman:
Estructuras de Programacin
Elementos de un diagrama de flujo:
La secuencia de acciones se
representa mediante flechas
10
20/04/2014
Estructuras de Programacin
Ejemplos Diagrama de Flujo:
Tareas o acciones
*
/
%
^
Suma
Resta
Multiplicacin
Divisin
Mdulo (resto)
Exponenciacin
Estructuras de Programacin
Forma general de un algoritmo:
de
conectores
12
20/04/2014
Estructuras de Programacin
Bloques de Decisin:
A == B?
K <= 25?
==
13
Estructuras de Programacin
Estructuras Bsicas Secuencia, Decisin:
...
Proceso A
Proceso B
...
...
IF condicin
[Procedimiento A]
ENDIF
...
...
IF condicin
[Procedimiento A]
ELSE
[Procedimiento B]
ENDIF
...
14
20/04/2014
Estructuras de Programacin
Estructuras Bsicas Decisin Mltiple:
IF condicin 1
[Procedimiento
ELSEIF condicin 2
[Procedimiento
...
ELSEIF condicin n
[Procedimiento
ELSE
[Procedimiento
ENDIF
A1]
A1]
A1]
B]
leer A, B, C
D = B * B (4 * A * C)
IF D > 0
X1 = (B + SQRT(D)) / (2 * A)
X2 = (B SQRT(D)) / (2 * A)
escribir X1, X2
ELSEIF D = 0
X = B / (2 * A)
escribir SOLUCION UNICA, X
ELSE
escribir NO HAY SOLUCIN REAL
ENDIF
FIN
15
Estructuras de Programacin
Estructuras Bsicas Ciclo FOR:
Leer N
FOR K = 1 a N de a 2
L = SQRT(K)
escribir K, L
ENDFOR
FIN
16
20/04/2014
Estructuras de Programacin
Estructuras Bsicas Ciclos DO-WHILE, DO-UNTIL:
DO WHILE condicin
[Procedimiento]
[cuerpo del ciclo]
ENDDO
DO
[Procedimiento]
[cuerpo del ciclo]
UNTIL condicin
Leer N
K = 1
DOWHILE K < N
L = K * K
escribir K, L
K = K + 2
ENDDO
FIN
Leer N
K = 1
DO
L = K * K
escribir K, L
K = K + 2
UNTIL K > N
FIN
17
Estructuras de Programacin
Ejemplo:
http://www.yworks.com/en/products_yed_about.html
http://pseint.sourceforge.net/
18
20/04/2014
Estructuras de Programacin
Ejercicios con PSeInt:
Estructuras de Programacin
Ejercicio:
ax2 + bx + c = 0
Solucin
20
10
20/04/2014
Estructuras de Programacin
Ejercicio Bosquejo:
21
Estructuras de Programacin
Solucin en pseudocdigo:
22
11
20/04/2014
Estructuras de Programacin
Solucin en Nassi-Schneiderman:
23
Estructuras de Programacin
Solucin en Diagrama de Flujo:
24
12
20/04/2014
Una expresin aritmtica se compone de valores (2, 4, etc.) y operadores (+ * etc.). Por ej:
El smbolo >>> se denomina prompt.
Al evaluar una expresin, se genera un valor nico.
Tabla de Operadores:
Smbolo Operador
Ejemplo
Resultado
-5
-5
11 + 3.1
14.1
5 -19
-14
Negacin
Adicin
Substraccin
Multiplicacin
8.5 * 4
34.0
Divisin entera
11 / 2
Divisin real
11 / 2.0
5.5
Mdulo
8.5 % 3.5
1.5
**
Exponenciacin
2**5
32
26
13
20/04/2014
F 32 * 5/9
**
Exponenciacin
Negacin
*,/,%
Menor
+,
a)
b)
c)
d)
e)
f)
6*3+7*4
5+3/4
5-3*2**4
92/7**2-3
-6**2
6**-2
27
c)
f)
d)
g)
28
14
20/04/2014
Una variable es una posicin de memoria que puede almacenar temporalmente algn valor.
Cada posicin de memoria que contenga algn valor, se debe identificar con un nombre. Esto
se llama el nombre de la variable.
En Python 2.7 los nombres de variables pueden contener letras, nmeros y el carcter _;
per el nombre no puede empezar con un nmero.
Una variable se crea al asignarle algn valor, por ejemplo:
Las variables se pueden usar en expresiones aritmticas.
Las variables tienen un nombre que no vara durante el programa, pero su valor s puede
variar durante la ejecucin del programa.
Al asignar un nuevo valor a una variable existente, el valor antiguo es reemplazado.
El siguiente sitio permite visualizar cmo se manejan las variables en la memoria del
computador.
http://pythontutor.com/visualize.html
29
30
15
20/04/2014
Asignaciones de Incremento:
32
16
20/04/2014
Ejemplo
Resultado
+=
x = 7
x += 2
x = 7
x -= 2
*=
x = 7
x *= 2
14
/=
x = 7
x /= 2.
3.5
%=
x = 7
x %= 2
**=
x = 7
x **= 2
49
33
34
17
20/04/2014
35
36
18
20/04/2014
37
Estructuras de Programacin
Funciones y Procedimientos:
38
19
20/04/2014
Estructuras de Programacin
Funciones y Procedimientos:
Para que una funcin pueda hacer su trabajo, debe ser llamada (invocada) desde
otra parte del programa, junto con la llamada se le deben pasar los parmetros
que requiere.
Un parmetro puede ser un nmero, un texto, una operacin aritmtica (ej: a + b),
o incluso otra funcin, por ejemplo:
funcinA(parmetroA1, funcinB(parmetroB1, parmetroB2))
Estructuras de Programacin
Funciones y Procedimientos en PSeInt:
40
20
20/04/2014
Estructuras de Programacin
Funciones y Procedimientos en PSeInt Ejercicios:
Estructuras de Programacin
Funciones Definidas por el Usuario:
Clasificacin de parmetros:
Parmetros formales: Son aquellos que se declaran junto con la funcin.
Parmetros reales: Son aquellos usados en una llamada a la funcin.
Ejemplo:
Parmetros
formales
funcin sumar(a, b)
retornar a + b
Parmetros
reales
subtotal = 10000
iva = 1900
total_factura = sumar(subtotal, iva)
42
21
20/04/2014
Estructuras de Programacin
Funciones Definidas por el Usuario en PSeInt:
Las funciones se deben declarar fuera del bloque del proceso principal (antes o
despus)
El bloque de cdigo de la funcin debe estar encerrado entre un par de
instrucciones:
Funcion
o
Subproceso
FinFuncion
FinSubproceso
Sintaxis de definicin de funcin:
Funcion variable_retorno <- nombre_funcion (parmetro1, parmetro2, ...)
accin 1
accin 2
...
accin n
FinFuncion
Ejemplo:
Proceso calcula_total
subtotal <- 10000
iva <- 1900
Escribir 'Subtotal = ', subtotal
Escribir 'IVA = ', iva
Escribir 'total factura = ', sumar(subtotal, iva)
FinProceso
Funcion resul <- sumar (a, b)
resul <- a + b
FinFuncion
43
Estructuras de Programacin
Funciones Definidas por el Usuario en PSeInt Ejemplos:
44
22
20/04/2014
Estructuras de Programacin
Funciones y Variables Locales:
Las variables t1, t2, y t3 son definidas dentro de la funcin, luego son locales a ella.
Los parmetros de la funcin (a, b, c, x, resul) tambin son locales a ella.
El rea de un programa en que una variable puede ser usada, se llama alcance de
la variable (variable scope) o visibilidad de la variable.
El alcance de una variable local es dentro de la funcin en donde se define.
45
Estructuras de Programacin
Funciones y Variables Locales:
Proceso calcula_total
subtotal <- 10000
iva <- 1900
Escribir 'Subtotal = ', subtotal
Escribir 'IVA = ', iva
Escribir 'total factura = ', sumar(subtotal, iva)
Escribir 'a = ', a
FinProceso
Funcion resul <- sumar (a, b)
resul <- a + b
FinFuncion
A
A
A
A
A
<<<<<-
alfa
alfa
alfa
alfa
alfa
(2, 1, 6)
(4, 7, 2)
(3, 0, 5)
(-4, 3, 2)
(0, 6, 0)
46
23
20/04/2014
Estructuras de Programacin
Funciones Definidas por el Usuario en PSeInt Ejercicio:
Ejemplo:
47
Estructuras de Programacin
Funciones Definidas por el Usuario en PSeInt Ejercicio:
Para el mismo ejercicio anterior, habilitar un Subproceso que muestre los valores
finales en la pantalla.
OBS: En este caso considerar que el subproceso no retorna valores, slo debe
mostrar los datos finales de la factura en pantalla (subtotal, IVA, total)
Ejemplo:
48
24
20/04/2014
Estructuras de Programacin
Ejercicio PSeInt Funciones incorporadas y Definidas por el Usuario:
Estructuras de Programacin
Funciones Paso de Parmetros:
Por Valor: Se pasa una copia del valor a la funcin, luego el valor original no es
afectado por los clculos realizados dentro de la funcin.
Por Referencia: A la funcin se le entrega la direccin de memoria en donde est
almacenado el valor. Luego cualquier modificacin que la funcin haga en este
parmetro, se ver reflejado en el valor original.
50
25
20/04/2014
Estructuras de Programacin
Funciones Definidas por el Usuario en PSeInt Parmetro por Referencia:
1. El proceso principal asigna el valor 20 a i.
2. Luego efecta una llamada a la subrutina
miFuncion() y le pasa la variable i por
referencia, es decir, le pasa la direccin de
memoria de la variable i.
3. La subrutina miFuncion() recibe la direccin
de la variable i y le suma 5 al valor actual.
4. El proceso principal muestra el valor de la
variable i el cual fue modificado por la
subrutina miFuncion().
Valor inicial de i = 20
Valor final de i = 25
51
Estructuras de Programacin
Estructuras de Datos Vectores y Matrices:
Datos escalares:
Contienen un valor nico, por ejemplo:
Edad = 20
Nombre = Fernando
Prueba = 25/04/2014
numrico
carcter
fecha
Vector de largo 10
52
26
20/04/2014
Estructuras de Programacin
Estructuras de Datos Vectores y Matrices:
Tipos de Arreglos:
En la figura anterior se present un arreglo con un nico ndice, luego se trata de
un arreglo unidimensional o vector.
Tambin existen arreglos con dos ndices, los que se denominan arreglos
bidimensionales o matrices.
ndice j columnas
ndice i
filas
Elemento del
ndice
(1,2)
Elemento del
ndice
(2,3)
Matriz de 4 x 4
53
Estructuras de Programacin
Estructuras de Datos Vectores y Matrices:
Tipos de Arreglos:
Aunque los vectores y matrices son los tipos de arreglos ms utilizados, tambin se
pueden implementar arreglos de ms dimensiones.
Arreglo de una
dimensin [i]
Arreglo de dos
dimensiones [i,j]
Arreglo de tres
dimensiones [i,j,k]
54
27
20/04/2014
Estructuras de Programacin
Estructuras de Datos Vectores y Matrices:
Procesamiento de Arreglos:
Los elementos de un arreglo se deben referenciar mediante el nombre del arreglo,
ms el o los ndices que definen su posicin dentro del arreglo. Por ejemplo:
matriz[2,0]
Se refiere al elemento de la
fila 2, columna 0, es decir el 8.
matriz[1,3]
Se refiere al elemento de la
fila 1, columna 3, es decir el 7.
matriz[3,2]
Se refiere al elemento de la
fila 3, columna 2, es decir el 14.
matriz
55
Estructuras de Programacin
Vectores y Matrices en PSeInt:
Configurar ndice cero:
Configurar Opciones del lenguaje
Personalizar
56
28
20/04/2014
Estructuras de Programacin
Vectores y Matrices en PSeInt:
Definicin de un arreglo:
Se debe usar la palabra reservada Dimension, junto con el nombre del arreglo y la
cantidad mxima de elementos. Para cada dimensin del arreglo se debe indicar
su valor mximo, separados por coma. Por ejemplo:
Dimension notas[8] Define un arreglo unidimensional de nombre notas y
que puede contener hasta ocho elementos.
notas
Dimension cuad[4,6]
cuad
57
Estructuras de Programacin
Vectores y Matrices en PSeInt:
Manipulacin de arreglos:
Dado que los ndices de un arreglo son nmeros enteros, es posible procesarlos
como un ciclo mediante la instruccin Para (FOR).
Por ejemplo, si se tiene un arreglo de dimensin n, el siguiente cdigo permite
llenar las posiciones del arreglo con datos ingresados por la consola.
Dimension datos[n]
Para i <- 0 Hasta n-1 Hacer
Escribir "Ingrese el dato ",i+1,":"
Leer datos[i]
FinPara
Para mostrar los elementos del arreglo anterior, se puede usar el siguiente cdigo:
Para i <- 0 Hasta n-1 Hacer
Escribir Sin Saltar datos[i], ' , '
FinPara
58
29
20/04/2014
Estructuras de Programacin
Vectores y Matrices en PSeInt:
Manipulacin de arreglos:
Dado el mismo arreglo del ejemplo anterior, escribir un cdigo que solicite el
ingreso de un N entero por consola (ndice del arreglo), luego debe mostrar el
elemento que est en la posicin respectiva. Se debe validar que el N ingresado
no sea mayor que el tamao de arreglo:
num <- n
Mientras num < 0 o num >= n Hacer
Escribir 'Ingrese un N entero entre 0 y ', n-1, ':'
Leer num
Fin Mientras
Escribir 'El elemento de la posicin ', num, ' es: ', datos[num]
59
Estructuras de Programacin
Vectores y Matrices en PSeInt:
Ejercicio: Se tiene el vector puntaje, con los siguiente datos:
30
20/04/2014
Estructuras de Programacin
Vectores y Matrices en PSeInt:
Ejercicio con Matrices:
1. Implementar una matriz de m filas por n columnas, ambos valores ingresados por
consola (entre 2 y 10), luego llenar la matriz con nmeros aleatorios entre 0 y 100.
Por ltimo, mostrar en pantalla el contenido de la matriz, por ejemplo:
61
Estructuras de Programacin
Vectores y Matrices en PSeInt:
Ejercicio con Matrices (cont):
62
31
20/04/2014
Estructuras de Programacin
Vectores y Matrices en PSeInt:
Ejercicio con Matrices: Crear una matriz de nmeros aleatorios, segn el ejercicio
anterior, luego hacer algoritmos para lo siguiente:
1. Obtener el nmero mayor, menor y el promedio de la matriz.
2. Solicitar el ingreso de un fila y mostrar todos los nmeros de esa fila.
3. Solicitar el ingreso de un columna y mostrar todos los nmeros de esa columna.
4. Mostrar el promedio de cada fila y de cada columna, redondeado.
5. Mostrar la matriz traspuesta (filas se convierten en columnas y viceversa).
6. Solicitar el ingreso de un N y mostrar la cantidad de valores de la matriz, mayores
o iguales al N ingresado e indicar su posicin dentro de la matriz.
7. Mostrar todos los nmeros impares de la matriz. Los nmeros se deben mostrar
en su posicin dentro de la matriz. Los nmeros pares se deben mostrar XX.
8. Mostrar la suma de todos los nmeros que tienen una posicin de columna par
dentro de la matriz, por ej: m[1,0] + m[1,2] + m[1,4] + m[2,0] + m[2,2] + etc.
9. Ingresar una matriz cuadrada (filas = columnas) y luego mostrar los elementos de
la diagonal de la matriz [m, n], con m = n.
Cada algoritmo debe mostrar primero la matriz original completa.
63
Estructuras de Programacin
FIN Unidad 2
64
32