0% encontró este documento útil (0 votos)
59 vistas58 páginas

Texto Cuaderno

El documento presenta el plan de evaluación para la asignatura de Programación Digital 10, incluyendo los temas a cubrir, las fechas de los exámenes parciales y la distribución de la nota. También proporciona información sobre la bibliografía recomendada y los datos de contacto de la profesora y la delegada de la clase.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
59 vistas58 páginas

Texto Cuaderno

El documento presenta el plan de evaluación para la asignatura de Programación Digital 10, incluyendo los temas a cubrir, las fechas de los exámenes parciales y la distribución de la nota. También proporciona información sobre la bibliografía recomendada y los datos de contacto de la profesora y la delegada de la clase.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

09/03/15

Programación Digital 10 – Sección 06


Profesora Leira Chacón (leirac@[Link])
Cubículo: Instituto de Fotogrametría 4to Piso, Ala Norte.
Plan de Evaluación:
• Tema 1: Trabajo sobre la Introducción a los sistemas de computación
(25%).
Examen Parcial:
1er Parcial (20%) • Tema 2: Metodología para el Desarrollo de Programas.
• Tema 3: Datos y las Expresiones (Lenguaje de Programación) (75%)
• Tema 4: Estructuras Secuenciales.

• Tema 5: Estructura de Decisión.


2ndo Parcial (20%) • Tema 6: Estructura de Repetición.

• Tema 7: Arreglos.
3er Parcial (25%)
• Tema 8: Descomposición Modular.
4to Parcial (20%) • Tema 9: Subprogramas.

Laboratorio (15%) 10 a 12 sesiones prácticas evaluadas. La nota del Laboratorio es el promedio de


las evaluaciones de cada práctica.

Bibliografía:
- Introducción a la Programación.
- Programación I
- Programación Digital.
- Mayormente usados Joyanes y Aguilar.
Delegada: María Eugenia Marquina (maru-mar_16@[Link])
Tema 2: Metodología de Desarrollo de Programas:

1. Análisis del Problema:


En esta etapa se pretende ganar una comprensión adecuada del problema que se tiene.
Para ello se usara una sencilla técnica llamada Análisis de Entradas, Procesos y Salidas (E-P-S),
en la cual el mismo se hace en tres partes:
a) Análisis de Entradas:
Se identifican los datos dados o datos de entrada¸ los cuales pueden ser variables o constantes.
Debe presentarse de la manera siguiente:
Dato Identificador Tipo Restricciones

Así sucesivamente según la lista de datos.


b) Análisis del Proceso:
Se identifican los procesos necesarios para resolver el problema: cálculos, transformaciones,
decisiones, repeticiones.
Debe presentarse la lista de procesos como sigue:
1. Proceso: descripción breve.
Como:
Datos generados: (identificador, tipo, restricciones).
Así con todos los procesos necesarios.
c) Análisis de Salida:
Se listan los datos esperados, es decir, los datos que el programa debe mostrar:
Dato Identificador

16/03/15
2. Diseño del Programa:
En esta etapa se elabora una primera aproximación del programa, usando un lenguaje natural.
Para ello se usan las técnicas:
- Algoritmos
- Diagrama de flujo
Algoritmos: es una lista de acciones ordenadas de forma lógica. Cada acción se numera (1, 2, 3,...)
y se expresa mediante un verbo (escribir, leer, calcular, decidir, etc.)
Tiene la forma siguiente:
0. Inicio
1. Acción A.
2. Acción B.
2.1. Acción B.1
2.2. Acción B.2
2.2.1. Acción B.2.1
2.2.2. Acción B.2.2.
3. Acción C.
4.
5.
6.
7. Fin
Un algoritmo debe ser:
- Claro, sin ambigüedades.
- Finito.
- Planteado lógicamente.
También se puede hacer mediante los diagramas de flujo.
A partir de un conjunto de símbolos, cada uno representando una acción, se construye un diagrama
llamado flujograma.
Los símbolos principales son:
17/03/15
3. Prueba del Diseño:
Esta etapa es opcional, en ella se comprueba que el diseño desarrollado funcione correctamente.
Siguiendo los pasos planteados en el diseño, se suministran valores a los datos de entrada, se realizan
los cálculos, decisiones, asignaciones u otras acciones, y se obtiene valores de los datos de salida,
los cuales se comparan con los datos esperados.
4. Codificación del Diseño:

Se refiere a transformar el algoritmo o diagrama de flujo en un programa.


