Вы находитесь на странице: 1из 33

UNIVERSIDAD DE PANAMÁ

CENTRO REGIONAL UNIVERSITARIO DE VERAGUAS

FACULTAD DE INFORMÁTICA, ELECTRÓNICA Y COMUNICACIÓN

DEPARTAMENTO DE INFORMÁTICA

INTRODUCCIÓN A LA LÓGICA DE PROGRAMACIÓN

Apuntes de clases dirigido a los aspirantes de


primer ingreso de la Licenciatura en Informática
para la Gestión Educativa y Empresarial.

AUTORES

MSc. GIANNINA NÚÑEZ MARÍN

MSc. DIEGO SANTIMATEO GÁLVEZ

SANTIAGO, ENERO DE 2006.


i

ÍNDICE
ÍNDICE ............................................................................................................................. i

1. INTRODUCCIÓN ................................................................................................... 1

2. OBJETIVOS ............................................................................................................ 1

3. METODOLOGÍA.................................................................................................... 1

4. CÁLCULO PROPOSIONAL .................................................................................. 1

4.1. Cálculo Proposicional....................................................................................... 1

4.2. Proposiciones ................................................................................................... 2

4.3. Construcción de Proposiciones complejas ...................................................... 3


4.3.1. Uso de variables..................................................................................................................................3

4.4. Ejercicios .......................................................................................................... 5

4.5. Ejercicio ............................................................................................................ 5

4.6. Tabla de Verdad................................................................................................ 5

4.7. Práctica............................................................................................................. 8

4.8. Ejercicio ............................................................................................................ 8

5. PASOS PARA LA CONFECCIÓN DE UN PROGRAMA ................................ 10

5.1. Fase de resolución del problema ................................................................... 10


5.1.1. Análisis del problema .......................................................................................................................10
5.1.2. Desarrollar la lógica del programa ..................................................................................................11

5.2. Fase de implementación del programa .......................................................... 11


5.2.1. Codificación.......................................................................................................................................12
5.2.2. Programa Fuente ...............................................................................................................................12
5.2.3. Compilador.........................................................................................................................................12
5.2.4. Programa objeto ................................................................................................................................12
ii

5.2.5. Ejecución del programa....................................................................................................................13


5.2.6. Depuración.........................................................................................................................................13

5.3. Fase de documentación y mantenimiento ...................................................... 13

6. DIAGRAMAS DE FLUJO ................................................................................... 13

7. EXPRESIONES ARITMÉTICAS ........................................................................ 14

8. INSTRUCCIONES FUNDAMENTALES DE UN LENGUAJE DE


PROGRAMACIÓN ...................................................................................................... 15

8.1. Variable ........................................................................................................... 15

8.2. Instrucción de entrada.................................................................................... 15

8.3. Instrucción de salida....................................................................................... 16

8.4. Práctica........................................................................................................... 17

8.5. Instrucción de asignación o atribución........................................................... 17

8.6. Práctica. .......................................................................................................... 19

8.7. Expresiones lógicas ........................................................................................ 20


8.7.1. Variable booleana..............................................................................................................................20
8.7.2. Expresión booleana relacional.........................................................................................................20
8.7.3. Expresión booleana compleja ..........................................................................................................21
8.7.4. Prioridad de los operadores.............................................................................................................21

8.8. Instrucción de transferencia condicional. ...................................................... 21

8.9. Práctica........................................................................................................... 23

8.10. Acumuladores y contadores ........................................................................... 24

8.11. Instrucción de repetición. .............................................................................. 25

8.12. Práctica ........................................................................................................... 27

BIBLIOGRAFIA CONSULTADA............................................................................... 29
iii

SITIOS WEB RECOMENDADOS.............................................................................. 29


1

1. INTRODUCCIÓN
El ser humano puede expresar su pensamiento en un sinnúmero de maneras, lo que permite que
una expresión en el lenguaje natural, pueda dar origen a varios significados diferentes. Cuando se
utilizan los Lenguajes de Programación de computadoras, las ideas deben ser precisas y ordenadas para
poder lograr los objetivos que se desean con las instrucciones que se hagan llegar a la computadora.
Estas instrucciones son conocidas como programa de computadora.
En este curso se inicia en la programación de computadoras por medio de Lenguajes de
Programación, es por ello, que se requiere organizar la solución de problemas de una manera precisa y
ordenada, libre de toda ambigüedad. Un recurso matemático de gran utilidad para formalizar la
estructura de las ideas que se suponen contribuirá a la solución de algún problema, es el Cálculo
Proposicional.
En la primera parte del Curso Propedéutico de la carrera de Licenciatura en Informática para la
Gestión Educativa y Empresarial, se tratan los componentes del Cálculo Proposicional que se
consideran de utilidad para la creación de instrucciones básicas de un programa de computadora, sin
adentrarse en la prueba formal del mismo y tomando en cuenta solo el paradigma de programación
procedural o imperativo.
La segunda parte del Curso de manera introductoria trata sobre las fases de resolución de
problema mediante un programa de computadora y las instrucciones fundamentales de un lenguaje de
programación de computadoras: entrada, salida, asignación, transferencia condicional y repetición.
Con estos dos temas, se pretende ofrecer al estudiante una panorámica general e introductoria de
la programación de computadoras, la cual es esencial para obtener el título de Licenciatura en
Informática para la Gestión Educativa y Empresarial.

2. OBJETIVOS
1. Construir proposiciones lógicas a partir de situaciones de la vida real.
2. Utilizar la tabla de verdad para determinar el valor de una expresión lógica.
3. Desarrollar destrezas en la confección de algoritmos para la solución de problemas.
4. Conocer las instrucciones fundamentales de un lenguaje de programación de alto nivel.

3. METODOLOGÍA
Mediante sesiones plenarias se discutirán conceptos, procedimientos y ejemplos para identificar
dudas o debilidades en los conocimientos previos. Se realizarán prácticas en grupos bajo la supervisión
y apoyo del facilitador. En ambos casos el facilitador ofrecerá la orientación y realimentación
correspondiente. Al finalizar cada semana se realizará una prueba sumativa.

4. CÁLCULO PROPOSIONAL

4.1. Cálculo Proposicional


El cálculo proposicional es la rama de la Lógica que trata sobre lógica de las oraciones, así
como de las combinaciones de ellas o del resultado de combinarlas, pero solo se consideran aquellas
2

oraciones que pueden identificarse como verdaderas o falsas, en cuyo caso reciben el nombre particular
de proposiciones.

4.2. Proposiciones
Las oraciones o afirmaciones que se consideran en el cálculo proposicional solo pueden tener
valor verdadero o falso, pero no ambos. Estas afirmaciones se conocen como proposiciones . Lo
anterior significa que si no podemos definir o identificar el valor verdadero o falso de una expresión,
entonces la misma no es una proposición, generalmente las interrogantes, exclamaciones, y las
expresiones imperativas no son proposiciones.
La proposición es el significado de una idea, enunciado, conjunto de palabras o frases a las que
se les puede asignar uno y sólo uno de los valores de verdad: verdadero (V) o falso (F). 1
Ejemplo 1
Oración o frase Comentario
Tú mides 5.5 pies Es una proposición
5 + 8 = 12 Es una proposición
6 – 11 = -5 Es una proposición
¿Te matriculaste ? NO es una proposición
Apaga la luz NO es una proposición
Me gusta este curso Es una proposición
Tengo 2 hermanos Es una proposición
Prohibido pasar NO es una proposición

