Estrcuturas en Python

32
20/04/2014 1 Estructuras de Programación Unidad 2 Estructuras de Programación Conceptos Generales: Una característica básica de un programador, es la capacidad de aplicar soluciones a problemas generales. Esto implica la habilidad de: Entender y formular problemas. Aplicar soluciones creativas. Expresar las soluciones de manera clara, en un lenguaje apropiado. Para implementar soluciones en un computador, se requiere un lenguaje de programación adecuado a la aplicación, por ejemplo hay lenguajes orientados a aplicaciones comerciales, aplicaciones científicas, etc. Pasos para construir un programa: Entender el problema y los requisitos del usuario Diseñar un programa para la solución del problema Codificar el diseño en algún lenguaje de programación El objetivo del diseño de programas, es mostrar los aspectos más importantes del programa, en particular los algoritmos que se utilizarán para implementar la solución. 2

description

Estructuras de programación en Python

Transcript of Estrcuturas en Python

Page 1: Estrcuturas en Python

20/04/2014

1

Estructuras de Programación

Unidad 2

Estructuras de Programación

Conceptos Generales:

• Una característica básica de un programador, es la capacidad de aplicar soluciones a problemas generales. Esto implica la habilidad de:

– Entender y formular problemas.

– Aplicar soluciones creativas.

– Expresar las soluciones de manera clara, en un lenguaje apropiado.

• Para implementar soluciones en un computador, se requiere un lenguaje de programación adecuado a la aplicación, por ejemplo hay lenguajes orientados a aplicaciones comerciales, aplicaciones científicas, etc.

• Pasos para construir un programa:

– Entender el problema y los requisitos del usuario

– Diseñar un programa para la solución del problema

– Codificar el diseño en algún lenguaje de programación

• El objetivo del diseño de programas, es mostrar los aspectos más importantes del programa, en particular los algoritmos que se utilizarán para implementar la solución.

2

Page 2: Estrcuturas en Python

20/04/2014

2

Estructuras de Programación

Conceptos Generales:

• Programar: Consiste en indicarle a un computador, cómo debe realizar algún trabajo determinado. Esto se hace mediante un lenguaje de programación.

• Luego un computador sólo es capaz de ejecutar las instrucciones de un programa construido por un programador.

• Un algoritmo es una descripción detallada de las acciones necesarias para llevar a cabo una actividad cualquiera. Representa una idea conceptual de la solución.

• Un programa es una instancia concreta de uno o más algoritmos.

• Para representar un algoritmo se pueden utilizar diversas herramientas:

– Pseudocódigo: Es una descripción escrita de un algoritmo, realizada con un lenguaje natural acotado.

– Diagrama de flujo: Es una descripción gráfica de un algoritmo, realizada con elementos de diagramación que representan distintos tipos de acciones.

– Diagramas Nassi-Schneiderman: También utiliza elementos de diagramación para representar un algoritmo.

3

Estructuras de Programación

Conceptos Generales:

• Fases para desarrollar un algoritmo:

a) Análisis preliminar del problema: Estudiar el problema en general y ver las partes que se pueden automatizar.

b) Análisis de los datos: Estudiar los tipos de datos, las entradas y las salidas.

c) Diseño del algoritmo: Representar el algoritmo con alguna herramienta como pseudocódigo o diagramas de flujo.

d) Codificación: Traducir el algoritmo diseñado, con algún lenguaje de programación.

e) Ejecución y prueba del programa

• Usualmente los programas deben ser modificados con posterioridad a su puesta en marcha. Para efectos de comprensión del programa, es útil mantener la documentación del diseño, así como también insertar algún texto de documentación entre el código del programa.

4

Características generales de un algoritmo:- Debe tener un orden de ejecución.- Debe ser preciso.- Debe ser finito.

Page 3: Estrcuturas en Python

20/04/2014

3

Estructuras de Programación

Análisis de Datos:

• Los datos pueden ser:

– Simples: Un elemento, por ejemplo un número

– Compuestos: Varios elementos, por ejemplo una lista de nombres.

• Tipos de Datos:

– Estándar: Vienen incorporados en el lenguaje

– No estándar: Son definidos por el usuario, por ejemplo un registro de alumno

• Tipos de datos estándar más comunes:

– Numéricos (Enteros, Reales, con o sin signo)

– Caracteres (Letras, Dígitos, símbolos, etc.)

– Lógicos (Verdadero, Falso)

– Fecha (Pueden indicar fecha y hora)

• En algunos casos es posible indicar la longitud que tendrá el dato, por ejemplo: nombre char(25)

5

Estructuras de Programación

Análisis de Datos (cont):

• Los datos que se van a procesar se deben almacenar en memoria durante la ejecución del programa.

• Un dato particular se almacena en una posición de memoria, a la cual se le asigna un identificador dentro del programa, por ejemplo: total_factura

• Dado que el valor que se almacena en una posición de memoria puede variar, a estos identificadores se les denomina VARIABLES.

