0% encontró este documento útil (0 votos)
374 vistas

Estrcuturas en Python

Este documento presenta conceptos generales sobre estructuras de programación. Explica que un programa se construye mediante pasos como entender el problema, diseñar la solución, y codificarla en un lenguaje de programación. Describe herramientas para representar algoritmos como pseudocódigo y diagramas de flujo, y cubre temas como análisis de datos, variables, constantes, bloques de decisión y estructuras de control como ciclos.

Cargado por

agmr05
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
374 vistas

Estrcuturas en Python

Este documento presenta conceptos generales sobre estructuras de programación. Explica que un programa se construye mediante pasos como entender el problema, diseñar la solución, y codificarla en un lenguaje de programación. Describe herramientas para representar algoritmos como pseudocódigo y diagramas de flujo, y cubre temas como análisis de datos, variables, constantes, bloques de decisión y estructuras de control como ciclos.

Cargado por

agmr05
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 32

20/04/2014

Estructuras de Programacin
Unidad 2

Estructuras de Programacin
Conceptos Generales:

Una caracterstica bsica 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 programacin adecuado a la aplicacin, por ejemplo hay lenguajes
orientados a aplicaciones comerciales, aplicaciones cientficas, etc.
Pasos para construir un programa:
Entender el problema y los requisitos del usuario
Disear un programa para la solucin del problema
Codificar el diseo en algn lenguaje de programacin

El objetivo del diseo de programas, es mostrar los aspectos ms


importantes del programa, en particular los algoritmos que se utilizarn
para implementar la solucin.
2

20/04/2014

Estructuras de Programacin
Conceptos Generales:

Programar: Consiste en indicarle a un computador, cmo debe realizar


algn trabajo determinado. Esto se hace mediante un lenguaje de
programacin.
Luego un computador slo es capaz de ejecutar las instrucciones de un
programa construido por un programador.
Un algoritmo es una descripcin detallada de las acciones necesarias para
llevar a cabo una actividad cualquiera. Representa una idea conceptual de
la solucin.
Un programa es una instancia concreta de uno o ms algoritmos.
Para representar un algoritmo se pueden utilizar diversas herramientas:
Pseudocdigo: Es una descripcin escrita de un algoritmo, realizada con un
lenguaje natural acotado.
Diagrama de flujo: Es una descripcin grfica de un algoritmo, realizada con
elementos de diagramacin que representan distintos tipos de acciones.
Diagramas Nassi-Schneiderman: Tambin utiliza elementos de diagramacin
para representar un algoritmo.
3

Estructuras de Programacin
Conceptos Generales:

Fases para desarrollar un algoritmo:


a) Anlisis preliminar del problema: Estudiar el problema en general y ver las
partes que se pueden automatizar.
b) Anlisis de los datos: Estudiar los tipos de datos, las entradas y las salidas.
c) Diseo del algoritmo: Representar el algoritmo con alguna herramienta como
pseudocdigo o diagramas de flujo.
d) Codificacin: Traducir el algoritmo diseado, con algn lenguaje de
programacin.
e) Ejecucin y prueba del programa

Usualmente los programas deben ser modificados con posterioridad a su


puesta en marcha. Para efectos de comprensin del programa, es til
mantener la documentacin del diseo, as como tambin insertar algn
texto de documentacin entre el cdigo del programa.
Caractersticas generales de un algoritmo:
- Debe tener un orden de ejecucin.
- Debe ser preciso.
- Debe ser finito.
4

20/04/2014

Estructuras de Programacin
Anlisis de Datos:

Los datos pueden ser:


Simples: Un elemento, por ejemplo un nmero
Compuestos: Varios elementos, por ejemplo una lista de nombres.

Tipos de Datos:
Estndar: Vienen incorporados en el lenguaje
No estndar: Son definidos por el usuario, por ejemplo un registro de alumno

Tipos de datos estndar ms comunes:

Numricos (Enteros, Reales, con o sin signo)