Un programa es una secuencia de instrucciones u órdenes que el computador sigue para llegar u
obtener un resultado.
Los programas se escriben en lenguajes de programación, tales como C, C++, C#, Java, Visual (Basic),
Phyton, Ruby, Prolog, Pascal, Fortran, etc.
Todos los lenguajes de programación tienen un conjunto de instrucciones para definir datos y para
llevar a cabo acciones (calcular, decidir, asignar, comparar, etc.)
Los programas escritos en algún lenguaje de programación se llaman programa fuente.
5. Traducción y ejecución del programa:
La traducción es el proceso de transformar el programa fuente a un nuevo programa, escrito en
lenguaje de máquina (lenguaje del computador)
Los lenguajes de programación tienen su traductor propio, y se tienen de dos tipos:
- Compiladores (C, Pascal, Fortran,…)
- Interprete (Java, Python, C#, PHP, Prolog,…)
El traductor de un lenguaje de programación es un programa.
Compiladores:
Interprete:

6. Prueba y Depuración del Programa:


El programa se prueba exhaustivamente a fin de asegurarse que funciona correctamente.
La depuración del programa se refiere a la optimización del programa.

Tema 3: Datos y Expresiones:


Datos e Información:
Identificador o nombre:
- Se Recomienda usar
• Nombres no demasiados largos.
• Nombres que relacionen con el dato representado.
• Nombres que no incluyen caracteres diferentes a letras,
números, caracteres guion y piso.
- Se Prohíbe
• Nombre que comience con un carácter distinto a una letra.
• Usar palabras reservadas del lenguaje.
- Los nombres son únicos dentro del programa
Valores:
- Se refiere al conjunto posible de valores.
Datos - Los lenguajes de Programación generalmente obligan a colocar un
valor por defecto al dato (Valor Inicial).
Tipo:
- Se refiere a la cantidad de memoria que se le proporciona.
- Los tipos pueden ser:
• Numéricos:
o Enteros.
o Reales.
• Alfanuméricos:
o 1 solo carácter.
o Varios Caracteres.
• Lógicos:
o Valores verdaderos o Falsos.
Ejemplo:
Dato Identificador
n
nota
Nota
NOTA
N-E
Nota
nota-est
notaest
1nota
nota&
nota%

Tipos de Datos:
Enteros: son datos sin parte decimal. En pascal se tienen los siguientes:
Tipos de Datos Rango de Valores Memoria (byte)
integer -32768 a 32767 2
shortint -128…127 1
longint -2147483648…2147483647 4
byte 0…255 1
word 0…65535 2

Reales: son datos, positivos o negativos que tienen parte decimal. En Pascal, se tienen los
siguientes:
Tipos de Datos Rango de Valores Número de Citas Decimales Memoria (byte)
real -2.9x10-39…1.7x1038 11 6
single -1.5x10-46…3.4x1038 7 4
double -5.0x10-34…1.1x1038 16 8

Alfanuméricos: son datos cuyos valores se delimitan con apostrofe (‘ ‘) o comillas (“ “).
En pascal se usan solo los apostrofes y se tienen dos casos:
Tipos de Datos Ejemplos
Sexo ‘H’, ‘M’, ‘h’, ‘m’.
char Un solo carácter Estado Civil ‘C’, ‘S’, ‘V’, ‘D’, ‘c’,
‘s’, ‘v’, ‘c’.
String [10] -> cadena de 10
caracteres.
Nombre ‘Pedro Pérez Márquez’
string [a] -> Número de Un conjunto de Caracteres se les Codigoacceso ‘AX1%Y’
Caracteres. llama cadena. Si no se especifica el Número
de caracteres en un dato tipo
cadena Pascal asume un
tamaño de 256 caracteres.
Lógicos: son datos cuyos valores posibles son Verdadero (True), Falso (false). En Pascal se llaman
boolean. Estos datos NUNCA se leen.
24/03/15
Variables/Constantes: un dato variable es aquel cuyo valor o valores pueden modificarse en tiempo
de ejecución del programa. Un dato constante es el caso contrario, el valor lo asigna el programador.
Cualquier intento de modificación genera un error.
Expresiones:
Una expresión es una combinación de operandos: variables, constantes, literales y operadores.
Los operadores que ofrecen los lenguajes de programación son:
- Aritméticos.
- Relacionales.
- Lógicos.
- Alfanuméricos.
Operadores Aritméticos:
Operación Notación Notación en Pascal Ejemplo
Adición + + 𝐴𝐴 + 5
Diferencia - - 𝐴𝐴 − 5
Producto .,x * 𝐴𝐴 ∗ 5
Entero div 𝐴𝐴 𝑑𝑑𝑑𝑑𝑑𝑑 5
División /, ÷
Real / 𝐴𝐴 / 5
Modulo (devolver el
𝐴𝐴 𝑚𝑚𝑚𝑚𝑚𝑚 5
resto o residuo de la mod
0 ≤ 𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛 ≤ 5
división entre enteros)

Ejemplo:
11 10 = 1011 2

Operadores Relacionales:
Operación Notación Notación en Pascal Ejemplo
Mayor a > > 𝐴𝐴 > 5
Mayor o igual a ≥ >= 𝐴𝐴 >= 5
Menor a < < 𝐴𝐴 < 5
Menor o igual a ≤ <= 𝐴𝐴 <= 5
Igual a = = 𝐴𝐴 = 5
Diferente a ≠ <> 𝐴𝐴 <> 5
Operadores lógicos:
Son operadores que requieren operandos de tipos lógicos. Se tienen:
- Y Lógico.
- O Lógico.
- Negación.
Y Lógico: es un operador binario (requiere dos operandos). Tiene la siguiente tabla de verdad, y se
denota en Pascal como “and”
and V F V: Verdadero (True)
V V F
F: Falso (False)
F F F

O Lógico: es un operador binario se denota en pascal, como “or”, y tiene la siguiente tabla de verdad.

or V F
V V V
F V F

Negación: es un operador unario, se denota en Pascal como “not”. Tiene como tabla de verdad:
not V F
F V

Operadores Alfanuméricos:
Se tiene el operador de concatenación. Se denota en Pascal como “t”.
Lo que hace juntar dos valores alfanuméricos. Por Ejemplo:
𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔
‘Sección’ + ‘ 06’ �⎯⎯⎯� ‘Sección 06’
Se tienen los siguientes tipos de expresiones:
a) Expresiones Aritméticas:
Operandos: Variables/constantes/literales de tipo numéricos.
Operadores: aritméticos.
Tipo del Valor Resultante: Valor numérico 𝐴𝐴 + 5
b) Expresiones Relacionales:
Operandos: Variables/constantes/literales de tipo numéricos.
Operadores: relacionales.
Tipo del Valor Resultante: Valor lógicos 𝐴𝐴 >= 5
c) Expresiones lógicos:
Operandos: Variables/constantes/literales de tipo lógicos.
Operadores: lógico.
Tipo del Valor Resultante: Valor lógico.
Ejemplo:

Se tienen las variables lógicas X y Z. Evalúe la expresión cuando las variables tienen los valores
verdadero y falso, respectivamente.
X and Z
El valor resultante es Falso.
d) Expresiones Alfanuméricos:
Operandos: Variables/constantes/literales de tipo alfanuméricos.
Operadores: alfanuméricos.
Tipo del Valor Resultante: Valor alfanuméricos.

Ejemplo:
Sean las variables N y A de tipo alfanumérico con valores
‘Pedro José’ y ‘Pérez Arias’
Muestre los valores resultantes de las expresiones
N+A
𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔
‘Pedro José’ + ‘Pérez Arias’ �⎯⎯⎯� ‘Pedro JoséPérez Arias’
A+N
𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔
‘Pérez Arias’+ ‘Pedro José’ �⎯⎯⎯�‘Pérez AriasPedro José’
Evaluación de Expresiones:
𝐴𝐴 + 5 ∗ 𝐵𝐵
Los lenguajes de programación tienen las siguientes reglas:
1. La expresión se evalúa de Izquierda a Derecha.
2. Solo se permite los paréntesis como signos de agrupación.
3. Cuando se tienen paréntesis en la expresión, se deben evaluar las operaciones allí
contenidas.
4. Aplicar reglas de precedencia de los operadores, las cuales pueden varias de un lenguaje a
otro.
Reglas de Precedencia:
En el caso de Pascal, se tiene:
a. Operadores Aritméticos:
1. Negatividad (cambio de signo)
2. Productos, divisiones, mod.
3. Adición y Sustracción.
Ejemplo:
Se tiene la expresión:
−𝑎𝑎 + 5 ∗ 𝑏𝑏 + 𝑐𝑐�𝑑𝑑 ∗ 10 − (−5 + 𝑎𝑎)

Donde a, b, c y d son datos numéricos. Muestre el orden de evaluación en Pascal de la expresión.


R1: -5 −𝑎𝑎 + 5 ∗ 𝑏𝑏 + 𝑐𝑐�𝑑𝑑 ∗ 10 − (𝑅𝑅1 + 𝑎𝑎)

R2: R1+a −𝑎𝑎 + 5 ∗ 𝑏𝑏 + 𝑐𝑐�𝑑𝑑 ∗ 10 − 𝑅𝑅2


R3: -a 𝑅𝑅3 + 5 ∗ 𝑏𝑏 + 𝑐𝑐�𝑑𝑑 ∗ 10 − 𝑅𝑅2

R4: 5*b 𝑅𝑅3 + 𝑅𝑅4 + 𝑐𝑐�𝑑𝑑 ∗ 10 − 𝑅𝑅2

R5: 𝑐𝑐�𝑑𝑑 𝑅𝑅3 + 𝑅𝑅4 + 𝑅𝑅5 ∗ 10 − 𝑅𝑅2

R6: R5∗10 𝑅𝑅3 + 𝑅𝑅4 + 𝑅𝑅6 − 𝑅𝑅2