• Ejemplo:

apellido char(25)

• En esta instrucción se definió la variable apellido, que es de tipo carácter con una longitud de 25 caracteres.

• Un carácter equivale a una letra, número o símbolo.

• En el diseño de un algoritmo es necesario analizar los tipos de datos que se van a procesar, de manera de crear las variables que los van a contener, que sean de un tipo y longitud adecuados.

6

Page 4: Estrcuturas en Python

20/04/2014

4

Estructuras de Programación

Análisis de Datos (cont):

• Los programas también utilizan valores que no varían durante la ejecución

• Estos valores también se deben almacenar en una posición de memoria, pero debido a que no varían durante la ejecución del programa, se les denomina CONSTANTES.

• Ejemplo:

IVA = 0,19

• Esta instrucción define la constante IVA con un valor de 0,19 (num-real)

• Posteriormente esta constante se puede utilizar en los cálculos del algoritmo, por ejemplo:

total_factura = subtotal * IVA

• Generalmente los nombres de las constantes se escriben con mayúsculas, para diferenciarlas de las variables.

7

Estructuras de Programación

Elementos de un Diagrama Nassi Schneiderman:

8

Tarea o AcciónProcesos paralelos

Condición Mientras

Condición Hasta

Decisión múltiple

Page 5: Estrcuturas en Python

20/04/2014

5

Estructuras de Programación

Ejemplo Diagrama Nassi Schneiderman:

• Algoritmo que lee una secuencia de números, luego calcula la suma y el promedio de los números ingresados y determina cuál es el número menor y cuál es el número mayor.

9

Estructuras de Programación

Elementos de un diagrama de flujo:

• Con estos elementos se puede representar un algoritmo en base a tres estructuras básicas:

– Secuencia

– Decisión

– Repetición

10

La secuencia de acciones serepresenta mediante flechas

Page 6: Estrcuturas en Python

20/04/2014

6

Estructuras de Programación

Ejemplos Diagrama de Flujo:

• Tareas o acciones

• La figura adjunta representa a un diagrama de flujo para encontrar la suma S, el promedio A, y el producto Pde los tres números X, Y, Z. Los enunciados de asignación se indican en un bloque de proceso

11

Símbolos para las operaciones:

+ Suma– Resta* Multiplicación/ División% Módulo (resto)^ Exponenciación

Aquí el signo = significaasignación, por ejemplo,a la variable A se le asignael valor S/3.En pseudocódigo, la asignación se representacon el signo �Por ejemplo:

A � S/3

Estructuras de Programación

Forma general de un algoritmo:

• Inicio del algoritmo.

• Preparación inicial: Por ejemplo inicializar variables, apertura de archivos de datos, etc.

• Ingreso de los datos que se van a procesar.

• Proceso: Este elemento contiene el núcleo del algoritmo y puede variar en complejidad, dependiendo del tipo de problema que se intenta solucionar. Generalmente se compone de varias acciones y elementos de decisión y de repetición. En procesos complejos, se pueden requerir conectores de conectores de página.

• Salida de datos: Comunicación del resultado al usuario. Puede ser salida a pantalla o salida impresa.

• Preparación final: Por ejemplo cierre de archivos de datos.

• Fin del algoritmo.

12

Page 7: Estrcuturas en Python

20/04/2014

7

Estructuras de Programación

Bloques de Decisión:

• Una de las propiedades importantes de un computador es su capacidad para comparar variables y decidir si son iguales o distintas, o si una es mayor que otra, etc. Es decir, un computador puede determinar el valor de verdad de enunciados que utilicen relaciones matemáticas básicas. La forma general en que se presentan estos enunciados al computador es:

– ¿A == B? ¿K <= 25? ¿VENTA > 5000?

• También es posible programar un computador para que tome decisiones en enunciados que usen uno o más conectores lógicos “Y”, “O”, “NO”; o que responda preguntas donde hay más de dos respuestas posibles, por ej: ¿X <= 50 ^ Y <= 75? ¿D es positivo, negativo o cero?

13

==

Estructuras de Programación

Estructuras Básicas – Secuencia, Decisión:

14

...Proceso AProceso B...

...IF condición

[Procedimiento A]ENDIF...

...IF condición

[Procedimiento A]ELSE

[Procedimiento B]ENDIF...

leer NOMBRE, VALOR, TASA INTERES = VALOR * TASAescribir NOMBRE, INTERESFIN

leer NOMBRE, TARIFA, HORASSUELDO = HORAS x TARIFAIF HORAS > 40

SUELDO = SUELDO + (HORAS – 40) * TARIFA * 0,5

ENDIFgrabar NOMBRE, SUELDOFIN

leer A, BIF A < B

MAYOR = BMENOR = A

ELSEMAYOR = AMENOR = B

ENDIFescribir MENOR, MAYORFIN

Page 8: Estrcuturas en Python

20/04/2014

8

Estructuras de Programación