Caracteres (Letras, Dgitos, smbolos, etc.)
Lgicos (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 Programacin
Anlisis de Datos (cont):

Los datos que se van a procesar se deben almacenar en memoria durante


la ejecucin del programa.
Un dato particular se almacena en una posicin 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 posicin de memoria puede
variar, a estos identificadores se les denomina VARIABLES.
Ejemplo:
apellido char(25)

En esta instruccin se defini la variable apellido, que es de tipo carcter


con una longitud de 25 caracteres.
Un carcter equivale a una letra, nmero o smbolo.
En el diseo 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

20/04/2014

Estructuras de Programacin
Anlisis de Datos (cont):

Los programas tambin utilizan valores que no varan durante la ejecucin


Estos valores tambin se deben almacenar en una posicin de memoria,
pero debido a que no varan durante la ejecucin del programa, se les
denomina CONSTANTES.
Ejemplo:
IVA = 0,19

Esta instruccin define la constante IVA con un valor de 0,19 (num-real)


Posteriormente esta constante se puede utilizar en los clculos del
algoritmo, por ejemplo:
total_factura = subtotal * IVA

Generalmente los nombres de las constantes se escriben con maysculas,


para diferenciarlas de las variables.

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:

Algoritmo que lee una


secuencia de nmeros,
luego calcula la suma y
el promedio de los nmeros
ingresados y determina cul
es el nmero menor y cul
es el nmero mayor.

Estructuras de Programacin
Elementos de un diagrama de flujo:

Con estos elementos se puede representar un algoritmo en base a tres


estructuras bsicas:
Secuencia
Decisin
Repeticin

La secuencia de acciones se
representa mediante flechas
10

20/04/2014

Estructuras de Programacin
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 P
de los tres nmeros X, Y, Z. Los enunciados de asignacin
se indican en un bloque de proceso

Smbolos para las operaciones:


+

*
/
%
^

Suma
Resta
Multiplicacin
Divisin
Mdulo (resto)
Exponenciacin

Aqu el signo = significa


asignacin, por ejemplo,
a la variable A se le asigna
el valor S/3.
En pseudocdigo, la
asignacin se representa
con el signo
Por ejemplo:
A
S/3
11

Estructuras de Programacin
Forma general de un algoritmo:

Inicio del algoritmo.


Preparacin 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 ncleo del algoritmo
puede variar en complejidad, dependiendo del tipo de
problema que se intenta solucionar. Generalmente se
compone de varias acciones y elementos de decisin y
repeticin. En procesos complejos, se pueden requerir
de conectores de pgina.
Salida de datos: Comunicacin del resultado al usuario.
Puede ser salida a pantalla o salida impresa.
Preparacin final: Por ejemplo cierre de archivos de datos.
Fin del algoritmo.

de
conectores

12

20/04/2014

Estructuras de Programacin
Bloques de Decisin:

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 matemticas bsicas. La forma general en que se presentan
estos enunciados al computador es:

Tambin es posible programar un computador para que tome decisiones en


enunciados que usen uno o ms conectores lgicos Y, O, NO; o que responda
preguntas donde hay ms de dos respuestas posibles, por ej:
X <= 50 ^ Y <= 75? D es positivo, negativo o cero?

A == B?

K <= 25?

VENTA > 5000?

==

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
...

leer NOMBRE, VALOR, TASA


INTERES = VALOR * TASA
escribir NOMBRE, INTERES
FIN
leer NOMBRE, TARIFA, HORAS
SUELDO = HORAS x TARIFA
IF HORAS > 40
SUELDO = SUELDO + (HORAS 40) *
TARIFA * 0,5
ENDIF
grabar NOMBRE, SUELDO
FIN
leer A, B
IF A < B
MAYOR = B
MENOR = A
ELSE
MAYOR = A
MENOR = B
ENDIF
escribir MENOR, MAYOR
FIN

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:

FOR K = INV a VFIN de a INCR


Procedimiento
(cuerpo del ciclo)
ENDFOR

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:

La figura adjunta muestra un diagrama de flujo


que lee dos nmeros A y B, y luego los imprime
en orden decreciente, despus de asignar el
nmero mayor a la variable MAYOR y el nmero
menor a la variable MENOR. Los dos flujos que
salen de la decisin A < B? estn rotulados no
y s respectivamente.

Ejercicio: Instalar la aplicacin PSeInt

Software para trabajar con diagramas de flujo y


pseudocdigo:
- yEd
- PSeInt

http://www.yworks.com/en/products_yed_about.html
http://pseint.sourceforge.net/
18

20/04/2014

Estructuras de Programacin
Ejercicios con PSeInt:

Desarrollar un algoritmo en pseudocdigo y diagrama de flujo para los siguientes


problemas:
1. Calcular el rea y el permetro de un crculo. Ingresar el radio por teclado. Considerar
el uso de constantes.
2. Calcular la hipotenusa de un tringulo rectngulo. Ingresar la base y la altura por
teclado.
3. Calcular la frmula:
4. Solicitar el ingreso de un nombre y luego mostrar el siguiente mensaje:
Hola <nombre>, bienvenido al curso de Estructuras de Programacin.
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 nmero del 1 al 9 (validar el nmero correcto), luego
imprimir la tabla de multiplicacin de ese nmero (hasta el 10).
7. Solicitar el ingreso de un nmero del 1 al 9 (validar el nmero correcto), luego repetir
el ingreso de un valor (las veces indicadas por el 1er nmero). Al final mostrar el total
y el promedio de los valores ingresados.

Para cada ejercicio se debe documentar el anlisis del algoritmo


19

Estructuras de Programacin
Ejercicio:

Disear un algoritmo para solucionar una ecuacin de 2 grado:

ax2 + bx + c = 0

Solucin

Pista: La expresin D = b2 4ac, se llama discriminante de la ecuacin. Si D


es negativo, entonces no hay soluciones reales. Si D = 0, entonces hay una
sola solucin real (doble), x = b/2a. Si D es positivo, la frmula da dos
soluciones reales diferentes. Se pide hacer un diagrama de flujo que
acepte los coeficientes A, B, C de la ecuacin cuadrtica, 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

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

Estructuras de Programacin Python 2.7


Expresiones y Valores en IDLE:

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.

El resultado de una expresin aritmtica depende de los tipos de datos involucrados.


Python maneja diversos tipo de datos, por ejemplo nmeros enteros y reales:
4
tipo INT
2.5
tipo FLOAT
Una expresin que combina dos datos INT, genera un resultado INT.
Una expresin que combina dos datos FLOAT, genera un resultado FLOAT.
Una expresin que combina datos INT y FLOAT, genera un resultado FLOAT.
Ejemplo

Divisin Entera, Mdulo y Exponenciacin:

Por defecto, en Python 2.7 la divisin 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 Programacin Python 2.7


Divisin Entera, Mdulo y Exponenciacin (cont):

El mdulo de una divisin entrega el resto como


resultado. En esta operacin, el signo del resultado
coincide con el signo del divisor.
Analizar los ejemplos adjuntos

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

Estructuras de Programacin Python 2.7


Precedencia de Operadores:

Convertir grados Fahrenheit a grados Celsius


Ejemplo: Convertir 212 F a C

El segundo resultado es el correcto. Si no se indica nada, la operacin se calcula segn cierta


precedencia de operadores.

F 32 * 5/9

Tabla de Precedencia de Operadores:


Ejercicio Cul es el
resultado de las
siguientes operaciones:

Precedencia Operador Operacin


Mayor

**

Exponenciacin

Negacin

*,/,%
Menor

+,

Multiplicacin, Divisin, Mdulo


Suma, Resta

La precedencia se puede alterar con el uso de parntesis

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

Estructuras de Programacin Python 2.7


Ejercicio de Operadores:
Efectuar las siguientes operaciones en IDLE, aplicar parntesis cuando sea necesario:
a)
e)
b)