R7: R3+R4 𝑅𝑅7 + 𝑅𝑅6 − 𝑅𝑅2
R8: R7+R6 𝑅𝑅8 − 𝑅𝑅2
R9: R8-R2 𝑅𝑅9
b. Operadores Lógicos:
1. not.
2. and.
3. or.
Ejemplo:
Se tienen las variables lógicas X, W, y Z, cuyos valores son true, false y true, respectivamente. Muestre
el orden de evaluación en pascal de la siguiente expresión:
𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛 𝑎𝑎𝑎𝑎𝑎𝑎 𝑧𝑧 𝑜𝑜𝑜𝑜 (𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛 𝑜𝑜𝑜𝑜 𝑥𝑥) 𝑎𝑎𝑎𝑎𝑎𝑎 𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡
R1: not w 𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛 𝑎𝑎𝑎𝑎𝑑𝑑 𝑧𝑧 𝑜𝑜𝑜𝑜 (𝑅𝑅1 𝑜𝑜𝑜𝑜 𝑥𝑥) 𝑎𝑎𝑎𝑎𝑎𝑎 𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡 → 𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡
R2: R1 or x 𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛 𝑎𝑎𝑎𝑎𝑎𝑎 𝑧𝑧 𝑜𝑜𝑜𝑜 𝑅𝑅2 𝑎𝑎𝑎𝑎𝑎𝑎 𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡 → 𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡
R3: notx 𝑅𝑅3 𝑎𝑎𝑎𝑎𝑎𝑎 𝑧𝑧 𝑜𝑜𝑜𝑜 𝑅𝑅2 𝑎𝑎𝑎𝑎𝑎𝑎 𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡 → 𝑓𝑓𝑓𝑓𝑓𝑓𝑓𝑓𝑓𝑓
R4: R3 and z 𝑅𝑅4 𝑜𝑜𝑜𝑜 𝑅𝑅2 𝑎𝑎𝑎𝑎𝑎𝑎 𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡 → 𝑓𝑓𝑓𝑓𝑓𝑓𝑓𝑓𝑓𝑓
R5: R2 and true 𝑅𝑅4 𝑜𝑜𝑜𝑜 𝑅𝑅5 → 𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡
R6: R4 or R5 𝑅𝑅6 → 𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡 (𝑉𝑉𝑉𝑉𝑉𝑉𝑉𝑉𝑉𝑉 𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅)
c. Operadores Alfanuméricos:
1. +
Ejemplo:
Sean las variables Alfanuméricos, d, m, a, con valores ‘24’, ‘Marzo’, ‘2015’. Muestre el orden de
evaluación de la siguiente expresión
𝑑𝑑+′ −′ + 𝑚𝑚+′ −′ + 𝑎𝑎
R1: d + ‘-‘ 𝑅𝑅1 + 𝑚𝑚+′ −′ + 𝑎𝑎
R2: R1 + m 𝑅𝑅2 + ′−′ + 𝑎𝑎
R3: R2 + ‘-‘ 𝑅𝑅3 + 𝑎𝑎
R4: R3 + a R4
El valor resultante ’24-Marzo-2015’
Expresiones Mixtas:
(𝑎𝑎 ∗ 𝑏𝑏 > 𝑐𝑐) 𝑜𝑜𝑜𝑜 𝑥𝑥
Sus reglas de precedencia en Pascal son las siguientes:
1. not, negatividad (Cambio de signo).
2. and, producto, división (/, div), mod.
3. or, adición, diferencia.
4. >, >=, <, <=, =, <>
Ejemplo:
Se tienen las variables numéricas a, b, y c, y la variable lógica X, con valores, 1, 2, 3, true. Muestre el
orden de evaluación de la expresión.
𝑛𝑛𝑛𝑛𝑛𝑛 (𝑎𝑎 ∗ 𝑏𝑏 > 𝑐𝑐) 𝑜𝑜𝑜𝑜 𝑥𝑥
R1: a*b 𝑛𝑛𝑛𝑛𝑛𝑛 (𝑅𝑅1 > 𝑐𝑐)𝑜𝑜𝑜𝑜 𝑥𝑥 → 2
R2: R1 > c 𝑛𝑛𝑛𝑛𝑛𝑛 𝑅𝑅2 𝑜𝑜𝑜𝑜 𝑥𝑥 → 𝑓𝑓𝑓𝑓𝑓𝑓𝑓𝑓𝑓𝑓
R3: not R2 𝑅𝑅3 𝑜𝑜𝑜𝑜 𝑥𝑥 → 𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡
R4: R3 or x 𝑅𝑅4 → 𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡 (𝑉𝑉𝑉𝑉𝑉𝑉𝑉𝑉𝑉𝑉 𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅)
Ejercicios:
Elabore expresiones para los siguientes planteamientos:
1. Una nota es inválida si es inferior a 0 y superior a 20.

(𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛 < 0)𝑜𝑜𝑜𝑜 (𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛 > 20)

2. Un estudio tiene tres (3) notas parciales, aprueba la nota promedio es de diez (10) o más.
Notas Parciales del estudiante: nota1, nota2, nota 3.

(𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛1 + 𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛2 + 𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛3)⁄3 >= 10

3. Un estudiante tiene tres notas parciales y tiene la condición de:


a. Eximido: si su promedio es de 16 o más puntos, sin reprobar ninguno de los parciales.
b. Bueno: si su nota promedio es superior a 12 puntos, y reprobó a lo más un parcial.
c. Muy deficiente: si reprobó todos los parciales
Notas Parciales del estudiante: nota1, nota2, nota 3.
a. (𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛1 + 𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛2 + 𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛3)⁄3 >= 16 𝑎𝑎𝑎𝑎𝑎𝑎 (𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛1 >= 10) 𝑎𝑎𝑎𝑎𝑎𝑎 (𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛2 >= 10) 𝑎𝑎𝑎𝑎𝑎𝑎 (𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛3 >=
10)
b. (𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛1 + 𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛2 + 𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛3)⁄3 >= 12 𝑎𝑎𝑎𝑎𝑎𝑎(𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛1 < 10) 𝑎𝑎𝑎𝑎𝑎𝑎 (𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛2 >= 10) 𝑎𝑎𝑎𝑎𝑎𝑎 (𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛3 >=
10) 𝑜𝑜𝑜𝑜 (𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛1 >= 10) 𝑎𝑎𝑎𝑎𝑎𝑎 (𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛2 < 10) 𝑎𝑎𝑎𝑎𝑎𝑎 (𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛3 >= 10) 𝑜𝑜𝑜𝑜 (𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛1 >=
10) 𝑎𝑎𝑎𝑎𝑎𝑎 (𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛2 >= 10) 𝑜𝑜𝑜𝑜 (𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛3 < 10)
c. (𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛1 < 10) 𝑎𝑎𝑎𝑎𝑎𝑎 (𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛2 < 10) 𝑎𝑎𝑎𝑎𝑎𝑎 (𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛3 < 10)

4. Se lanzan dos dados, gana si tiene valores pares o en caso de que obtengan un 6.
(𝑣𝑣𝑣𝑣𝑣𝑣𝑣𝑣𝑣𝑣1 = 2) 𝑜𝑜𝑜𝑜 (𝑣𝑣𝑣𝑣𝑣𝑣𝑣𝑣𝑣𝑣1 = 4) 𝑜𝑜𝑜𝑜 (𝑣𝑣𝑣𝑣𝑣𝑣𝑣𝑣𝑣𝑣1 = 6) 𝑎𝑎𝑎𝑎𝑎𝑎 (𝑣𝑣𝑣𝑣𝑣𝑣𝑣𝑣𝑣𝑣2 = 2) 𝑜𝑜𝑜𝑜 (𝑣𝑣𝑣𝑣𝑣𝑣𝑣𝑣𝑣𝑣2 = 4) 𝑜𝑜𝑜𝑜 (𝑣𝑣𝑣𝑣𝑣𝑣𝑣𝑣𝑣𝑣2 = 6)
Tema 4: Estructuras Secuenciales:

Iniciar / finalizar
un programa.
Estructuras para
definir datos
Leer valores para
Lenguajes de
los datos
Programación
variables.
Estructuras
Escribir datos /
información.

Asignar valores a
los datos
variables

Estructuras para definir datos:


En un programa siempre. Es obligatorio declarar los datos a usar es decir, definir cuáles de ellos son
constantes, variables y de qué tipo son.
En pascal los datos se declaran de la forma siguiente:
const
Nombreconstante = valor
Por ejemplo:

const
pi = 3.1415;
Puede que en el programa no
mensaje_error = 'Valor
Invalido'; se tengan datos constantes, en
Sección de máximo = 40; este caso se omite la sección.
declaración de los resp = 's';
datos constantes.
.
.
.
.

var
nombrevariable : tipo;
Por ejemplo:

var
nota : real;
sexo: char; Puede que en el programa no
nombre: string [40] se tengan datos variables, en
Sección de este caso se omite la sección.
a, b, c: double;
declaración de los
x, y: boolean;
datos variables.
min: integer;
a: byte;
.
.
06/04/15
Estructuras Secuenciales:
Son instrucciones básicas del lenguaje de programación que se ejecutan en el orden en el cual
aparecen en el programa.
Entre ellas se tienen:
a. Inicio y fin del programa.
b. Lectura de los valores de las variables.
c. Escritura de los valores de los datos (variables y constantes) y otra información.
d. Asignación de un valor a una variable.