Estructuras Básicas – Decisión Múltiple:

15

IF condición 1[Procedimiento A1]

ELSEIF condición 2[Procedimiento A1]

...ELSEIF condición n

[Procedimiento A1]ELSE

[Procedimiento B]ENDIF

leer A, B, CD = 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 = 0X = –B / (2 * A)escribir “SOLUCION UNICA”, X

ELSEescribir “NO HAY SOLUCIÓN REAL”

ENDIFFIN

Estructuras de Programación

Estructuras Básicas – Ciclo FOR:

16

FOR K = INV a VFIN de a INCRProcedimiento(cuerpo del ciclo)

ENDFOR

Leer NFOR K = 1 a N de a 2

L = SQRT(K)escribir K, L

ENDFORFIN

Page 9: Estrcuturas en Python

20/04/2014

9

Estructuras de Programación

Estructuras Básicas – Ciclos DO-WHILE, DO-UNTIL:

17

DO WHILE condición[Procedimiento][cuerpo del ciclo]

ENDDO

Leer NK = 1DOWHILE K < N

L = K * Kescribir K, LK = K + 2

ENDDOFIN

Leer NK = 1 DO

L = K * Kescribir K, LK = K + 2

UNTIL K > NFIN

DO[Procedimiento][cuerpo del ciclo]

UNTIL condición

Estructuras de Programación

Ejemplo:

• La figura adjunta muestra un diagrama de flujo que lee dos números A y B, y luego los imprime en orden decreciente, después de asignar el número mayor a la variable MAYOR y el número menor a la variable MENOR. Los dos flujos que salen de la decisión ¿A < B? están rotulados “no” y “sí” respectivamente.

18

Software para trabajar con diagramas de flujo ypseudocódigo:

- yEd � http://www.yworks.com/en/products_yed_about.html

- PSeInt � http://pseint.sourceforge.net/

Ejercicio: Instalar la aplicación PSeInt

Page 10: Estrcuturas en Python

20/04/2014

10

Estructuras de Programación

Ejercicios con PSeInt:

• Desarrollar un algoritmo en pseudocódigo y diagrama de flujo para los siguientes problemas:

1. Calcular el área y el perímetro de un círculo. Ingresar el radio por teclado. Considerar el uso de constantes.

2. Calcular la hipotenusa de un triángulo rectángulo. Ingresar la base y la altura por teclado.

3. Calcular la fórmula:

4. Solicitar el ingreso de un nombre y luego mostrar el siguiente mensaje: Hola <nombre>, bienvenido al curso de Estructuras de Programación.

5. Solicitar el ingreso del subtotal de una factura, luego mostrar la fecha actual y el total de la factura incluyendo el IVA; mostrar valores redondeados.

6. Solicitar el ingreso de un número del 1 al 9 (validar el número correcto), luego imprimir la tabla de multiplicación de ese número (hasta el 10).

7. Solicitar el ingreso de un número del 1 al 9 (validar el número correcto), luego repetir el ingreso de un valor (las veces indicadas por el 1er número). Al final mostrar el total y el promedio de los valores ingresados.

19

Para cada ejercicio se debe documentar el análisis del algoritmo

Estructuras de Programación

Ejercicio:

• Diseñar un algoritmo para solucionar una ecuación de 2º grado:

ax2 + bx + c = 0

• Solución �

• Pista: La expresión D = b2 – 4ac, se llama discriminante de la ecuación. Si Des negativo, entonces no hay soluciones reales. Si D = 0, entonces hay una sola solución real (doble), x = –b/2a. Si D es positivo, la fórmula da dos soluciones reales diferentes. Se pide hacer un diagrama de flujo que acepte los coeficientes A, B, C de la ecuación cuadrática, y entregue las soluciones reales si las hay. Notar que hay tres respuestas posibles a la pregunta ¿signo de D?, cada una conduce a salidas distintas.

• 1º hacer una diagrama a mano o con yEd, luego ingresarlo en PSeInt.

20

Page 11: Estrcuturas en Python

20/04/2014

11

Estructuras de Programación

Ejercicio – Bosquejo:

21

Estructuras de Programación

Solución en pseudocódigo:

22

Page 12: Estrcuturas en Python

20/04/2014

12

Estructuras de Programación

Solución en Nassi-Schneiderman:

23

Estructuras de Programación

Solución en Diagrama de Flujo:

24

Page 13: Estrcuturas en Python

20/04/2014

13

Estructuras de Programación – Python 2.7

Expresiones y Valores en IDLE:

• Una expresión aritmética se compone de valores (2, 4, etc.) y operadores (+ * – etc.). Por ej:

– El símbolo >>> se denomina prompt.

– Al evaluar una expresión, se genera un valor único.

• El resultado de una expresión aritmética depende de los tipos de datos involucrados.

• Python maneja diversos tipo de datos, por ejemplo números enteros y reales:

– 4 � tipo INT

– 2.5 � tipo FLOAT