Puedes practicar más sobre el concepto de proposiciones en el sitio web:


http://www.cs.odu.edu/~toida/nerzic/content/logic/prop_logic/proposition/proposition.html
Una proposición puede ser simple o atómica, lo que significa que no puede subdividirse. Las
proposiciones atómicas se pueden combinar mediante conectores lógicos para formar proposiciones
compuestas.

Ejemplo 2
Oración o frase Comentario
Tú mides 5.5 pies Es una proposición atómica
5 + 8 = 12 Es una proposición atómica
Está lloviendo y no se ve el sol Es una proposición compuesta
Si sale el sol entonces voy al cine Es una proposición compuesta
11 es un número impar y es Es una proposición compuesta
mayor que 7
Todos los gatos tienen siete vidas Es una proposición atómica

1
http://soko.com.ar/matem/Logica_proposicional.htm
3

Por lo general, a las proposiciones se representan con letras del alfabeto desde la letra p, es decir, p, q,
r, s, t,... etc. La letra que corresponde a una proposición se conoce como variable proposicional. Así,
por ejemplo, podemos citar las siguientes proposiciones y su valor de verdad:
Proposición Variable Valor
12 + 21 = 33 p V
Panamá tiene siete provincias q F
El perro es un mamífero r V
1972 es un número par s V

4.3. Construcción de Proposiciones complejas


A partir de proposiciones atómicas y empleando conectores u operadores lógicos podemos
construir proposiciones compuestas. En la siguiente tabla presentamos los conectores lógicos que
utilizaremos en este curso y sus respectivos significados.

Conector Símbolo Significado Prioridad


negación not ¬ Niega la proposición que precede 1
Y and ∧ Conjunción Y 2
O or ∨ Disyunción O 3
Si ... entonces If ...then → Condicional, si ... entonces 4

La prioridad indica el orden en que deben atenderse o ejecutarse los operadores o conectores.
En nuestro caso el operador de mayor prioridad es la negación, por lo tanto debe aplicarse antes que
los otros. Posteriormente, cuando se evalúen proposiciones (encontrar el valor de la proposición) se
hará referencia a las prioridades, para darle sentido a las mismas.
De manera general, si p y q representan dos proposiciones cualesquiera, entonces, ¬p , p ∧ q ,
p ∨ q , p → q también son proposiciones.

4.3.1. Uso de variables


Aristóteles abrevió los enunciados por medio de letras conocidas como variables, para dar
mayor precisión y formalización a las expresiones lógicas, permitiendo así generalizar el tratamiento de
las proposiciones ya que evita hacer referencia a proposiciones particulares. A continuación
presentamos ejemplos del uso de variables, conectores y de proposiciones compuestas derivados de
http://www.cibernous.com/logica/enunciados/enunciados1.html

ü NEGACIÓN: se representa por el símbolo ~ ó ¬ .


Así, el enunciado ¬p se lee: " no p"; "no es cierto que p"; "ni p".
4

Consideremos la proposición “yo soy puntual”. Se trata de una proposición atómica, que podemos
representar con la variable p, es decir p significa “yo soy puntual”. Si negamos esta proposición,
escribir “yo no soy puntual” es equivalente a ¬p, por otra parte el enunciado “no es verdad que yo
no soy puntual” se formularía: ¬¬p, debido a que estamos realizando una doble negación de la
proposición p. Tanto ¬p como ¬¬p son proposiciones compuestas.

ü CONJUNCIÓN : su símbolo es ∧ : (podemos utilizar también el signo & ) El enunciado p ∧ q


se lee: “p y q”. La proposición p ∧ c ∧ r se lee: "p y c y r" ( p y también c, y además r ).
La proposición: viajo a la India y a China se escribe: p ∧ q , donde p es la variable que
representa a viajar a India y q es la variable que representa a viajar a China. Podemos observar
que : p ∧ q es equivalente a : q ∧ p, ya que no interesa destacar el país que se visitó primero sino,
la visita a ambos países.

ü DISYUNCIÓN: Su símbolo es ∨ .
El enunciado p ∨ q se lee: “p O q”. La proposición p ∨ s ∨ r se lee: "p O s O r”..
El enunciado: llegaré en tren o en avión se formula así: t ∨ s, donde t es la variable que representa
llegar en tren y s la variable que representa llegar en avión. En este caso t ∨ s es equivalente a: s
∨ t, ya que se quiere indicar que se puede llegar en uno de los dos medios de transporte e incluso
utilizando ambos.

ü CONDICIONAL O IMPLICACIÓN: Su símbolo es → y se traduce por: si....entonces.


La proposición p → q se lee: “si p entonces q” o “p implica q”.

El enunciado: si vienes pronto, iremos al cine se formula así: p → q , donde p es la variable que
representa al antecendente “venir pronto” y q a la variable “ir al cine” que es el consecuente.
p → ( q → r ) se leerá así:
si p entonces q entonces r ( p implica q entonces r).
Una implicación puede formularse de diversas maneras, todas las formas siguientes son equivalentes:
• si p , entonces q.
• p implica q.
• p solo si q.
• p es suficiente para q.
• q si p.
• si p, q
• q siempre que p.
• q es necesaria para p.
• es necesario que se cumpla p para que se cumpla q.
5

4.4. Ejercicios
Formaliza las siguientes proposiciones2
Utiliza variables proposicionales y los conectores necesarios para formalizar las siguientes
proposiciones. Identifica primero las proposiciones atómicas.
a. No es cierto que no me guste bailar
b. Me gusta bailar y leer libros de ciencia ficción.
c. Si los gatos de mi hermana no soltaran tanto pelo me gustaría acariciarlos.
d. Si viera un marciano con mis propios ojos, creería que hay vida extraterrestre.
e. Una de dos: o salgo a dar un paseo, o me pongo a estudiar como un energúmeno.
f. Si los elefantes volaran o supieran tocar el acordeón, pensaría que estoy como una
regadera y dejaría que me internaran en un psiquiátrico.
g. Prefiero ir de vacaciones o estar sin hacer nada si tengo tiempo para ello y no tengo que
ir a trabajar.
h. Ella sonríe solo si es feliz.
Resultados

4.5. Ejercicio
Formaliza la siguiente proposición3
Si tuvieran que justificarse ciertos hechos por su enorme tradición entonces, si estos hechos
son inofensivos y respetan a todo ser viviente y al medio ambiente, no habría ningún problema.
Pero si los hechos son bárbaros o no respetuosos con los seres vivientes o el medio ambiente,
entonces habría que dejar de justificarlos o no podríamos considerarnos dignos de nuestro
tiempo.
Resultado

4.6. Tabla de Verdad


Para determinar el valor verdadero o falso de una proposición compuesta, es necesario conocer
la definición de valores de cada conector u operador lógico.
El valor de la proposición que resulta al utilizar un conector lógico depende de los valores de las
proposiciones atómicas que se utilizan y que permiten hacer las definiciones de cada operador lógico.
La tabla que resulta se conoce como tabla de verdad y es muy utilizada para determinar el valor de un
enunciado.