a. Inicio y fin de un programa:


Algoritmo: Diagrama de Flujo
0. Inicio
1. Acción A. Inicio
2. Acción B.
3. .
4. .
5. .
6. .
7. .
8. .
n. Fin.

Fin

Pascal:
program nombreprograma;
.
.
end.
Ejemplo:
program calcularnotap;
.
.
begin
. Cuerpo principal
. del programa.

end.
b. Lectura de los valores de las variables:
Algoritmo: Diagrama de Flujo
0. Inicio
1. Acción A. Inicio
2. Acción B.
.
.
m. Leer (Lista variables)
. Lista de
.
Variables
.
n. Fin.

Fin

Pascal:
program nombreprograma;
.
begin
.
read (Lista de Variables);
readln (Lista de Variables);
.
end.
Ejemplo:
program calcularnotap;
.
var
a, b, c:integer;
.
begin
read (a,b); Cuerpo principal
readln c; del programa.

end.
c. Lectura de los valores de las variables:
Algoritmo: Diagrama de Flujo
0. Inicio
1. Acción A. Inicio
2. Acción B.
.
.
m. Escribir en pantalla (Lista de variables,
constantes, información) Lista de
. Variable
. constante e
. información
n. Fin.

Fin

Pascal:
program nombreprograma;
.
begin
write (Lista variable constantes, información);
writeln (Lista variable constantes, información);
.
end.
Ejemplo:
program calcularnotap;
.
var
a, b, c:integer;
.
begin
write (‘El valor de c es: ‘, c);
Cuerpo principal
writeln (a, b);
del programa.
.
end.
d. Asignación:
Asociar a una variable un valor, el cual puede ser literal, variable, constante, expresión
En pascal se denota como :=.
Algoritmo: Diagrama de Flujo
0. Inicio
1. Acción A. Inicio
2. Acción B.
.
.
m. Escribir en pantalla (Lista de variables,
constantes, información) Variable <- valor
.
.
.
n. Fin.

Fin

Pascal: Ejemplo:
program nombreprograma; program calcularnotap;
. .
begin var
variable := valor; a, b, c:integer;
. .
end. begin
a:= b+c
write (‘El valor de c es: ‘, c)
b:=3 Cuerpo principal
del programa.
writeln (a,b)
.
end.
Estructura general de un programa en Pascal:
En Pascal:
Archivo
[Link]

program nombreprograma;

begin Programa fuente


en Pascal.

end.

En C:
Archivo
nombrearchivo.c

Programa fuente
en Pascal.
program nombreprogama; Ejemplo:
{Comentarios extensos sobre el programa} program ejemplo;
uses crt; o wincrt versión para windows. {Programador: Arnoldo París Monagas
const Fecha: 06-04-2015
nombreconstante = valor; Propósito: mostrar estructura de un programa
------------ en Pascal}
------------ uses crt; o wincrt versión para Windows.
var const
nombrevariable: Tipo; -> byte, integer, char.... pi = 3.1415;
------------ mensaje_error = ’Error Valor Inválido’;
------------ maxest = 40;
begin ------------
clrscr; (*Instrucción borra pantalla*) ------------
------------ var
read ( ); //Leer... a,b:integer;
readln ( ); z:boolean;
write ( ); promedio:real;
a:=b; ------------
------------ ------------
end. begin
clrscr;
write (‘Ingrese el valor de a: ‘);
read (a);
------------
b:=a*a;
------------
end.
20/04/15

Tema 5 – Estructuras de Decisión


[Link]
program ----------------------

begin
Instrucción 1;
Instrucción 2;

end.

Llamadas estructuras selectivas, son instrucciones que permiten decidir o escoger una alternativa de
un grupo de opciones. La selección se hace en base a una condición lógica, es decir, una expresión
que al evaluarla genera un valor lógico (true/false), o en base a un selector, es decir, una variable o
expresión de tipo entero o de tipo alfanumérico de un solo carácter (en Pascal char).
Los lenguajes de programación ofrecen los siguientes tipos de estructuras de decisión:
- Simple.
- Compuesta.
- Múltiple.

a. Estructuras de decisión simple:


Algoritmo:
0. Inicio
1. Acción A.
2. Acción B.
.
.
m-1. Acción L.
Estructura de Decisión Simple

m. Si condición lógica es verdadera entonces


Acción M
Acción N
fin del si.
.
.
m+1. Acción O.
.
n. Fin.
Diagrama de Flujo:

Inicio

Acción A

Acción B

Acción L

¿Es Verdadera la
SI
condición lógica?

Acción M

NO Acción N

Acción 0

Fin

Pascal:
• if (condición lógica) then
Instrucción 1;
• if (condición lógica) then
begin
Instrucción 1;
Instrucción 2;
.
.
Instrucción P;
.
end;
Ejemplo:
Escriba un programa en Pascal que determine si un número es par.

program numpar;
{Programador: Arnoldo París
Fecha: 20-04-2015
Proposito: Determinar si un número es par}
uses crt;
var
num:integer;
begin
clrscr;
writeln('Ingrese el valor del número: ');
readln(num);
if((num mod 2)=0) then
writeln('El Número ',num,' es par');
readln
end.

b. Estructuras de decisión compuesta:


Algoritmo:
0. Inicio
1. Acción A.
2. Acción B.
.
.
m-1. Acción L.
Estructura de Decisión Compuesta

m. Si condición lógica es verdadera entonces


. Acción M
. Acción N
de lo contrario
. Acción O
. Acción P
fin del si.
.
.
m+1. Acción Q.
.
n. Fin.
Diagrama de Flujo:

Inicio

Acción A

Acción B

Acción L

NO ¿Es Verdadera la
SI
condición lógica?

Acción O Acción M

Acción P Acción N

Acción Q

Fin

Pascal:
• if (condición lógica) then • if (condición lógica) then
Instrucción 1; begin
Instrucción 1;
else
Instrucción 2;
Instrucción 2;
end
• if (condición lógica) then
else
else Instrucción 1;
Instrucción 3;
begin
Instrucción 2; Instrucción 4;

Instrucción 3; .

. .

Instrucción P; Instrucción P;
end; end;
Ejemplo:
Escriba un programa en Pascal que determine si un número es par.
program numpar;
{Programador: Arnoldo París
Fecha: 20-04-2015
Propósito: determinar si un número es par}
uses crt;
var
num:integer;
begin
clrscr;
writeln('Ingrese el valor del número: ');
readln(num);
if ((num mod 2)=0) then
writeln('El número ',num,' es par')
else
writeln('El número ',num,' es impar');
end;
readln
end.

