Curso de Programación Estructurada
Autor: Luis Antonio García Teoría y práctica de nociones básicas de programación.
C.C. El Recreo, Torre Sur, Piso 7, Oficina 7 Caracas – Venezuela Teléfonos: +58 212 7612523 – 7628438 Website: http://www.benllisoft.com/ Email:
[email protected] Fecha: 27/03/2010
Curso de Programación Estructurada
Tabla de contenido
Introducción Programación Programación estructurada Lenguajes de programación Procesos o algoritmos Estructura general de un proceso/algoritmo Herramientas para el diseño de proceso/algoritmos Componentes Operadores Ejercicios guiados Ejercicios Pseudocódigo Estructura general de un proceso/algoritmo en pseudocódigo Variables Tipos de datos Operadores en pseudocódigo Prioridad de operadores Comentarios Asignación de valores a variables Ejercicios guiados Operación de escritura y lectura (entrada/salida) Operación de escritura (salida) Operación de lectura (entrada)
Benllisoft
Curso de Programación Estructurada Ejercicios guiados Ejercicios Estructuras condicionales Condicional Condicional simple Ejercicios guiados Condicional compuesto Ejercicios guiados Selección (switch,según) Ejercicios guiados Ejercicios Estructuras cíclicas Contadores Acumuladores Fundamentos de las estructuras cíclicas Ciclo mientras Ejercicios guiados Ciclo repetir-hasta Ejercicios guiados Ciclo para Ejercicios guiados Ciclos infinitos y cómo evitarlos Ejercicios Subprocesos/Subalgoritmos SubProcesos/Subalgoritmos sin retorno (acciones, funciones del tipo void) Declaración de un subproceso Invocar un proceso
Benllisoft
Curso de Programación Estructurada Ejercicios guiados SubProcesos con retorno( Funciones) Declarar una subproceso Retorno Invocar un subproceso Ejercicios guiados Parámetros Parámetros por valor Ejercicios guiados Parámetros por referencia Ejercicios guiados Variables Locales y globales Locales Globales Ejercicios Tipos de datos Estructurados Arreglos Arreglos de una dimensión Declaración de un arreglo Operaciones básicas con arreglos Ejercicios guiados Arreglos de dos dimensiones Declaración Operaciones básicas con arreglos de dos dimensiones Ejercicios Registros Declaración de un registro
Benllisoft
Curso de Programación Estructurada Asignar valores a los campos del registro Arreglo de registros Ejercicios guiados Ejercicios
Benllisoft
Curso de Programación Estructurada
Introducción Programación
Consiste en la elaboración de programas para la resolución de problemas, mediante el uso de computadores. Programación estructurada
Consiste en la elaboración de programas de fácil comprensión, basado en plantear una operación como un todo para luego dividirlo en problemas más sencillos. Lenguajes de programación
Un lenguaje de programación es un lenguaje formal diseñado para realizar procesos que pueden ser llevados a cabo por computadoras. Pueden usarse para crear programas que controlen el comportamiento físico y lógico de una máquina, para expresar algoritmos con precisión. Está formado por un conjunto de símbolos y reglas sintácticas y semánticas que definen su estructura y el significado de sus elementos y expresiones. Al proceso por el cual se escribe, se prueba, se depura, se compila (de ser necesario) y se mantiene el código fuente de un programa informático, se le llama programación. Procesos o algoritmos
Conjunto finito de instrucciones, cuyo fin es resolver un problema. Estructura general de un proceso/algoritmo Inicio
Entrada de Datos Procesamiento de los datos Salida Fin Herramientas para el diseño de proceso/algoritmos ● Diagramas de flujo ● Pseudocódigos
Benllisoft
Curso de Programación Estructurada
Diagrama de flujo
Un diagrama de flujo es una representación gráfica de un proceso o algoritmo. Cada paso es representado por un símbolo diferente que contiene una breve descripción de la etapa del algoritmo. Los símbolos gráficos del flujo del proceso/algoritmo están unidos entre sí con flechas que indican la dirección de flujo. El diagrama de flujo ofrece una descripción visual de los pasos del proceso,facilitando la rápida comprensión de cada paso y su relación con las demás. Componentes Símbolo
Descripción Terminal: indica el inicio o fin del Proceso
o algoritmo. Es necesario indicar cuál es el nombre del proceso. representa entrada o salida de datos. Entrada/Salida:
cualquier
representa una actividad llevada a cabo en el proceso (declaraciones ,asignación ,operaciones). Actividad:
Decisión: indica un punto en el cual se
produce un bifurcación.
Líneas de flujo: indican el flujo del
diagrama.
Benllisoft
Curso de Programación Estructurada
Operadores
Son utilizados en operaciones de asignación, aritméticas, relaciones condicionales y lógicas. Estas operaciones son aquellas llevadas a cabo en los símbolos de actividades y decisión. Símbolo
Descripción
Operadores Aritméticos
+
Suma
-
Resta
*
Multiplicación
/
División
Operadores Relacionales
<
Menor
>
Mayor
<=
Menor igual
>=
Mayor igual
==
Igual
!=,<>
Distinto
Operadores Lógicos
Y (AND,&&)
Conjunción
O (,OR,||)
Disyunción
NOT (NO,!)
Negación
Operador de asignación
=,<-
Asignación un valor a una variable
Benllisoft
Curso de Programación Estructurada
Ejemplos 1. Terminal: indica el inicio y fin del Proceso/algoritmo.
2. Entrada/Salida: Salida: permite mostrar mensaje o valores almacenados en variables. Para indicar que se desea mostrar un mensaje se debe escribir el texto entre ‘’.
Benllisoft
Curso de Programación Estructurada
Entrada: Permite recibir datos. Para esto es necesario indicar en donde será recibido el
dato, es necesario el uso de variable. Variable: espacio de memoria en el cual se puede almacenar datos dados por el usuario
o asignados por el programador. Ejemplo: Si recibimos un precio podemos usar la variable P, en ella guardaremos el
valor dado por el usuario.
Ejemplo: Recibir el nombre de una persona en una variable N y luego mostrarlo por salida. En este caso no es necesario el uso de ‘’ en la segunda salida, ya que no se está
mostrando un texto sino una variable que está siendo usada en el proceso, por lo tanto se mostrará el contenido almacenado en ella.
Benllisoft
Curso de Programación Estructurada
Ejemplo: Recibir dos valores, luego mostrarlos
.
Benllisoft
Curso de Programación Estructurada
3. Actividad: consiste en llevar a cabo operaciones sobre las variables Ejemplo: Recibir el precio de un producto en una variable P , duplicarlo y asignar el resultado en una variable P2, por último mostrar el valor de P2.
Ejemplo: Dados 2 números mostrar la suma.
Benllisoft
Curso de Programación Estructurada
4. Decisión: Indica un punto en el cual se produce una bifurcación, esta bifurcación
viene dada por el resultado de una o más operaciones de relación, llamadas expresiones lógicas. Los operadores relacionales son símbolos que se usan para comparar dos valores. Si el resultado de la comparación es correcto la expresión considerada es Verdadera, en caso contrario es Falsa. Con el uso de los operadores relacionales podemos establecer las condiciones que determinan el flujo de ejecución de las instrucciones. Ejemplo: Dado un precio indicar si el valor del precio es correcto o no.
Benllisoft
Curso de Programación Estructurada
Ejemplo: Un sistema informático tiene una clave de acceso. Recibir una clave dada por
el usuario y verificar que sea la que posee el sistema (Asumir que la clave es 1234).
Benllisoft
Curso de Programación Estructurada
Ejercicios guiados 1. Suma de valores: programa que recibe dos valores, calcula la suma y luego la
muestra el resultado. Pasos: 1. 2. 3. 4.
Indicarle al usuario que ingrese los datos. Recibir los datos en variables. Realizar la suma y almacenar el resultado a una variable. Mostrar el resultado del proceso.
Benllisoft
Curso de Programación Estructurada
2. Positivo o negativo: Recibir un valor e indicar si es positivo o negativo. Pasos: 1. 2. 3. 4.
Indicarle al usuario que ingrese el valor. Guardar el valor en una variable. Usando la estructura condicional evaluar el valor almacenado en la variable. Mostrar la salida dado el resultado de la condición.
Benllisoft
Curso de Programación Estructurada
3. Promedio: indicarle al usuario que ingrese 3 notas, luego mostrar el promedio de las
notas.
Nota: En la tercera instrucción haciendo uso de , entre los nombre de las variables se simplificaron tres lecturas.
4. Duplicar : Recibir un valor positivo y mostrar el valor duplicado (verificar que el valor
sea positivo).
Nota: El resultado es asignado a la variable v ,por lo tanto pierde su antiguo valor y es actualizada con el resultado de la expresión. Con esto se ahorra el uso de variables,ya que no fue necesario usar una nueva variable para almacenar el resultado.
Benllisoft
Curso de Programación Estructurada
5. Dado un valor indicar si es positivo, negativo o igual a 0.
Benllisoft
Curso de Programación Estructurada
6. Operadores lógicos: Con los operadores lógicos se pueden crear condiciones
compuestas. Y: La expresión compuesta es verdadera si y sólo si todas las condiciones que la
componen son verdaderas. 6.1. Verificar que un precio dado por el usuario esté entre 0 y 100.
Benllisoft
Curso de Programación Estructurada
6.2 Verificar que un Nombre de usuario y clave sean correctos (Asumir Nombre= ‘P’ y clave=1).
Nota: Para trabajar los valores no numéricos es necesario el uso de ‘’, con esto se indica que se desea comparar el contenido de la variable con la letra P, puesto que, en caso de no usarlos se puede pensar que se está haciendo una comparación con una variable P la cual no ha sido usada durante el proceso.
Benllisoft
Curso de Programación Estructurada
O: La expresión compuesta es verdadera si al menos una condición es verdadera. 6.3 Dada una letra indicar si es una vocal o una consonante.
Benllisoft
Curso de Programación Estructurada
NO: Cambia el valor de la expresión de verdadero a falso y viceversa
Benllisoft
Curso de Programación Estructurada
Ejercicios
Usando el editor de diagramas de pseint para elaborar y ejecutar los diagramas de flujo correspondiente a los siguientes procesos:
1. Defina un proceso llamado Primer programa que muestre el mensaje ‘Curso de Programación’.
2. Indicarle al usuario que ingrese un valor numérico, luego hacer la lectura del valor. 3. Indicarle al usuario que ingrese su nombre y número de cedula, recibir los datos y mostrarlos. 4. Indicarle al usuario que ingrese dos valores, leerlos, sumarlos y mostrar el resultado. 5. Recibir dos valores, calcular la multiplicación y mostrar el resultado. 6. Recibir un número, triplicarlo y mostrar el resultado. 7. Calcular el promedio de 3 notas dadas por el usuario. 8. Recibir el nombre y año de nacimiento de una persona, Mostrar el nombre de la persona e indicar qué edad tiene. 9. Indicarle al usuario que ingrese un valor entre 1 y 10, usando la estructura condicional muestre un mensaje indicando si el valor pertenece al rango o está fuera del rango. 10. Indicarle al usuario que ingrese un valor positivo, usando la estructura condicional validar la condición y mostrar un mensaje indicando correcto o incorrecto. 11. Dado un precio calcular el IVA y luego mostrar el resultado. Validar el precio, si el precio es correcto realizar el cálculo, en caso contrario muestre un mensaje de error. 12. Dado un valor indicar si es menor a 100, mayor a 100 o igual a 100. 13. Registrar a un usuario indicando que ingrese su nombre y su edad (Validar que la edad este en el rango de 0 a 100). Mostrar un mensaje de error o un mensaje que indique que el usuario se ha registrado. 14. Determinar si un alumno aprueba o reprueba un curso, sabiendo que aprobara si el promedio de tres calificaciones es mayor o igual a 30. Mostrar un mensaje indicando Aprobado o Reprobado Validar las 3 notas antes de realizar los cálculos, muestre un mensaje de error en caso de que alguna nota no sea correcta.
Benllisoft
Curso de Programación Estructurada
15. Un obrero necesita calcular su salario semanal, el cual se obtiene de la sig. manera: ● Si trabaja 40 horas o menos se le paga $16 por hora. ● Si trabaja más de 40 horas se le paga $16 por cada una de las primeras 40 horas
y $20 por cada hora extra. Validar los datos de entrada.
Benllisoft
Curso de Programación Estructurada
Pseudocódigo
Es una descripción de alto nivel, compacta e informal de un algoritmo, siendo un intermedio entre el lenguaje natural y los lenguajes de programación. Utiliza las convenciones estructurales de un lenguaje de programación real, pero está diseñado para la lectura humana en lugar de la lectura mediante máquina, y con independencia de cualquier otro lenguaje de programación. Estructura general de un proceso/algoritmo en pseudocódigo Proceso/Algoritmo
Declaración de variables Asignación de valores iniciales (opcional) Lectura de datos Procesamiento de los datos Salidas/Resultados FinProceso/Algoritmo Nota: Un proceso/algoritmo está constituido por un número N de instrucciones, en pseudocódigo cada instrucción está separada por ; Variables
En programación, una variable está formada por un espacio en el sistema de almacenaje (memoria principal de un ordenador) y un nombre simbólico (un identificador) que está asociado a dicho espacio. En ese espacio se puede almacenar información. El uso de variables es imprescindible para el desarrollo de un algoritmo,los datos de entrada,constantes y resultado estarán almacenados en estos espacios de memoria. Para hacer uso de una variable es necesario que esté definida previamente, mediante la instrucción de Declaración o Definición. Durante la definición se debe indicar qué tipo de dato será almacenado en la variable, pudiendo ser de tipo numérico, caracter o lógico. Por simplificación en los ejercicios anteriores se omite la declaración de variables, para hacer énfasis sólo en su uso. En adelante es necesario declarar la variable antes de usarla.
Benllisoft
Curso de Programación Estructurada
Tipos de datos
En la instrucción de declaración es necesario indicar cual es tipo de dato que podrá ser almacenado en la variable, pudiendo ser de tipo Numérico: Enteros y Reales, Caracteres o Lógicos.
Tipo
Descripción
Entero
Corresponde al conjunto de los números enteros.
Real
Corresponde al conjunto de los números reales.
Caracter (Cadena de Caracteres)
Representa una o más letras,dígitos o símbolos.
Lógico
Dispone solo de dos posibles valores: Verdadero o Falso.
Benllisoft
Curso de Programación Estructurada
Operadores en pseudocódigo
Símbolo
Descripción
Operadores Aritméticos
+
Suma
-
Resta
*
Multiplicación
/
División
%,Mod
Resto de la división entera
Operadores Relacionales
<
Menor
>
Mayor
<=
Menor igual
>=
Mayor igual
==
Igual
<> , !=
Distinto
Operadores lógicos
AND (Y,&&)
Conjunción
OR (O,||)
Disyunción
NOT (NO,!)
Negación
Operador de asignación
=,<-
Asignación un valor a una variable
Benllisoft
Curso de Programación Estructurada
Prioridad de operadores
Los operadores tienen unas prioridades preestablecidas, es decir, que si en una expresión hay que resolver varias operaciones, cada parte se evaluará y resolverá en un cierto orden. Si es necesario alterar ese orden, se puede recurrir a escribir las distintas partes de la expresión entre paréntesis, lo que provoca que se ejecuten antes que las partes que no estén entre paréntesis. No obstante, las operaciones escritas dentro de los paréntesis continuarán ejecutándose en el orden de prioridad de los distintos operadores. Mayor Prioridad
Operador
Descripción
()
Paréntesis
**,^
Potencia
*,/
Multiplicación y división
+,-
Suma y resta
div,%
División entera (cociente y resto)
<,<=,>,>=,==,<>
Relacionales
NOT
Negación
AND
Conjunción
OR
Disyunción
Menor Prioridad
Benllisoft
Curso de Programación Estructurada
Comentarios
Se pueden incluir comentarios en un algoritmo con objeto de aclarar su contenido, es muy importante comentar las líneas de códigos para facilitar su compresión. Se emplean los caracteres // para indicar que esa línea es un comentario ó la pareja de símbolos /* y */ para delimitar un comentario que abarca varias líneas.
Benllisoft
Curso de Programación Estructurada
Declaración de variables Sintaxis: Definir como ; Ejemplos: Definir x como Entero; Definir precio como Real; Definir Letra como Caracter ; Definir V como Lógico; Representación en diagrama de flujo de Definiciones:
representa una actividad llevada a cabo en el proceso (declaraciones ,asignación ,operaciones). Actividad:
Ejemplo Pseudocódigo: Proceso Programa Definir x como Entero; Fin Proceso Diagrama:
Benllisoft
Curso de Programación Estructurada
Asignación de valores a variables
Es posible asignar valores a las variables mediante los operados = o <- . Sintaxis: = ; <- ; Ejemplos
x=20; Letra='a'; //Se emplean las comillas para indicar el uso de caracteres Letra="caracas"; //Se emplean las comillas dobles para indicar el uso de cadenas V=Verdadero; Representación en diagrama de flujo de Asignaciones:
representa una actividad llevada a cabo en el proceso (declaraciones ,asignación ,operaciones). Actividad:
Ejemplo: Pseudocódigo: Proceso Asignación Definir x como Entero;
x=1; FinProceso Diagrama:
Benllisoft
Curso de Programación Estructurada
Ejercicios guiados 1. Definir un algoritmo en donde se declare una variable de tipo Entero y se le asigne un
valor. Algoritmo Ejemplo Definir x como Entero;
x=20; FinAlgoritmo 2. Definir una variable del tipo caracter y asignarle un valor. Algoritmo Programa Definir Letra como caracter ;
Letra='w'; FinAlgoritmo 3. Definir un algoritmo y declarar dos variables a,b como Enteros, asignarle un valor a a, duplicarlo y almacenar el resultado en b. Proceso Ejemplo4 Definir a,b como Entero;
a=20; b=a*2; FinProceso 4. Definir una variable y asignarle un valor,luego duplicar su valor (no hacer uso de una
variable extra). Algoritmo Duplicar Definir x como Entero;
x=20; x=x*2; FinAlgoritmo
Benllisoft
Curso de Programación Estructurada
5. Declarar dos variable,asignarles valores y luego calcular la suma almacenando el
resultado en una tercera variable. Algoritmo suma Definir valor1 como Entero; Definir valor2 como Entero; Definir respuesta como Entero;
valor1=10; valor2=50; Respuesta=valor1+valor2; FinAlgoritmo 6. Ejemplos de asignaciones con operaciones Proceso Programa Definir x como Real; Definir y como Real;
x=1; y=x+1; y=y*10; z=y/2-5*x+2;
// y=2 // y=20 // z=7
FinProceso 7. Definir 3 variables n1,n2 y n3 con los valores 10,15 y 7 respectivamente, luego calcular
el promedio de estos tres valores. Algoritmo Promedio Definir n1 como Real; Definir n2 como Real; Definir n3 como Real; Definir suma como Real; Definir promedio como Real;
n1=10; n2=15; n3=7; suma=n1+n2+n3; promedio=suma/3; FinAlgoritmo
Benllisoft
Curso de Programación Estructurada
8. Definir 3 variables n1,n2 y n3 con los valores 10,15 y 7 respectivamente, luego calcular
el promedio de estos tres valores (sin usar variables extras). Proceso Promedio Definir n1 como Real; Definir n2 como Real; Definir n3 como Real;
n1=10; n2=15; n3=7; n1=n1+n2+n3; n1=n1/3; //El valor de n1 es actualizado con el resultado de la operación. FinProceso
Benllisoft
Curso de Programación Estructurada
9. Definir 3 variables n1,n2 y n3 con los valores 10,15 y 7 respectivamente, luego calcular
el promedio de estos tres valores (sin usar variables extras y con menos instrucciones). Pseudocódigo: Algoritmo Promedio Definir n1,n2,n3 como Real; //Se declaran n1,n2 y n3 como Enteros
n1=10; n2=15; n3=7; n1=(n1+n2+n3)/3; FinAlgoritmo
Benllisoft
Curso de Programación Estructurada
Operación de escritura y lectura (entrada/salida) Operación de escritura (salida)
Muestra mensajes y datos almacenados en variables. Sintaxis: Escribir ; Representación en diagramas de flujo:
representa entrada o salida de datos. Entrada/Salida:
cualquier
Ejemplos 1. Programa que muestra la cadena “Curso de Programación”. Algoritmo Salida Escribir "Curso de Programación"; FinAlgoritmo Diagrama de flujo:
Ejecución: *** Ejecución Iniciada. ***
Curso de Programación *** Ejecución Finalizada. ***
Benllisoft
Curso de Programación Estructurada
2. Definir una variable como real, asignarle un valor y luego mostrar el valor por pantalla. Pseudocódigo: Proceso Salida Definir Precio como real;
Precio<-100; Escribir Precio; FinProceso Diagrama de flujo:
Ejecución: *** Ejecución Iniciada. ***
100 *** Ejecución Finalizada. ***
Benllisoft
Curso de Programación Estructurada
3. Mostrar por pantalla x*2 donde x es un a variable del tipo entero con algún valor
asignado. Pseudocódigo: Proceso salida3 Definir x Como Entero;
x<-1 Escribir x*2 FinProceso Diagrama:
Ejecución: *** Ejecución Iniciada. ***
2 *** Ejecución Finalizada. ***
Benllisoft
Curso de Programación Estructurada
Operación de lectura (entrada)
Permite leer datos y asignarlos a variables. Esta operación realiza una pausa en la ejecución del programa hasta que el usuario ingresa el dato a almacenar. Sintaxis: Leer ; Representación en diagramas de flujo:
representa entrada o salida de datos. Entrada/Salida:
cualquier
Ejemplos 1.Recibir un número entero dado por el usuario Pseudocódigo: Proceso lectura Definir num Como Entero; Escribir “Ingrese un valor”; //Mensaje al usuario indicando que ingrese un valor // El valor ingresado por el usuario es asignado a la variable Leer num; FinProceso Diagrama:
Benllisoft
Curso de Programación Estructurada
Ejercicios guiados 1. Indicarle al usuario que ingrese dos valores numéricos, luego hacer lecturas de estos
valores. Proceso Datos Definir v1,V2 como Real; //Declaración de variables Escribir “Ingrese dos valores”; //Mensaje al usuario Leer v1; //El primer valor ingresado es asignado a v1 Leer v2; // El segundo valor asignado es asignado a v2 Finproceso 2. Leer el nombre y edad de una persona. Proceso Datos2 Definir edad como Entero; Definir nom como caracter ; Escribir “Ingrese su edad”; Leer edad; Escribir “Ingrese su nombre” ; Leer nom; Finproceso 3. Recibir el precio de un producto en una variable P , duplicarlo y asignar el resultado en una variable P2, por último mostrar el valor de P2. Proceso Duplicar Definir P,P2 Como Real; Escribir “Ingrese un precio”; Leer P;
P2=P*2; Escribir P2; FinProceso 4. Dados 2 números mostrar la suma. Proceso Suma Definir a,b,c Como Real ; Escribir “Ingrese dos valores a sumar valor” ; Leer a; Leer b;
c=a+b; Escribir "El resultado es : " c; FinProceso
Benllisoft
Curso de Programación Estructurada
Ejercicios
Desarrolle en pseudocódigo usando pseint los siguientes programas: 1. Defina un proceso llamado Primer programa que muestre el mensaje ‘Curso de Programación’.
2. Indicarle al usuario que ingrese su nombre y número de cedula, recibir los datos y mostrarlos. 3. Definir 1 variable y asignarle el valor constante 10 , indicarle al usuario que ingrese un valor , luego sumarle el valor constante y mostrar el resultado. 4. Recibir dos valores, calcular la multiplicación y mostrar el resultado. 5. Recibir un número, triplicarlo y mostrar el resultado. 6. Recibir 5 notas,luego mostrar el promedio. 7. Recibir el nombre de una persona y su año de nacimiento, indicar que edad tiene la persona. 8. Recibir 3 precios: Calcular la suma de los montos Calcular el IVA Mostrar la suma de los montos sin IVA y el monto neto.
Benllisoft
Curso de Programación Estructurada
Estructuras condicionales
En programación, las estructuras condicionales también llamadas estructuras de control permiten modificar el flujo de ejecución de las instrucciones de un programa. Con las estructuras condicionales se puede: ● De acuerdo a una condición, ejecutar un grupo u otro de sentencias (SIEntonces-Sino ) ● De acuerdo al valor de una variable, ejecutar un grupo u otro de sentencias (Select-Case) Operadores relacionales
Los operadores relacionales son símbolos que se usan para comparar dos valores. Si el resultado de la comparación es correcto la expresión considerada es verdadera, en caso contrario es falsa. Con el uso de los operadores relacionales podemos establecer las condiciones también llamadas expresiones lógicas que dependiendo del valor que tome determinarán el flujo de ejecución de las instrucciones. Operadores Relacionales
<
Menor
>
Mayor
<=
Menor igual
>=
Mayor igual
==
Igual
<> , !=
Distinto
Benllisoft
Curso de Programación Estructurada
Operadores lógicos
Con el uso de los operadores lógicos podemos construir expresiones lógicas compuestas. Operadores lógicos
AND (Y,&&)
Conjunción
OR (O,||)
Disyunción
NOT (NO,!)
Negación
Benllisoft
Curso de Programación Estructurada
Condicional Condicional simple
Al ejecutarse esta instrucción, se evalúa la condición y se ejecutan las instrucciones que le siguen al entonces en caso de que la condición sea verdader a, en caso de que la condición sea falsa no se ejecuta ninguna instrucción y la ejecución del programa continúa con la siguiente instrucción. La condición debe ser una expresión lógica (simple o compuesta) que al ser evaluada retorna Verdadero ó Falso. Sintaxis: Si entonces finsi Representación en diagrama de flujo Decisión: indica un punto en el cual se
produce un bifurcación.
Benllisoft
Curso de Programación Estructurada
Ejercicios guiados 1.Dado un valor indicar si es Mayor a 0. Pseudocódigo Proceso Condicional Definir x como real; Escribir "Ingrese un valor"; Leer x; Si x>0 Entonces Escribir "Mayor a 0"; FinSi Fin Proceso Diagrama:
Benllisoft
Curso de Programación Estructurada
2. Un sistema informático tiene una clave de acceso. Recibir una clave dada por el
usuario y verificar que sea la que posee el sistema. (Asumir que la clave es 1234) Pseudocódigo Proceso Clave Definir c como Entero; Escribir "Ingrese clave"; Leer c; Si c==1234 Entonces Escribir "clave correcta"; FinSi FinProceso Diagrama:
Benllisoft
Curso de Programación Estructurada
Condicional compuesto
Al ejecutarse esta instrucción, se evalúa la condición y se ejecutan las instrucciones que correspondan. Se ejecuta el bloque de instrucciones que le sigue al entonces si la condición es verdadera o las instrucciones que le siguen al sino si la condición es falsa. La condición debe ser una expresión lógica (simple o compuesta) que al ser evaluada retorna verdadero ó falso. Sintaxis: Si entonces sino finsi Representación en diagrama de flujo:
Decisión: indica un punto en el cual se
produce un bifurcación.
Benllisoft
Curso de Programación Estructurada
Ejercicios guiados 1. Dado un valor indicar si es Positivo ó Negativo. Pseudocódigo: Proceso Condicional Definir x como real; // Declaración de la variable Escribir "Ingrese un valor"; //Mensaje al usuario Leer x; // Lectura del valor
//Condición Si x>=0 Entonces Escribir “Positivo” ; //Bloque de instrucciones 1 , caso Verdadero sino Escribir “Negativo”; //Bloque de instrucciones 2 , caso Falso FinSi Fin Proceso Diagrama:
Benllisoft
Curso de Programación Estructurada
2. Un sistema informático tiene una clave de acceso. Recibir una clave dada por el
usuario y verificar que sea la que posee el sistema. Indicar si la clave es correcta ó no. (Asumir que la clave es 1234) Pseudocódigo: Proceso Clave Definir c como Entero; Escribir "Ingrese clave"; Leer c; Si c==1234 Entonces Escribir "clave correcta"; Sino Escribir "clave incorrecta"; FinSi FinProceso Diagrama:
3. Dado un valor indicar si es positivo, negativo ó igual a 0.
Benllisoft
Curso de Programación Estructurada
Pseudocódigo: Proceso PROGRAMA Definir numero como real; Escribir “Ingrese un valor” ; Leer num; si num==0 entonces Escribir “igual a 0”; sino si num<0 entonces Escribir “Menor a 0”; sino Escribir “Mayor a 0” ; finsi finsi Fin proceso Diagrama:
Benllisoft
Curso de Programación Estructurada
4. Recibir un precio y calcular el IVA, verificar que el precio sea correcto antes de realizar
la operación, en caso contrario indicar error. Proceso Factura Definir precio como Real; Escribir “Ingrese el precio”; Leer precio; si precio >=0 entonces
precio =precio*1.12; Escribir “El monto neto es:”; Escribir precio; sino Escribir “Error: monto incorrecto”; finsi Fin proceso 5. Determinar si un alumno aprueba o reprueba un curso, sabiendo que aprobara si su
promedio de tres calificaciones es mayor o igual a 30. Proceso promedio Definir n1,n2,n3,suma,prom como real; Escribir “Ingrese las 3 notas” ; Leer n1,n2,n3;
suma=n1+n2+n3; prom=suma/3; si prom>=30 entonces Escribir “Aprobado”; sino Escribir “Reprobado”;
finsi Fin proceso
Benllisoft
Curso de Programación Estructurada
6. Ejemplos: Expresiones lógicas compuestas en los condicionales. Y: La expresión compuesta es verdadera si y sólo si todas las condiciones que la
componen son verdaderas. 6.1 Recibir un valor y validar que sea positivo y menor a 100. Proceso Rango Definir num como Real; Escribir “Ingrese el valor”; Leer num; si num>=0 y num<100 entonces Escribir “Pertenece al rango”; sino Escribir “Valor fuera del rango”; finsi fin proceso 6.2. Recibir un usuario y una clave de ingreso. Verificar los valores y dar un mensaje de ingreso o de error (Asumir usuario=“Programacion”,clave= “PE2016”) Algoritmo clave Definir usuario como caracter ; Definir clave como caracter ; Escribir “Ingrese usuario”; Leer usuario; Escribir “Ingrese clave”; Leer clave; si usuario==“Programacion” y clave== “PE2016” entonces Escribir “Bienvenido”; sino Escribir “Error: usuario o clave inválida” ; finsi Fin algoritmo
Benllisoft
Curso de Programación Estructurada
O: La expresión compuesta es verdadera si al menos una condición es verdadera.
6.3 Dada una letra indicar si es una vocal o una consonante. Proceso vocal Definir letra como caracter ; Escribir “Ingrese una letra”; Leer letra; si letra==‘a’ o letra==‘e’ o letra==‘i’ o letra==‘u’ entonces Escribir “vocal”; sino Escribir “consonante”; finsi 7. Un valor es aceptado si es positivo y menor a 500 o si es mayor a 700 Proceso programa Definir dato como Real ; Escribir “ingrese el valor”; Leer dato; si (dato>0 y dato<500) o dato>700 entonces Escribir “correcto”; sino Escribir “Incorrecto”; finsi Fin proceso
Benllisoft
Curso de Programación Estructurada
Selección (switch,según)
Esta instrucción permite ejecutar opcionalmente varias acciones posibles,dependiendo del valor almacenado en la variable. Al ejecutarse se evalúa el contenido de la variable y se ejecuta la secuencia de instrucciones asociada con dicho valor. Opcionalmente se puede agregar una opción final denominada de otro modo (default) cuya secuencia de instrucciones asociadas se ejecutará solo si el valor de la variable no coincide con ninguna de las opciones anteriores. Sintaxis: Segun Hacer opción 1: opción 2: . . . opción N: De Otro Modo: Fin Segun
Benllisoft
Curso de Programación Estructurada
Ejercicios guiados 1. Dada una letra indicar si es una vocal o consonante. Si es vocal indicar cuál fue la
vocal ingresada. Pseudocódigo:
Proceso Seleccion Definir letra como caracter ; Escribir "Ingrese una vocal" ; Leer letra; Segun letra Hacer 'a': Escribir "vocal a"; 'e': Escribir "vocal e"; 'i': Escribir "vocal i"; 'o': Escribir "vocal o"; 'u': Escribir "vocal u"; De Otro Modo: Escribir "Consonante"; FinSegun FinProceso Diagrama:
Benllisoft
Curso de Programación Estructurada
Ejercicios
1. Dado un número indicar si es mayor a 100. 2. Registrar a un usuario indicando que ingrese su nombre y su edad (Validar que la edad este en el rango de 18 a 100). Mostrar un mensaje de error o un mensaje que indique que el usuario se ha registrado. 3. Determinar si un alumno aprueba o reprueba un curso, sabiendo que aprobara si el promedio de tres calificaciones es mayor o igual a 30. Validar las 3 notas que debe ingresar el usuario. 4. Un obrero necesita calcular su salario semanal, el cual se obtiene de la sig. manera: ● Si trabaja 40 horas o menos se le paga $16 por hora. ● Si trabaja más de 40 horas se le paga $16 por cada una de las primeras 40 horas
y $20 por cada hora extra. Validar los datos de entrada. 5. Muestre un menú al usuario con opciones de suma,resta, multiplicacion y division. Reciba la opción y los datos requeridos para la operación, luego indique cual es el resultado. 6. Ingresar una calificación (1 – 20) y visualizar la siguiente equivalencia: 19 y 20 Sobresaliente 16, 17 y 18 Muy Buena 14 y 15 Buena 12 y 13 Regular 01 al 11 Insuficiente 7. Dado un valor entero indicar si es par o impar. 8. Dado un número del 1 al 5 indicar si es primo o no (Validar el rango). 9. Ingresar una cantidad de 3 dígitos y visualizar en forma inversa. Validar que la cantidad sea de 3 dígitos antes de realizar cualquier operación. 10. Dados 3 números indicar cual es el menor de ellos. 11. Recibe un numero del 1 al 7 y mostrar con cuál dia de la semana corresponde. 12. Un programa que solo permite introducir los caracteres S y N.
Benllisoft
Curso de Programación Estructurada
Estructuras cíclicas
En programación, las estructuras cíclicas también llamadas estructuras de control permiten modificar el flujo de ejecución de las instruccio nes de un programa. Con las estructuras cíclicas se puede: ● Ejecutar un grupo de instrucciones mientras se cumpla una condición
(Mientras,While) ● Ejecutar un grupo de sentencias hasta que se cumpla una condición (DoUntil,Repetir-hasta) ● Ejecutar un grupo de sentencias un número determinado de veces (For,Para) Contadores
Es una variable que incrementa o decrementa su contenido en un valor constante cada vez que se ejecute el proceso. Es importante inicializar los contadores. El valor con que se inicie el contador dependerá del problema a resolver. Acumuladores
Es una variable que incrementa o decrementa su contenido en cantidades variables. Se utiliza para almacenar el resultado de operaciones realizadas repetitivamente, como sumas,multiplicaciones etc. Es importante inicializar los acumuladores. El valor con que se inicie el acumulador dependerá del problema a resolver. Fundamentos de las estructuras cíclicas ● Definir un valor inicial ● Establecer la Condición ● Establecer el incremento,decremento o cualquier cambio en las variables que se
evalúan en la condición.
Benllisoft
Curso de Programación Estructurada
Ciclo mientras
La instrucción mientras ejecuta una secuencia de instrucciones mientras una condición sea verdadera. Al ejecutarse este ciclo, la condición es evaluada. Si la condición resulta verdadera, se ejecuta una vez la secuencia de instrucciones. Al finalizar la ejecución del cuerpo del ciclo se vuelve a evaluar la condición y ,si es verdadera la ejecución se repite, en caso contrario termina la ejecución del ciclo. Sintaxis: Mientras Hacer Fin Mientras Diagrama de flujo:
Benllisoft
Curso de Programación Estructurada
Ejercicios guiados 1. Repetición controlada por un contador. Pasos:
1. Declarar el contador y darle un valor inicial 2. Establecer la condicion 3. Establecer el incremento,decremento 1.1 Mostrar por pantalla el mensaje HOLA 5 veces Pseudocódigo Proceso Repetición Definir x como entero;
x=1;
// Valor inicial Mientras x<=5 hacer //Condición Escribir “HOLA”; x=x+1, //Incremento Fin mientras Diagrama:
Benllisoft
Curso de Programación Estructurada
1.2 Mostrar por pantalla los números del 1 al 100 Pseudocódigo Proceso Repetición Definir cont como entero;
cont=1; //Valor inicial Mientras cont<=100 hacer //Condición Escribir cont; cont=cont+1; //Incremento Fin mientras Fin proceso Diagrama:
Benllisoft
Curso de Programación Estructurada
2. Repetición controlada por el usuario
Programa que realiza una sumatoria de n valores dado por el usuario, 0 indica el fin de la secuencia de ingreso. Proceso Sumatoria Definir acum como Real; Definir x como Real; Escribir “Ingrese el valor a sumar o 0 para culmina r”; Leer x; //Valor inicial
acum=x; Mientras x<>0 hacer //Condición Escribir “Ingrese el valor a sumar o 0 para culminar” ; Leer x; // Cambio de variable evaluada en la condición
acum=acum+x; fin Mientras Escribir “El resultado de la sumatoria es” acum; Finproceso
Benllisoft
Curso de Programación Estructurada
3. Repetición controlada por el valor que toma un acumulador o por el usuario.
Programa que realiza una sumatoria de n valores dado por el usuario, termina cuando la sumatoria tome al valor máximo de 50 o cuando el usuario ingrese 0 para indicar el fin de la secuencia (Mostrar un mensaje si se llega al valor máximo). Proceso Ciclo_Mientras Definir acum como real; Definir x como real; Escribir “Ingrese un valor o 0 para terminar” ; Leer x;
acum=x; Mientras acum<=50 y x<>0 hacer Escribir “Ingrese un valor o 0 para terminar” ; Leer x;
acum=acum+x; // Acumulador si (acum==50) entonces Escribir “Valor máximo alcanzado”; fin si Fin mientras Escribir “Sumatoria :” acum; Fin proceso 4. Programa que muestra la tabla de multiplicar de un numero dado por el usuario. Proceso Tabla Definir num,resp,x como entero; Escribir “Cual tabla desea ver?”; Leer num;
x=1; Mientras x<=10 hacer
resp=num*x; Escribir resp; Fin mientras Fin proceso
Benllisoft
Curso de Programación Estructurada
Ciclo repetir-hasta
Ejecuta una secuencia de instrucciones hasta que la condición sea verdadera. La secuencia de instrucciones que forman el cuerpo se ejecutan una vez y luego se evalúa la condición. Si la condición es falsa,el cuerpo del ciclo se ejecuta nuevamente y se vuelve a evaluar la condición. Esto se repite hasta que la condición sea verdadera. Dado que la condición se evalúa al final del cuerpo, el ciclo se ejecuta al menos una vez. Sintaxis: Repetir Hasta que ; Diagrama:
Benllisoft
Curso de Programación Estructurada
Ejercicios guiados 1. Desarrolle un algoritmo que: ● ● ●
Le indique al usuario que ingrese un valor. Repita la instrucción anterior hasta que el valor sea positivo. Guarde el valor en una variable.
Pseudocódigo Proceso Programa Definir P como Real; Repetir Escribir “Ingrese un valor” ; Leer P; Hasta P>=0; Fin Proceso Diagrama
Benllisoft
Curso de Programación Estructurada
2. Programa que utiliza el ciclo Repetir para validar que el ingreso de un valor esté en un
rango específico. Pseudocódigo Proceso Programa2 Definir v como Real; Repetir Escribir “Ingrese un valor mayor a 0 y menor a 30”; Leer v; Hasta que v>0 y v<=30; Fin proceso Diagrama:
Benllisoft
Curso de Programación Estructurada
Ciclo para
Ejecuta un conjunto de instrucciones un número determinado de veces. Maneja todos los detalles de una repetición controlada por un contador. Sintaxis Para = Hasta Con Paso Hacer Fin Para
Al comienzo del ciclo la variable recibe (se le asigna) el valor inicial, luego la condición es evaluada, si resulta que el valor de la variable supera el valor final se termina la ejecución del ciclo, en caso contrario se ejecuta el conjunto de instrucciones, luego se incrementa la variable en paso y se evalúa de nuevo la condicion. Esto se repite hasta que el valor final sea superado. Diagrama:
Benllisoft
Curso de Programación Estructurada
Ejercicios guiados 1. Mostrar la tabla de multiplicar de un valor dado por el usuario. Pseudocódigo Proceso tabla Definir i,n como Entero; Escribir “Ingrese el numero de la tabla” ; Leer n; Para i=1 hasta 10 Con Paso 1 hacer Escribir n*i; fin para Fin proceso Diagrama:
Benllisoft
Curso de Programación Estructurada
Ciclos infinitos y cómo evitarlos
Es necesario seguir los fundamentos de las estructuras cíclicas: ● Definir una variable de control ● Establecer una condicion ● Definir un incremento decremento o cambio sobre la variable. Ejemplo de ciclos infinitos: 1. No establecer el incremento en alguna variable contadora. Proceso Error_ciclo Definir x como entero; Mientas x<=50 hacer Escribir x; Fin Mientras Fin Proceso 2. Alterar el valor de la variable contadora del ciclo Algoritmo tabla_Error Definir i,n Como Entero; Escribir “Ingrese el numero de la tabla” ; Leer n; Para i<-1 Hasta 10 Con paso 1 Hacer Escribir n*i;
i=i-1; FinPara FinAlgoritmo
Benllisoft
Curso de Programación Estructurada
Ejercicios
1. Realizar un algoritmo que muestre los números de uno en uno hasta el diez usando cualquier estructura cíclica. Exprese el algoritmo usando Pseudocódigo y diagramas de flujos. 2. Mostrar sólo los números pares entre 0 y 20. 3. Dado un numero N, mostrar todos los números entre el rango de 1 a N. 4. Duplicar un numero positivo dado por el usuario, en caso de no ser positivo mostrar un mensaje de error y repetir la la instrucción de lectura. 5. Muestre un menú al usuario con opciones de suma, resta, multiplicación, división y una opción de salir. Reciba la opción y los datos requeridos para la operación, luego indique cual es el resultado. Mientras no se indique la opción de salir el programa debe mostrar de nuevo el menú. 6. Calcular el promedio de un alumno que tiene 7 calificaciones. Las calificaciones serán ingresadas, utilice el concepto de acumulador para hacer la sumatoria de las 7 calificaciones y luego muestre el promedio. 7. Realizar un programa que dado una Base y un exponente calcule la potencia. 8. En una empresa se requiere calcular el salario semanal de cada uno de los N obreros que laboran en ella. El salario se obtiene de la sig. forma: ● Si el obrero trabaja 40 horas o menos, se le paga $20 por hora ● Si trabaja más de 40 horas, se le paga $20 por cada una de las primeras 40 horas
y $25 por cada hora extra. El programa debe: ● Recibir el numero N que indica cuantos obreros posee la empresa ● El numero de horas y mostrar el salario por cada obrero.
Benllisoft
Curso de Programación Estructurada
Subprocesos/Subalgoritmos
La resolución de los problemas complejos se facilita considerablemente si se dividen en problemas más pequeños. Esto implica que el problema original será resuelto por medio de varios módulos, cada uno de los cuales se encarga de resolver un subproblema determinado. Estos módulos, se conocen con el nombre de subalgoritmos. Características ● Los subalgoritmos se escriben solo una vez. ● Es posible hacer referencia a ellos (”llamarlos”) desde diferentes
puntos del pseudocódigo. ● Los subalgoritmos son independientes entre sí. ● Un subalgoritmo puede ser invocado en cualquier momento y
cuantas veces sea necesaria. ● El ”llamado” a al subalgoritmo se considera una instrucción dentro del código. ● En el momento en que termine la ejecución de subproceso/subalgoritmo continua
el código en la subproceso o proceso que lo invoco. ● Los subalgoritmos pueden retornan o no un valor. ● El retorno es un solo valor de tipo simple al punto de llamada. Este retorno puede
hacerse dentro de una expresión como si fuera una variable ordinaria de tipo simple. ● Poseen una lista de argumentos mediante la cual pueden recibir valores.
Benllisoft
Curso de Programación Estructurada
SubProcesos/Subalgoritmos sin retorno (acciones, funciones del tipo void)
Declaración de un subproceso Sintaxis SubProceso/Subalgoritmo (argumentos) FinSubProceso/Subalgoritmo Invocar un proceso
Para invocar un subproceso se debe utilizar su nombre y entre paréntesis los parámetros.
Ejercicios guiados 1. Declarar e invocar un subproceso llamado Suma que muestre la suma de dos valores
dados por el usuario. Subproceso Suma Definir a,b como Reales; Escribir “ingrese dos valores a sumar” ; Leer a,b;
a=a+b; Escribir a; fin subproceso; Proceso principal
Suma(); // Llamado al proceso Suma. fin proceso
Benllisoft
Curso de Programación Estructurada
2. Declara e invocar un subproceso llamado Muestra_Tabla, el cual le indica al usuario
que ingrese un número entero y muestra la tabla de multiplicar de ese numero. Subproceso Muestra_Tabla Definir x,i como Entero;
i=1; Escribir “Ingrese un valor ”; Leer x; Mientras i<=10 hacer Escribir x “*” i “=” x*i;
i=i+1; Fin mientras Fin subproceso Proceso Principal
Muestra_Tabla(); Fin proceso
Benllisoft
Curso de Programación Estructurada
3. Declarar un subproceso A, el cual recibe un valor dado por el usuario, si el valor es par invoca a un subproceso B el cual calcula la suma de dos números, en caso contrario invoca a un subproceso C el cual calcula la resta de dos números. Subproceso C Definir a,b como Reales; Escribir “Ingrese dos valores a restar” ; Leer a; Leer b;
a=a-b; Escribir a; fin subproceso Subproceso B Definir a,b como Reales; Escribir “Ingrese dos valores a suma” ; Leer a; Leer b;
a=a+b; Escribir a; fin subproceso Subproceso A Definir x como Reales; Escribir “Ingrese un numero par para sumar o impar para restar” ; Leer x; Si x%2==0 entonces
B(); sino
C(); finsi fin subproceso Proceso principal
A(); Finproceso
Benllisoft
Curso de Programación Estructurada
SubProcesos con retorno( Funciones) Declarar una subproceso SubProceso/Funcion variable_de_retorno<- Identificador (argumentos) FinSubProceso/Funcion Retorno
Las funciones poseen una variable de retorno, en el momento en que se le asigna un valor a esta variable, la función retorna el valor asignado y termina su ejecución. Invocar un subproceso
Usando el identificador dentro de alguna expresión podemos invocar una función, es decir que el valor de retorno es asignado a una variable.
Benllisoft
Curso de Programación Estructurada
Ejercicios guiados 1. Declara una funcion que recibe un valor dado por el usuario ,y retorna el valor
duplicado. Funcion respuesta <- Duplicar() Definir D,respuesta como Real; Escribir “Ingrese el valor a duplicar” ; Leer D;
respuesta=D*2; // En el momento en qué respuesta recibe un v alor se hace el retorno. Fin Funcion Proceso principal Definir x como Entero;
x=Duplicar(); // En x se almacena el resultado de la función Escribir “El valor duplicado es :” x; Fin proceso 2. Desarrolle un programa que retorne el promedio de 10 notas, utilice una función que
reciba las notas y retorne la suma de ellas. Luego muestre el promedio en el proceso principal. Subproceso suma<- Lectura() Definir i como entero; Definir suma como Real; Definir acum,x como Real;
acum=0; Para i=1 hasta 10 con paso 1 hacer Escribir “Ingrese la nota ” i; Leer x;
acum=acum+x; //acumulador Fin para
suma=acum; // Retorno Fin subproceso Proceso Principal Definir s como real;
s=Lectura()/10; // La función retorna la sumatoria. Escribir s; Fin proceso
Benllisoft
Curso de Programación Estructurada
3. Definir una función que lea dos valores y retorne el mayor de ellos. Subproceso r <- Mayor() Definir a,b ,r como entero; Si a>b entonces
r=a; sino
r=b; finsi Fin subproceso Proceso Principal Escribir Mayor(); //Mayor retorna el valor, la función Escribir los muestra. Fin proceso
Benllisoft
Curso de Programación Estructurada
Parámetros
En la lista de parámetros un subproceso/subalgoritmo recibe valores. Los valores recibidos por parámetros pueden ser usados dentro del bloque de instrucciones. Parámetros por valor
Cuando el control pasa al subproceso, los valores de los parámetros en la llamada se copian uno a uno en los a "objetos" locales de la función, estos "objetos" son de hecho los parámetros de la lista. Ejercicios guiados 1. Definir un subproceso llamado DUPLICAR que reciba un valor entero por parámetro y
lo retorna duplicado. Subproceso respuesta <- DUPLICAR (num) // Recibe el valor en num
respuesta=num*2; fin subproceso Proceso principal Definir respuesta,p como Real; Escribir “Ingrese un valor a duplicar”; Leer p;
respuesta=DUPLICAR(p); //Se le envía a duplicar el valor de p Escribir respuesta; fin proceso 2. Definir una función llamada SUMA que reciba dos valores enteros por parámetros y
retorne la suma de ellos. Funcion r <- SUMA (num1,num2)
r=num1+num2; fin subproceso Proceso principal Definir a,b,respuesta como Real; Escribir “ingrese dos valores a sumar”; Leer a,b; Escribir “El resultado de la suma es :” Suma(a,b); Fin proceso
Benllisoft
Curso de Programación Estructurada
3. Definir una funcion llamada potencia, recibe dos valores , base y exponente , luego
retorna la potencia. Subproceso resp <- Potencia (base,exp) Definir acumi,potencia como Entero;
acum=1; Para i=1 hasta exp con paso 1 hacer
acum=acum*base; Fin para
resp=acum; fin subproceso Proceso Principal Definir b como real; Definir e como entero; Escribir “Ingrese base y exponente”; Leer b; Leer e; Escribir “Respuesta” Potencia(b,e); Fin proceso 4. Definir un subproceso que recibe un precio por parámetro y muestra el precio más el
IVA. Subproceso IVA (num)
num=num*1.12; Escribir num; Fin proceso Proceso Programa Definir p como real; Escribir “Ingrese el monto”; Leer p;
IVA(p); Fin proceso
Benllisoft
Curso de Programación Estructurada
Parámetros por referencia
Si queremos que los cambios realizados en los parámetros dentro de la función se conserven al retornar de la llamada, deberemos pasarlos por referencia. Esto se hace declarando los parámetros de la función como referencias a objetos, estos objetos son las variables usadas en la lista de parámetros durante la llamada de la función. Si un parámetro hace referencia a un objeto, todos los cambios realizados sobre el también serán hechos sobre el objeto. Ejercicios guiados 1.Enviar un parametro por referencia: Subproceso DUPLICAR (num por referencia)
num=num*2; fin subproceso Proceso principal Definir a como entero;
a=2; Escribir “Valor antes del proceso ” a;
DUPLICAR(a); Escribir “Valor después del proceso ” a; fin proceso *** Ejecución Iniciada. *** Valor antes del proceso a 2 Valor después del proceso 4 *** Ejecución Finalizada. **
En este caso, la variable a tendrá un valor distinto después de llamar a la función. Cualquier cambio de valor que realicemos en los parámetros dentro de la función, se hará también en los objetos referenciados, en este caso la variable a.
Benllisoft
Curso de Programación Estructurada
2. Diseñe una función que reciba dos precios y retorne: ● La suma de los precios ● El monto de la suma más el I.V.A.
Ya que el retorno es único, se puede hacer uso de una variable pasada por referencia para guardar el dato de interés.
Subproceso resp <- Factura(precio1,precio2,suma por referencia)
suma=precio1+precio2; retornar suma*1.12; fin subproceso Proceso Principal Definir p1,p2,s,iva como Real; Escribir “Ingrese los dos precios”; Leer p1,p2; Si p1>=0 y p2>=0 entonces
iva=Factura(p1,p2,s); Sino Escribir “Precio no válido”; Fin si Escribir “Monto bruto: ” s; Escribir “Monto Neto: ” iva; Fin proceso
Benllisoft
Curso de Programación Estructurada
Variables Locales y globales
Las reglas de ámbito de un lenguaje son las reglas que controlan si un fragmento de código conoce o tiene acceso a otro fragmento de código o de datos. Locales
Una variable local es aquella cuyo ámbito se restringe a al subproceso que la ha declarado, se dice entonces que la variable es local a ese subproceso. Esto implica que esa variable solo va a poder ser manipulada en dicho módulo, y no se podrá hacer referencia fuera de dicha sección. Características ● Las variables locales sólo podrán ser manipuladas en el subproceso/proceso en
cual fueron declaradas. ● Los subprocesos son independientes entre sí, por lo tanto dos o más subprocesos y el proceso pueden tener variables locales con los mismos nombres. ● Los objetos declarados en la lista de parámetros tienen ámbito local Ejemplos Subproceso EXAMPLE Definir x como Real; Definir z como carácter ; Fin subproceso Proceso PROGRAMA Definir numero como Real;
EXAMPLE(); fin proceso
Las variables x,z son locales a EXAMPLE y numero es local a PROGRAMA..
Benllisoft
Curso de Programación Estructurada
Error al tratar de usar una variable local de otro subproceso. subproceso EXAMPLE Definir x como Real;
x=20; Fin subproceso Proceso PROGRAMA Example(); Escribir “El valor de la variable x de EXAMPLE es ” x; fin proceso
Este programa no arrojaría ningún valor ya que x no es una variable definida en PROGRAMA. Para solucionar este problema, es decir, que es de interés el resultado hecho en EXAMPLE, se debe hacer uso de un subproceso con retorno o de parámetros por referencia.
Benllisoft
Curso de Programación Estructurada
Globales
Son aquellas que se definen fuera del cuerpo de cualquier proceso o subproceso, normalmente al principio del programa. El ámbito de una variable global son todos los subprocesos y el proceso que componen el programa, cualquier subproceso y el proceso puede acceder a dichas variables para leer y escribir en ellas.
Benllisoft
Curso de Programación Estructurada
Ejercicios 1.Muestre un menú al usuario con opciones de suma, resta, multiplicación, división y una
opción de salir. Reciba la opción y los datos requeridos para la operación, luego indique cual es el resultado. Mientras no se indique la opción de salir el programa debe mostrar de nuevo el menú. Opción suma: Invocar a un subproceso que reciba dos valores dados por el usuario y
muestre la suma. Opción resta: Invocar una funcion que retorne la resta de dos números dados por el
usuario, luego mostrar el resultado de la resta después del retorno. Opción multiplicación : Invocar un subproceso que reciba por parámetros los valores a
multiplicar, realice la operación y muestre el resultado. Opcion división : Invocar un subproceso que reciba una variable por referencia, reciba
los números a dividir por el usuario y por último le asigne el resultado al parámetro. Mostrar el resultado en el proceso principal. 2. Definir una funcion que reciba un numero N muestre la suma de todos los numeros
que esten en el rango de 1 a N (Validar que N>=1). 3. Definir un subproceso que calcule el factorial de un numero N (Validar que N>=0). 4. Simular un cajero automático:
1) El usuario tiene 3 intentos para ingresar la contraseña correcta. 2) Si en el tercer intento la contraseña no es correcta se bloquea la cuenta. 3) Mostrar mensaje de contraseña incorrecta, correcta o bloqueada. considere el uso de una funcion la cual verifica que la contraseña sea correcta o no en cada intento. 5. Escribir un programa que utilizando funciones con parámetros, lea desde el teclado las
unidades y el precio de un producto que está en venta, y en función de las unidades introducidas le haga un descuento o no (cuando las unidades excedan media docena se aplicará 4% y el 10% cuando exceda la docena).
Benllisoft
Curso de Programación Estructurada
Tipos de datos Estructurados
A diferencia de los datos de tipo simple que sólo pueden almacenar un valor, los datos estructurados o estructuras de datos pueden recolectar varios valores simultáneamente. Existen dos tipos: ● ●
Arreglos Registros
Arreglos Arreglos de una dimensión
Un arreglo es un tipo de dato estructurado, que está formado de una colección finita y ordenada de datos del mismo tipo (Es una estructura homogénea).
Benllisoft
Curso de Programación Estructurada
Características:
1. Permite almacenar los elementos del arreglo en posiciones de memoria contınua, a cada posición se le asocia un índice. 2. Permite tener un único nombre de variable que representa a todos los elementos, y estos a su vez se diferencian por el índice. 3. Permite el acceso directo o aleatorio a los elementos individuales del arreglo mediante el índice. 4. Si se utilizan arreglos en base 0, al declarar un arreglo de, por ejemplo 15 elementos, los índices de elementos válidos van de 0 a 14; mientras que si se utilizan arreglos en base 1 los índices válidos van de 1 a 15. 5. Otro detalle muy importante es que cuando se declaran arreglos, los valores para el número de elementos deben ser siempre constantes enteras.
Benllisoft
Curso de Programación Estructurada
Declaración de un arreglo Psient:
La instrucción Dimensión permite declarar un arreglo, indicando sus dimensiones. Sintaxis Dimension [N];
Esta instrucción define un arreglo con el nombre indicado y N dimensiones C++: Sintaxis [N];
En se debe indicar cual es el tipo de dato de los elementos del arreglo y N indica la dimension. Ejemplos
1. Declarar un arreglo de 10 posiciones para almacenar números enteros. Pseint: Proceso Programa
Dimension valores[10]; // Arreglo llamado valores de 10 posiciones fin proceso C++: #include using namespace std; int main(){
int valores [10]; // Arreglo valores de 10 posiciones tipo entero. return 0; }
Benllisoft
Curso de Programación Estructurada
2. Es posible declarar un arreglo de un tamaño N, donde N es una variable tipo Entero que tiene un valor asignado. Pseint: Proceso Programa Definir N como entero; entero;
N=100; Dimension Datos[N]; Fin proceso C++: #include using namespace std; int main(){
int N; int valores [N]; return 0;
}
Benllisoft
Curso de Programación Estructurada
Operaciones básicas con arreglos Asignación de valores a un arreglo
Usando el identificador y el índice podemos asignar valores a cada una de las posiciones del arreglo. Ejemplos: Pseint: Proceso PROGRAMA Dimension datos[3];
datos[0]=10; datos[1]=20; datos[2]=30; Fin proceso C++: #include using namespace std; int main(){
int datos[3]; datos[0]=10; datos[1]=20; datos[2]=30; return 0;
}
Benllisoft
Curso de Programación Estructurada
Lecturas y escrituras Lecturas
Consiste en hacer una lectura o y asignar directamente un valor a una posición del arreglo. Escrituras
Consiste en hacer una escritura de los valores almacenados en un arreglo. Pseint: Proceso PROGRAMA Dimension datos[3]; Escribir “Ingrese 3 valores” valores ”; datos(0); Leer datos(0); datos(1); Leer datos(1); Leer datos(2); datos(2); Escribir “Los Escribir “Los valores ingresados son ” datos[0],datos[1],datos[2]; Fin proceso C++: #include using namespace std;
int main(){ int datos[3]; cout<<”Ingrese cout<<”Ingrese 3 valores”<>datos[0]; cin>>datos[1]; cin>>datos[2]; cout<< ”Los valores ingresados son”<
}
Benllisoft
Curso de Programación Estructurada
Variables para el acceso a una posición
A través de una variables del tipo entero podemos indicar el índice a usar en el arreglo. Pseint: Proceso PROGRAMA Definir i,j como enteros; Dimension datos[2];
i=0; j=1; datos(i)=10; // El entero 10 es asignado a la posición 0 Escribir “Ingrese un valor” ; Leer datos(j); // El valor introducido por el usuario es almacenado en la posición 1 Escribir “Los valores guardados son” ; Escribir datos[i]; Escribir datos[j]; Fin proceso C++: int main(){ int i,j; int datos[3];
i=0; j=1; datos[i]=10; // El entero 10 es asignado a la posición 0 cout<< “Ingrese un valor”<>datos[j]; // El valor introducido por el usuario es almacenado en la posición 1 cout<<”Los valores guardados son”<
}
Benllisoft
Curso de Programación Estructurada
Ciclos y arreglos
Con el uso de ciclos se puede simplificar y automatizar las operaciones con los arreglos. A través de los ciclos es posible realizar repetidamente operaciones sobre un arreglo, con el uso de algún contador se indica la posición a trabajar mientras que el ciclo hace un incremento o decremento en el contador con cada iteración. Ejercicios guiados 1.Recibir 10 precios en un arreglo. Pseint: Proceso Programa Definir i como entero; Dimension Precios[10]; Para i=0 hasta 9 con paso 1 hacer Escribir “Ingrese el dato de la posición” i+1; Leer datos[i]; Fin para Fin proceso C++: int main(){ int i; int datos[10]; for (i=0;i<=9;i++){ cout<<”Ingrese el dato de la posición ” <
cin>>datos[i]; } return 0;
}
Benllisoft
Curso de Programación Estructurada
2. Sumar los valores de un arreglo luego de hacer la lectura de los datos. Pseint: Proceso Programa Definir i como entero; Dimension Precios[10]; Para i=0 hasta 9 con paso 1 hacer Escribir “Ingrese el dato de la posición” i+1; Leer datos[i]; Fin para Para i=0 hasta 9 con paso 1 hacer
suma=suma+datos[i]; fin para Escribir suma; Fin proceso C++: int main(){ int i; int datos[10]; for (i=0;i<=9;i++){ cout<<“Ingrese el dato de la posición ” <>datos[i];
} for (i=0;i<=9;i++){
acum=acum+datos[i]; } cout<
}
Benllisoft
Curso de Programación Estructurada
Arreglos de dos dimensiones
Son estructuras de datos que agrupan muchos datos del mismo tipo, en donde cada elemento se puede trabajar individualmente y se puede referenciar con un mismo nombre. Se usan para representar datos que pueden verse como una tabla con filas y columnas, en donde se especifica un índice para las flas y otro para las columnas.
Declaración Pseint: Dimesion [N,M] ; // N indica filas y M columnas C++: [N][M]; // N indica filas y M columnas
Benllisoft
Curso de Programación Estructurada
Ejemplos
1. Declarar una tabla de 5 filas y 5 columnas para almacenar números enteros Pseint: Proceso Programa Dimension Tabla [5,5]; Fin proceso C++: int main(){
int tabla [5][5]; return 0;
} 2. Declarar un arreglo de dos dimensiones para almacenar los precios de 30 productos
correspondientes a dos almacenes. En este caso se puede hacer referencia al almacén 1 con la fila 1 y al almacén 2 con la fila dos. Pseint: Proceso Programa Dimension Precios [2,10]; Fin programa C++:
int main(){ float precios [2][10]; return 0; }
Benllisoft
Curso de Programación Estructurada
3. Declarar un arreglo para almacenar las notas de 3 exámenes de 50 alumnos Pseint: Proceso Programa Dimension Notas [3,50] // Cada columna puede asociarse a un estudiante Fin proceso C++: int main(){ float Notas [3][10]; return 0;
}
4.Es posible declarar un arreglo de un tamaño N M , donde N y M son variables tipo
Entero que tienen un valor asignado. Pseint: Proceso Principal Definir N,M como Enteros;
N=3; M=3; Dimension Tabla [N,M]; Fin proceso C++: int main(){ int N,M;
N=3; M=3; int tabla [N][M]; return 0: }
Benllisoft
Curso de Programación Estructurada
Operaciones básicas con arreglos de dos dimensiones Asignar valores a un arreglo
Usando el identificador y el índice podemos asignar valores a cada una de las posiciones del arreglo, indicando las coordenadas de cada una de ellas. Ejemplo Pseint: Proceso Programa Dimension Precios [2,2];
Precios[0,0]=525.2; Precios[0,1]=792.80; Precios[1,1]=2507; Precios[1,1]=390.50; Fin proceso C++: int main(){ float Precios [2][2];
Precios[0][0]=525.2 Precios[0][1]=792.80 Precios[1][1]=2507 Precios[1][1]]=390.50 return 0; }
Benllisoft
Curso de Programación Estructurada
Lecturas y escrituras
Usando el identificador y el índice podemos asignar valores a cada una de las posiciones del arreglo, a través de lecturas y también mostrar los valores guardados en el arreglo usando la operación de Escritura. Ejemplo Proceso Lectura_De_Datos Dimension Precios[2,2]; Escribir “Ingrese 4 valores”; Leer Precios[0,0]; Leer Precios[0,1]; Leer Precios[1,1]; Leer Precios[1,1]; Escribir “Los precios ingresados son los siguientes:”; Escribir Precios[0,0]; Escribir Precios[0,1]; Escribir Precios[1,1]; Escribir Precios[1,1]; Fin proceso C++: int main(){ float precios [2][2]; cout<<“Ingrese 4 valores”<>Precios[0][0]; cin>>Precios[0][1]; cin>>Precios[1][1]; cin>>Precios[1][2]; cout<<“Escribir los precios ingresados son”<
}
Benllisoft
Curso de Programación Estructurada
Ciclos y arreglos de dos dimensiones Recorrido clásico
Recorrer el arreglo por filas usando ciclos, un ciclo controla el índice que indica las filas y otro el índice que indica las columnas. Consiste en fijar un valor para el índice que se usa como referencia para las filas e incrementar el valor del índice que hace referencia a las columnas, hasta el valor de la última columna, luego repetir el proceso con cada fila. 1. Recorrer un arreglo por filas, en cada posición hacer una lectura. Pseint:
Proceso Recorrido Dimension tabla[10,10]; Definir i,j como enteros; Para i=1 hasta 10 con paso 1 hacer Para j=1 hasta 10 con paso 1 hacer Escribir “Ingrese el valor a asignar en la fila” i “y columna” j; Leer tabla[i,j]; Fin para Fin para Fin proceso C++: int main(){ int i,j; int tabla[10][10]; for (i=0;i<=9;i++){ for (j=0;j<=9;j++){ cout<< “Ingrese el valor a asignar en la fila ” <>tabla[i][j]; } } return 0; }
Benllisoft
Curso de Programación Estructurada
Ejercicios 1. Declarar e inicializar un arreglo de una dimension con 3 posiciones, con los valores
10,12 y 3. Asignar a una variable X la suma de todos los valores del arreglo. 2. Declarar un arreglo de una dimension para almacenar 3 notas dadas por el usuario,
luego calcule el promedio. 3. Declarar un arreglo de una dimesion
de tamaño 10, luego dar un conjunto de instrucciones que permiten al usuario asignar valores a cada posición del arreglo. (Usar ciclos). 4. Declarar e inicializar un arreglo de enteros en donde el tamaño y los valores son dados
por el usuario. 5. Un arreglo de tamaño 40 guarda un conjunto de notas de una asignatura.
Permita que el usuario asigne las notas a cada posición del arreglo. Calcule la suma de las notas. Luego indique cuál es el promedio del conjunto de notas. Valide todos los datos de entrada. 6. Escribir un programa que tras asignar los números, -2, 5, 8, -9, 10, 15 y –4 a un
arreglo, calcule independientemente la suma de los elementos positivos y negativos. 7. Declarar un arreglo de Reales de tamaño 3x3 y permitir que el usuario ingrese los
valores. 8. Declarar un arreglo de tamaño 10x10, luego dar un conjunto de instrucciones que
permitan al usuario asignar valores sólo en la diagonal (Usar ciclos). 9. Declarar un arreglo de Reales de tamaño 6x6 y permitir que el usuario ingrese los
valores luego sumar los valores de la tercera fila. 10. Escribir un programa que multiplique por dos los elementos de la siguiente matriz:
5 6 13 14 2 4 21 7 6
Benllisoft
Curso de Programación Estructurada
Registros
Es un tipo de dato estructurado formado por la unión de varios elementos bajo una misma estructura. Estos elementos pueden ser, o bien datos elementales (entero, real, carácter,...), o bien estructuras de datos. A cada uno de esos elementos se le llama campo. Dado que los elementos pueden ser de distintos tipos se considera una estructura Heterogénea. Declaración de un registro C++: #include using namespace std; int main(){ struct{
}; return 0;
} Como es habitual en C++, para declarar la variable hemos indicado primero el tipo de datos (struct { ...} ) y después el nombre que tendrá esa variable .
Benllisoft
Curso de Programación Estructurada
También podemos declarar primero cómo van a ser nuestros registros, es decir, declarar la estructura como un tipo de dato y más adelante definir variables de ese tipo. #include using namespace std; int main(){ struct {
}; ; // Variable del tipo struct return 0;
}
Benllisoft
Curso de Programación Estructurada
Ejemplos 1. Declarar un registro para un estudiante con los campos : nombre,cédula,semestre. 1.1 #include using namespace std; int main(){ struct{ string nombre; int cedula; int semestre; }Estudiante; //Declaración del registro Estudiante return 0;
} 1.2 #include using namespace std; int main(){ struct Estudiante{ string nombre; int cedula; int semestre;
}; Estudiante e1; // e1 es una variable del tipo Estudiante return 0;
}
Benllisoft
Curso de Programación Estructurada
2. Declarar un registro para una Fecha con los campos : día, mes y año. 2.1 #include using namespace std;
int main(){ struct { int dia,mesa,año;
}Fecha; return 0;
} 2.2 #include using namespace std; int main(){ struct Fecha{ int dia,mesa,año;
}; Fecha F1; return 0;
}
Benllisoft
Curso de Programación Estructurada
Asignar valores a los campos del registro
Para acceder a cada uno de los datos que forman el registro, tanto si queremos leer su valor como si queremos cambiarlo, se debe indicar el nombre de la variable y el del dato (o campo) separados por un punto. Ejemplo #include using namespace std; int main(){ struct{ int dia; int mes; int año;
}Fecha; cout<<“Ingrese el dia mes y año a registrar” <>Fecha.dia; cin>>Fecha.mes; cin>>Fecha.año; return 0;
}
Benllisoft
Curso de Programación Estructurada
2. Registro Estudiantil Definir 2 registros para guardar los datos de dos estudiantes con
los campos: Nombre,cédula y semestre. #include using namespace std; int main(){ struct Registros_Estudiantil{ string nombre; int cedula; int semestre;
} Registro_estudiantil e1,e2; cout<<“Ingrese los datos del primer estudiante (Nombre,Cédula,semestre)” <>e1.nombre; cin>>e1.cedula; cin>>e1.semestre; cout<< “Ingrese los datos del segundo estudiante (Nombre,Cedula,semestre)” <>e2.nombre; cin>>e2.Cedula; cin>>e2.semestre;
return 0; }
Benllisoft
Curso de Programación Estructurada
Arreglo de registros
Dado un registro podemos definir un arreglo de registro, es decir en cada posición del arreglo se encuentra un Registro. Siguiendo la sintaxis de C para declarar arreglos [Dimension];
En indicaremos el tipo Registro. Ejemplos
Se requiere un programa para registrar en una lista a 10 personas, los campos del registros son: Nombre,cédula y edad. Pasos:
1. Definir El registro como tipo de dato 2. Definir una estructura que nos permita simular una lista de 10 elemntos (Arreglo), cada elemento va a hacer del tipo registro #include using namespace std; int main(){
struct Personas{ string nombre; int cedula; int edad; }; Personas Lista[10]; //Arreglo de 10 posiciones, cada posición posee un registro return 0;
}
Benllisoft
Curso de Programación Estructurada
2. Dar valores a arreglos compuestos por registros Pasos:
1. Indicar el nombre del arreglo y la posición que se desea trabajar. 2. Indicar después de un punto el campo del registro. Ejemplos
1. Leer valores en el primer registro de la lista persona #include using namespace std; int main(){ struct Personas{ string nombre; int cedula; int edad;
}; Personas Lista[10]; //Arreglo de 10 posiciones, cada posición posee un registro cout<<“Ingrese nombre,cédula y edad de la primera p ersona en la lista”<>Lista[0].nombre; //Accede a la posición 0 del arreglo luego al campo del registro cin>>Lista[0].cedula; cin>>Lista[0].edad; return 0;
}
Benllisoft
Curso de Programación Estructurada
Ejercicios guiados
Desarrolle un programa para registrar a 5 persona en donde: ● Cada registro está compuesto : Nombre,cédula y edad. ● Validar la cédula (mayor a 6 millones y menos a los 40 millones) ● Validar la edad (mayor a 0 )
Considerar el manejo de arreglos usando ciclos. #include using namespace std; int main(){ int i; struct Personas{ string nombre; int cedula; int edad; }; Personas Lista[10]; //Arreglo de 10 posiciones cada posición posee un registro for (i=0;i<=9;i++){ cout<<“Ingrese nombre,cédula y edad de la persona” <>Lista[i].nombre; cin>>Lista[i].cedula; cin>>Lista[i].edad; if (Lista[i].cedula<6000000 || Lista[i].cedula>40000000 || edad<0) { cout<< “Error: verifique los datos a ingresar de nuevo”<
i=i-1; } } return 0;
}
Benllisoft
Curso de Programación Estructurada
Ejercicios
1.Realizar los siguientes ejercicios en lenguaje C++, recuerde validar todos los datos de entrada. 2.En una tienda donde solo hay 10 productos se desea calcular el total de ganancia que produjo dicho negocio este mes. Para ello se cuenta por producto con: Precio del Costo, precio de venta, código y cantidad vendida en ese periodo. Realizar programa que permita calcular las Ganancias de la Tienda. 3.Se desea calcular el promedio, nota mínima y máxima de una lista de notas correspondientes a un curso. Se recibirá el número de alumnos, la nota y el nombre correspondiente a c/u, y se entregan los resultados en la pantalla. 4.Desarrolle una estructura que guarde los datos de los n alumnos de la materia programación en Lenguaje C++, y los muestres por pantalla, la estructura debe tener (cédula, nombre, apellido, edad, profesión, lugar de nacimiento, dirección y teléfono). 5.La información de todos los empleados de la empresa DATASYSTEM está almacenada en una variable de tipo struct llamada “empleado”.La información con que se cuenta de
cada empleado es: nombre, sexo y sueldo.Por tanto se pide: 6.Realizar un programa en C++ que lea en un arreglo de estructuras los datos de los N trabajadores de la empresa y que imprima los datos del empleado con mayor y menor salario. 7.Establezca una estructura para almacenar como máximo los datos de 100 libros o revistas científicas de una biblioteca. Por cada libro o revista científica, mostrar la siguiente información: a) Número de referencia. b) Título c) Nombre del autor d) Editorial e) Clase de publicación (libro o revista) f) Número de edición (solo libros) g) Año de publicación (solo libros)
Benllisoft