• Una expresión que combina dos datos INT, genera un resultado INT.

• Una expresión que combina dos datos FLOAT, genera un resultado FLOAT.

• Una expresión que combina datos INT y FLOAT, genera un resultado FLOAT.

• Ejemplo…

División Entera, Módulo y Exponenciación:

• Por defecto, en Python 2.7 la división es entera (INT).

• Si se desea un resultado real (FLOAT), al menos un operando se debe expresar como decimal.

• Analizar los ejemplos adjuntos.

25

Estructuras de Programación – Python 2.7

División Entera, Módulo y Exponenciación (cont):

• El módulo de una división entrega el resto como resultado. En esta operación, el signo del resultado coincide con el signo del divisor.

• Analizar los ejemplos adjuntos…

Tabla de Operadores:

26

Símbolo Operador Ejemplo Resultado

– Negación -5 -5

+ Adición 11 + 3.1 14.1

– Substracción 5 -19 -14

* Multiplicación 8.5 * 4 34.0

/ División entera 11 / 2 5

/ División real 11 / 2.0 5.5

% Módulo 8.5 % 3.5 1.5

** Exponenciación 2**5 32

Page 14: Estrcuturas en Python

20/04/2014

14

Estructuras de Programación – Python 2.7

Precedencia de Operadores:

• Convertir grados Fahrenheit a grados Celsius � ºF – 32 * 5/9

• Ejemplo: Convertir 212º F a ºC

• El segundo resultado es el correcto. Si no se indica nada, la operación se calcula según cierta precedencia de operadores.

Tabla de Precedencia de Operadores:

La precedencia se puede alterar con el uso de paréntesis

27

Precedencia Operador Operación

Mayor ** Exponenciación

– Negación

* , / , % Multiplicación, División, Módulo

Menor + , – Suma, Resta

Ejercicio – Cuál es el resultado de las siguientes operaciones:

a) 6*3+7*4b) 5+3/4c) 5-3*2**4d) 92/7**2-3e) -6**2f) 6**-2

Estructuras de Programación – Python 2.7

Ejercicio de Operadores:

Efectuar las siguientes operaciones en IDLE, aplicar paréntesis cuando sea necesario:

a)

e)

b)

c) f)

d)

g)

28

Page 15: Estrcuturas en Python

20/04/2014

15

Estructuras de Programación – Python 2.7

Variables y Memoria del Computador:

• Una variable es una posición de memoria que puede almacenar temporalmente algún valor.

• Cada posición de memoria que contenga algún 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, números y el carácter “_”; per el nombre no puede empezar con un número.

• Una variable se crea al asignarle algún valor, por ejemplo:

• Las variables se pueden usar en expresiones aritméticas.

• Las variables tienen un nombre que no varía durante el programa, pero su valor sí puede variar durante la ejecución del programa.

• Al asignar un nuevo valor a una variable existente, el valor antiguo es reemplazado.

• El siguiente sitio permite visualizar cómo se manejan las variables en la memoria del computador.

29

http://pythontutor.com/visualize.html

Estructuras de Programación – Python 2.7

Sentencias de Asignación:

<<variable>> = <<expresión>>

• Esto se ejecuta de la siguiente forma:

1. Evalúa la expresión al lado derecho del signo = . A este valor se le asigna una dirección de memoria.

2. Almacena la dirección de memoria en la variable al lado izquierdo del signo = . Crea una nueva dirección de memoria para la variable, en caso que no exista otra variable con el mismo nombre. En caso contrario, sólo reutiliza la variable existente, reemplazando la dirección de memoria que contiene.

• Ejemplo:

1. Primero evalúa la expresión al lado derecho (26.0 + 5) y le asigna una dirección de memoria (d01 � 31.0)

2. Luego almacena esa dirección de memoria en la variable grado_calsius.

30

Page 16: Estrcuturas en Python

20/04/2014

16

Estructuras de Programación – Python 2.7

Reasignación de Variables:

• Considerar el siguiente código:

1. Se guarda el 20 en una dirección de memoria (id1) y ésta se asigna a la variable difference.

2. Se calcula el resultado del lado derecho y se guarda en otra dirección de memoria (id2) y ésta se asigna a la variable double.

3. Se guarda un nuevo valor en la dirección de memoria (id3) y ésta s reasigna a la variable difference. Ahora ninguna variable hace referencia a la dirección (id1)

31

Estructuras de Programación – Python 2.7

Reasignación de Variables:

Hacer un seguimiento en memoria al siguiente código:

• Utilizar el sitio: http://pythontutor.com/visualize.html

• Observar que los valores se van almacenando en nuevas direcciones de memoria. Las direcciones anteriores se van pendiendo.

Asignaciones de Incremento:

32

Ejercicio:- Crear una variable “X” y asignarle el valor 10.5- Crear una variable “Y” y asignarle el valor 4- Sumar las variables “X” e “Y” y dejar el resultado en la variable “X” ¿Cuáles son los valores de “X” e “Y” después de la última instrucción?