c)

f)

d)
g)

28

14

20/04/2014

Estructuras de Programacin Python 2.7


Variables y Memoria del Computador:

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

Estructuras de Programacin Python 2.7


Sentencias de Asignacin:
<<variable>> = <<expresin>>

Esto se ejecuta de la siguiente forma:


1. Evala la expresin al lado derecho del signo = . A este valor se le asigna una direccin
de memoria.
2. Almacena la direccin de memoria en la variable al lado izquierdo del signo = . Crea una
nueva direccin de memoria para la variable, en caso que no exista otra variable con el
mismo nombre. En caso contrario, slo reutiliza la variable existente, reemplazando la
direccin de memoria que contiene.
Ejemplo:

1. Primero evala la expresin al lado derecho (26.0 + 5) y le asigna una direccin de


memoria (d01 31.0)
2. Luego almacena esa direccin de memoria en la variable grado_calsius.

30

15

20/04/2014

Estructuras de Programacin Python 2.7


Reasignacin de Variables:

Considerar el siguiente cdigo:

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


2. Se calcula el resultado del lado derecho y se guarda en otra direccin de memoria (id2) y sta
se asigna a la variable double.
3. Se guarda un nuevo valor en la direccin de memoria (id3) y sta s reasigna a la variable
difference. Ahora ninguna variable hace referencia a la direccin (id1)
31