p q Disyunción Conjunción Negación Implicación


p∨ q p∧ q ¬p p→ q
V V V V F V

V F V F F F

2
http://www.cibernous.com/logica/ejercicios/ejercicio1.html
3
http://www.cibernous.com/logica/ejercicios/ejercicio1.html
6

F V V F V V

F F F F V V
7

Ejemplo 3
Use una tabla de verdad para determinar el valor de la expresión: p ∨ ¬ p
p Negación Disyunción
¬p p ∨ ¬p
V F V
F V V

Para encontrar el valor del enunciado p ∨ ¬p se toman en cuenta los dos posibles
valores de proposición p, luego se determina el valor de ¬p y finalmente usando la tabla de
verdad del conector v determinamos los valores de p ∨ ¬p. En este caso resultó que la
proposición dada siempre es verdad, por lo que pertenece a un grupo especial de
proposiciones conocidas como tautología. De manera similar, existen proposiciones que
siempre son falsas y pertenecen al grupo de las contradicciones. Analice por ejemplo, la
proposición p ∧ ¬p. Verifique si ¬p → p es una tautología.
Ejemplo 4
Use una tabla de verdad para determinar los valores de la proposición:
p → q ∨ r.
Disyunción Implicación
p q r q∨ r p→q∨ r

V V V V V
V V F V V
V F V V V
V F F F F
F V V V V
F V F V V
F F V V V
F F F F V

En este caso tenemos tres variables, por lo que debemos hacer ocho (8) permutaciones de los
valores de las variables p, q y r, como puede observarse en las tres primeras columnas. De manera
general podemos obtener la cantidad de permutaciones usando la fórmula 2n, donde n es la cantidad de
variables que intervienen en la proposición. En nuestro ejemplo tenemos tres variables, por lo que la
fórmula es 23 = 2x2x2 = 8.
En la tabla de verdad de este ejemplo podemos observar que primero se tratan los valores de q
∨ r ya que la v tiene prioridad sobre la → . En el resultado final de la implicación se nota que la misma
solo será falsa en uno de los ocho casos posibles.
8

Si desea verificar los valores de una proposición (con una tabla de verdad) utilizando un
programa de computadora puede acudir a la siguiente dirección web, donde solo tiene que escribir su
proposición para ver los respectivos resultados:
http://www.cibernous.com/logica/logica-central.html

4.7. Práctica
Utilice tablas de verdad para comprobar las siguientes equivalencias que se dan en la lógica
proposicional:
DENOMINACIÓN REPRESENTACIÓN LÓGICA

Leyes Equipotenciales A → B = ¬A ∨ B
A ∧ ¬A = F
A ∨ ¬A = V

Leyes Conmutativas A∧ B=B∧ A


A∨ B=B∨ A

Leyes Distributivas A ∧ (B ∨ C) = (A ∧ B) ∨ (A ∧ C)
A ∨ (B ∧ C) = (A ∨ B) ∧ (A ∨ C)

Leyes Asociativas A ∧ (B ∧ C) = (A ∧ B) ∧ C
A ∨ (B ∨ C) = (A ∨ B) ∨ C

Leyes Absortivas A ∧ (A ∨ B) = A
A ∨ (A ∧ B) = A

Leyes de DeMorgan ¬ (A ∧ B) = ¬A ∨ ¬ B
¬ (A ∨ B) = ¬A ∧ ¬ B
Prueba tu comprensión respecto a la construcción de proposiciones en la dirección:
http://www.cs.odu.edu/~toida/nerzic/content/logic/prop_logic/construction/construction.html

4.8. Ejercicio 4
1.¿ Cuál de los siguientes enunciados son proposiciones ? Explique cada caso.
a. Pocrí es la cabecera de Las Tablas
b. 5+ 3 = 7
c. Abra la puerta
d. 5 + 7 < 10
e. La luna es un satélite de la Tierra
f. x + 5 = 7
2. Exprese la negación de las proposiciones del problema anterior.

4
http://www.cs.odu.edu/~toida/nerzic/content/questions/unit3q.html
9

3. Sean p y q las siguientes proposiciones:

p: Tú carro no tiene gasolina.


q: Tú no puedes manejar tu carro.
Escriba las siguientes proposiciones usando las variables p y q, así como los conectores lógicos
necesarios.
a) Tú carro tiene gasolina.
b) No puedes manejar tu carro si no tiene gasolina.
c) Si puedes manejar tu carro es porque tiene gasolina.
d) Si no puedes manejar tu carro, entonces no tiene gasolina.
4. Determine el valor de cada una de los siguientes enunciados. Explique su respuesta.
a) Si 0.5 es un entero, entonces 1 + 0.5 = 3.
b) Si los carros pueden volar entoces 1 + 1 = 3.
c) Si 5 > 2 then los cerdos tienen tres patas.
d) Si 3*5 = 15 entonces 1 + 2 = 3.
5. Construya una tabla de verdad para cada una de las siguientes proposiciones. Comente los
resultados.
a) p ∧ ( ¬ q ∧ r)
b) (p ∨ ¬ q ) → q
c) (p → q) ∨ (¬ q → ¬ p)
Resultados #1
a. [p: me gusta bailar]. ¬(¬p)

b. [p: me gusta bailar. q: me gusta leer libros de ciencia ficción]. p∧ q

c. [ p: los gatos de mi hermana sueltan pelo. r: me gusta acariciar los gatos ]. ¬p → r

d. [ p: ver un marciano con mis propios ojos. t :creer en los extraterrestres ]. p → t

e. [ p: salir a dar un paseo. s: estudiar como un energúmeno]. p∨ s

