Propedeutico

  • November 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Propedeutico as PDF for free.

More details

  • Words: 8,899
  • Pages: 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.

5.

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

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. 2. 3. 4.

3.

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

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

CÁLCULO PROPOSIONAL

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 Tú mides 5.5 pies 5 + 8 = 12 6 – 11 = -5 ¿Te matriculaste ? Apaga la luz Me gusta este curso Tengo 2 hermanos Prohibido pasar

Comentario Es una proposición Es una proposición Es una proposición NO es una proposición NO es una proposición Es una proposición Es una proposición 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 Tú mides 5.5 pies 5 + 8 = 12 Está lloviendo y no se ve el sol Si sale el sol entonces voy al cine 11 es un número impar y es mayor que 7 Todos los gatos tienen siete vidas

1

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

Comentario Es una proposición atómica Es una proposición atómica Es una proposición compuesta Es una proposición compuesta Es una proposición compuesta Es una proposición atómica

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 negación not Y and O or Si ... entonces If ...then

Símbolo ¬ ∧ ∨ →

Significado Prioridad Niega la proposición que precede 1 Conjunción Y 2 Disyunción O 3 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 p∨ q

Conjunción p∧ q

Negación ¬p

Implicación 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 ¬p

Disyunción 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. p

q

r

Disyunción q∨ r

Implicación 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 = 2a Proceso: Si b 2 − 4 ac ≥ 0 entonces − 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 2. Calcular a = πr 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; (*Programa que calcula el área de un círculo dado su radio*) var r, a :real; begin write (‘indique el radio del círculo: ‘); readln(r); a := pi()*pi()*r; writeln (‘el área del círculo de radio ‘,r,’ es: ‘,a) end.

cabecera comentario lista de variables solución

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 Div Mod

+ -

Div entera

1

a div b

Residuo de la división

1

a mod b

Suma Resta

2 2

a+b a- b

entre b Cociente entero de a entre b Residuo de la división de a entre b

Suma de a y 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 12Edad Altura Dim1 Numero&Empleado Numero_1 Alt2

Válido

Inválido empieza con un número Inválido contiene un espacio en blanco Inválido contiene un signo especial no permitido Válido 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 Leer var1, var2, …, var n

Flujograma

Representación de la entrada

Leer var1,var2,…varn

Ejemplo 14. Instrucción de entrada. Instrucción Leer nombre Leer edad Leer altura

Ejecución Pedro 45 1.65

Explicación La variable nombre almacena el valor Pedro La variable edad almacena el valor 45 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 Escribir item1, item2,…

Flujograma

Representación de la salida

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 Escribir nombre Escribir “Tu altura es: ”, altura Escribir nombre, edad

Resultados Devuelve el valor almacenado en la variable nombre. Devuelve el mensaje “Tu altura es:” seguido del contenido de la variable altura. Devuelve el contenido de las variables nombre y

17

Escribir “Indique una letra: ”

edad. 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 Es incorrecto pues el lado izquierdo es una expresión y no una b-a ← h 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 Proceso: r =

area 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 1. Leer area 2. Calcular el radio, r =

Diagrama flujo

area 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 2 b) ( x + y ) .( a − b) y x+ z y x− z c) 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) f) g) h) i)

j) k) l) m) n)

o) p) q)

Calcular el área de un rectángulo, dados su altura y largo. Lea un valor y que imprima el sucesor y el antecesor del valor leído. Leer dos enteros en las variables x y y, para obtener los valores de x div y, x mod y. Lea un valor e imprima la mitad del valor leído. Leer la temperatura Celsius y obtener la temperatura Fahrenheit, utilizando la fórmula 9 f = c + 32 5 . Lea un valor y determine el 20% del valor leído. Lea un valor y determine en cuanto excede de 100. 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. Imprima los cinco números pares que le siguen al 46. 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. Leer el nombre de una persona, las horas trabajadas y el salarioxhora, con estos datos calcular el salario bruto. Convertir un número de segundos dado, en minutos y segundos. 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
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 Si expresion entonces proceso1 sino proceso2

FLUJOGRAMA

Falso Else

Expresión

Proceso 2

Verdadero Then

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

Expresión

Verdadero

Proceso

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

23

PSEUDOCÓDIGO Si not expresion entonces proceso

FLUJOGRAMA

Falso

Expresión

Verdadero

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 Repetir Proceso Hasta expresión lógica .

Diagrama de flujo Repeat

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

11. 12.

13. 14. 15. 16. 17. 18. 19. 20.

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. 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. Confeccione un df que determine el salario promedio de un conjunto de 300 personas. 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. Transformar metros en centímetros, mientras no se lea una cantidad negativa. Escribir un programa que lea números enteros positivos hasta que se escriba un cero. Contar la cantidad de números negativos leídos, terminar cuando se lee cero. Elabore un diagrama que determine el producto de 50 valores leídos. Construya un programa que calcule la media aritmética de n valores leídos. Haga un diagrama de flujo que permita determinar la suma de los números comprendidos entre 25 y 510. Construya un programa que determine el producto de los números comprendidos entre 7 y 200. 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] [Gold93] [Joya] [Joya93] [Graw91] [Nort99]

Hennenfeld, Julien. Turbo pascal con aplicaciones 4.0-6.0. Editorial Iberoamericana. México 1992. Goldstein, Larry Jo. Turbo pascal. Editorial Prentice Hall. México. 1993. Joyanes, Luis. Fundamentos de programación. Editorial McGraw Hill. México. Joyanes, Luis. Programación en Turbo Pascal Versiones 5.5, 6.0 y 7.0. Segunda edición. Editorial McGraw Hill. México. 1993 Grawley, G. Pascal: programación estructurada. Editorial Prentice Hall. 1991. 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

Related Documents