Page 17: Estrcuturas en Python

20/04/2014

17

Estructuras de Programación – Python 2.7

Asignaciones de Incremento (cont):

• Combina una asignación con una operación aritmética.

• 1º se evalúa la expresión a la derecha del signo =

• 2º se aplica la operación adjunta al signo =

• 3º se ejecuta la asignación.

33

Símbolo Ejemplo Resultado

+=x = 7x += 2

9

–=x = 7x -= 2

5

*=x = 7x *= 2

14

/=x = 7x /= 2.

3.5

%=x = 7x %= 2

1

**=x = 7x **= 2

49

Estructuras de Programación – Python 2.7

Mensajes de Error:

Python tiene dos tipos de errores:

• de Sintaxis: Error del lenguaje

• de Semántica: Error de significado.

Ej. de error semántico (variable no existe):

Ej. de error de sintaxis:

34

Page 18: Estrcuturas en Python

20/04/2014

18

Estructuras de Programación – Python 2.7

Continuación de instrucción en línea siguiente:

• En sentencias muy complicadas o largas, conviene dividirlas en varias líneas (mantener 80 caracteres)

• Para dividir una instrucción, se puede hacer de dos maneras:

– Dividirla dentro de un paréntesis.

– Usar el (\) como carácter de continuación.

Ejercicio – Para cocinar una receta, se tienen los siguientes datos:

• Temperatura ambiental de la sala = 20º Celsius

• El horno es capaz de elevar la temperatura a una tasa de 20º Celsius por minuto.

• La receta indica que el horno se debe precalentar a 350º Fahrenheit.

• La fórmula de conversión de temperatura es: C = (F – 32) * 5/9

• Se pide calcular el tiempo necesario para que el horno llegue a la temperatura de la receta.

35

Estructuras de Programación – Python 2.7

Ejercicio (cont):

… o usando una variable intermedia (temp_receta_c)

36

Page 19: Estrcuturas en Python

20/04/2014

19

Estructuras de Programación – Python 2.7

Comentarios de Programa en Python:

• Para facilitar la comprensión de un programa, es útil agregar comentarios en el código.

• Estos comentarios son ignorados por el compilador o intérprete, sólo sirven para que una persona que lee el código, pueda entenderlo más fácilmente.

• En Python, un comentario debe empezar con el carácter #.

• Todo el texto que siga a este carácter (dentro de la misma línea), se considera un comentario y es ignorado por el intérprete Python. Por ejemplo:

37Estilo de programación en Python: http://www.python.org/dev/peps/pep-0008/

Estructuras de Programación

Funciones y Procedimientos:

• Generalmente un programa complejo, está dividido en partes más pequeñas que se ocupan de manejar algún aspecto específico del programa, por ejemplo validar el ingreso de datos numéricos.

• A estas divisiones se les denomina subprogramas o subrutinas, en forma genérica.

• Al dividir un programa en subrutinas se tienen varias ventajas:

– Cada subrutina se define una sola vez, pero se puede ejecutar repetidas veces.

– Los programas se pueden organizar mejor (y comprender mejor).

– Al aparecer un error, sólo hay que revisar la subrutina (si está bien diseñada).

• Los dos tipos principales de subrutinas son la funciones y los procedimientos.

– Una función es un bloque de código que acepta uno o más datos de entrada, llamados parámetros o argumentos de la función, y retorna uno o más valores de salida.

– Un procedimiento es un bloque de código que puede aceptar uno o más datos de entrada, llamados parámetros o argumentos del procedimiento, pero no retorna valores de salida.

• Otros nombres genéricos para las subrutinas son: módulos o subprocesos.

38

Page 20: Estrcuturas en Python

20/04/2014

20

Estructuras de Programación

Funciones y Procedimientos:

• Para que una función pueda hacer su trabajo, debe ser llamada (invocada) desde otra parte del programa, junto con la llamada se le deben pasar los parámetros que requiere.

• La forma general de la llamada a una función es:

nombre_función(parámetro1, parámetro2, …)

• Algunos parámetros pueden ser opcionales.

• Un parámetro puede ser un número, un texto, una operación aritmética (ej: a + b), o incluso otra función, por ejemplo:

funciónA(parámetroA1, funciónB(parámetroB1, parámetroB2))

• En este último caso, el valor de retorno de la funciónB, sirve como parámetro de entrada para la funciónA. Luego ambas funciones tienen dos parámetros de entrada.

• Precaución en el uso de funciones:

– Coherencia entre los parámetros definidos y los parámetros pasados en la llamada (tipos de datos, cantidad de parámetros y orden de declaración de los parámetros).

– Mantener la paridad entre los paréntesis.

– Agregar la documentación necesaria para entender el trabajo de la función.39

Primero se evalúa funciónB y después se evalúa funciónA

Estructuras de Programación

Funciones y Procedimientos en PSeInt:

• Usualmente los lenguajes de programación incluyen un conjunto de funciones para trabajar con números, texto, fechas, cálculos numéricos, etc.

• Aunque PSeInt no es un lenguaje formal de programación, tiene algunas funciones incorporadas, las cuales se pueden ver en la opción de Ayuda � Expresiones.

40

Page 21: Estrcuturas en Python

20/04/2014

21

Estructuras de Programación

Funciones y Procedimientos en PSeInt – Ejercicios:

• Hacer un algoritmo con uso de funciones incorporadas para lo siguiente:

1. Ingresar dos números enteros positivos y asignarlos a las variables A, B. Luego calcular la raíz cuadrada de A + B.

2. Ingresar dos números, uno positivo y uno negativo y asignarlos a las variables A, B. Luego calcular el valor absoluto de A * B.

3. Ingresar un número entero positivo y asignarlo a la variable A. Luego hacer:

a) Mostrar el logaritmo natural de A

b) Mostrar el logaritmo natural de A truncado

c) Mostrar el logaritmo natural de A redondeado

4. Mostrar un número aleatorio entre 1 y 10

5. Solicitar el ingreso de un nombre y apellido y asignarlos a las variables A, B. Luego usar la función de concatenación para mostrar en una sola línea el nombre y apellido separados por un espacio.

6. Crear una variable con el siguiente valor “ESTRUCTURASDEPROGRAMACIÓN”. Luego usar la función SUBCADENA() para separar las palabras y asignarlas a las variables A, B, C. Luego mostrar las palabras concatenadas usando una instrucción de una línea.

7. Hacer un algoritmo para mostrar la cantidad de letras que tiene la cadena de caracteres del ejercicio 6.

41

Estructuras de Programación

Funciones Definidas por el Usuario:

• Aparte de las funciones incorporadas en el lenguaje de programación, también está la posibilidad que un programador defina sus propias funciones. Para esto debe diseñar lo siguiente:

– Los parámetros de entrada de la función (tipo, cantidad, orden de declaración).

– Los resultados que entregará la función (tipo).

– El bloque de código de la función, el cual trabaja con los parámetros de entrada y produce los resultados de la función.

• Clasificación de parámetros:

– Parámetros formales: Son aquellos que se declaran junto con la función.

– Parámetros reales: Son aquellos usados en una llamada a la función.

• Ejemplo:

42

función sumar(a, b)retornar a + b

…subtotal = 10000iva = 1900total_factura = sumar(subtotal, iva)…

Parámetrosformales

Parámetrosreales

Page 22: Estrcuturas en Python

20/04/2014

22

Estructuras de Programación

Funciones Definidas por el Usuario en PSeInt:

• Las funciones se deben declarar fuera del bloque del proceso principal (antes o después)

• El bloque de código de la función debe estar encerrado entre un par de instrucciones: Funcion o Subproceso

FinFuncion FinSubproceso

• Sintaxis de definición de función:

• Ejemplo:

43

Funcion variable_retorno <- nombre_funcion (parámetro1, parámetro2, ...)acción 1 acción 2

...acción n

FinFuncion

Proceso calcula_totalsubtotal <- 10000iva <- 1900Escribir 'Subtotal = ', subtotalEscribir 'IVA = ', ivaEscribir 'total factura = ', sumar(subtotal, iva)

FinProceso

Funcion resul <- sumar (a, b)resul <- a + b

FinFuncion

Estructuras de Programación

Funciones Definidas por el Usuario en PSeInt – Ejemplos:

44

Page 23: Estrcuturas en Python

20/04/2014

23

Estructuras de Programación

Funciones y Variables Locales:

• En cálculos más complejos, una función puede requerir varios parámetros, los cuales usan espacio de memoria.

• Para optimizar el uso del espacio de memoria, la funciones utilizan un tipo de variables llamadas variables locales, las cuales se crean cada vez que se llama la función, y se destruyen cada vez que la función termina su trabajo.

• Una variable local no se puede acceder desde fuera de la función en donde está definida. Por ejemplo: Hacer una función para resolver una ecuación cuadrática: ax2 + bx + c.

• Las variables t1, t2, y t3 son definidas dentro de la función, luego son locales a ella.

• Los parámetros de la función (a, b, c, x, resul) también 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 función en donde se define.45

Funcion resul <- cuadratica (a, b, c, x)t1 <- a * b ^ 2t2 <- b * xt3 <- cresul <- t1 + t2 + t3

FinFuncion

Estructuras de Programación

Funciones y Variables Locales:

• Ejemplo: En este caso la variable “a” es local a la función sumar(), luego no es visible dentro del proceso principal.

• Ejercicio: Para la siguiente función, indicar los valores que toma la variable A, si los parámetros de entrada son los siguientes:

46

Proceso calcula_totalsubtotal <- 10000iva <- 1900Escribir 'Subtotal = ', subtotalEscribir 'IVA = ', ivaEscribir 'total factura = ', sumar(subtotal, iva)Escribir 'a = ', a