f. [ s: los elefantes vuelan. t: los elefantes tocan el acordeón. r: estar loco. p: internar en un psiquiátrico
]. ( s ∨ t ) → ( r ∧ p)
g. [ s: ir de vacaciones. x: no hacer nada. t: tener tiempo. i: ir a trabajar ].
(t ∧ ¬ i ) → (s ∨ x )
Resultado #2
Las proposiciones atómicas que se identifican son las siguientes:
j: justificar hechos por su tradición. i: ser inofensivo. r: ser respetuoso con los seres vivos. m: ser
respetuoso con el medio ambiente. p: tener problemas. b: ser bárbaro. d: ser digno de nuestro tiempo.
En consecuencia la expresión lógica compuesta que se deriva es:
j → (( i & m) → ¬p) & (( b ∨ ¬( r ∨ m) → (¬j ∨ ¬d))
10

5. PASOS PARA LA CONFECCIÓN DE UN PROGRAMA


La confección de un programa se puede subdividir en tres fases, a saber:
Ø Fase de resolución del problema
Ø Fase de implementación del programa.
Ø Fase de documentación y mantenimiento del programa.

5.1. Fase de resolución del problema


Esta fase incluye la definición del problema, la confección de la lógica de la solución.

5.1.1. Análisis del problema


Se refiere a la especificación de los siguientes elementos:
a. Salida: Los resultados u objetivos que se desean lograr. Es decir, es el objetivo que se desea
alcanzar con la ejecución del programa, en ella debe especificarse el orden en que deben aparecer
los valores que representan el objetivo deseado, también debe incluirse el tipo de valores que
aparecerán.
b. Proceso: Conjunto de pasos que se deben seguir para lograr la salida solicitada.
c. Entrada: Datos o valores necesarios en el proceso y que deben conducir a la salida deseada, por lo
tanto en la entrada se debe especificar el tipo de valores que la forman y las restricciones que tienen
esos valores.
Ejemplo 5. Análisis del problema: “Se desea calcular la suma de dos números”.
Se desea obtener la suma de dos números.
Solución:
Salida: Obtener la suma.
Tipo del valor esperado: s ∈ R
Proceso: s = a+b
Entrada: Dominio es a, b ∈R.
Ejemplo 6. Definición del problema para calcular el área de un círculo.
Se desea calcular él área de un círculo
Solución:
Salida: Obtener él área de un círculo de radio r.
Tipos de valores esperados: a ∈ R +
Proceso: a = πr 2
Entrada: Dominio es r∈R+ con r≠0.
Ejemplo 7. Análisis del problema: “Se desea obtener el salario bruto y el 10% del salario de
un empleado, dadas las horas trabajadas y el salario por hora.
Se desea calcular a) el salario bruto b) el 10% del salario bruto.
Solución:
Salida: Salario bruto
10% del salario bruto
Tipos de valores esperados: SalBruto, Sal10 por100 ∈ R +
Proceso: SalBruto = Horas x SalHora
11

Sal10por100 = SalBruto x 10/100


Entrada: Dominio Horas, SalHora ∈R+
Ejemplo 8. Análisis del problema: “Calcular las raíces de una ecuación de segundo grado en
una variable”.
Se desea calcular las raíces reales de una ecuación de segundo grado.
Solución:
Salida: Obtener las raíces reales de una ecuación de segundo grado.
Tipos de valores esperados: xi , x2 ∈ R
− b + b 2 − 4ac
x1 =
Proceso: Si b 2 − 4 ac ≥ 0 entonces 2a
− b − b 2 − 4ac
x2 =
2a
en caso contrario no interesan los valores
Entrada: Dominio es a, b, c∈R con a≠0.

5.1.2. Desarrollar la lógica del programa


Consiste en determinar el algoritmo que permita alcanzar el objetivo.
Un algoritmo es un método para resolver un problema, mediante un conjunto de pasos precisos,
definidos y finitos. Específicamente es preciso porque se indica el orden de realización en cada paso; es
definido ya que si se sigue dos veces, se obtiene el mismo resultado cada vez; y es finito porque tiene
fin, es decir, tiene un número determinado de pasos.
Para diseñar un algoritmo se puede seguir cualquiera de las dos actividades:
a. Crear un diagrama de flujo: Es la representación gráfica del algoritmo.
b. Usar una pseudocodificación: Es un narrativo de las instrucciones que son necesarias para lograr el
objetivo, pero descritas en forma breve y enumeradas paso a paso.
Ejemplo 9. Diseño del algoritmo del problema para calcular el área de un círculo.
El pseudocódigo del algoritmo es como sigue
1. Leer el radio r
2. Calcular a = πr
2

3. Escribir “El área del círculo de radio r es a.”

Ejemplo 10. Diseño del algoritmo del problema del Ejemplo 7.


Pseudocódigo
1. Leer Horas, SalHora
2. Calcular SalBruto = Horas x SalHora
3. Calcular Sal10por100 = SalBruto x 10/100
4. Escribir SalBruto, Sal10por100

5.2. Fase de implementación del programa


En esta fase se incluye la codificación del programa fuente, la compilación para obtener el programa
objeto, la ejecución del mismo y la depuración.
12

5.2.1. Codificación
Es la transcripción de la lógica o diseño del programa a instrucciones del lenguaje de programación que
usualmente es de alto nivel. El resultado de la codificación es un programa denominado programa
fuente.

5.2.2. Programa Fuente


Es un programa escrito en las instrucciones de un lenguaje de alto nivel. Los programas fuentes siempre
requieren de algún tipo de traducción para ser ejecutados, es decir, debe ser traducido a lenguaje
máquina, para eso se utiliza el compilador.
Ejemplo 11. Programa fuente en Pascal del algoritmo del problema para calcular el área de un
círculo.
Program area; cabecera
(*Programa que calcula el área de un círculo dado su radio*) comentario
var
r, a :real; lista de variables
begin
write (‘indique el radio del círculo: ‘); solución
readln(r);
a := pi()*pi()*r;
writeln (‘el área del círculo de radio ‘,r,’ es: ‘,a)
end.

5.2.3. Compilador
El compilador es un conjunto de programas que tiene entre otras las siguientes funciones:
a. Reservar el área de memoria de todas y cada una de las variables.
b. Detectar y presentar en pantalla los errores de sintaxis del programa fuente.
c. Incorporar al programa fuente todas las funciones del lenguaje que ya estén programadas
(funciones intrínsecas).
d. Si existen errores de sintaxis el usuario debe corregirlos y volver a compilar el programa. Estos
errores son normalmente por el uso incorrecto de las reglas gramaticales del lenguaje, es decir, son
errores de sintaxis .
e. Si no existen errores de sintaxis, el compilador debe construir un programa equivalente al programa
fuente, pero escrito en lenguaje de máquina. Este nuevo programa se llama programa objeto,
pero todavía no es ejecutable directamente, el algunos casos.
f. Luego el compilador realiza la fase de montaje o enlace (link), carga el programa objeto con las
librerías del programa del compilador y el resultado es un programa objeto ejecutable.

5.2.4. Programa objeto


El resultado del proceso de compilación es nuevo programa que recibe el nombre de: programa
objeto.
13

5.2.5. Ejecución del programa


Cuando el programa ejecutable se ha creado se puede ejecutar con sólo escribir su nombre, si no
existen errores durante la ejecución, denominados errores en tiempo de ejecución, se obtiene la
salida deseada. Los errores de ejecución se producen por instrucciones que la computadora puede
comprender, pero no ejecutar, por ejemplo división por cero, raíz cuadrada de un real negativo.
Durante la ejecución se introducen los datos a la CPU por medio de un dispositivo de entrada (por
ejemplo el teclado), y los resultados de la ejecución del programa se presentan en un dispositivo de
salida como la pantalla o la impresora.

5.2.6. Depuración
Consiste en el proceso de prueba del programa con una amplia variedad de datos de entrada, que
determinarán si el programa tiene errores lógicos . Los valores de prueba, deben ser valores normales
de entrada, valores extremos de entrada que comprueben los límites del programa y valores que
comprueben aspectos especiales del programa.
Los errores lógicos, se producen en la lógica del programa y se debe volver a la fase de diseño para
corregirlos.

5.3. Fase de documentación y mantenimiento


La documentación consiste en las descripciones de los pasos en la solución del problema. Los
programas con escasa documentación son difíciles de leer y por tanto de depurar, corregir y mejorar.
La documentación puede ser interna y externa. Es interna cuando se incorpora en el programa como
comentarios; y es externa cuando incluye análisis, diseño del algoritmo (pseudocodificación o diagrama
de flujo), manuales de usuario con instrucciones para ejecutar el programa y para interpretar los
resultados.
El mantenimiento se refiere a cambios futuros en el programa ya sea para corregir errores o realizar
mejoras, en estos casos es fundamental la documentación.