Ejercicios:
1. Escriba un programa que valide una nota, la cual se considera correcta si esta entre 0 y 20
incluidos estos valores.
program validarnota;
{Programador: Arnoldo París
Fecha: 20-04-2015
Proprosito: validar una nota si esta entre 0 y 20}
uses crt;
var
nota:real;
begin
clrscr;
writeln('Ingrese el valor de la nota');
readln(nota);
if((nota>=0)and(nota<=20))then
writeln('La nota del estudiante es válida')
else
writeln('La nota del estudiante es inválida');
readln
end.
2. Modifique el programa que determina la nota promedio de un estudiante con (3) tres
calificaciones parciales, tal que ahora solo determina la nota si los valores de las calificaciones
son válidos.
program notapromedio;
{Programador: Arnoldo París
Fecha 20-04-2015
Proposito: Calcular la nota promedio de un estudiante}
uses crt;
const
p1=0.20;
p2=0.30;
p3=0.50;
mensaje_e='Una o varias notas son invalidas imposible calcular nota promedio';
var
nombre:string[30];
nota1,nota2,nota3,notaP:real;
begin
clrscr;
writeln('Ingrese el nombre del estudiante: ');
readln(nombre);
writeln('Ingrese el valor de las notas parciales: ');
readln(nota1,nota2,nota3);
if((nota1<0)or(nota1>20)or(nota2<0)or(nota2>20)or(nota3<0)or(nota3>20))then
writeln(mensaje_e)
else
begin
notaP:=nota1*p1+nota2*p2+nota3*p3;
writeln('La nota promedio del estudiante: ',nombre,' es: ',notaP);
end;
readln
end.
3. Escriba un programa en Pascal que otorgue un premio al lanzador de los dados que obtenga
por lo menos un seis.
program otorgapremio;
{Programador: Arnoldo París
Fecha: 20-04-2015
Propósito: otorgar un premio al lanzador de dados que obtenga al menos un seis}
uses crt;
const
mensaje_e='valor invalido';
var
dad1,dad2:integer;
begin
clrscr;
writeln('Ingrese el valor del dado 1: ');
readln(dad1);
writeln('Ingrese el valor del dado 2: ');
readln(dad2);
if((dad1>0)and(dad1<7)and(dad2>0)and(dad2<7))then
if((dad1=6)or(dad2=6))then
writeln('Gano un premio')
else
writeln('Siga Intentando')
else
writeln('mensaje_e');
readln
end.
21/04/15
c. Estructuras de decisión compuesta:
Se basa en comparar el valor de un selector con los casos planteados, hasta que coincida con alguno
de ellos.
Algoritmo:
0. Inicio
1. Acción A.
2. Acción B.
.
.
m-1. Acción L.
m. En caso selector
Estructura de Decisión Múltiple

. Valor 1:
. Acción M
. Valor 2:
. Acción N
. Acción O
. Valor P:
. Acción P
. de lo contrario
Opcional
. Acción Q
fin del caso.
m+1. Acción 2.
.
n. Fin.
Diagrama de Flujo:

Inicio Pascal:
case selector of:
Valor 1:
Acción A
Instrucción 1;
Valor 2:
begin
Acción B Instrucción 2;
Instrucción 3;
end;
Valor 3:
Acción L
Instrucción 4;
.
.
De lo contrario else
Valor 1 Instrucción P;
¿El selector es a?
end;
Valor 2 Valor P
Acción M Acción Q

Acción N Acción P

Acción O

Acción R

Fin
Ejercicio:
Escriba un programa que realice la equivalencia de una codificación en letras a calificación numérica
sabiendo que:
𝑎𝑎 = 19 𝑐𝑐 = 12 𝑒𝑒 = 5
𝑏𝑏 = 16 𝑑𝑑 = 8 𝑓𝑓 = 0
program equivnum;
{Programador: Arnoldo París
Fecha: 21-04-2015
Propósito: Realizar una equivalencia de una calificación en letras a numérica}
uses crt;
var
califl:char;
califn:byte;
begin
clrscr;
write('Ingrese valor de la calificación en letra: ');
readln(califl);
case califl of
'A', 'a':
begin
califn:=19;
writeln('La equivalencia numérica es ',califn)
end;
'B', 'b':
begin
califn:=16;
writeln('La equivalencia numérica es ',califn)
end;
'C', 'c':
begin
califn:=12;
writeln('La equivalencia numérica es ',califn)
end;
'D', 'd':
begin
califn:=8;
writeln('La equivalencia numérica es ',califn)
end;
'E', 'e':
begin
califn:=5;
writeln('La equivalencia numérica es ',califn)
end;
'F', 'f':
begin
califn:=0;
writeln('La equivalencia numérica es ',califn)
end
else
writeln('Error en el valor de la calificación en letras')
end;
readln
end.
Anidamiento de estructuras de decisión:
Si CL1 entonces
En caso S1
Valor1:
Si CL2 entonces
.
.
fin del caso
fin del caso
de lo contrario
Si CL3 entonces
En caso S2
.
.
fin del caso
de lo contrario
Si CL4 entonces
.
.
fin del caso
fin del si
fin del si

Ejercicios:
1. Modifique el programa que calcula la nota promedio ponderada de un estudiante con tres
calificaciones parciales, tal que ahora se valide cada nota individualmente, 20%, 30% y 50%
respectivamente.
2. Construya un programa en Pascal tal que una persona lanza un dado, si obtiene un 6 gana Bs.300;
si obtiene 4 o 5 gana 200; si obtiene 3, 2 o 1 no gana nada.
3. Modificar el programa anterior tal ahora el que obtiene 6 gana adicionalmente la posibilidad de lanzar
el dado nuevamente. (Solo 1 vez más). Su programa debe mostrar la ganancia total en BS.
1.
program equivcalif;
{Programador: Arnoldo París
Fecha: 21-04-2015
Propósito: Calcular nota promedio de 3 notas y validarla individualmente}
uses crt;
const
p1=0.2;
p2=0.3;
p3=0.5;
m_error='Valor de nota inválido en el ';
var
nom:string[30];
n1,n2,n3,np:real;
begin
clrscr;
writeln('Ingrese nombre del estudiante: ');
readln(nom);
writeln('Ingrese nota del primer parcial. La nota debe estar entre 0 y 20: ');
readln(n1);
if((n1<0)or(n1>20))then
writeln(m_error,'Primer Parcial')
else
begin
writeln('Ingrese nota del segundo parcial. La nota debe estar entre 0 y 20: ');
readln(n2);
if((n2<0)or(n2>20))then
writeln(m_error,'Segundo Parcial')
else
begin
writeln('Ingrese nota del tercer parcial. La nota debe estar entre 0 y 20: ');
readln(n3);
if((n3<0)or(n3>20))then
writeln(m_error,'Tercer Parcial')
else
begin
np:=n1*p1+n2*p2+n3*p3;
writeln('La nota ponderada de ',nom,' es ',np:0:2,' puntos')
end;
end;
end;
readln
end.
2.
program lanzdado;
{Programador: Arnoldo París
Fecha: 21-04-2015
Propósito: Obtener ganancias en Bolívares al lanzar el dado}
uses crt;
const
B1=300;
B2=200;
var
dado:byte;
begin
clrscr;
writeln('Ingrese el valor obtenido: ');
readln(dado);
if((dado>=1)and(dado<=6))then
if(dado=6)then
writeln('Obtuvo un bono en Bs. ',B1)
else
if((dado=4)or(dado=5))then
writeln('Obtuvo un bono en Bs. ',B2)
else
write('No obtuvo bono alguno')
else
writeln('[Link] Invalido');
readln
end.

3.
program lanzamientodado;
{Programador: Arnoldo Paris
Fecha: 21-04-2015
Propósito: Obtener ganancias en Bolívares al lanzar el dado}
uses crt;
const
B1=300;
B2=200;
var
dado1,dado2:byte;
BT:word;
begin
clrscr;
writeln('Ingrese el valor obtenido: ');
readln(dado1);
if((dado1<1)or(dado1>6))then
writeln('Valor del dado Invalido, debe estar entre 1 y 6')
else
if((dado1=1)or(dado1=2)or(dado1=3))then
writeln('Usted no gano ningún bono')
else
if((dado1=4)or(dado1=5))then
writeln('Usted gano un bono de Bs. ',B2)
else
if(dado1=6)then
begin
writeln('Usted gano un bono de Bs. ',B1,' y puede lanzar el dado una vez más');
writeln('Ingrese el valor obtenido: ');
readln(dado2);
end;
if(dado2=6)then
begin
BT:=B1*2;
writeln('Usted gano en total un bono por Bs: ',BT);
end
else
if((dado2=4)or(dado2=5))then
begin
BT:=B1+B2;
writeln('Usted gano en total un bono por Bs. ',BT);
end
else
if((dado2=1)or(dado2=2)or(dado2=3))then
writeln('Usted gano en total un bono por Bs. ',B1);
readln
end.
04/05/15