FinProceso

Funcion resul <- sumar (a, b)resul <- a + b

FinFuncion

A <- alfa (2, 1, 6)A <- alfa (4, 7, 2)A <- alfa (3, 0, 5)A <- alfa (-4, 3, 2)A <- alfa (0, 6, 0)

Funcion resul <- alfa(p, q, r)resul <- p * -1 + beta(q, r)

FinFuncion

Funcion resul <- beta(a, b)resul <- a**2 – r

FinFuncion

Page 24: Estrcuturas en Python

20/04/2014

24

Estructuras de Programación

Funciones Definidas por el Usuario en PSeInt – Ejercicio:

• Hacer un algoritmo que solicite el ingreso de la cantidad de ítems de una factura. Por cada ítem debe solicitar su valor respectivo. Luego debe mostrar el subtotal de la factura, el IVA y el total. Definir una función para calcular el IVA y otra función para calcular el total de la factura.

• Ejemplo:

47

Estructuras de Programación

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, sólo debe mostrar los datos finales de la factura en pantalla (subtotal, IVA, total)

• Ejemplo:

48

Page 25: Estrcuturas en Python

20/04/2014

25

Estructuras de Programación

Ejercicio PSeInt – Funciones incorporadas y Definidas por el Usuario:

• Definir las funciones apropiadas para los siguiente algoritmos:

1. Hacer un algoritmo que solicite el ingreso de dos números enteros positivos a, b y luego use una función que entregue la resta a – b. El resultado se debe mostrar en pantalla.

2. Hacer un algoritmo que solicite el ingreso del nombre de una persona y luego lo muestre al revés. Tip: apoyarse en las funciones LONGITUD(S) y SUBCADENA(S, X, Y).

3. Hacer un algoritmo para el ejercicio de la diapositiva 35, incorporar una función que haga la conversión de temperatura Celsius-Fahrenheit.

4. Hacer el ejercicio 6 de la diapositiva 19, incorporar una función para validar el número ingresado.

5. Hacer un algoritmo que solicite el ingreso del área de un círculo, luego debe mostrar el radio y el perímetro del círculo, incorporar una función para obtener el radio del círculo. Los valores se deben mostrar redondeados.

6. Hacer un programa que solicite el ingreso de una frase textual y luego muestre la cantidad de palabras que contiene. TIP: contar la cantidad de espacios en la frase y

luego sumar 1. Considerar que las palabras se separan por un espacio y no hay espacios al inicio o final de la frase.

7. Hacer un algoritmo que solicite el ingreso de un Nº entre 1 y 9999, luego debe descomponer el número en miles, cientos, decenas y unidades. Por ejemplo el Nº 3846 se descompone en: 3000, 800, 40, 6. TIP: usar la función TRUNC(X).

49

Estructuras de Programación

Funciones – Paso de Parámetros:

• Por Valor: Se pasa una copia del valor a la función, luego el valor original no es afectado por los cálculos realizados dentro de la función.

• Por Referencia: A la función se le entrega la dirección de memoria en donde está almacenado el valor. Luego cualquier modificación que la función haga en este parámetro, se verá reflejado en el valor original.

50

Page 26: Estrcuturas en Python

20/04/2014

26

Estructuras de Programación

Funciones Definidas por el Usuario en PSeInt – Parámetro por Referencia:

1. El proceso principal asigna el valor 20 a “i”.

2. Luego efectúa una llamada a la subrutina miFuncion() y le pasa la variable “i” por referencia, es decir, le pasa la dirección de memoria de la variable “i”.

3. La subrutina miFuncion() recibe la dirección 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 Programación

Estructuras de Datos – Vectores y Matrices:

Datos escalares:

• Contienen un valor único, por ejemplo:

– Edad = 20 � numérico

– Nombre = ‘Fernando’ � carácter

– Prueba = 25/04/2014 � fecha

Estructuras de Datos – Arreglos:

• En algunos casos es necesario procesar un conjunto de datos del mismo tipo, por ejemplo, el conjunto de las notas del semestre. � Este conjunto de datos se puede procesar como una estructura única llamada arreglo en forma genérica.

• Como cualquier variable, un arreglo debe tener un nombre. Los datos dentro de un arreglo se identifican mediante un índice, que normalmente parte desde cero hasta un valor predeterminado.

52

Primer índice Elemento del índice 8

Vector de largo 10

Page 27: Estrcuturas en Python

20/04/2014

27

Estructuras de Programación

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.

• También existen arreglos con dos índices, los que se denominan arreglos bidimensionales o matrices.

53

Índice ifilas

Índice j columnas

Elemento del

índice (1,2)

Elemento del

índice (2,3)

Matriz de 4 x 4

Estructuras de Programación

Estructuras de Datos – Vectores y Matrices:

Tipos de Arreglos:

• Aunque los vectores y matrices son los tipos de arreglos más utilizados, también se pueden implementar arreglos de más dimensiones.

54

Arreglo de unadimensión [i]

Arreglo de dosdimensiones [i,j]

Arreglo de tresdimensiones [i,j,k]

i i ji j k

Page 28: Estrcuturas en Python

20/04/2014

28

Estructuras de Programación

Estructuras de Datos – Vectores y Matrices:

Procesamiento de Arreglos:

• Los elementos de un arreglo se deben referenciar mediante el nombre del arreglo, más el o los índices que definen su posición 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.

55

matriz

Estructuras de Programación

Vectores y Matrices en PSeInt:

Configurar índice cero:

• Configurar � Opciones del lenguaje � Personalizar

56

Page 29: Estrcuturas en Python

20/04/2014

29

Estructuras de Programación

Vectores y Matrices en PSeInt:

Definición de un arreglo:

• Se debe usar la palabra reservada Dimension, junto con el nombre del arreglo y la cantidad máxima de elementos. Para cada dimensión del arreglo se debe indicar su valor máximo, separados por coma. Por ejemplo:

• Dimension notas[8]�Define un arreglo unidimensional de nombre notas y que puede contener hasta ocho elementos.

• Dimension cuad[4,6] � Define un arreglo bidimensional de nombre cuad y que contiene 4 filas y 6 columnas.

57

notas

cuad

Estructuras de Programación

Vectores y Matrices en PSeInt:

Manipulación de arreglos:

• Dado que los índices de un arreglo son números enteros, es posible procesarlos como un ciclo mediante la instrucción Para (FOR).

• Por ejemplo, si se tiene un arreglo de dimensión n, el siguiente código permite llenar las posiciones del arreglo con datos ingresados por la consola.

• Para mostrar los elementos del arreglo anterior, se puede usar el siguiente código:

58

Dimension datos[n]Para i <- 0 Hasta n-1 Hacer

Escribir "Ingrese el dato ",i+1,":"Leer datos[i]

FinPara

Para i <- 0 Hasta n-1 HacerEscribir Sin Saltar datos[i], ' , '

FinPara

Page 30: Estrcuturas en Python

20/04/2014

30

Estructuras de Programación

Vectores y Matrices en PSeInt:

Manipulación de arreglos:

• Dado el mismo arreglo del ejemplo anterior, escribir un código que solicite el ingreso de un N° entero por consola (índice del arreglo), luego debe mostrar el elemento que está en la posición respectiva. Se debe validar que el N° ingresado no sea mayor que el tamaño de arreglo:

59

num <- nMientras num < 0 o num >= n Hacer

Escribir 'Ingrese un N° entero entre 0 y ', n-1, ':'Leer num

Fin MientrasEscribir 'El elemento de la posición ', num, ' es: ', datos[num]

Estructuras de Programación

Vectores y Matrices en PSeInt:

Ejercicio: Se tiene el vector “puntaje”, con los siguiente datos:

Implementar algoritmos en PSeInt, mediante la instrucción Para, para lo siguiente:

1. Mostrar los puntajes en orden inverso al del arreglo.

2. Obtener el puntaje mayor, menor y promedio.

3. Mostrar todos los puntajes mayor o igual a un N° ingresado por consola.

4. Mostrar los puntajes de las posiciones impares del arreglo.

5. Mostrar la cantidad de puntajes menor o igual a un N° ingresado por consola.

6. Mostrar todos los puntajes mayor o igual al puntaje promedio.

7. Mostrar el promedio de los puntajes mayor o igual a un N° ingresado por consola.

8. Aumentar en un % dado, a todos los puntajes menor o igual a un N° ingresado por consola. El % también se debe ingresar por consola (validar entre 1% y 12%). El resultado se debe mostrar sin decimales.

9. Repetir todos los ejercicios anteriores, guardando el resultado en otro arreglo.60

Page 31: Estrcuturas en Python

20/04/2014

31

Estructuras de Programación

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 números aleatorios entre 0 y 100. Por último, mostrar en pantalla el contenido de la matriz, por ejemplo:

61

Estructuras de Programación

Vectores y Matrices en PSeInt:

Ejercicio con Matrices (cont):

62

Page 32: Estrcuturas en Python

20/04/2014

32

Estructuras de Programación

Vectores y Matrices en PSeInt:

Ejercicio con Matrices: Crear una matriz de números aleatorios, según el ejercicio anterior, luego hacer algoritmos para lo siguiente:

1. Obtener el número mayor, menor y el promedio de la matriz.

2. Solicitar el ingreso de un fila y mostrar todos los números de esa fila.

3. Solicitar el ingreso de un columna y mostrar todos los números 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 posición dentro de la matriz.

7. Mostrar todos los números impares de la matriz. Los números se deben mostrar en su posición dentro de la matriz. Los números pares se deben mostrar “XX”.

8. Mostrar la suma de todos los números que tienen una posición 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 Programación

64

FIN Unidad 2