Estructuras de Programacin Python 2.7


Reasignacin de Variables:
Hacer un seguimiento en memoria al siguiente cdigo:
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.
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
Cules son los valores de X e Y despus de la ltima instruccin?

Asignaciones de Incremento:

32

16

20/04/2014

Estructuras de Programacin Python 2.7


Asignaciones de Incremento (cont):

Combina una asignacin con una operacin aritmtica.


1 se evala la expresin a la derecha del signo =
2 se aplica la operacin adjunta al signo =
3 se ejecuta la asignacin.
Smbolo

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

Estructuras de Programacin Python 2.7


Mensajes de Error:
Python tiene dos tipos de errores:
de Sintaxis: Error del lenguaje
de Semntica: Error de significado.
Ej. de error semntico (variable no existe):

Ej. de error de sintaxis:

34

17

20/04/2014

Estructuras de Programacin Python 2.7


Continuacin de instruccin en lnea siguiente:

En sentencias muy complicadas o largas, conviene dividirlas en varias lneas (mantener 80


caracteres)
Para dividir una instruccin, se puede hacer de dos maneras:
Dividirla dentro de un parntesis.
Usar el (\) como carcter de continuacin.

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 frmula de conversin 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 Programacin Python 2.7


Ejercicio (cont):

o usando una variable intermedia (temp_receta_c)

36

18

20/04/2014

Estructuras de Programacin Python 2.7


Comentarios de Programa en Python:
Para facilitar la comprensin de un programa, es til agregar comentarios en el
cdigo.
Estos comentarios son ignorados por el compilador o intrprete, slo sirven para
que una persona que lee el cdigo, pueda entenderlo ms fcilmente.
En Python, un comentario debe empezar con el carcter #.
Todo el texto que siga a este carcter (dentro de la misma lnea), se considera un
comentario y es ignorado por el intrprete Python. Por ejemplo:

Estilo de programacin en Python: http://www.python.org/dev/peps/pep-0008/

37

Estructuras de Programacin
Funciones y Procedimientos:

Generalmente un programa complejo, est dividido en partes ms pequeas que


se ocupan de manejar algn aspecto especfico del programa, por ejemplo validar
el ingreso de datos numricos.

A estas divisiones se les denomina subprogramas o subrutinas, en forma genrica.

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, slo hay que revisar la subrutina (si est bien diseada).

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


Una funcin es un bloque de cdigo que acepta uno o ms datos de entrada, llamados
parmetros o argumentos de la funcin, y retorna uno o ms valores de salida.
Un procedimiento es un bloque de cdigo que puede aceptar uno o ms datos de
entrada, llamados parmetros o argumentos del procedimiento, pero no retorna valores
de salida.

Otros nombres genricos para las subrutinas son: mdulos o subprocesos.

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.

La forma general de la llamada a una funcin es:


nombre_funcin(parmetro1, parmetro2, )

Algunos parmetros pueden ser opcionales.

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))

En este ltimo caso, el valor de retorno de la funcinB, sirve como parmetro de


entrada para la funcinA. Luego ambas funciones tienen dos parmetros de
entrada.
Primero se evala funcinB y despus se evala funcinA

Precaucin en el uso de funciones:


Coherencia entre los parmetros definidos y los parmetros pasados en la llamada (tipos
de datos, cantidad de parmetros y orden de declaracin de los parmetros).
Mantener la paridad entre los parntesis.
Agregar la documentacin necesaria para entender el trabajo de la funcin.
39

Estructuras de Programacin
Funciones y Procedimientos en PSeInt:

Usualmente los lenguajes de programacin incluyen un conjunto de funciones


para trabajar con nmeros, texto, fechas, clculos numricos, etc.
Aunque PSeInt no es un lenguaje formal de programacin, tiene algunas funciones
incorporadas, las cuales se pueden ver en la opcin de Ayuda Expresiones.

40

20

20/04/2014

Estructuras de Programacin
Funciones y Procedimientos en PSeInt Ejercicios:

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


1. Ingresar dos nmeros enteros positivos y asignarlos a las variables A, B. Luego calcular
la raz cuadrada de A + B.
2. Ingresar dos nmeros, uno positivo y uno negativo y asignarlos a las variables A, B.
Luego calcular el valor absoluto de A * B.
3. Ingresar un nmero entero positivo y asignarlo a la variable A. Luego hacer:
a)
b)
c)