Tema 6 – Estructuras de Repetición


Son instrucciones de los lenguajes de programación que permiten ejecutar varias veces un grupo de
sentencias (instrucciones).
Se les conoce también como estructuraras iterativas, lazos, ciclos, bucles. Cada repetición se
denomina iteración o vuelta al lazo.
Las más comunes estructuras de repetición son:

a. Repita mientras. La repetición o iteración se hace


b. Repita hasta. en base a una condición lógica.

c. Repita para. La repetición se hace en base a los


valores de un índice.

a. Repita Mientras:
Algoritmo:
0. Inicio
1. Acción A.
2. Acción B.
.
.
Estructura de Repetición

m-1. Acción L.
m. Repita mientras condición lógica sea verdadera
. Acción M
. Acción N
fin del caso.
m+1. Acción 0.
.
n. Fin.
Diagrama de Flujo:
Inicio

Acción A

Acción B

Acción L

¿Es SI
verdadera la
Condición
Lógica?

Acción M
NO

Accion N
Acción N

Fin

Pascal:
while condicionlogica do
Instruccion 1;

while condicionlogica do
begin
Instruccion 1;
Instruccion 2;
.
.
.
Instruccion P;
end;
b. Repita hasta:
Algoritmo:
0. Inicio
1. Acción A.
2. Acción B.
.
.
Estructura de Repetición

m-1. Acción L.
m. Repita
. Acción M
. Acción N
Hasta condición lógica sea verdadera
m+1. Acción 0.
.
n. Fin.
Diagrama de Flujo:

Inicio

Acción A

Acción B

Acción L

Acción M

NO
Acción N

¿Es
verdadera la
Condición
Lógica?

SI

Accion N

Fin

Pascal:
repeat
Instruccion 1;
Instruccion 2;
.
.
.
Instruccion P;
until condicionlogica;
Ejemplo:
1. Se tiene un conjunto de 100 valores numéricos. Escriba un programa que determine la suma
de ellos.
Algoritmo:
0. Inicio
1. num ← 1
2. suma ← 0
3. repita mientras (num ≤ 100)
epp(‘Ingrese el valor del número ‘, num)
leer(valor)
suma ← suma + valor
num ← suma + 1
fin del r-m
4. epp (‘La suma es ‘, suma)
5. fin.
Las variables:
num ← tiene el rol de contar números. Se les conoce como variables de conteo; son de tipo entero
suma ← tiene el rol de sumar o acumular. Se les conoce como variable de acumulación. Su tipo
depende del tipo de valor que acumula.
c. Repita para:
Llamada también repetición indizada o ‘indexada’. Se basa en una variable de tipo entero, llamada
índice ( i ), la cual inicia en un valor ( vi ) y llega hasta un valor final ( vf ). Cambiando o actualizándose
a razón ( r ). En cada iteración ( i ), tiene un valor, que está dentro del rango [ vi , vf ].

Algoritmo:
0. Inicio
1. Acción A.
2. Acción B.
.
.
Estructura de Repetición

m. Repita para 𝑖𝑖 ← 𝑣𝑣𝑣𝑣 hasta 𝑖𝑖 ← 𝑣𝑣𝑣𝑣, r


. Acción M
. Acción N
fin del r-p
m+1. Acción 0.
.
n. Fin.

𝑣𝑣𝑣𝑣 𝑣𝑣𝑣𝑣 + 𝑟𝑟 𝑣𝑣𝑣𝑣 + 2𝑟𝑟


𝑖𝑖 = … … … … … … 𝑣𝑣𝑣𝑣 (En pascal r es solo 1 y − 1)
1 2 3
Diagrama de Flujo:

Inicio

Acción A

Acción B

SI

Acción M
NO

Accion 0
Acción N

Fin

Pascal:
For i:=1 to vf do
Instruccion 1;
For i:=1 to vf do
begin
Instruccion 1;
Instruccion 2; 𝑟𝑟 = 1
.
.
.
Instruccion P;
end;

For i:=1 to vf do
Instruccion 1; 𝑟𝑟 = −1
Anidamiento de estructuras de repetición:
Repita mientras CL1
Repita
Repita para K
Repita
.
Hasta CL3
fin del r-p

Repita mientras CL4


Repita para M
.
fin del r-p
fin del r-m
Hasta CL2
Fin del r-m
Nota: cuidar de que no se produzca solapamientos de las estructuras
Instrucción Break:
La instrucción Break termina en forma arbitraria un lazo o estructura de repetición. Esto se conoce
como romper en forma antinatural una estructura iterativa. Debe cuidarse el uso de la instrucción break
cuando se tienen varias estructuras de repetición anidadas, pues termina la iteración de todas ellas.
while CL1 do
begin
--------
--------
break;
end;

repeat
-----
break;
until (CL);

for vi.... do
break;

while (CL1) do
repeat
for vi.... do
break;
until (CL2);
Ejemplo:
Se lanzan dos dados varias veces. Se detiene el lanzamiento de los dados hasta que se completen 10
de ellos o hasta que se obtengan dos decenas, simultáneamente.
program dados;
{
}
uses crt;
const
max=10;
mense='ERROR Dato Invalido';
var
dado1,dado2,lanz:byte;
begin
clrscr;
lanz:=0;
repeat
repeat
lanz:=lanz+1;
write('Ingrese el valor del dado 1: ');
readln(dado1);
if((dado1<1)or(dado1>6))then
writeln(mense);
until((dado1>=1)and(dado1<=6));
repeat
write('Ingrese valor del dado 2: ');
readln(dado2);
if((dado2<1)or(dado2>6))then
writeln(mense);
until((dado2>=1)and(dado2<=6));
if((dado1=6)and(dado2=6))then
break
until(lanz>max);
writeln('Se hicieron ',lanz,' lanzamientos.');
readln
end.
29/05/15

Tema 7 – Arreglos:

Escalares: un solo
valor en cualquier
momento.

Datos

Compuestos: un
conjunto de
valores.

En los datos compuestos, por ejemplo:


nota1? Temperatura N e notas
s
1 37,15 1 2 Parciales e
2 28,10 t
1 21,5 18,1 20
16,50 . u
2 15,3 14,5
. d .
18,10 . i .
13,75 . a .
. n .
11,5 24 21,12
t T
e
s

Datos Compuestos
Arreglos: son datos que permiten tener en memoria un conjunto finito de valores del mismo tipo. Los
valores o elementos del arreglo se acceden por la posición que ocupan dentro del conjunto.
Los conjuntos, de acuerdo al número de dimensiones que tienen, se categorizan como:
- Vectores: arreglos de 1 dimensión.
- Matrices: arreglos de 2 dimensiones.
- N-dimensionales (en general), donde 𝑛𝑛 ≥ 1
Vectores:

1 3,5 ← V[1] V: nombre o identificador del vector.


2 3,10 ← V[2]
T: tamaño de V, cuantas elementos o valores se pueden tener allí.
3 2.08 ← V[3]
. i: subíndice del vector V, que representa la posición o lugar que el valor
i . i ocupa la variable/expresión. i deberá ser de tipo entero (1 ≤ i ≤ T)
.
. V[1]: se lee como Vi.
T

Dado el vector V, de tamaño T.


a) Como leer los valores de V:
repita para i ← 1 hasta i ← T, 1
leer(V[1])
fin del r-p.

repita para i ← T hasta i ← 1, 1