6. DIAGRAMAS DE FLUJO
Como ya se ha dicho anteriormente esta es la representación de la lógica de un programa, y se realiza
mediante figuras geométricas. En el cuadro se presentan los símbolos, utilidad y su asociación con las
diferentes instrucciones de un lenguaje que se explican más adelante.
NOMBRE Y FUNCIÓN SÍMBOLO ASOCIADO CON

1. Óvalo : se utiliza para indicar el inicio o el fin de un


programa.
2. Paralelogramo : indica una entrada o salida. Entrada, salida

3. Rectángulo : indica un proceso. Asignación

4. Rombo : indica alguna decisión. Transferencia


condicional
5. Flecha : permite señalar el flujo de la lógica.
14

6. Círculo: conector dentro de página. Permite


indicar que el diagrama continúa en otra parte
dentro de la página.
7. Pentágono : conector de una página a otra. Sirve
para indicar que el diagrama continúa en otra
página

7. EXPRESIONES ARITMÉTICAS
Una expresión es la que une mediante operadores aritméticos datos o funciones.
Específicamente, una expresión aritmética puede ser: una constante, por ejemplo 50; una variable, por
ejemplo, suma; o bien una combinación de constantes y/o variables unidas por operadores
aritméticos, como por ejemplo 2*pi*r.
En el siguiente cuadro se muestran los operadores, su significado y la jerarquía que tiene dentro de una
expresión.
OPERADOR SIGNIFICADO JERARQUÍA EJEMPLO RESULTADO
* Producto 1 a*b Producto de a y b
/ Div real 1 a/b Cociente de a
entre b
Div Div entera 1 a div b Cociente entero
de a entre b
Mod Residuo de la 1 a mod b Residuo de la
división división de a entre
b
+ Suma 2 a+b Suma de a y b
- Resta 2 a- b Resta de a y b

El orden de evaluación de las expresiones atiende a los siguientes criterios:


1. Cuando se tienen subexpresiones entre paréntesis éstas se evalúan primero, y las subexpresiones
con paréntesis anidados se evalúan de adentro hacia afuera.
2. El orden de evaluación de una expresión aritmética atiende a la jerarquía de los operadores, es
decir, en una expresión o subexpresión los operadores de jerarquía 1 se evalúan primero que los de
jerarquía 2.
3. Cuando se tienen operadores de la misma jerarquía en una expresión éstos se evalúan de izquierda a
derecha.
Ejemplo 12 . Evaluación de expresiones aritméticas.
En la expresión C = A+B/2, primero se evalúa la división B/ 2 y a este resultado se suma el
valor de A.
Para la expresión cos(A*B*C)+P/K-100 los resultados se obtienen de la siguiente manera.
R1= A*B
R2 = R1*C
R3 = cos(R2)
R4 = P/K
15

R5 = R3+R4
R6 = R5-100.

8. INSTRUCCIONES FUNDAMENTALES DE UN LENGUAJE DE


PROGRAMACIÓN
Son las instrucciones de cualquier lenguaje de programación suficientes para la elaboración de un
programa. Estas instrucciones se encuentran en todos los lenguajes, pero con nombres distintos.
Antes de ver las instrucciones de un lenguaje de programación es importante estudiar el concepto de
variable.

8.1. Variable
Para un lenguaje de programación una variable es una dirección de memoria que ha sido asociada con
un nombre el cual se conoce como nombre de la variable , en la localidad correspondiente a esa
dirección se almacena el valor de la variable . Este valor puede cambiar durante la ejecución del
programa.
Una variable sólo puede tener un valor en un instante dado.
En Pascal el nombre de la variable se considera como una cadena o secuencia de caracteres, el
primero de los cuales debe ser una letra y el único carácter especial aceptado es el signo de subrayado.
Ejemplo 13. Nombres de variables
Nombre Válido
12Edad Inválido empieza con un número
Altura Dim1 Inválido contiene un espacio en blanco
Numero&Empleado Inválido contiene un signo especial no permitido
Numero_1 Válido
Alt2 Válido

Es importante destacar que en muchos lenguajes de programación cada variable tiene un tipo definido y
por tanto sólo se puede asignar valores del mismo tipo a la variable. Por ejemplo, si la variable Nombre
es una cadena no se puede almacenar en ella un número.

8.2. Instrucción de entrada


Es la que permite transferir el contenido de un medio de almacenamiento externo hacia la memoria,
mediante la asignación a una variable. El medio externo puede ser el teclado , una unidad de disco o
una línea que conecte a la computadora con otro dispositivo.
En otros términos, la instrucción de entrada está asociada con el verbo leer, el cual debe ir acompañado
de los nombres de las variables en cuyas localidades deben almacenarse los valores leídos.
La operación de entrada permite proporcionar datos durante la ejecución de un programa. Estos datos
pueden ser enteros, reales, caracteres o cadenas. Los datos lógicos (verdadero o falso) no se pueden
leer.
En el siguiente cuadro se presenta la sintaxis de la operación de entrada.
16

Pseudocódigo Flujograma Representación de la entrada


Leer var1, var2, …, var n
Leer var1,var2,…varn

Ejemplo 14. Instrucción de entrada.


Instrucción Ejecución Explicación
Leer nombre Pedro La variable nombre almacena el valor Pedro
Leer edad 45 La variable edad almacena el valor 45
Leer altura 1.65 La variable altura almacena el valor 1.65

8.3. Instrucción de salida.


Es la que permite transferir el contenido de la memoria hacia un medio de almacenamiento o hacia un
dispositivo de salida como la pantalla o impresora.
En otros términos, está asociada con el verbo escribir, grabar o desplegar y permite transferir el
contenido de la localidad de memoria de una variable hacia un medio de almacenamiento o un
dispositivo de salida, por lo tanto el verbo escribir debe ir acompañado de los nombres de variables que
se desean desplegar.
En el siguiente cuadro se presenta la sintaxis de la operación de salida, utilizando un pseudocódigo o un
flujograma.

Pseudocódigo Flujograma Representación de la salida


Escribir item1, item2,… Escribir item1,item2,…

Donde item1, item2, … es lo que se desea visualizar, puede ser un valor numérico, carácter o cadena
de caracteres, un valor lógico.
De lo anterior se observa que la salida no sólo permite desplegar el contenido de las variables, sino
también cualquier otro tipo de información como un mensaje.
Ejemplo 15. Instrucción de Salida
Instrucción Resultados
Escribir nombre Devuelve el valor almacenado en la variable
nombre.
Escribir “Tu altura es: ”, altura Devuelve el mensaje “Tu altura es:” seguido del
contenido de la variable altura.
Escribir nombre, edad Devuelve el contenido de las variables nombre y
17

edad.
Escribir “Indique una letra: ” Despliega el mensaje Indique una letra.
Ejemplo 16