Mostrar el logaritmo natural de A


Mostrar el logaritmo natural de A truncado
Mostrar el logaritmo natural de A redondeado

4. Mostrar un nmero aleatorio entre 1 y 10


5. Solicitar el ingreso de un nombre y apellido y asignarlos a las variables A, B. Luego usar
la funcin de concatenacin para mostrar en una sola lnea el nombre y apellido
separados por un espacio.
6. Crear una variable con el siguiente valor ESTRUCTURASDEPROGRAMACIN. Luego
usar la funcin SUBCADENA() para separar las palabras y asignarlas a las variables A, B,
C. Luego mostrar las palabras concatenadas usando una instruccin de una lnea.
7. Hacer un algoritmo para mostrar la cantidad de letras que tiene la cadena de caracteres
del ejercicio 6.
41

Estructuras de Programacin
Funciones Definidas por el Usuario:

Aparte de las funciones incorporadas en el lenguaje de programacin, tambin


est la posibilidad que un programador defina sus propias funciones. Para esto
debe disear lo siguiente:
Los parmetros de entrada de la funcin (tipo, cantidad, orden de declaracin).
Los resultados que entregar la funcin (tipo).
El bloque de cdigo de la funcin, el cual trabaja con los parmetros de entrada y
produce los resultados de la funcin.

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:

En clculos ms complejos, una funcin puede requerir varios parmetros, 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
funcin, y se destruyen cada vez que la funcin termina su trabajo.
Una variable local no se puede acceder desde fuera de la funcin en donde est
definida. Por ejemplo: Hacer una funcin para resolver una ecuacin cuadrtica:
ax2 + bx + c.
Funcion resul <- cuadratica (a, b, c, x)
t1 <- a * b ^ 2
t2 <- b * x
t3 <- c
resul <- t1 + t2 + t3
FinFuncion

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:

Ejemplo: En este caso


la variable a es local
a la funcin sumar(),
luego no es visible
dentro del proceso
principal.

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

Ejercicio: Para la siguiente funcin, indicar


los valores que toma la variable A, si los
parmetros de entrada son los siguientes:

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)

Funcion resul <- alfa(p, q, r)


resul <- p * -1 + beta(q, r)
FinFuncion
Funcion resul <- beta(a, b)
resul <- a**2 r
FinFuncion

46

23

20/04/2014

Estructuras de Programacin
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 funcin para calcular el IVA y otra funcin
para calcular el total de la factura.

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:

Definir las funciones apropiadas para los siguiente algoritmos:


1. Hacer un algoritmo que solicite el ingreso de dos nmeros enteros positivos a, b y luego
use una funcin 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 revs. 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 funcin que
haga la conversin de temperatura Celsius-Fahrenheit.
4. Hacer el ejercicio 6 de la diapositiva 19, incorporar una funcin para validar el nmero
ingresado.
5. Hacer un algoritmo que solicite el ingreso del rea de un crculo, luego debe mostrar el
radio y el permetro del crculo, incorporar una funcin para obtener el radio del crculo.
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 nmero en miles, cientos, decenas y unidades. Por ejemplo el N 3846
se descompone en: 3000, 800, 40, 6. TIP: usar la funcin TRUNC(X).
49

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

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 genrica.
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.
Primer ndice

Elemento del ndice 8

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]

Define un arreglo bidimensional de nombre cuad y


que contiene 4 filas y 6 columnas.

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:

Implementar algoritmos en PSeInt, mediante la instruccin Para, para lo siguiente:


1.
2.
3.
4.
5.
6.
7.
8.

Mostrar los puntajes en orden inverso al del arreglo.


Obtener el puntaje mayor, menor y promedio.
Mostrar todos los puntajes mayor o igual a un N ingresado por consola.
Mostrar los puntajes de las posiciones impares del arreglo.
Mostrar la cantidad de puntajes menor o igual a un N ingresado por consola.
Mostrar todos los puntajes mayor o igual al puntaje promedio.
Mostrar el promedio de los puntajes mayor o igual a un N ingresado por consola.
Aumentar en un % dado, a todos los puntajes menor o igual a un N ingresado por
consola. El % tambin 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

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

También podría gustarte