leer(V[1])
fin del r-p.
b) Como escribir los valores de V:
repita para i ← 1 hasta i ← T, 1
epp(V[1])
fin del r-p.
c) Asumiendo a V de tipo numérico, asigne el valor 0 a todos los elementos de V:
repita para i ← 1 hasta i ← T, 1
V[1] ← 0
fin del r-p.
i ←1
repita mientras (i ≤ T)
V[1] ← 0
i ←i+1
fin del r-p
d) Asigne el valor 1 a todos los valores de V que ocupan una posición impar y 0 al resto:
repita para i ← 1 hasta i ← T, 1
si ((1 mod 2)≠0) entonces
V[1] ← 1
de lo contrario
V[1] ← 0
fin del s-i
fin del r-p
e) Como declarar en PASCAL el vector V de tamaño T.
Primera forma (directa):
program nombrep;
{
}
uses crt;
const
t=----;
------
var
V:array[1..T] of tipovalores;
------
------
begin
--------
--------
readln
end.

Por Ejemplo, sea el vector llamado letras de tamaño 100, que almacena letras.

program nombrep;
{
}
uses crt;
const
max=100;
------
------
var
letras:array[1..max] of char;
------
------
begin
--------
--------
readln.
end.
Segunda forma (sección de tipos):
program nombrep;
{
}
uses crt;
const
t=----;
-------
type
tipov=array[1..T] of tipovalores;
-------
-------
var
V:tipov;
-------
-------
begin
--------
--------
readln
end.

Ejemplo:
program nombrep;
{
}
uses crt;
const
max=100;
-------
-------
type
tipovector=array[1..T] of char;
-------
-------
var
letras:tipovector;
---------
---------
begin
---------
---------
readln
end.
08/06/15
Arreglos:
Matrices: Arreglos de dos dimensiones que tienen la forma siguiente:
Columnas (j)

1 X C
1 X X X M[1, C]
2 X X X
. Filas (i)
T X X M[F, C]

M[1,1]

M: Matriz de F filas y C columnas.

M[i, j]: Valor de la matriz M, que ocupa la i-esima fila y j-esima columna.
i , j: subíndices del arreglo M. son variables enteros, para referirse a filas y columnas respectivamente.
Fxc: elementos que tiene M, todos del mismo tipo.
a) Como leer los valores de la matriz M de F filas y C columnas:
repita para i ← 1 hasta i ← F, 1
repita para j ← 1 hasta j ← C, 1
leer(M[i, j]) Lectura por filas.
fin del r-p
fin del r-p.

repita para j ← 1 hasta j ← C, 1


repita para i ← 1 hasta i ← F, 1
leer(M[i, j]) Lectura por filas.
fin del r-p
fin del r-p.
b) Como escribir los valores de la Matriz M de F filas y C columnas:
repita para i ← 1 hasta i ← F, 1
repita para j ← 1 hasta j ← C, 1
epp(M[i, j]) Escritura por filas.
fin del r-p
fin del r-p.

repita para j ← 1 hasta j ← C, 1


repita para i ← 1 hasta i ← F, 1
epp(M[i, j]) Escritura por filas.
fin del r-p
fin del r-p.
c) Como escribir solo elementos de la fila 4:
repita para j ← 1 hasta j ← C, 1
epp(M[4, j])
fin del r-p.
d) Asuma que M almacena valores numéricos, asigne el valor 1 (por ejemplo) a los elementos de
la diagonal principal:
repita para i ← 1 hasta i ← F, 1
repita para j ← 1 hasta j ← C, 1
si (i = j) entonces
M[i, j] ← 1
fin del si
fin del r-p
fin del r-p.
Otra Forma (si (𝐟𝐟 = 𝐜𝐜))
repita para i ← 1 hasta i ← F, 1
M[i, i] ← 1
fin del r-p.
e) Como declarar en PASCAL, la matriz M:

Primera forma (directa):


program nomprep;
{
}
uses crt;
const
F=----;
C=----;
-------
-------
var
M:array[1..F,1..C] of tipovalores;
-----------
-----------
begin
--------
--------
--------
end.

Segunda forma (sección de tipos):


program nombrep;
{
}
uses crt;
const
F=-----;
C=-----;
-------
-------
type
nombretipo=array[1..F,1..C] of tipovalores;
--------
--------
var
M:nombretipo;
--------
--------
begin
-----------
-----------
-----------
end.

Ejemplos:
1.
program cursoPD;
uses crt;
const
maxe=10;
mense='Valor de nota invalido. Debe estar entre 0 y 20. Intente de nuevo';
type
tv=array[1.. maxe ] of real;
var
notas1p:tv;
e,tea,tenipc:byte;
s,npc:real;
begin
clrscr;
for e:=1 to maxe do
repeat
repeat
write('Ingrese nota del primer parcial del estudiante ',e,' : ');
readln(notas1p[e]);
until ((notas1p[e]>=0)or(notas1p[e]<=20));
if ((notas1p[e]<0) or (notas1p[e]>20))then
writeln(mense);
until((notas1p[e]>=0)or(notas1p[e]<=20));
s:=0;
for e:=1 to maxe do
s:=s*notas1p[e];
npc:=s/maxe;
tea:=0;
for e:=1 to maxe do;
if(notas1p[e]>=10)then
tea:=tea*1;
tenipc:=0;
for e:=1 to maxe do
if(notas1p[e]<npc)then
tenipc:=tenipc*1;
writeln;
writeln('Nota promedio del curso: ',np[Link]);
writeln;
writeln('Total de estudiantes aprobados: ',tea);
writeln;
writeln('Total de estudiantes con notas inferiores a la nota promedio del curso:
',tenipc);
readln
end.

2.
Program notasmatrices;
{Programador: Arnoldo Paris
Fecha: 08-06-15
Proposito: Para el curso de PD, se tienen las 4 notas parciales de cada estudiante.
El curso tiene 40 estudiantes. Le piden que escriba un programa que:
a) Determine la nota promedio de cada estudiante.
b) Nota promedio del curso.
c) Nombres de los estudiantes cuyas notas promedio estan por encima del valor
promedio del curso.}
Uses crt;
Const
maxe = 3;
maxp = 4;
mense = 'Error Valor Invalido. La nota debe estar entre 0 y 20.';
Type
tm = array[1..maxe, 1..maxp] Of real;
tv1 = array[1..maxe] Of real;
tv2 = array[1..maxe] Of string[60];
Var
nombres: tv2;
notas: tm;
nprom: tv1;
e,p: byte;
s,npcurso: real;
Begin
clrscr;
For e:=1 To maxe Do
Begin
write('Ingrese nombre del estudiante ',e,': ');
readln(nombres[e]);
For p:=1 To maxp Do
Begin
writeln('Parcial ',p);
Repeat
write('Ingrese nota del parcial: ');
readln(notas[e, p]);
If ((notas[e,p]<0) Or (notas[e,p]>20)) Then
writeln(mense);
Until ((notas[e,p]>=0) And (notas[e,p]<=20));
End
End;
For e:=1 To maxe Do
Begin
nprom[e] := 0;
For p:=1 To maxp Do
nprom[e] := nprom[e]+notas[e,p];
nprom[e] := nprom[e]/maxp;
End;
s := 0;
For e:=1 To maxe Do
s := s+nprom[e];
npcurso := s/maxe;
writeln('Resultados:');
writeln;
writeln('Nombre.....Nota Promedio.');
For e:=1 To maxe Do
writeln(nombres[e],' .... ',nprom[e]:0:2);
writeln;
writeln('Nota promedio del curso: ',npcurso:0:2);
writeln;
writeln('Lista de estudiantes con notas promedio mayores a la del curso: ');
For e:=1 To maxe Do
If (nprom[e]>npcurso) Then
writeln(nombres[e]);
If (nprom[e]<=npcurso) Then
begin
writeln;
writeln('No hubo estudiantes con notas mayores a las del curso.');
end;
readln