8.4. Práctica
1. Elabore un diagrama de flujo (df) que lea tres valores y los imprima. Presente cuatro alternativas
de la solución.
2. Enumere las tareas o funciones que realiza la instrucción de entrada.
3. Explique cada una de las siguientes tareas realizadas por la instrucción de salida:
a. Identificar la variable que se desea desplegar o imprimir.
b. Transferir el contenido de la variable a un medio de almacenamiento externo o a la
pantalla.
4. ¿Qué necesita una instrucción de entrada para realizar su función?
5. ¿Qué tipo de valores pueden obtenerse con una instrucción de salida?
6. Construya un df que lea dos valores e imprima primero el segundo valor leído y luego el primero.
7. ¿Qué palabras se asocian con la instrucción de entrada y con la instrucción de salida?
8. Relacione las instrucciones de entrada y salida.
9. Escriba un df que imprima su nombre.

8.5. Instrucción de asignación o atribución.


Se utiliza para asignar un valor a una variable. Es la que asigna un valor determinado en una posición de
memoria. En el siguiente cuadro se presenta la representación de esta instrucción.
Pseudocódigo Flujograma Representación
Var ← expresión
Var ← expresión
18

Donde
Var es un nombre de variable válido
Expresión es nombre de variable, constante o expresión aritmética a evaluar.
Esta instrucción quiere decir que el valor de expresión se asigna a la variable Var.
Algunas consideraciones que se deben tener con la instrucción de asignación son las siguientes:
1. Una variable al lado derecho de una asignación debe tener un valor antes que se ejecute la
asignación.
2. A la izquierda de una asignación sólo puede existir una variable .
3. El tipo de la variable y la expresión debe ser el mismo.
Ejemplo 17. Asignaciones
Y ←X+1 Es correcta sólo si X tiene valor antes de que esta instrucción se
ejecute
b-a ← h Es incorrecto pues el lado izquierdo es una expresión y no una
variable.
Altura ← 20 A la variable altura se le asigna el valor 20.
X : char; Es incorrecto porque al lado derecho se está realizando la suma
Y : integer; de dos cantidades enteras y se están asignando a una variable de
X ← Y + 1 tipo carácter. Hay un error de tipos de datos.
Ejemplo 18
Escriba un algoritmo que termine el radio de un círculo dado el área.
De acuerdo con las fases de resolución de un problema, lo primero que se debe identificar
es la salida, el proceso y la entrada.
En este caso, la interrogante es ¿cuál es la salida: el radio, PI, el área? La salida es lo que se
desea obtener, el radio.
La segunda interrogante es ¿cuál es el proceso, con que cuento para obtener la salida? En
este problema se tiene el área del círculo y la fórmula del área de un círculo, la cual involucra
area
a la variable radio, es decir, como area = 3,14159 * r2 , entonces r =
3.14159
Por último cuál es la entrada, ¿qué se necesita para realizar el proceso? De acuerdo con la
fórmula planteada en el proceso es necesario saber cuál es el área del círculo.
En resumen,
Salida: Radio
area
Proceso: r =
3.14159
Entrada: Área
El siguiente paso consiste en diseñar un algoritmo utilizando las instrucciones
fundamentales de un lenguaje de programación y representarlo mediante pseudocodificación
o diagrama de flujo.
19

Pseudocódigo Diagrama flujo


1. Leer area
area
2. Calcular el radio, r =
3.14159
3. Escribir r

8.6. Práctica.
1) Deteminar el valor de cada una de las siguientes expresiones aritméticas
a) 123 div 100
b) 15 mod 12
c) 3+4*(8*(4-(9+3)/6))
d) 4-40div 5
2) Escribir las siguientes expresiones matemáticas como expresiones de computadora.
x
+1
a) y
b) ( x + y ) .( a − b)
2

y
x+
z
y
x−
c) z
3) Cuáles de los siguientes identificadores de variables son válidos.
a) N
b) Mi juego
c) 85Nombre
d) m&m
e) AAAA
f) Saldo_Actual
4) Para cada una de las siguientes situaciones construya un diagrama de flujo.
a) Lea un valor e imprima el doble del valor leído.
b) Calcular la suma y la resta de dos números leídos
c) Calcule la suma de tres valores leídos.
d) Intercambie dos valores leídos.
20

e) Calcular el área de un rectángulo, dados su altura y largo.


f) Lea un valor y que imprima el sucesor y el antecesor del valor leído.
g) Leer dos enteros en las variables x y y, para obtener los valores de x div y, x mod y.
h) Lea un valor e imprima la mitad del valor leído.
i) Leer la temperatura Celsius y obtener la temperatura Fahrenheit, utilizando la fórmula
9
f = c + 32
5 .
j) Lea un valor y determine el 20% del valor leído.
k) Lea un valor y determine en cuanto excede de 100.
l) Lea dos valores y calcule, la diferencia de los dos valores, el producto de los dos valores, la
suma de los dos valores, el cociente del primer valor respecto al segundo.
m) Imprima los cinco números pares que le siguen al 46.
n) Asuma que una cuenta de banco tiene un capital de B/.500.00. Elabore un diagrama de flujo
que lea un depósito y un retiro. Realice el depósito primero, imprima el nuevo saldo de la
cuenta, luego efectúe el retiro e imprima el saldo final de la cuenta.
o) Leer el nombre de una persona, las horas trabajadas y el salarioxhora, con estos datos calcular
el salario bruto.
p) Convertir un número de segundos dado, en minutos y segundos.
q) Convertir una medida dada en pies a sus equivalentes en yardas, pulgadas, centímetros, metros.
(1 pie = 12 pgdas., 1 yda = 3 pies, 1pgda = 2,54 cm, 1m = 100 cm.). Leer el número de pies e
imprimir el número de yardas, pies, pulgadas, centímetros y metros.

8.7. Expresiones lógicas


Son aquellas que pueden tener un valor verdadero o falso. Las expresiones booleanas pueden aparecen
de cualquiera de las tres formas siguientes: variable lógica, expresión booleana relacional, expresión
lógica compleja.

8.7.1. Variable booleana


Es la expresión lógica más simple. Una variable booleana es aquella que sólo puede tomar los valores
true o false. Por tanto, es una expresión booleana. El valor de la expresión es el mismo de la variable.
Por ejemplo Continuar := True, a la variable continuar se le ha asignado el valor true y por tanto es una
variable lógica.

8.7.2. Expresión booleana relacional


Es aquella que establece una relación entre dos expresiones por medio de un operador relacional, el
cual se coloca entre las dos expresiones. Esta relación puede ser verdadera o falsa.
En la siguiente tabla se presentan los operadores relacionales y su significado.
OPERADOR SIGNIFICADO EJEMPLO
> Mayor 1>3
>= mayor e igual 2>=2
<= menor e igual X+Y <= Z
< menor A<B
21

= igual Y=X
<> distinto ‘A’ <> ‘Z’
Las expresiones que relaciona un operador relacional puede ser variables, constantes o expresiones
aritméticas.

8.7.3. Expresión booleana compleja


Esta expresión está formada por varias expresiones booleanas combinadas con ayuda de los
operadores lógicos and, or y not, por tanto, permiten relacionar expresiones lógicas creando formas
más complejas.
En la siguiente tabla se presentan los operadores lógicos su significado.

OPERADORES SIGNIFICADO
OR ∨ (o inclusiva)
XOR o exclusiva
AND ∧ (y)
NOT ∼ (negación)
Las tablas de verdad de cada uno de estos operadores están dadas en el capítulo de Cálculo
Proposicional.

8.7.4. Prioridad de los operadores


Una vez que ya se conocen todos los operadores aritméticos, relacionales y lógicos se puede
establecer el orden de prioridad de su evaluación.
OPERADOR PRIORIDAD
Not 1
*, /, div, mod, and 2
+, -, or 3
<, <=, >, >=, <>, = 4
Si existen paréntesis, primero se El 1 es de más alta
evalúan las expresiones en su prioridad, se evalúa
interior. primero.

8.8. Instrucción de transferencia condicional.


Esta instrucción permite tomar una decisión dentro de un programa. En otras palabras, permite ejecutar
otra instrucción dependiendo del resultado de la evaluación de una expresión lógica.
Esta instrucción es conocida como if…then…else (si...entonces...sino).
A continuación se presenta la sintaxis de esta instrucción.
22

PSEUDOCÓDIGO FLUJOGRAMA
Si expresion entonces
proceso1
sino Falso
Else
Expresión
Verdadero
Then
proceso2
Proceso 2 Proceso 1

Figura 1. Transferencia condicional

En la ejecución de esta instrucción se realizan los siguientes pasos.


1. Se evalúa la expresión lógica
2. Si la expresión lógica es verdadera, es decir, toma el valor true; se ejecutan las instrucciones del
“entonces ” (proceso1) y el control pasa a la sentencia siguiente a la “si-entonces-sino”.
3. Si la expresión lógica es falsa, es decir, toma el valor false; se ejecutan las instrucciones del sino
(proceso2) y el control pasa a la sentencia siguiente a la “si-entonces-sino”.
Ejemplo 19. Transferencia condicional
Leer un número y determinar si es positivo o no.
Pseudocódigo
Leer x
Si x> 0 entonces Escribir “Positivo”
sino Escribir “Negativo”
Escribir “Fin de programa”

Esta instrucción presenta dos variantes, a saber:


1. Se omite la cláusula sino, es decir, no ocurre nada cuando la expresión es falsa.
PSEUDOCÓDIGO FLUJOGRAMA
Si expresio n entonces
proceso
Falso Verdadero
Expresión

Proceso

2. O se omite la cláusula entonces, no ocurre nada cuando la expresión es verdadera.


23

PSEUDOCÓDIGO FLUJOGRAMA
Si not expresion entonces
proceso
Falso Verdadero
Expresión

Proceso

Ejemplo 20
Salida: Mensaje Bienvenido o Bienvenida
Proceso: Si sexo es F Escribir Bienvenida, de lo contrario escribir Bienvenido.
Entrada: Sexo, F o M.

8.9. Práctica
1. Construya un diagrama de flujo que lea dos valores y que imprima el producto de dichos valores en
caso de que ellos sean diferentes.
2. Construya un diagrama de flujo que lea dos valores y que determine si los valores son iguales o
diferentes.
3. Construya un diagrama de flujo que calcule el valor absoluto de un número real.
4. Construya un flujograma que determine si un número es par o impar.
5. Leer tres números si el primero es menor que cero, imprimir la suma de los tres; en caso contrario,
el producto de los tres.
6. Escribir un programa que determine el menor valor de dos leídos.
24

7. Dados dos números leídos del teclado se desea saber si uno es divisor del otro.
8. Elabore un df que lea un valor y que determine si el valor leído es o no mayor que 100.
9. Construya un df lea un valor e imprima si el valor es menor que cero, igual a cero o mayor que
cero.
10. Escriba un df que lea dos valores y diga cual es el mayor.
11. Asuma que una cuenta de banco tiene un capital de B/.500.00. Elabore un df que lea un depósito y
un retiro. Realice el depósito primero, imprima el nuevo saldo de la cuenta, luego verifique si puede
realizar el retiro, si no es posible el retiro imprima un mensaje que lo indique, en caso contrario
efectúe el retiro e imprima el saldo final de la cuenta y un mensaje que diga “se realizó el retiro”.
12. Escriba un df que lea una edad y que determine si la persona es mayor o menor de edad.
13. Confeccione un df que determine si los tres lados de un triángulo son iguales.
14. Elabore un df que lea la cantidad y precio de un producto y que determine si con B/.75.00 le
alcanza para comprar la cantidad solicitada.
15. Confeccione un df que lea dos valores. Si uno de los valores es mayor que 12 calcule el producto
de los valores, en caso contrario determine la suma de los valores.
16. Escriba un df que lea un valor, si el valor es mayor que 39 escriba su nombre, si es igual a 39
escriba la palabra Veraguas y en caso contrario escriba su apellido.
17. Elabore un df que lea el promedio final de un curso. Si el promedio es mayor que 75 escriba el
mensaje “Aprobó”, en caso contrario escriba “no aprobó”.

8.10. Acumuladores y contadores


Un acumulador es una variable que cuando se ejecuta, se incrementa en una cantidad variable. Este
incremento se puede realizar en forma sumativa o multiplicativa.
En el primer caso el acumulador se llama sumativo. En el segundo caso el acumulador es
multiplicativo .
Los acumuladores tienen las siguientes características:
Ø Deben poseer un valor inicial que usualmente es el elemento neutro de su respectiva operación.
Ø Deben tener un incremento expresado en forma de suma si el acumulador es sumativo o en forma de
producto si el acumulador es multiplicativo.
Matemáticamente, los acumuladores sumativos representan expresiones como la
n
siguiente ∑ xi = x1 + x2 + x 3 + ... + xn . En la codificación de Pascal se representa mediante una
i =1
asignación, como por ejemplo:
S:=S+Valor;
donde S es el acumulador y Valor es la variable que se incrementa a S.
La expresión matemática que representa a los acumuladores multiplicativos es como la
n
siguiente ∏ xi = x1 x2 x3 ...x n . En la codificación de Pascal, también se representa mediante una
i =1
asignación, como por ejemplo:
P:=P*Valor;
donde P es el acumulador y Valor es la variable que se incrementa a P.
25

En el caso particular que Valor es una cantidad constante, se dice que el acumulador sumativo es un
contador.
En otras palabras, un contador es un acumulador sumativo que se incrementa en una unidad o una
cantidad constante. También se dice que es una variable que se emplea para determinar la cantidad de
veces que se ejecuta o realiza un proceso. En Pascal un contador se representa por medio de una
asignación, como por ejemplo: C:=C+1.

8.11. Instrucción de repetición.