End.
3.
program conjunto;
{Programador: Arnoldo Paris
Fecha: 08-06-15
Proposito: Se tiene un conjunto de 100 valores numericos a almacenarse en una
matriz de 10x10.
Escribir un programa que muestre por pantalla:
a) La suma de todos los valores.
b) El valor promedio.}
uses crt;
const
max=2;
var
numeros:array [1..max, 1..max] of real;
i,j:byte;
suma,prom:real;
begin
clrscr;
for i:=1 to max do
for j:=1 to max do
begin
write('Ingrese valor de la fila ',i,' y columna ',j,': ');
readln(numeros[i,j]);
end;
suma:=0;
for i:=1 to max do
for j:=1 to max do
suma:=suma+numeros[i,j];
prom:=suma/(max*max);
writeln;
writeln('Resultados: ');
writeln;
writeln('La suma es ',sum[Link]);
writeln;
writeln('El promedio es ',prom:0:2);
readln
end.
4.
Program ventasmatriz;
{Programador: Arnoldo Paris
Fecha: 09-06-15
Proposito: Se tienen las ventad por departamento de cada una de las 20 tiendas de
una cadena.
Le piden que desarolle un programa que muestre por pantalla:
a) Las ventas de cada tienda.
b) Las ventas totales de la cadena.
c) La tienda en la que se produjeron las mayores ventas.
Cada tienda tiene 5 departamentos. Los datos que se tienen corresponden a un dia
cualquiera.}
Uses crt;
Const
maxt = 4;
maxd = 3;
mense = 'Error Valor Invalido. Debe ser mayor o igual a 0.';
Type
tm = array [1..maxt+1, 1..maxd+1] Of real;
Var
ventas: tm;
t,d,tmaxv: byte;
vtcad: real;
Begin
clrscr;
For t:=1 To maxt Do
For d:=1 To maxd+1 Do
ventas[t,d] := 0;
For t:=1 To maxt Do
For d:=1 To maxd Do
Repeat
write('Ingrese ventas del departamento ',d,' de la tienda ',t,': ');
readln(ventas[t,d]);
If (ventas[t,d]<0)Then
writeln(mense);
Until (ventas[t,d]>=0);
For t:=1 To maxt Do
For d:=1 To maxd Do
ventas[t,maxd+1] := ventas[t,maxd+1]+ventas[t,d];
vtcad := 0;
For t:=1 To maxt Do
vtcad := vtcad+ventas[t,maxd+1];
tmaxv := 2;
For t:=2 To maxt Do
If (ventas[t,maxd+1]>ventas[tmaxv,maxd+1])Then
tmaxv := t;
for d:=1 to maxd do
for t:=1 to maxt do
ventas[maxt+1,d]:=ventas[maxt+1,d]+ventas[t,d];
writeln;
writeln('Resultados: ');
writeln;
writeln('Ventas por tienda.');
writeln('Tienda....Ventas-Bs.');
For t:=1 To maxt Do
Begin
writeln;
writeln(t,' .... ',ventas[t,maxd+1]:0:2);
End;
writeln;
writeln('Ventas totales de la cadena-Bs: ',vt[Link]);
writeln;
writeln('Tienda de mayor ventas: ',tmaxv,' con Bs. ',ventas[tmaxv,maxd+1]:0:2);
writeln;
writeln('Ventas totales por departamento.');
writeln;
for d:=1 to maxd do
writeln('Ventas totales del departamento ',d,' fueron Bs.
',ventas[maxt+1,d]:0:2);
readln
End.
22/06/15

Tema 8 – Descomposición Modular:

Es una técnica de diseño llamada también diseño descendente, basado en la máxima ‘divide y
vencerás’, que consiste en dividir un problema en subproblemas, y esos subproblemas se pueden
dividir en subproblemas, hasta obtener subprogramas que refieren una (o muy pocas) tareas.
El gráfico generado se conoce como diagrama de descomposición modular.
Cada subproblema se le llama módulo. La solución al problema con el que se parte será la unión de
las soluciones proporcionado por los módulos.
La técnica Análisis de Entrada – Procesos – Salidas (E-P-S) se aplica a cada módulo.
Ejemplos:
1. Realice la descomposición modular del problema siguiente:
Calcular el área de un triángulo cuyas bases y alturas son conocidas.
2. Realice la descomposición modular del problema.
Se tienen las tres (3) notas parciales de cada uno de los cuarenta (40) estudiantes del curso de
PD. Determine
a. Nota promedio de cada estudiante.
b. Nota promedio del curso.
c. Nombre(s) de los estudiantes con mayor nota promedio en el curso.

3. Realice la descomposición modular del problema siguiente:


Determine el combinatorio de dos números enteros.
Esto es:
𝑛𝑛!
𝐶𝐶𝑛𝑛,𝑚𝑚 =
𝑚𝑚! (𝑛𝑛 − 𝑚𝑚)!
𝑛𝑛! = 𝑛𝑛(𝑛𝑛 − 1)𝑥𝑥(𝑛𝑛 − 2)𝑥𝑥 … 𝑥𝑥 3 𝑥𝑥 2 𝑥𝑥 1

𝐶𝐶𝑛𝑛,𝑚𝑚
Tema 9 – Subprogramas:
Normalmente:
archivo
program ----------------------

begin
Instrucción 1; } Tarea 1
Instrucción 2; } Tarea 2
Varias Tareas

end.

Y ahora se tendrá:
1) Archivo A Archivo B

Subprograma A Subprograma B

Tarea 1 Tarea 2

2) Archivo
Subprograma A
Tarea 1

Subprograma B

Tarea 2
Los subprogramas son programas para resolver un problema. Es decir, realizar una tarea. Ellos serán
la implementación de los subprogramas o módulos de la descomposición modular.
Se construyen con las mismas estructuras estudiadas: estructuras secuenciales, de decisión, de
repetición, utilizan datos escalares o compuestos (arreglos).
Se clasifican de acuerdo a:

Externos
Archivo 1 Archivo 2

Subprograma A Subprograma B

Archivo 3

Llamada Subprograma A

Llamada Subprograma B

Subprograma A y B son externos con relación a su llamada o invocación


a ≔ sqr(b) → Subprograma tipo función.
clrscr → Subprograma.
writeln(a) → Subprograma tipo procedimiento.
Internos:
archivo

Subprograma A

Subprograma B

Llamada Subprograma A

Llamada Subprograma B

Subprograma A y subprograma B son internos con respecto a su llamada o invocación.

Los subprogramas:
a) Reciben y sacan datos.
b) Tienen argumentos o parámetros. En ellos se reciben y se sacan datos.
c) Son identificados con un nombre el cual se usará para su invocación o llamada.
d) Tienen un punto de retorno. Esto es regresan al lugar del programa desde donde se le invocó.
Algoritmo – Programa Principal:
0. Inicio
1. Acción 1.
.
.

m. Variable ← nombre función (P1, P2, … , PN)

.
.
n. Fin. Invocación de la función.
Una función en Pascal se declara como:
program nombreprograma;
uses crt;
const
-------
-------
type
-------
-------
var
-------
-------
Function
nombrefunción(Parametro1:tipo,Parametro2:tipo,...,ParametroN:tipo):tipo;
var
------
------ Parámetros Formales.
begin
------ Especificación de la Función.
------
------
end; Parámetros Reales.
begin
------
V:=nombrefuncion (P1,P2,...,PN); Llamada o invocación de la
------ función..
------
end.

Ejemplo:
program area;
{Programador: Arnoldo Paris
Fecha: 22-06-15
Proposito: Desarrolle el modulo de calcular el area de un triangulo.}
uses crt;
const
mense='Error Valor Invalido - Tienen que ser mayor que 0.';
var
b,h,at:real;
function calculararea(base:real;altura:real):real;
var
area:real;
begin
area:=base*altura/2;
calculararea:=area;
end;
begin
clrscr;
repeat
write('Ingrese valores de la base y la altura del triangulo: ');
readln(b,h);
if(b<0)or(h<0)then
begin
writeln;
writeln(mense);
writeln;
end;
until(b>0)and(h>0);
at:=calculararea(b,h);
writeln;
writeln('El area del triangulo es: ',at:0:2);
readln
end.

También podría gustarte