Existen algoritmos que realizan tareas en formas repetitivas, como por ejemplo el cálculo del factorial de
un número, la aproximación al número e, la determinación de los números de la serie de Fibonacci, las
progresiones aritméticas y geométricas, la media aritmética, etc.
Las estructuras de control para programar estos algoritmos son denominadas ciclos o bucles (en inglés
loop). Específicamente, un ciclo es la estructura de control que permite la repetición finita de una serie
determinada de sentencias, es decir, permite ejecutar un número finito de veces un conjunto de
instrucciones. Este conjunto de instrucciones se denomina cuerpo del ciclo. Cada ejecución del
cuerpo del ciclo se denomina iteración.
En resumen, cuando se va a ejecutar un ciclo es importante considerar:
1. Una variable que controle el ciclo, que tome un valor inicial
2. ¿Cuántas veces se ejecutará?, tomando en cuenta una condición de parada.
3. ¿Cuál es el cuerpo que se ejecutará?, el conjunto de instrucciones que se repetirán.
En los lenguajes de alto nivel se manejan diferentes modelos de ciclos, una de las más sencillas es la
estructura repetitiva repetir…hasta. Esta instrucción es aquella que se ejecuta hasta que se cumple una
condición, es decir, hasta que la condición de parada sea verdadera. Esta condición de parada es una
expresión lógica.
En el siguiente cuadro se presenta la sintaxis de la instrucción repetir...hasta.

Pseudocodificación Diagrama de flujo


Repetir Repeat
Proceso
Hasta expresión lógica Proceso

Until
.
Expresión Falso

Verdad

La semántica de este ciclo de repetición es la siguiente:


1. Ejecutar el proceso, que puede estar constituido de una o más instrucciones.
2. Evaluar la expresión lógica (condición de parada), si esta expresión es falsa se ejecuta el proceso
nuevamente, y si es verdadera termina la instrucción repeat…until y se continua con la siguiente
instrucción.
26

3. De esta manera el ciclo se ejecuta al menos una vez, puesto que el control se realiza al final.

Ejemplo 21. Ciclo repetir...hasta


1. Escribir un programa que determine la suma de N valores leídos.
Leer “Cantidad de números que desea sumar”, N
Suma ←0
Cont ← 0
Repetir
Leer X
Suma ← Suma + X
Cont←Cont + 1
Hasta Cont = N
2. Escribir un programa que sume los números leídos hasta que la respuesta a una pregunta
sea N.
Suma ←0
Repetir
Leer X
Suma ←Suma + X
Escribir “Teclee S para continuar, N para terminar”
Leer Resp
Hasta Resp = N or Resp = n

La condición de parada de un ciclo de repetición puede ser de varios tipos, a saber:


1. Controlada por un contador: la condición de parada depende de un contador que se modifica
dentro del ciclo. En este caso el contador debe estar inicializado antes de la ejecución del ciclo, se
verifica el valor del contador en la condición de parada y se incrementa el valor del contador. Como
la parte 1 del Ejemplo 21.
2. Controlada por una condición, en este caso no se sabe por anticipado el número de veces que se
ejecutará el ciclo. La condición puede depender de una respuesta del usuario, puede ser una valor
especial para señalar el fin de algo, o bien ser una bandera (interruptor) una variable lógica que
conserva el estado verdadero o falso de la condición. En todos estos casos las variables incluidas
en la condición deben estar inicializadas antes de la ejecución del ciclo y su valor debe ser
modificado dentro del ciclo. Como el caso de la parte 2 del Ejemplo 21.
También es importante notar que para evitar un ciclo infinito debe asegurarse que la condición de
parada tenga una variable cuyo valor se modifique dentro del ciclo, pasando a tomar el valor verdadero.
Ejemplo 22
Diseñar un diagrama de flujo que lea tres valores y los
despliegue en pantalla.
27

8.12. Práctica
1. ¿Cuál es la salida del siguiente programa?
x ← 10
repetir
x←x–3
hasta x <= 0
escribir x
2. Elabore un df que escriba su nombre 100 veces.
3. Confeccione un df que imprima los números pares entre 10 y 58.
4. Escriba un df que lea la edad de 500 personas y que determine si la persona es o no mayor de
edad en cada caso.
5. Diseñe un df que lea 100 parejas de valores y que determine el menor valor de cada pareja.
6. Describa los componentes de una instrucción de repetición.
7. ¿Qué similitudes tienen las instrucciones de transferencia condicional y la repetición y cómo se
utilizan en cada caso?
8. Un banco tiene 3000 clientes y desea aplicar un cargo de 1% al saldo de la cuenta de cada
cliente. Confeccione un df que imprima el nuevo saldo de cada cuenta.
28

9. Elabore un df que lea la cantidad y precio unitario de los 500 artículos de su inventario y que
imprima el valor de cada artículo.
10. Confeccione un df que lea el sexo de 234 personas y que imprima la cantidad de hombres y de
mujeres y que además indique si hay más hombres que mujeres o viceversa. Utilice sexo=1 como
hombre y sexo=2 como mujer.
11. Confeccione un df que determine el salario promedio de un conjunto de 300 personas.
12. Una empresa desea incrementar en 5% el salario del personal femenino y en 3% el de los
masculinos. Diseñe un df que determine el total de salario masculino con y sin el incremento.
Además calcule en cuánto se incrementó el salario total de las mujeres.
13. Transformar metros en centímetros, mientras no se lea una cantidad negativa.
14. Escribir un programa que lea números enteros positivos hasta que se escriba un cero.
15. Contar la cantidad de números negativos leídos, terminar cuando se lee cero.
16. Elabore un diagrama que determine el producto de 50 valores leídos.
17. Construya un programa que calcule la media aritmética de n valores leídos.
18. Haga un diagrama de flujo que permita determinar la suma de los números comprendidos entre 25
y 510.
19. Construya un programa que determine el producto de los números comprendidos entre 7 y 200.
20. Elabore un programa que lea las horas trabajadas, el salario por hora y el sexo de 300 empleados
de una empresa. Si sexo=1, entonces es masculino, y si sexo=2, entonces es femenino. El
programa debe determinar la cantidad de empleados masculinos y el salario promedio femenino.
29

BIBLIOGRAFIA CONSULTADA
[Henn92] Hennenfeld, Julien. Turbo pascal con aplicaciones 4.0-6.0. Editorial
Iberoamericana. México 1992.
[Gold93] Goldstein, Larry Jo. Turbo pascal. Editorial Prentice Hall. México. 1993.
[Joya] Joyanes, Luis. Fundamentos de programación. Editorial McGraw Hill. México.
[Joya93] Joyanes, Luis. Programación en Turbo Pascal Versiones 5.5, 6.0 y 7.0. Segunda
edición. Editorial McGraw Hill. México. 1993
[Graw91] Grawley, G. Pascal: programación estructurada. Editorial Prentice Hall. 1991.
[Nort99] Norton, Peter. Introducción a la computación. Tercera Edición. Editorial
McGraw-Hill. México. 1999.

SITIOS WEB RECOMENDADOS


Bilstein, Andrés J. Lógica proposicional.
http://soko.com.ar/matem/Logica_proposicional.htm
Lógica Proposicional. http://www.monografias.com/trabajos/iartificial/pagina4_1.htm
El mundo de la lógica. http://clientes.vianetworks.es/empresas/lua911/
Web Resources for philosophers. Philosophy at Texas A&M.
http://www-phil.tamu.edu/philres.html
Rosen, Kenneth. Discrete Mathematics and Its Applications.
http://www.mhhe.com/math/advmath/rosen/r5/student/ch01/weblinks.html
Gateway to logic. http://logik.phl.univie.ac.at/~chris/logic.html
Lógica teoría & praxis. http://www.cibernous.com/logica/index.html