1. RESOLUCIÓN DE UN PROBLEMA - Emagister - Cursos y … · 2007-11-22 · entendible por la...

41
LÓGICA COMPUTACIONAL Hünicken, Helvia E. 1 1. RESOLUCIÓN DE UN PROBLEMA ¿Qué es la programación lógica? Lógica : Es el arte de razonar. Programación lógica : Es el tipo de programación en la cual las sentencias son sentencias lógicas, tales como implicaciones lógicas, proposiciones lógicas, etc. Ninguna computadora por sí sola puede realizar las tareas que se le encomiendan; para que la máquina pueda trabajar es necesario que alguien le indique qué debe hacer y cómo tiene que hacerlo. El conjunto de instrucciones que componen un programa debe codificarse en un lenguaje entendible por la máquina (lenguaje o código de máquina); como han ido evolucionando los lenguajes, hoy es posible hacerlo con un lenguaje de alto nivel, lo más próximo al lenguaje humano. Si queremos que una computadora lleve a cabo un proceso, antes que nada habrá que programarla para ello. Tendremos que construir un programa que le indique qué pasos ha de seguir para efectuar dicho proceso de un modo totalmente correcto. Se desprende que, una computadora no tiene inteligencia por sí sola, no olvidemos que la computadora es una máquina creada por el hombre y, por tanto, no podrá realizar una tarea que no haya sido previamente determinada por él. El objetivo es, que frente a un problema dado, diseñemos una solución que pueda ser realizada por un computador. Para ello necesitamos: 1º. Un lenguaje o notación para expresar la solución obtenida. 2º. Escribirla en un lenguaje comprensible por la máquina, por ejemplo: BASIC, COBOL, Pascal, C, etc. 1.1 Sistemas de procesamiento de información Haremos una distinción entre lo que es dato e información. Los datos son hechos, conceptos o entidad real; la materia prima de la información. Los datos pueden tomar diferentes formas; por ejemplo, palabras escritas, números y dibujos, pero sólo pueden considerarse como información en un sentido muy limitado. En la forma en que el término se utiliza en el procesamiento de datos, la información consta de datos organizados en una forma que es útil para las personas que la reciben. En otras palabras, la información consiste en conocimientos procesados y organizados, producidos como resultado de las operaciones de procesamiento de datos. El proceso convierte los datos en información. Toda la información consta de datos, pero no todos los datos producen información específica o inteligible. La interpretación de estos datos requiere un criterio humano. Un sistema en general es definido como conjunto de componentes conectados e interactivos, que tienen un propósito y una unidad total. Sistema de procesamiento de información es un sistema que transforma datos brutos en información organizada, significativa y útil. Sistema de procesamiento de información La figura muestra los componentes de un sistema de proceso de la información: entrada, salida y procesador. El procesador, que puede ser bastante complicado, se representa por una simple caja y puede aceptar datos llamados entrada y esta entrada se transforma entonces para producir una información denominada salida o resultados. Entrada = datos Salida = información procesador

Transcript of 1. RESOLUCIÓN DE UN PROBLEMA - Emagister - Cursos y … · 2007-11-22 · entendible por la...

LÓGICA COMPUTACIONAL Hünicken, Helvia E.

1

1. RESOLUCIÓN DE UN PROBLEMA

¿Qué es la programación lógica?

Lógica: Es el arte de razonar.

Programación lógica: Es el tipo de programación en la cual las sentencias son sentencias lógicas,

tales como implicaciones lógicas, proposiciones lógicas, etc.

Ninguna computadora por sí sola puede realizar las tareas que se le encomiendan; para que la máquina pueda trabajar es necesario que alguien le indique qué debe hacer y cómo tiene que hacerlo. El conjunto de instrucciones que componen un programa debe codificarse en un lenguaje entendible por la máquina (lenguaje o código de máquina); como han ido evolucionando los lenguajes, hoy es posible hacerlo con un lenguaje de alto nivel, lo más próximo al lenguaje humano.

Si queremos que una computadora lleve a cabo un proceso, antes que nada habrá que programarla para ello. Tendremos que construir un programa que le indique qué pasos ha de seguir para efectuar dicho proceso de un modo totalmente correcto.

Se desprende que, una computadora no tiene inteligencia por sí sola, no olvidemos que la computadora es una máquina creada por el hombre y, por tanto, no podrá realizar una tarea que no haya sido previamente determinada por él.

El objetivo es, que frente a un problema dado, diseñemos una solución que pueda ser realizada por un computador. Para ello necesitamos:

1º. Un lenguaje o notación para expresar la solución obtenida.

2º. Escribirla en un lenguaje comprensible por la máquina, por ejemplo: BASIC, COBOL, Pascal, C, etc.

1.1 Sistemas de procesamiento de información

Haremos una distinción entre lo que es dato e información.

Los datos son hechos, conceptos o entidad real; la materia prima de la información. Los datos

pueden tomar diferentes formas; por ejemplo, palabras escritas, números y dibujos, pero sólo pueden considerarse como información en un sentido muy limitado. En la forma en que el término se utiliza en el procesamiento de datos, la información consta de datos organizados en una forma que es útil para las personas que la reciben. En otras palabras, la información consiste en conocimientos

procesados y organizados, producidos como resultado de las operaciones de procesamiento de datos.

El proceso convierte los datos en información. Toda la información consta de datos, pero no todos los datos producen información específica o inteligible. La interpretación de estos datos requiere un criterio humano.

Un sistema en general es definido como conjunto de componentes conectados e interactivos, que tienen un propósito y una unidad total. Sistema de procesamiento de información es un sistema

que transforma datos brutos en información organizada, significativa y útil.

Sistema de procesamiento de información

La figura muestra los componentes de un sistema de proceso de la información: entrada, salida y procesador. El procesador, que puede ser bastante complicado, se representa por una simple caja y puede aceptar datos llamados entrada y esta entrada se transforma entonces para producir una información denominada salida o resultados.

Entrada = datos Salida = información

procesador

LÓGICA COMPUTACIONAL Hünicken, Helvia E.

2

DDaattooss

Basados en este esquema, muchos dispositivos u organismos pueden ser considerados sistemas de procesamiento de la información. Un termostato que controla la temperatura de un edificio es un ejemplo, la entrada es la temperatura media y la salida es una señal que controla la caldera del aire acondicionado. El corazón, es un sistema complejo de información.

El conjunto de instrucciones que especifican la secuencia de operaciones a realizar, en orden, para resolver un sistema específico o clase de problemas, se denomina algoritmo. Cuando el procesador es una computadora, el algoritmo se expresará en forma de programa escrito en un lenguaje de programación.

1.2 Noción de programa

[Ensaye una definición de programa]

.......................................................................................................................................................

........................................................................................................................................................

........................................................................................................................................................

La idea es, dado un problema determinado, diseñar una solución que pueda ser realizada por una computadora:

Partes de un programa

Entrada de datos. La constituyen todas aquellas instrucciones que toman datos de un dispositivo externo, almacenándolos en la memoria central para que puedan ser procesados.

Proceso. Está formado por las instrucciones que modifican los objetos a partir de su estado inicial hasta el estado final, dejando éstos disponibles en la memoria central.

Salida de resultados. Conjunto de instrucciones que toman los datos finales de la memoria

central y los envían a los dispositivos externos.

Desarrollo de un programa

El objeto de un programa es resolver un problema, si es muy complejo y extenso, no se podría programar en una sola etapa, entonces, el estudio se hace por etapas y para su programación se divide en varias unidades y/o programas. A un problema de esta magnitud se lo denomina aplicación y consta de un número más o menos grande de programas.

Desarrollo de una aplicación

Todo comienza cuando surge la necesidad de la automatización de un conjunto de tareas, y finaliza cuando esa necesidad es satisfecha con una solución informatizada. Mientras que, en el traspaso problema solución se fue desarrollando lo que se da en llamar: ciclo de vida de un sistema o desarrollo de aplicaciones.

1.3 Desarrollo de un programa

DDaattooss

RReeqquueerriiddooss

MMEEMMOORRIIAA

CCEENNTTRRAALL

ENTRADA

PROCESO

SALIDA

LÓGICA COMPUTACIONAL Hünicken, Helvia E.

3

El desarrollo de un programa comprende el conjunto de etapas que van desde el planteamiento del problema inicial en la fase de análisis hasta su solución informatizada a un costo razonable. Etapas:

construcción

del programa

Fase de construcción de un programa

Esta fase va desde el planteamiento de un problema hasta la obtención de un algoritmo que lo resuelve codificado en un lenguaje de programación. Se compone a su vez en:

Definición del problema Análisis del problema Programación de la solución del problema Diseño del algoritmo Codificación del programa

Estas etapas generan una documentación que se engloba en lo que se llama: cuaderno de carga.

A. Definición o planteamiento del problema

El estudio y definición del problema dan lugar al planteamiento del problema que se escribirá en la documentación del programa.

Si no se sabe lo que se busca, no se lo reconoce si se lo encuentra. Es decir que, si no sabemos con claridad qué es lo que tenemos que resolver, no podremos encontrar una solución.

Aquí se declara cuál es la situación de partida y el entorno de datos de entrada, los resultados deseados, dónde deben registrarse y cuál será la situación final a la que debe conducir el problema después de ser implementado (procesado por el computador).

A1. Análisis del problema

Teniendo en claro el problema a resolver, se hace un análisis detallado de los datos, condiciones del problema y demás. El objetivo es, entonces, ayudar a comprender la naturaleza del problema, el cual debe estar bien definido si se desea llegar a una solución satisfactoria. Para poder definir un problema con precisión se requiere que las especificaciones de entrada y salida sean descritas en detalle.

Podemos enunciar pasos generales para realizar el análisis del problema:

a) Lectura previa: para obtener una idea general de lo que se solicita.

b) Lectura detallada: para responder a las preguntas:

¿Qué información debe proporcionar la solución del problema? (Salida)

A. Planteamiento de un Problema

A1. Análisis del Problema

A2. Diseño del Algoritmo

A3. Codificación del Programa

B. Edición y Puesta a Punto

C. Documentación

D. Explotación

LÓGICA COMPUTACIONAL Hünicken, Helvia E.

4

¿Qué datos se necesitan para resolver el problema? (Entradas)

En esta etapa, básicamente, se identifica el problema y se decide qué tipo de solución se requiere y si ello implica software, se definirán los requerimientos a cubrir.

Si esa solución requiere software, el analista definirá las condiciones que debe cumplir:

Definición de salida

Contenido: es el tipo de información que se proporcionará y a qué nivel de detalle.

Formato: cómo mostrar la información, por impresora, pantalla o gráfico.

Tiempo: periodicidad del informe; es decir, cuándo necesita la información el usuario, por ejemplo diaria, semanalmente o mensualmente.

Flexibilidad: los programas no deben ser rígidos, al punto de que no puedan ser modificados para adaptarse a condiciones cambiantes.

Definición de entrada

Datos necesarios.

Disponibilidad de los datos.

Procedimientos para obtener información.

Introducción de los datos: cómo se ingresarán al sistema.

Definición de tareas de procesamiento

Restricciones de personas: el software debe estar diseñado de modo que el sistema dé avisos claros a los usuarios acerca de lo que deben hacer, cuándo hacerlo y cómo; para que los usuarios no deban estar especializados al hacer uso del sistema.

Restricciones del equipo: el software debe estar diseñado para trabajar en computadora, equipo periférico y software de sistema que se encuentren a disposición o sean factibles de adquirir.

A2. El diseño del algoritmo

En esta etapa del ciclo de vida de desarrollo de programas, los analistas trabajan con los requerimientos del software desarrollados en la etapa de análisis, hasta la explicación de la naturaleza de la solución de programación. Se determinan todas las tareas que cada programa realiza, como así también, la forma en que se organizarán estas tareas cuando se codifique el programa.

Los problemas cuando son complejos, se pueden resolver más eficientemente con la computadora cuando se descomponen en subproblemas que sean más fáciles de solucionar que el original. Este método se denomina divide y vencerás (divide and conquer), y consiste en dividir un problema complejo en otros más simples que resulten de fácil visualización y comprensión, independizándose del resto del problema y sin ignorar la forma en que dichas partes interactúan entre sí.

La descomposición del problema original en subproblemas más simples y a continuación dividir estos subproblemas en otros más simples que pueden ser implementados para su solución en la computadora se denomina diseño descendente (top-down design).

Las ventajas más importantes del diseño descendente son:

El problema se comprende más fácilmente al dividirse en partes más simples denominadas módulos.

Las modificaciones en los módulos son más fáciles. La comprobación del problema se puede verificar fácilmente.

En esta etapa además, se utilizan auxiliares de diseño, que son diagramas y tablas que facilitan la delineación de las tareas o pasos que seguirá el programa, por ejemplo: diagramas de flujo, seudocódigo, diagramas de Nassi-Schneiderman, etc.

LÓGICA COMPUTACIONAL Hünicken, Helvia E.

5

Sólo cuando se complete el diseño se podrá dar inicio a la siguiente etapa: la codificación real de los programas. Y es en esta fase en donde se hace la elección del lenguaje de programación que mejor se adapte.

A3. Codificación del programa

En esta fase, se convierte el algoritmo en programa, escrito en un lenguaje de programación de alto nivel como C, Pascal, Basic, etc. La codificación del programa suele ser una tarea pesada que requiere un conocimiento completo de las características del lenguaje elegido para conseguir un programa eficaz.

Sin embargo, si el diseño del algoritmo se ha realizado en detalle con acciones simples y con buena legibilidad, el proceso de codificación puede reducirse a una simple tarea mecánica.

Las reglas de sintaxis que regulan la codificación variarán de un lenguaje a otro y el programador deberá conocer en profundidad dichas reglas para poder diseñar buenos programas.

El programa se codifica en hojas preparadas a tal fin. Una vez codificado, se teclea en la computadora.

Para aumentar la productividad, es necesario adoptar una serie de normas, como ser:

Estructuras aceptables (programación estructurada)

Convenciones de nominación: maneras uniformes de designación de archivos y variables.

Convenciones de comentarios.

B. Fase de edición y puesta a punto

Edición: consiste en grabar el programa ya

codificado en un archivo, mediante un editor de texto (utilidad suministrada generalmente con el sistema), almacenándolo en el disco y otro dispositivo externo. El resultado es el programa fuente.

Una vez obtenido el programa fuente, es necesaria su traducción al código máquina, ya que los programas escritos en un lenguaje de alto nivel no son directamente ejecutables por el computador .

Según el tipo de traductor que se utilice, los lenguajes de alto nivel se clasifican en lenguajes interpretados y lenguajes compilados.

Son lenguajes interpretados aquellos en los que

el sistema traduce una instrucción y la ejecuta, y así sucesivamente con las restantes.

Son lenguajes compilados aquellos en los que,

primero se traduce el programa fuente completo, obteniéndose un código intermedio o módulo objeto (programa objeto); después, se fusiona éste con rutinas o librerías necesarias para su ejecución en un proceso llamado linkado y que obtiene como

resultado un módulo ejecutable (programa ejecutable).

La ventaja de los lenguajes compilados, frente a los interpretados, son su rápida ejecución y, en caso de necesitar posteriores ejecuciones del mismo programas ejecutable almacenado.

La puesta a punto del programa hace referencia a la localización, verificación y corrección de errores

de programación para obtener un programa que funcione correctamente.

La puesta a punto consta de las siguientes etapas:

Detección de errores;

editor programa fuente compilador e intérprete programa objeto montador (linker) programa ejecutable

Ejecución

Montaje

Compilación

Edición

LÓGICA COMPUTACIONAL Hünicken, Helvia E.

6

Depuración de errores;

Localización;

Eliminación;

Prueba del programa.

Todo esto se hace para prevenir tantos errores como sea posible detectar a la hora de ejecutar el programa, también sirve para facilitar la detección y corrección de errores.

Los errores típicos que se presentan son:

Errores de sintaxis

Errores de lógica

Errores de sintaxis. Se originan en el momento de compilación/interpretación del programa y se

deben a causas propias de la sintaxis del lenguaje como escrituras incorrectas de instrucciones, omisión de signo, etc. Estos errores se descubren con facilidad, pero puede suceder que, un error de este tipo, no sea tal, sino que pone de manifiesto otro tipo de error diferente. Ejemplo:

En la mayoría de los lenguajes compilados puede dar error durante la ejecución si la variable SUMA no ha sido declarada.

Errores de lógica. Los errores en la lógica del programa pueden ser producidos en la fase de

compilación o ejecución. Los que suceden durante la ejecución de un programa, normalmente, son más difíciles de detectar. Se pueden observar dos categorías: los que detienen la ejecución del programa y los que no la detienen, pero que producen resultados erróneos. Ejemplo:

Si C es cero, muchos de los errores lógicos sólo se manifiestan en el momento de la ejecución; por ello se denomina también errores de ejecución.

Si se omite el segundo símbolo del producto (*) y la instrucción se convierte en L = 2 * PR, la omisión de este símbolo no se reconoce como error de sintaxis en la

fase de compilación o interpretación, pero daría resultados erróneos al ejecutarse.

C. Fase de documentación del programa

Añadiendo al contenido incluido hasta ahora en la documentación del programa, los formularios de datos específicos del programa, y las instrucciones de operación y grabación de datos relativos a éste, se habrá completado la documentación y con ello el ciclo de construcción del programa.

En el futuro, estos programas deberán sufrir mantenimientos, actualizaciones y, para la explotación del mismo es imprescindible la documentación del mismo:

A nivel usuario, se provee un manual con instrucciones de cómo ejecutar el programa, descripción

de los comandos a utilizar, ejemplos de situaciones y una guía de cómo eliminar problemas que puedan surgir.

A nivel programador, consta de ayudas que puedan simplificar el mantenimiento , incluyen

descripción del programa, herramientas de diseño utilizada, descripciones de entrada-salida, etc. También se incluyen los procedimientos para probar el programa. Ayuda mucho que en el mismo programa fuente se agreguen comentarios sobre lo que se intenta hacer en cada bloque.

A nivel operador, se dan instrucciones sobre qué unidades deben activarse, tamaños de papel,

cintas, etc.

Resulta beneficioso hacer y preparar la documentación a lo largo de cada etapa de desarrollo.

D. Fase de explotación del programa

Consiste en el normal funcionamiento del programa para cumplir el objetivo para el que fue destinado. Esta fase es llevada a cabo por el usuario a lo largo del ciclo de vida del programa y corre a cargo de los usuarios de la entidad para la que ha sido desarrollada la aplicación a la que pertenece el programa.

SUMA = SUMA + B

R = S/C

L = 2 * P * R

LÓGICA COMPUTACIONAL Hünicken, Helvia E.

7

En síntesis, un programa de computadora es un conjunto de instrucciones –órdenes dada a la máquina- que producirán la ejecución de una determinada tarea. En esencia, un programa es un medio para conseguir un fin, ese fin es definido como la información necesaria para solucionar un problema.

Una solución a un problema puede no ser la única, pueden haber varias. Estas soluciones, luego de ser formuladas y analizadas, permiten inferir en cuál es la mejor solución de todas las planteadas, con esto queremos afirmar que, en circunstancias bien determinadas se considerará una única como la más eficaz y eficiente.

LÓGICA COMPUTACIONAL Hünicken, Helvia E.

8

Actividades 1

Conteste los siguientes puntos. 1. Busca el significado de las siguientes palabras:

a) Algoritmo

b) Aplicación

c) Archivo

d) Código

e) Documentación

f) Lenguaje de alto nivel

g) Lenguaje de programación. Ejemplos.

h) Módulo

i) Proceso

j) Programa fuente

k) Programa objeto

l) Programación

m) Programador

n) Usuario

2. ¿En qué etapa se debe documentar el programa?

3. ¿En qué momento –etapa-, estoy en condiciones de elegir el lenguaje de programación que mejor se adapte a la solución del problema?

4. ¿En qué etapa se termina de definir el problema a solucionar?

5. ¿Los datos de qué etapa necesito para realizar, por ejemplo, un diagrama de flujo?

6. ¿En qué etapa se clarifica qué entradas, qué procesos y qué salidas va a tener el programa?

7. ¿En qué etapa me doy cuenta si mi programa no funciona correctamente debido a que tiene errores (bugs)?

8. ¿Por qué le parece a usted que puede resultar el paso del algoritmo al código –instrucciones dadas a la computadora- una tarea compleja?

9. ¿Qué diferencias ve entre el gráfico de un sistema de procesamiento de información y el gráfico de las partes del programa?

10. ¿Para qué se programa?

LÓGICA COMPUTACIONAL Hünicken, Helvia E.

9

2. OBJETOS DE UN PROGRAMA

2.1 Objetos

Son objetos de un programa todos aquellos manipulados por las instrucciones. Mediante ellos, en un programa podremos realizar el almacenamiento de los datos y de los resultados de las distintas operaciones que intervienen en la solución del problema.

[Ensaye un concepto de constantes y variables a nivel de programa]

OBJETOS

Todo objeto tiene sus atributos:

Nombre: Es con el cual se identifica al mismo.

Para identificarlo se utiliza una secuencia de uno o más caracteres en donde el primer caracter es una letra, los siguientes pueden ser letras , dígitos o algunos caracteres especiales (depende del lenguaje). No puede usarse un espacio como caracter de la secuencia. El espacio determina el fin de la secuencia.

Es preferible que dicho nombre indique algo sobre el propósito para el cual se emplea. Nombres bien elegidos, no solo hacen los algoritmos más fáciles de leer y entender, sino también de modificar los ya escritos antes.

Tipo: Es el conjunto de valores válidos que puede tomar.

Conjunto de características comunes que identifican todos los posibles estados que el objeto de ese tipo puede tomar.

Valor: Es el elemento del tipo que se le asigna.

El cual puede variar al pasar de un estado a otro, otros sin embargo no cambian nunca su valor. Por tanto los objetos de un programa son como cajas con tapas en donde aparece adherida una etiqueta (nombre), ésta caja tiene una forma determinada (tipo) y dentro de ellas hay almacenada información (valor).

2.1.1. Constante

Es un objeto de valor invariable a lo largo de la ejecución de un programa, es decir que tiene un valor concreto.

Ejemplos:

PI = 3.141592

e = 2.718281

CONSTANTES:

VARIABLES:

El signo “=“ es transferir (mover o asignar) lo que se halla a la derecha del símbolo hacia la

variable de la izquierda.

LÓGICA COMPUTACIONAL Hünicken, Helvia E.

10

2.1.2. Variable

Es un objeto cuyo valor puede ser modificado a lo largo de la ejecución de un programa.

Ejemplos:

X = 0

X = X + 1

[Resuelve la siguiente tabla]:

N Z

1 N = 2

2 Z = 0

3 Z = Z + N

4 Z = Z + N

5 Z = Z + N

6 Z= Z + N

[Tache lo que no corresponda y fundamente su elección]

La constante aquí es:

N Z

Porque ..............................................................................................................................

.........................................................................................................................................

La variable aquí es:

N Z

Porque ..............................................................................................................................

.........................................................................................................................................

donde X es una variable tipo numérico

LÓGICA COMPUTACIONAL Hünicken, Helvia E.

11

Lo mismo dicho en otros términos es:

Campo: Un campo es un área de almacenamiento principal que contiene datos y resultados

intermedios de los cálculos o resultados finales.

Los campos pueden contener caracteres

Ejemplo de nombres de campo:

NOMBRE MATRICULA DNI CAL1 CAL2

Al mencionar un campo por su nombre, lo que en realidad se hace es extraer el contenido de dicho campo, sirviendo el nombre sólo para indicar una posición determinada en la memoria de la máquina.

Como se dijo, los campos pueden contener caracteres sólo numéricos, sólo alfabéticos o una combinación de ambos.

Ejemplo:

NOMBRE MATRICULA CAL1 CAL2

En este ejemplo NOMBRE es un campo alfabético, su contenido es PEREZ; MATRICULA es un campo numérico que contiene 160114 y CAL1, CAL2 son campos numéricos que contienen 8 y 9 respectivamente.

[Realizar las siguientes operaciones entre campos e indicar el contenido final de los mismos, si el contenido inicial es]:

1.

A B C

A B C

a A = B

b C = A

c B = (A + B + C )/ 2

d A = A + C

e C = B - A

f C = C - A

g A = A * B

numéricos

alfabéticos

alfanuméricos

entero

real

PEREZ 160114 8 9

4 2 3

LÓGICA COMPUTACIONAL Hünicken, Helvia E.

12

2.

X Y Z

X Y Z

a X = X + Y

b Y = X + Y

c Y = X + 20

d Z = Y - X

e X = Z / 20

f Y = Y / 5

g Z = X + Y - 10

2.2. Expresiones

Las expresiones son combinaciones de constantes, variables, símbolos de operación y nombres de funciones especiales.

Una expresión consta de:

Operandos

Operadores

Ejemplo: 5 + 3

Donde 5 y 3 son operandos y el signo “+” es el operador

Según el resultado de evaluar la expresión sea un número, una serie alfanumérica o uno de los valores lógicos (Verdadero o Falso), es decir, según el tipo de objetos que manejan, las expresiones se clasifican en:

Expresiones aritméticas: análogas a fórmulas matemáticas, en donde se utilizan: a) operadores

tipo aritméticos y b) variables y constantes numéricas (reales o enteras).

Ejemplo: - 8 * 2 + 4 / 2 – 3 PI * SQR(X)

Expresiones alfanuméricas: se utilizan operadores alfanuméricos y producen resultados de tipo

alfanuméricos.

Ejemplo: “Lic. “ + NOM

Expresiones relacionales: Se utilizan operadores relacionales. Se compara entre dos valores

del mismo tipo, es decir que los operandos son ambos numéricos, ambos carácter o ambos del tipo lógico. El resultado de la evaluación de una expresión relacional es de tipo lógico: Falso o Verdader. Ejemplo: A + B < = A * B

Expresiones lógicas: Se utilizan operadores lógicos. El resultado de este tipo de expresión es

un valor lógico: Falso o Verdadero, el cual se deduce de analizar la tabla de verdad correspondiente a los conectores lógicos. Ejemplo: A > 10 AND A < 20

10 20 60

LÓGICA COMPUTACIONAL Hünicken, Helvia E.

13

2.2.1. Operadores

Clasificación de los operadores que conectan los objetos en las expresiones, según su tipo:

TIPO SÍMBOLO NOMBRE FUNCIÓN

Paréntesis ( ) Anida expresiones

Aritméticos ** ó ^

*, /

+, -

Potencia

Producto, división

Suma, diferencia

Conectan objetos o campos numéricos

Alfanuméricos + Concatenación Conectan campos alfanuméricos

Relacionales =

<

<=

>

>=

<>

Igual a

Menor que

Menor o igual que

Mayor que

Mayor o igual que

Distinto a

Conectan objetos, campos o expresiones de cualquier tipo. Su evaluación da como resultado “Verdadero” o “Falso”.

Lógicos NOT

AND

OR

Negación

Conjunción

Disyunción

Conectan expresiones de tipo lógico. Su evaluación da como resultado “Verdadero” o “Falso”.

Los operadores lógicos NOT, AND y OR se evalúan según las tablas de verdad, siendo X e Y expresiones booleanas cuyo resultado de las operaciones lógicas viene determinado por dichas tablas:

Operador NOT Operador AND Operador OR

X NOT X X Y X AND Y X Y X OR Y

F V F F F F F F

V F F V F F V V

V F F V F V

V V V V V V

Todos los operadores de una expresión siguen el siguiente orden al evalluarlos:

1º Paréntesis (Comenzando por los más internos)

2º Potencias

3º Productos y divisiones

4º Sumas y Restas

5º Concatenación

6º Relacionales

7º Negación

8º Conjunción

9º Disyunción

Cuando en una expresión aparece más de un operador de cualquier tipo, el orden de evaluación comienza por el operador de mayor prioridad; si dos o más operadores son de la misma prioridad se evalúan de izquierda a derecha. Ejemplo:

LÓGICA COMPUTACIONAL Hünicken, Helvia E.

14

a. ( 5 + 3 ) * ( 2 + 7 ) * 3

8 * ( 2 + 7 ) * 3 8 * 9 * 3 72 * 3 216

b. ( ( 10 / 5 )^4 > 15 AND (8 + 4 ) = 12

VERDADERO AND VERDADERO

VERDADERO

c. “LOGICA” + “COMPUTACIONAL” = “LOGICA COMPUTACIONAL”

“LOGICACOMPUTACIONAL” = “LOGICA COMPUTACIONAL” FALSO

2.3. Tipos elementales de datos

Numérico. Es el conjunto de los valores numéricos que el procesador sabe tratar. Pueden ser

con o sin signo; enteros o reales. Ejemplo: 100 -100 2.718 3.14

Caracter. Es cuando se almacena uno y sólo uno del conjunto de caracteres (letras, cifras y

signos especiales). Las comillas no forman parte del caracter. Ejemplo: “#” “ ” “H” “7”

Cadena. Es el conjunto de las cadenas de caracteres que se pueden formar a partir de los

elementos del conjunto de caracteres (letras, cifras y signos especiales) que el procesador reconoce. Lo representaremos entre dos apóstrofes, delimitando así la cadena.

Ejemplo: a. “JUAN PEREZ” b. “Mátate estudiando y solo serás un cadáver culto”

Dentro de la cadena si hay espacios se los cuenta como caracter.

Lógico. Es el conjunto de dos valores lógicos, CIERTO y FALSO. Una variable (constante y

varriable) de tipo lógico siempre posee uno de estos dos valores.

2.4. Componentes de un programa

Constantes Numéricas Alfanuméricas

Objetos Numéricas

Variables Alfabéticas Alfanuméricas Aritméticas Componentes Expresiones Alfanuméricas De un Lógicas Programa De declaración De asignación

Acciones Primitivas (*) De entrada O Instrucciones De salida

Compuestas (**) Alternativa

De control Iteración o repetición

(*) También llamadas acciones elementales, son aquellas que pueden ser interpretadas por el procesador sin información adicional.

(**) Son aquellas que pueden subdividirse en acciones menos complejas.

LÓGICA COMPUTACIONAL Hünicken, Helvia E.

15

Actividades 2

1. [Responder]:

a. “El tiempo crea héroes y destruye celebridades”

b. “La elegancia de la honestidad no necesita adornos”

¿Cuántos caracteres tiene la cadena a? .....................

¿Cuántos caracteres tiene la cadena b? .....................

2. ¿Un campo puede ser de tipo alfanumérico y numérico a la vez?

3. [Tache lo que no corresponda, indicando si el nombre de campo correspondiente es correcto ]:

Nombre de un Campo Resultado

IVA Falso Verdadero

160114 Falso Verdadero

1APELLIDO Falso Verdadero

NOMBRE2 Falso Verdadero

HORARIO CLASE Falso Verdadero

4. [Tache lo que no corresponda]:

A B Expresión Relacional Resultado

7 7 A < > B Falso Verdadero

-3 3 A = B Falso Verdadero

8 10 A > = B Falso Verdadero

9 9 A < = B Falso Verdadero

5 1 A < B Falso Verdadero

5. [Evaluar las siguientes expresiones paso a paso, teniendo en cuenta los valores iniciales de las siguientes variables y constantes]:

PI E U V W

a. E^ ( V - 5 ) / ( V * W ) / ( U / 10 )

b. ( U^ ( V + W ) + 3 * ( V / U )) / W

c. NOT “PROGRAMACION“ + “ LOGICA” = “LOGICA” + “ PROGRAMACION”

d. PI + 1.858408 < V OR 2 * PI * U >= E

e. „E‟ = „e‟ OR NOT “METODO” + “LOGIA” = “METODOLOGIA”

3.141592 2.718281 1 5 2

LÓGICA COMPUTACIONAL Hünicken, Helvia E.

16

3. ALGORITMO

Algoritmo: Es una descripción paso a paso de algún proceso.

La palabra algoritmo deriva del matemático árabe AL-KUHARITMI, quien describió métodos para solucionar problemas aritméticos.

Los algoritmos son independientes tanto del lenguaje de programación en que se expresan como de la computadora que los ejecuta. Es decir que, un lenguaje de programación es tan sólo un medio para expresar un algoritmo y que una computadora es sólo un procesador para ejecutarlo.

Cabe destacar la importancia de la fase de diseño del algoritmo, la cual requiere creatividad y conocimientos profundos de la metodología de la programación (metodología necesaria para resolver problemas mediante programas).

3.1. Características de los algoritmos

Las características fundamentales que debe cumplir todo algoritmo son:

a) Ser preciso e indicar el orden de realización de cada paso.

b) Estar definido. Si se sigue un algoritmo dos veces, se debe obtener el mismo resultado cada vez.

c) Ser finito. Si se sigue un algoritmo, se debe terminar en algún momento; o sea debe tener un número finito de pasos.

Para aclarar este concepto de algoritmo, veremos como ejemplo el caso que ocurre a menudo, el cambio de un neumático pinchado.

Algoritmo de cambio de neumático.

[Usted deberá colocar los siguientes pasos en orden lógico]

1. SACAR LA RUEDA.

2. BAJAR EL GATO.

3. QUITAR TUERCAS.

4. LEVANTAR EL COCHE CON EL GATO.

5. COLOCAR LAS TUERCAS.

6. COLOCAR LA RUEDA DE REPUESTO.

Solución:

1 .................................................................................

2 .................................................................................

3 .................................................................................

4 .................................................................................

5 .................................................................................

6 .................................................................................

Nota: A este algoritmo se le podrían agregar muchos detalles más.

LÓGICA COMPUTACIONAL Hünicken, Helvia E.

17

Un algoritmo debe reunir las siguientes características generales:

Legibilidad. Ha de estar escrito de tal forma que facilite su lectura y comprensión.

Portabilidad. Su diseño debe permitir la codificación en diferentes lenguajes de programación, así como su instalación en diferentes sistemas –que se pueda ejecutar en diferentes plataformas hardware-.

Modificabilidad. La de facilitar su mantenimiento, esto es, las modificaciones y actualizaciones necesarias para adaptarlo a una nueva situación.

Eficiencia. Se deben aprovechar al máximo los recursos del computador, minimizando la

memoria utilizada y el tiempo de proceso o ejecución.

Modularidad. Ha de estar subdividido en bloques o módulos, cada uno de los cuales realizará

una parte del conjunto del trabajo.

Estructuración. Debe cumplir las reglas de la “programación estructurada” para facilitar la verificación, depuración y mantenimiento del programa.

Para representar un algoritmo se debe utilizar algún método que permita independizar dicho algoritmo de un lenguaje de programación en particular, lo que significa que permitiría que ese algoritmo pueda ser codificado indistintamente en cualquier lenguaje. Para lograrlo, es necesario que ese algoritmo se pueda representar gráficamente o numéricamente.

Algunos de los métodos para representar un algoritmo son:

Diagrama de flujo

Diagrama N-S (Nassi-Schneiderman)

Seudocódigo

Lenguaje español

Fórmulas

Nota: Más adelante desarrollaremos los métodos de Seudocódigo y Diagrama de Flujo. Para mayor información sobre el resto de los métodos consulte bibliografía referente a los mismos.

3.2. Metodología de la programación

Es el conjunto de métodos y técnicas disciplinadas que ayudan al desarrollo de unos programas que cumplan con los requisitos anteriormente expuestos.

Programación modular Programación Estructurada

El programa consta de módulos; cada uno de los cuales realiza una tarea concreta.

El programa es estructurado, es decir que utiliza lo que se llama: estructuras de control

LÓGICA COMPUTACIONAL Hünicken, Helvia E.

18

3.2.1. Programación Modular

Consiste en dividir el programa en módulos. El problema se dividirá en forma lógica, en partes perfectamente diferenciadas que pueden ser analizadas, diseñadas, programadas y puestas a punto independientemente.

La programación modular se basa en el diseño descendente (top-down) que permite comprobar el funcionamiento de cada módulo mediante módulos ya comprobados

El montaje de la red se hace en modo ascendente (botton-up), por lo que un programador puede estar escribiendo el módulo 8 mientras otro el módulo 9. Una vez terminados ambos se puede comprobar su funcionamiento con un ficticio 4 que llama a ambos.

El módulo está constituído por una o varias instrucciones físicamente contiguas y lógicamente

encadenadas, las cuales se pueden referenciar mediante un nombre y pueden ser llamadas desde diferentes puntos de un programa. Un módulo puede ser: a) Un programa, b) Una función, c) Una subrutina (o procedimiento).

Cada módulo sólo puede tener una entrada y una salida que lo enlazan con el módulo principal, incluso habiendo estructuras repetitivas y alternativas dentro de un módulo.

Características de un módulo: pueden tener la máxima cohesión y el mínimo de acoplamiento

(máxima independencia entre ellos). La salida del módulo debe ser función de la entrada, pero no de ningún estado interno. En esencia, el módulo ha de ser una caja negra que facilite unos valores de entradas y suministre unos valores de salida que sean función de las entradas.

Requisitos de la programación modular: a) Establecimiento de un organigrama modular, b)

Descripción del módulo principal, c) Descripción de los módulos básicos o secundarios y, d) Normas de la programación.

El organigrama modular se realiza mediante bloques, en el que cada uno corresponde a un móduo y muestra gráficamente la comunicación entre el módulo principal y los secundarios.

El módulo principal debe ser claro y conciso, reflejando los puntos fundamentales del programa.

Los módulos básicos deben resolver partes bien definidas del problema. Sólo pueden tener un punto de entrada y un punto de salida. Si un módulo es complejo de resolver, conviene se subdivida en submódulos. Ningún módulo puede ser llamado desde distintos puntos del módulo principal.

Las normas de programación dependerán del análisis de cada problema y de las normas generales o particulares que haya recibido el programador.

Criterios de modularización. La división de un programa en módulos debe cumplir los siguientes

criterios:

Cada módulo debe corresponder a una función lógica perfectamente diferenciada. El tamaño de cada módulo es variable. Deben ser pequeños para que sean claros y de poca

complejidad. Evitar variables externas. Procurar no utilizar demasiados niveles de modularización para evitar la complejidad de la red. Estructura de caja negra para cada módulo (la salida debe ser función exclusiva de la entrada).

Las técnicas de programación modular aportan un método o filosofía para la descomposición eficaz de un problema en problemas o módulos más sencillos. Se pueden utilizar criterios de programación

Módulo raíz

Módulo 1 Módulo 2 Módulo 3 Módulo 4 Módulo 5

Módulo 6 Módulo 7 Módulo 8 Módulo 9 Módulo 10

LÓGICA COMPUTACIONAL Hünicken, Helvia E.

19

modular y posteriormente utilizar métodos de programación estructurada dentro de cada módulo independientemente. Una vez terminado el diseño de los programas de cada módulo, realizar el montaje del programa completo mediante un diseño ascendente.

3.2.2. Programación Estructurada

La programación estructurada fue desarrollada en sus principios por Dijkstra, al que siguieron una gran lista de nombres que realizaron lenguajes de programación adaptados a la aplicación directa de estas técnicas.

La programación estructurada es una forma de programar con la cual la estructura de un programa (relaciones entre sus partes) resulta muy clara.

Existen diversas definiciones de la programación estructurada que giran sobre el denominado Teorema de la estructura.

Un programa estructurado es entonces:

Fácil de leer y comprender.

Fácil de codificar en una amplia gama de lenguajes y en diferentes sistemas.

Fácil de mantener.

Eficiente, aprovechando al máximo los recursos del computador.

Modularizable.

En síntesis, se debe realizar un programa siguiendo técnicas o métodos estandarizados, los más empleados son: la programación modular y la programación estructurada.

Estas técnicas suelen ser complementarias, ya que el análisis de un problema puede utilizar criterios de programación modular para dividirlo en partes independientes y utilizar métodos de estructuración en la programación de cada módulo.

Todo ello, para evitar: a)Programas muy rígidos con problemas de adaptación a nuevas configuraciones, b) Pérdida de tiempo en la corrección de errores, c) Difícil comunicación entre los programadores, d) Evitar que el programa tenga una relación estrecha con el programador que lo realizó, e)Modificaciones difíciles de hacer, implicando mucho tiempo y elevado coste de mantenimiento, lo que conduce a colocar “parches” que complican el diseño inicial o que el programa caiga en desuso, frente al elevado coste de actualización que al final se optará por crear una nueva aplicación que sustituya a la existente y, f) Deficiencias en la documentación.

Teorema de la estructura. Se basa en el concepto de diagrama o programa propio que consiste en que toda estructura tenga un solo punto de entrada y un

solo punto de salida. Todo diagrama o programa propio, cualquiera que sea el trabajo que tenga que realizar, se puede hacer utilizando tres únicas estructuras de control que son

la secuencia, alternativa y repetitiva.

LÓGICA COMPUTACIONAL Hünicken, Helvia E.

20

Actividades 3

1. [Coloque los siguientes pasos en orden lógico]

Algoritmo para preparar el mate.

1. LLENAR EL MATE.

2. PONERLA A CALENTAR.

3. CEBAR EL MATE.

4. BUSCAR EL MATE.

5. RETIRARLA DEL FUEGO.

6. LLENAR LA PAVA DE AGUA.

7. VIGILAR EL AGUA.

8. BUSCAR LA BOMBILLA, LA YERBA Y EL AZUCAR.

9. PRENDER EL FUEGO.

Solución:

1 .................................................................................................

2 .................................................................................................

3 .................................................................................................

4 ....................................................................................... ..........

5 .................................................................................................

6 .................................................................................................

7 .................................................................................................

8 .................................................................................................

9 .................................................................................................

2. [Enuncie algún otro ejemplo de algoritmo]

............................................................................................................................. ............

.........................................................................................................................................

[Enuncie los pasos generales necesarios que llevaría a cabo con el ejemplo de algoritmo que acaba de mencionar]

1. ................................................................................................................

2. ................................................................................................................

3. ................................................................................................................

4. ................................................................................................................

5. ................................................................................................................

6. ................................................................................................................

[Tómese unos segundos y vuelva a leer el concepto de algoritmo...]

LÓGICA COMPUTACIONAL Hünicken, Helvia E.

21

4. DIAGRAMA DE FLUJO

[Ver anexo de símbolos]

Diagramas de flujo (FLOWCHART)

4.1. Diagramas de flujo del sistema

4.2. Diagramas de flujo del programa

También se denominan organigrams También se denominan ordinogramas

Representan gráficamente el flujo de datos e información que maneja un programa.

Representa gráficamente la secuencia lógica de las operaciones en la resolución de un problema, por medio de un programa de computador. Dicho de otra manera, es un esquema para representar gráficamente el algoritmo.

Aplicable en la fase de análisis. Aplicable en la fase de diseño del algoritmo.

Elementos:

En la parte superior: soportes que suministran los datos de entrada. (Símbolos de soporte de Entrada).

En el centro: el programa y su identificación. (rectángulo central: símbolo de proceso).

En la parte inferior: soporte para los resultados. (Símbolos de soporte que reciben los datos de Salida).

A la derecha e izquierda: los soportes de datos de Entrada/Salida.

El flujo de los datos. (líneas de flujo).

Elementos:

En la parte superior: símbolo de comienzo del programa. (1).

Símbolo de operaciones. (2).

De arriba abajo, de izquierda a derecha: la secuencia en que se realizan. (3).

Al final: símbolo de fin del programa. (4).

Ejemplo:

Ejemplo:

(1)

(3)

(2)

(3)

(3)

(4)

Inicio

Fin

Entrada de datos

Actualización

Listado de

incidentes

Visualización

de datos

Archivo

LÓGICA COMPUTACIONAL Hünicken, Helvia E.

22

[Complete los espacios del diagrama de flujo que correspondería al algoritmo de cambio de un neumático]

En la representación de ordinogramas, es conveniente seguir las siguientes reglas:

El comienzo del programa figurará en la parte superior del ordinograma.

Los símbolos de comienzo y fin deberán aparecer una única vez, utilizando el símbolo de parada (STOP) para representar cualquier otro tipo de interrupción o finalización.

El flujo de las operaciones será, siempre que sea posible, de arriba a abajo y de izquierda a derecha, en cuyo caso pueden omitirse las puntas de flecha.

Se debe guardar una cierta simetría en la representación de bifurcaciones y bucles, así como en el conjunto total del ordinograma.

Se evitarán siempre los cruces de líneas de flujo utilizando conectores.

El uso de comentarios estará restringido al mínimo imprescindible; al contrario que en la codificación, en la que son mucho más recomendables.

Si en un ordinograma se ha separado una parte de otra por medio de un conector, las posibles conexiones que puedan aparecer desde esta última a la anterior, se harán igualmente con conectores, evitando el uso de líneas de flujo directas.

Los símbolos que se utilizan para la representación gráfica en los diagramas de flujo son establecidos por las Normas IRAM 36002 y 36003 correspondientes al INSTITUTO ARGENTINO de RACIONALIZACION de MATERIALES.

LÓGICA COMPUTACIONAL Hünicken, Helvia E.

23

Ejemplo:

Programa que lee un número del dispositivo estándar de entrada y comprueba e imprime en el dispositivo estándar de salida si dicho número es nulo, positivo o negativo.

Tabla de verificación o prueba de escritorio

C paso realizado N paso realizado SALIDA

0 [C = 0]

1 [C = C + 1] 39 [Leer N] POSITIVO

2 [C = C + 1] -175 [Leer N] NEGATIVO

3 [C = C + 1] 74 [Leer N] POSITIVO

4 [C = C + 1] 0 [Leer N] NULO

5 [C = C + 1] 82 [Leer N] POSITIVO

[Grafique por lo menos un símbolo (de sistema) que representaría cada parte de un programa ]

ENTRADA PROCESO SALIDA

LÓGICA COMPUTACIONAL Hünicken, Helvia E.

24

4.3. Elementos auxiliares de una programa

Son variables que realizan funciones específicas dentro de un programa. Las más importantes son los contadores, acumuladores e interruptores.

4.3.1. Contadores.

Un contador es un campo de memoria cuyo valor se incrementa en una cantidad fija, positiva o negativa, generalmente asociado a un bucle. Es un caso particular del acumulador.

Se utiliza en los siguientes casos:

Para contabilizar el número de veces que es necesario repetir una acción (variable de control del bucle).

Para contar un suceso particular solicitado por el enunciado de problema (asociado a un bucle o independientemente).

CONT CONT + 1

4.3.2. Acumuladores.

Un acumulador es un campo de memoria cuyo valor se incrementa sucesivas veces en cantidades variables.

Se utiliza en aquellos casos en que se desea obtener el total acumulado de un conjunto de cantidades, siendo preciso inicializarlo con el valor 0.

También en las situaciones en que hay que obtener un total como producto de distintas cantidades se utiliza un acumulador, debiéndose inicializar con el valor 1.

ACUM ACUM + NOTA

4.3.3. Interruptores.

También se denominan SWITCHES, BANDERAS, CONMUTADORES.

Un interruptor es un campo de memoria que puede tomar dos valores exclusivos (0 y 1, -1 y 1, FALSO y VERDADERO, etc.).

Se utiliza para:

Recordar en un determinado punto de un programa la ocurrencia o no de un suceso anterior, para salir de un bucle o para decidir en una instrucción alternativa qué acciones realizar.

Para hacer que dos acciones diferentes se ejecuten alternativamente dentro de un bucle.

LÓGICA COMPUTACIONAL Hünicken, Helvia E.

25

Actividades 4

1. [Tache lo que no corresponda y fundamente su elección]

Supone usted que un diagrama de flujo deba reflejar:

El comienzo del programa.

S I NO

Porque ................................................................................................................. .............

...........................................................................................................................................

Las operaciones.

S I NO

Porque .............................................................................................................................

..........................................................................................................................................

La secuencia en que se realizan.

S I NO

Porque ............................................................................................................................

.........................................................................................................................................

El final del programa.

S I NO

Porque ...................................................................................................................... .......

..........................................................................................................................................

2. Cada operación lógica se identifica con un símbolo distinto.

[Usted deberá rellenar la línea punteada con el gráfico del símbolo correspondiente a cada punto]

Utilizamos la caja .......................... para indicar donde comienza el diagrama (INICIO) y donde finaliza (FIN).

Utilizamos la caja .......................... llamada caja de asignación, para encerrar instrucciones de ejecución de ciertas acciones como por ejemplo sumar números, calcular la raíz cuadrada de un número, etc.

Utilizamos .......................... para encerrar una pregunta. Esta caja se denomina caja de decisión, pues la respuesta a la pregunta nos señala qué debe hacerse a continuación.

Se utilizan .......................... para indicar el flujo del procedimiento desde un paso al siguiente.

Utilizamos ........................... para conectar caminos, tras roturas previas del flujo del algoritmo.

Utilizamos ........................... para representar cualquier tipo de entrada o salida desde el programa o sistema; por ejemplo, entrada de teclado, salida en impresora o pantalla, etc.

LÓGICA COMPUTACIONAL Hünicken, Helvia E.

26

5. SEUDOCÓDIGO

Es una herramienta para diseñar algoritmos –diseño de la solución de un problema por computadora- No depende de un lenguaje de programación particular. Utiliza palabras y frases del lenguaje natural (en este caso: el español), y sujetas a determinadas reglas.

El seudocódigo es utilizado en la fase de diseño del programa, por ser, la utilización de un lenguaje, debido a su rigidez, no aconsejable.

6. ESTRUCTURAS BÁSICAS

Como versa el Teorema de la estructura, decimos que toda acción se puede realizar utilizando tres estructuras básicas de control, la estructura secuencial, alternativa y repetitiva.

6.1. Estructura secuencial.

Es una estructura con una entrada y una salida en la cual figuran una serie de acciones cuya ejecución es lineal y en el orden que aparecen. A su vez todas las acciones tienen una única entrada y una única salida.

ORDINOGRAMA PSEUDOCODIGO

I1; I2; ... In

Secuencial Alternativa (IF)

Repetitiva

Alternativa Simple (IF) Alternativa Doble (IF)

Alternativa Múltiple (CASE)

Para (FOR) Mientras (WHILE) Hasta (UNTIL)

ESTRUCTURAS

BASICAS

LÓGICA COMPUTACIONAL Hünicken, Helvia E.

27

6.2. Estructura alternativa.

Es una estructura con una sola entrada y una sola salida en la cual se realiza una acción de entre varias según una condición o se realiza una acción según el cumplimiento o no de una determinada condición.

Estas pueden ser:

6.2.1. Alternativa simple.

Es la ejecución condicional de una acción. Esta composición permite expresar que un acontecimiento sucederá bajo cierta condición.

6.2.2. Alternativa doble.

Es la ejecución alternativa de una entre dos acciones. Permite expresar que debe provocarse un acontecimiento bajo cierta condición contraria.

6.2.3. Alternativa multiple.

Se adoptan cuando la condición puede tomar n valores enteros distintos: 1; 2; 3; ...; n. Según se elija uno de estos valores en la condición, se realizará una de las n acciones (cada vez sólo se ejecuta una acción).

Esta estructura fue propuesta por HOARE. En castellano se llama según, Según_sea, Caso de, Opción.

Si CONDICION entonces I1; ....; In sino J1; ...; Jk

finsi

Si CONDICION entonces I1; ....; In

finsi

LÓGICA COMPUTACIONAL Hünicken, Helvia E.

28

V1 V2 Vn Otros

6.3. Estructuras repetitivas.

Es una estructura con una entrada y una salida en la cual se repite una acción un número determinado o indeterminado de veces, dependiendo en este caso del cumplimiento de una condición.

Las estructuras repetitivas pueden ser:

+ Estructura para (FOR)

+ Estructura mientras (WHILE)

+ Estructura hasta (UNTIL)

6.3.1. Estructura para (for).

En esta estructura se repite una acción o un grupo de ellas, un número fijo de veces respetado normalmente por N, este valor es un número que está determinado a priori por lo que el esquema de resolución será:

Se repiten las instrucciones I1, I2, ...In, un número fijo de veces, tantas como sucesivos valores toma la variable de control del bucle Vc desde, inicialmente Vi, incrementándose a cada repetición en In, hasta que el valor de Vc supera Vf. Si el incremento es +1 no hace falta expresarlo.

6.3.2. Estructura mientras (while).

Para Vc de Vi a Vf con incremento In hacer I1; I2; ... In

finpara

expresión

Proceso 1 Proceso Proceso N Proceso 2

Opción EXPRESION de: V1 hacer I1; I2; ...; Ip V2 hacer J1; J2; ...; Jq Vn hacer K1; K2; ...; Kr Otro hacer L1; L2; ...; Ls Finopción

LÓGICA COMPUTACIONAL Hünicken, Helvia E.

29

En esta estructura se repite una acción mientras se cumpla la condición que controla el bucle.

El número de iteraciones oscila entre 0 e infinito dependiendo de la evaluación de la condición, esta condición a evaluar es una expresión lógica ya que devuelve verdadero o falso. Mientras la condición sea verdadera el ciclo continuará ejecutándose y la primera vez que sea falso el ciclo finaliza. A diferencia del for no dispone del paso de incrementación por lo tanto este debe estar incluido dentro del cuerpo de sentencias.

6.3.3. Estructura hasta (until).

En esta estructura se repite una acción hasta que se cumpla la condición que controla el bucle, la cual se evalúa después de cada ejecución del mismo.

El número de repeticiones oscila entre 1 e infinito dependiendo de la evaluación de la condición, cuyos argumentos en los casos de repetición al menos dos veces deberán modificarse dentro del bucle, pues de no ser así, el número de repeticiones será infinito y nos encontramos en un bucle sin salida.

repetir I1; ... In

hasta CONDICION

mientras CONDICION hacer I1; I2; ...In

finmientras

LÓGICA COMPUTACIONAL Hünicken, Helvia E.

30

7. LENGUAJE DE PROGRAMACIÓN BASIC

El nombre de BASIC responde a las siglas de Beginners All-purpose Symbolic Instruction Code (código de instrucción simbólica para todo propósito, dirigido a principiantes), fue desarrollado por John G. Kemeny y Thomas E. Kurtz en el Darmouth College en 1969.

Su propósito original fue el de enseñar a programar usando un lenguaje sencillo y fácil de comprender, pero probó ser tan útil que fue adoptado por los constructores de computadoras y gradualmente se fue convirtiendo en un lenguaje de programación más que en un método de enseñanza. Hoy el BASIC ha madurado y se convirtió en uno de los lenguajes de programación estándar. La encarnación más moderna de BASIC de Microsoft, denominada Visual Basic, soporta las características y métodos orientados a objetos.

Principales características que lo hacen diferente de los demás lenguajes:

Se puede dar un nombre muy corto a las variables del BASIC. Las variables pueden ser numéricas (A = 1) y alfanuméricas (A$ = “PEPE”). Los nombres de tales variables pueden empezar por cualquier letra del alfabeto.

El BASIC permite programar de una forma convencional. Gracias a que es un lenguaje intérprete, es decir que no necesita compilación (ya que cada instrucción se traduce inmediatamente antes de ejecutarse), se puede cargar un programa escrito en BASIC en memoria, ejecutarlo, corregirlo directamente si tiene algún error y volverlo a salvar en el dispositivo donde se tuviera almacenado.

Los mensajes de error generados por el BASIC son explícitos y numerosos. En un lenguaje de programación, la cantidad de mensajes de error que éste puede generar y la calidad de estos mensajes constituyen una característica importante de cara a poder medir la potencia de tal lenguaje. Los mensajes son muy útiles para el programador, ya que le indican, en el momento de producirse, el tipo de error de que se trata y a veces el por qué se ha producido. En el caso del BASIC, la información que el lenguaje da cuando se produce un error es muy completa; incluso, en caso de producirse uno, BASIC además del mensaje de error, indica la línea de programa donde se ha producido tal error.

Este lenguaje, a pesar de tener 300 palabras, es muy poderoso si se lo usa correctamente. Con BASIC, es posible programar virtualmente todo lo que la mente puede concebir. La gracia y las posibilidades de la programación consisten en tener una idea, expresarla lógica y precisamente en un programa y luego mejorarla y pulirla, hasta que el programa haga exactamente lo que tú le propones.

Cabe recordar que este punto marca el comienzo de la fase de programación y finaliza con la edición y puesta a punto, en donde, estas fases se caracterizan por la utilización de un lenguaje de programación (para el caso ponemos de ejemplo al lenguaje BASIC).

Instrucciones básicas del BASIC Identificaremos las instrucciones del lenguaje según su función: Instrucción de definición de matrices

La instrucción DIM DIM Nombre(Valor del índice) DIM: nombre de la instrucción. Nombre: nombre que se le va a dar a la matriz. Valor del índice: máximo valor que tomará cada uno de los índices. Con esta instrucción se define el nombre de una matriz o vector, el número de dimensiones de que constará y el valor máximo del índice de cada dimensión. Las matrices pueden ser numéricas o alfanuméricas. Ejemplo: DIM V(5) DIM M$(3, 3) DIM MA(5, 2) DIM V$(5) Instrucciones de asignación

LÓGICA COMPUTACIONAL Hünicken, Helvia E.

31

La instrucción LET LET Variable = Expresión LET: nombre de la instrucción, que puede omitirse. Variable: nombre de la variable numérica o alfanumérica a la que se quiere asignar un valor Expresión: puede ser una expresión numérica o alfanumérica. Nunca se puede realizar una asignación del valor de una expresión alfanumérica a una variable numérica, ni viceversa. Esta instrucción permite asignar un valor a una variable, ya sea numérica o alfanumérica. Ejemplo: LET A = 2 ó A = 2 D = (B + C) / 2 LET A$ = “PENTIUM” D$ = B$ + C$ La instrucción SWAP SWAP Variable1, Variable2 SWAP: nombre de la instrucción. Variable1: nombre de la primera variable. Variable2: nombre de la segunda variable. Esta instrucción permite intercambiar los valores de dos variables, es decir, asignar a la primera el valor de la segunda y a ésta el valor de la primera. Ejemplo: SWAP A, B SWAP A$, B$ Instrucciones READ/DATA

READ Variable DATA Constante READ: nombre de la instrucción. DATA: nombre de la instrucción. Variable: nombre de cada una de las variables donde se irán asignando las constantes almacenadas en el fichero interno. Constante: cada uno de los valores que se almacenará en el fichero interno que se creará. Estas dos instrucciones se complementan. El hecho de especificar instrucciones DATA en un programa BASIC hace que se cree un fichero interno con los datos de tales instrucciones, datos que posteriormente pueden leerse y asignarse a variables mediante instrucciones READ. Ejemplo: 10 READ A, B, C, D 20 DATA 5, 10, 15, 20 30 PRINT A, B, C, D Instrucción de entrada de datos

La instrucción INPUT INPUT “Mensaje”; Variable INPUT: nombre de la instrucción. Mensaje: literal que aparece en pantalla para avisar al operador que debe digitar algún dato, que puede omitirse. Variable: cada uno de los nombres de variable en las que se irán almacenando los datos entrados desde teclado. La función de esta instrucción consiste en leer datos que se entran desde teclado y asignarlo a una o más variables especificadas en la instrucción. Ejemplo: INPUT A INPUT “Lado “; B INPUT “Lado “, C INPUT “Datos: “; A, B, C

En la variable A se almacenará el valor 5, en la B el 10, en la C el 15 y en la D el 20; por lo tanto al ejecutar la instrucción de la línea 30, se imprimirán los valores 5, 10, 15, 20.

LÓGICA COMPUTACIONAL Hünicken, Helvia E.

32

Instrucciones de salida de datos

La instrucción PRINT PRINT Expresión PRINT: nombre de la instrucción. Expresión: Cualquier expresión, ya sea numérica o alfanumérica. Es la instrucción utilizada para visualizar información en la pantalla de la computadora. Ejemplo: PRINT “PEPE” PRINT “AREA = “; A PRINT TAB(10); “AREA = “; A En este caso, tal mensaje, en lugar de visualizarse a partir de la primera posición de la línea, se visualizaría a partir de la 10. La instrucción LPRINT LPRINT Expresión Esta instrucción realiza lo mismo que la instrucción PRINT, pero, en lugar de visualizar información en pantalla, la imprime en la impresora. Instrucciones de control

La instrucción GOTO GOTO Nº de línea GOTO: nombre de la instrucción. Nº de línea: número de la línea de programa a la que se le va a ceder el control de ejecución. Ejemplo: 10 REM 20 A = 5 30 B = 10 40 PRINT A, B 50 A = A + 5 60 B = B + 10 70 GOTO 40 La instrucción IF...THEN...ELSE IF Condición THEN Instrucción ELSE Instrucción END IF IF: palabra que forma parte del nombre de la instrucción. Condición: puede ser una expresión numérica, de comparación o lógica. THEN: palabra que forma parte del nombre de la instrucción. Instrucción: puede ser una instrucción cualquiera. ELSE: palabra que forma parte del nombre de la instrucción. END IF: cierra la instrucción IF, por lo tanto es su última palabra. Es útil para realizar un tratamiento diferente de un proceso, según se cumpla o no una determinada condición. Ejemplo: IF A > B THEN PRINT B, A ELSE PRINT A, B END IF

Aquí se irán ejecutando las instrucciones secuenciales a partir de la línea de programa 10, hasta llegar a la línea 70, en la cual encontramos una instrucción GOTO que cede el control de la ejecución a la línea 40. Para el caso citado se observa que el programa no terminará nunca.

LÓGICA COMPUTACIONAL Hünicken, Helvia E.

33

La instrucción WHILE WHILE Condición Instrucción WEND WHILE: palabra que forma parte del nombre de la instrucción. Condición: puede ser una expresión numérica, de comparación o lógica. Instrucción: puede ser una instrucción cualquiera. WEND: es la última palabra que forma parte de la instrucción y es la encargada de cerrar el bucle WHILE. Ejemplo: WHILE N > 0 A = A + N AM = AM * N WEND La instrucción DO-WHILE DO WHILE Condición Instrucción LOOP Ejemplo: DO WHILE N > 0 A = A + N AM = AM * N LOOP La instrucción DO-UNTIL DO Instrucción LOOP UNTIL Condición Ejemplo: DO S = S + N M = M * N LOOP UNTIL N > 0 La instrucción FOR FOR Variable de control = Valor inicial TO Valor final STEP Incremento Instrucción NEXT Variable de control FOR: palabra que forma parte del nombre de la instrucción. Variable de control: nombre de una variable entera o de simple precisión. Valor inicial: valor inicial que tomará la variable de control. TO: palabra que forma parte del nombre de la instrucción. Valor final: es el valor que tomará la variable de control por encima del cual el bucle llegará a su final. STEP: palabra que puede formar parte del nombre de la instrucción o no, es decir, es opcional. Incremento: también es opcional, pero, si se especifica, indica el valor que se le irá sumando al valor de la variable de control hasta llegar a su valor final. NEXT: nombre de la instrucción última de FOR, es la que cierra el bucle. Variable de control: nombre de la variable de control especificada en la primera instrucción del bucle. Cada vez que se pasa por la instrucción NEXT, se aumenta el valor de esta variable en un valor igual al especificado en el parámetro «incremento» de la instrucción FOR. Este parámetro es variable, ya que con la palabra NEXT es suficiente. El BASIC asocia el primer NEXT que encuentra con el último FOR que ha encontrado. Ejemplo: FOR J = 1 TO 5 INPUT N A = A + N AM = AM * N NEXT I

A este formato se lo utiliza indistintamente con el anteriormente expuesto, ya que realiza lo mismo.

LÓGICA COMPUTACIONAL Hünicken, Helvia E.

34

Instrucción CASE SELECT CASE expresión a probar CASE expresión-1 Instrucción-1 CASE expresión-2 Instrucción-2 CASE expresión-n Instrucción-n END SELECT SELECT CASE: nombre de la instrucción. expresión: cualquier expresión numérica o de cadena a probar. CASE: palabra que forma parte del nombre de la instrucción que, si coincide con el estado de la expresión se procederá a una acción acorde al evento. expresión-1/-2/-n: es la expresión para comparar con la expresión a probar. Instrucción-1/-2/-n: puede ser una instrucción cualquiera. END SELECT: palabra que forma parte de la instrucción. Es la que cierra la misma, por tanto es la última.

Algunas funciones BASIC Funciones propias del BASIC

Las funciones propias del lenguaje BASIC representan una parte muy importante, tanto en cantidad como en calidad, de tal lenguaje. Mediante estas funciones pueden efectuarse operaciones de tipo numérico o alfanumérico. Funciones numéricas

ABS: calcula el valor absoluto de una expresión numérica. Ejemplo: A = ABS(7 * (-2)) COS: calcula el coseno del argumento. Ejemplo: A = COS(0.5) FIX: calcula la parte entera de una expresión numérica. Ejemplo: PRINT FIX(60.78); visualizará 60. INT: calcula el entero más grande, inferior o igual a la expresión numérica especificada. Ejemplo: PRINT INT(65.75); visualizará 65. LOG: calcula el logaritmo natural de una expresión numérica positiva. Ejemplo: A = LOG(40 / 6) SGN: retorna un 1 si la expresión numérica es positiva y un 0 si es negativa. Ejemplo: A = SGN(-5); en A se almacenará un 0, porque el signo de la expresión es negativo. SIN: calcula el seno de una expresión numérica. Ejemplo: A = SIN(0.5) SQR: calcula la raíz cuadrada de una expresión numérica. Ejemplo: A = SQR(25) TAN: calcula la tangente de una expresión numérica. Ejemplo: A = TAN(2 / 5) Funciones alfanuméricas

CHR$: transforma un código decimal ASCII en su correspondiente caracter alfanumérico. Ejemplo: PRINT CHR$(84); dará como resultado T. LEFT$: toma caracteres del margen izquierdo de una serie alfanumérica original en una cantidad entera. Ejemplo: N1$ = “TERRY” S1$ = LEFT$(N1$, 2) de la serie N1$ toma los dos primeros caracteres, es decir TE y lo deja en S1$.

LÓGICA COMPUTACIONAL Hünicken, Helvia E.

35

LEN: calcula la longitud en número de caracteres de una serie alfanumérica dada. Ejemplo: A$ = “PENTIUM” A = LEN(A$) en este caso A tomará el valor 7. MID$: realiza la extracción de una subserie dentro de una serie de caracteres alfanuméricos, empezando desde una posición determinada. Ejemplo: A$ = “PEPITA JIMENEZ” B$ = MID$(A$, 8) hemos especificado el parámetro longitud. Entonces en B$ tendremos “JIMENEZ”. Si B$ = MID$(A$, 1, 6) tendremos en B$ la subserie “PEPITA” porque hemos especificado, desde la posición 1, 6 caracteres. RIGHT$: es similar a la función LEFT$ con la excepción de que toma los caracteres desde el final (derecha). Ejemplo: PRINT RIGHT$(N3$, 2) los dos caracteres de extrema derecha de la serie alfanumérica N#$ serán representados. STR$: convierte el valor de una expresión numérica en una serie alfanumérica. Ejemplo: A$ = STR$(1560) PRINT A$ en este caso A$ será igual a “1560”. VAL: convierte una serie alfanumérica en numérica. Ejemplo: A$ = “1560” A = VAL(A$) en este caso, A será igual a 1560. Otras funciones SLEEP: segundos SLEEP: nombre de la instrucción. segundos: el número de segundos durante los que se suspenderá temporalmente la ejecución del programa. Ejemplo: SLEEP 10 UCASE$(expresión-cadena$) LCASE$(expresión-cadena$) expresión-cadena$: es cualquier expresión de cadena. Estas funciones convierten cadenas en letras minúsculas o letras mayúsculas. Ejemplo: TEST$ = “La cadena” PRINT TEST$ PRINT LCASE$(TEST$); “en minúsculas” PRINT UCASE$(TEST$); “EN MAYUSCULAS”

BIBLIOGRAFÍA COMO PROGRAMAR SU COMPUTADOR PERSONAL

BASIC elemental para PC. Autor: Carl Shipman. Edit.: EL ATENEO

FUNDAMENTOS DE PROGRAMACION. Autor: Luis Joyanes Aguilar. Editorial Mc Graw-Hill

INFORMATICA PRESENTE Y FUTURO. Autor: Donald H. Sanders. Editorial Mc Graw-Hill

METODOLOGIA DE LA PROGRAMACION. Autor: Alcalde García. Editorial Mc Graw-Hill

PROGRAMACION COBOL. Autores: Fernando García; Almudena Cerro y J. Manuel Diez Perla. Editorial Mc Graw-Hill

Extraemos de A$ la subserie que comienza en la

posición 8 hasta el final porque no

LÓGICA COMPUTACIONAL Hünicken, Helvia E.

36

Actividades 4, 5, 6, 7

1. Investigue en qué ocasiones es conveniente aplicar estructuras alternativas para la resolución de un algoritmo estructurado.

2. De acuerdo a lo que usted entiende, ¿cuándo es conveniente utilizar estructuras repetitivas en el diseño de un algoritmo?

3. Realizar un programa que calcule la suma, resta, multiplicación y división de dos números ingresados.

4. Indique los pasos algorítmicos que se siguen para de formatear un diskette de de 1.44MB.

5. Similar al punto anterior, identifique los pasos que lleva a cabo para colocar la mesa para comer.

6. Realice un programa en el que se intercambien los valores de dos variables numéricas. Realizar también el seudocódigo del mismo.

Análisis: Se utiliza una variable auxiliar (por ejemplo AUX), que va a contener temporalmente a uno de los valores dados. Las variables que se utilizarán son: A B AUX, donde A es el primer valor; B es el segundo valor y AUX es la variable auxiliar.

Se asigna uno de los valores de las variables a la variable auxiliar: AUX = A

Se asigna el valor de la otra variable B a la primera. A = B

Luego, se asigna el valor de la variable auxiliar a la segunda variable. B = AUX

7. Programa que obtenga la potencia, raíz cuadrada y raíz cúbica de un número.

8. Programa que obtenga el promedio de las notas obtenidas en tres parciales.

9. Programa que resuelva la siguiente expresión: ( A + B * C ) / 2

10. Programa que resuelva la siguiente expresión: B2 – 4AC

11. Programa que evalúe la siguiente expresión, para N1 = 8 y N2 = 2:

5 * N2 – 3 * N1 ^ 2 * N2

12. Programa que resuelva la siguiente expresión: r2

13. Programa que resuelva la siguiente expresión: 2

22

z

yx

14. Programa que resuelva la siguiente expresión: (x2 –x1)2 + (y2 – y1)

2

15. Programa que resuelva la siguiente expresión: BA2

16. Pase el siguiente seudocódigo a diagrama de flujo (de programa), y luego, al lenguaje BASIC:

inicio escribir “¿Cuál es tu nombre?” leer NOMBRE escribir “HOLA!”, NOMBRE escribir “Seamos amigos” fin

17. Programa que, al ingresar un 1 imprima VERDADERO. Al ingresar un 0 imprime FALSO.

18. Programa que indique si el número ingresado es negativo.

19. Programa que imprima un mensaje diciendo si el número que se ingresó es positivo, negativo o nulo.

20. Programa que indique si el número entero ingresado es par o impar.

21. Programa que obtenga el menor de dos nombres ingresados.

LÓGICA COMPUTACIONAL Hünicken, Helvia E.

37

22. Programa que obtenga el mayor de dos valores ingresados.

23. Pasar a ordinograma el siguiente algoritmo:

a) OBTENER EL PRIMER NÚMERO (ENTRADA), DENOMINADO NUM1.

b) OBTENER EL SEGUNDO NÚMERO (ENTRADA), DENOMINADO NUM2.

c) COMPARA NUM1 CON NUM2 Y SELECCIONAR EL MAYOR; SI LOS DOS ENTEROS SON IGUALES, SELECCIONAR NUM1. LLAMAR ESTE NÚMERO MAYOR.

d) OBTENER EL TERCER NÚMERO (ENTRADA), DEMOMINARLO NUM3.

e) COMPARAR MAYOR CON NUM3 Y SELECCIONAR EL MAYOR; SI LOS DOS ENTEROS SON IGUALES, SELECCIONAR EL MAYOR, DENOMINAR A ESTE NÚMERO MAYOR.

f) PRESENTAR EL VALOR DE MAYOR (SALIDA)

g) FIN

24. Diseñe un algoritmo (diagrama de flujo) que resuelva el procedimiento para enviar una carta utilizando los símbolos correspondientes que contengan:

- PONER LA DIRECCIÓN EN EL SOBRE

- INICIO

- PEGAR FRANQUEO COMÚN EN EL SOBRE

- FIN

- PEGAR FRANQUEO DE VÍA AÉREA EN EL SOBRE

- ¿ES VÍA AÉREA?

- PEGAR EL SOBRE

- COLOCAR LA CARTA EN EL SOBRE

- TIRAR LA CARTA DENTRO DEL BUZÓN

25. Diseñe un algoritmo (ordinograma) que resuelva el problema de hornear una torta.

- ¿ESTÁ LISTO EL HORNO?

- FIN

- ENCENDER EL HORNO

- APAGAR EL HORNO

- INICIO

- ESPERAR 10 MINUTOS

- DEJAR DESCANSAR 45 MINUTOS

- PREPARAR EL BATIDO DE LA TORTA

- RETIRAR LA TORTA DEL HORNO

- ¿ESTÁ LA TORTA SUFICIENTEMENTE COCIDA?

- COLOCAR LA TORTA EN EL HORNO

- ESPERAR UN MINUTO O DOS

- ESPERAR UN MINUTO O DOS

26. Programa que calcule el área de un triángulo dada la base y altura del mismo.

La fórmula es: S = (1 / 2) B * H

Realice la tabla de verificación para los valores de base = 4.5 y altura = 7.2

27. Diseñe el algoritmo que calcule el área de un triángulo en función de las longitudes de sus lados.

LÓGICA COMPUTACIONAL Hünicken, Helvia E.

38

Fórmula: cpbpappArea

donde p = (a + b + c) / 2 (semiperímetro).

28. Programa que calcule el radio de un círculo conociendo su área 2rA se puede resolver

para: /Ar

29. Programa que resuelve una ecuación de segundo grado Ax2 + Bx + C = 0

Análisis: Las soluciones o raíces son:

A

ACBBX

2

42^1

A

ACBBX

2

42^2

Es preciso que el discriminante sea mayor que cero.

Discriminante: D = B^2 – 4AC

Entonces, si: D = 0 A

BX

21

A

BX

22

D < 0 X1 y X2 no tienen solución real.

30. Programa que, de 10 números ingresados indique cuántos de ellos fueron positivos, cuántos negativos y cuántos nulos.

31. Programa que calcule la media de las notas del parcial de una clase de 10 alumnos.

32. De 10 número ingresados, la salida indicará cuál fue el máximo.

33. Programa que obtenga el valor mínimo de las temperaturas registradas en la semana.

34. Programa que obtenga simultáneamente el máximo y el mínimo de 7 números ingresados.

35. Programa que acumule los valores ingresados hasta que se introduzca uno negativo.

36. Programa que acumule números mientras no se ingrese un cero.

37. Programa que multiplique los números leídos hasta que el contador supere el número 5.

38. Programa que escriba los nombres de los días de la semana en función del valor de una variable numérica DIA.

Los días de la semana son 7, es decir que el rango de valores DIA será 1..7 y si DIA toma un valor fuera de ese rango, deberá indicarlo con un mensaje de error.

39. Programa que sume los números pares comprendidos entre 10 y 20 inclusive.

40. Programa que ingrese 5 veces un número distinto cada vez e imprima la suma de todos ellos.

41. Programa que repita 3 veces a) el ingreso de dos números, b) compara cuál es el menor y c) imprime el menor obtenido.

42. Programa que obtenga el promedio de las notas de un curso de 10 alumnos.

43. Program que sume los números impares entre 4 y 10 inclusive. Realizar la tabla de verificación.

44. Programa que de 10 números ingresados obtenga cuántos de ellos fueron negativos.

45. Programa que determine en un conjunto de 15 números naturales: a)¿Cuántos son menores que 8?; b)¿Cuántos mayores que 20?; y ¿Cuántos están comprendidos entre 10 y 15?

46. Programa que lea 4 veces 2 números y los imprima ordenados en forma descendente.

47. Algoritmo que sume independientemente los pares y los impares de los números comprendidos entre 1 y 16.

Utilizar un interruptor, también llamado switch en dicha solución.

48. Algoritmo principal que llame a una subrutina según corresponda. Con dos números ingresados realizar una de las acciones posibles:

LÓGICA COMPUTACIONAL Hünicken, Helvia E.

39

Sumar los dos números ingresados

Restar

Multiplicar

Dividir

Raíz cuadrada

Raíz cúbica

49. Algoritmo que obtenga el producto de dos números enteros positivos mediante sumas sucesivas.

50. Algoritmo que resuelva la siguiente ecuación algebraica:

fa b c a b c

c a bm n

68 7 22 1 7

1 3

. / . //

/

LÓGICA COMPUTACIONAL Hünicken, Helvia E.

40

ANEXO SIMBOLOS E = Soporte de entrada

S = Soporte de salida

E/S = Soporte de entrada y salida

PARA DIAGRAMAS DE FLUJO DE SISTEMA (ORGANIGRAMA).

SIMBOLOS DE SOPORTE

DESCRIPCION SIMBOLOS DE SOPORTE

DESCRIPCION

TARJETA (E/S). DISCO MAGNETICO (E/S).

CINTA DE PAPEL (E/S). TAMBOR MAGNETICO (E/S).

IMPRESORA (S). CINTA MAGNETICA (E/S).

TECLADO (E). La función de E es introducida manualmente por medio del teclado, de posicionamientos de palancas, de pulsadores, etc.

DISKETTE (E/S).

PANTALLA (S). La función de salida es visual, mediante indicadores, pantallas de televisión, máquinas de escribir, etc. interiores al sistema.

CINTA ENCAPSULADA (E/S).

SOPORTE MAGNETICO (E/S). Conectado al sistema. Ej.: cinta magnética, tambor magnético, disco magnético.

OPERACIÓN MANUAL (E). Tratamiento exterior al sistema sin ayuda mecánica

SIMBOLOS DE PROCESO DESCRIPCION

PROCESO.

Operación AUXILIAR. Efectuada con un equipo que no se encuentre bajo el control directo de la unidad central de tratamiento.

CLASIFICACION DE ARCHIVOS. Ordenación de un grupo de artículos con arreglo a una secuencia particular.

FUSION DE ARCHIVOS. Combinación de dos o más series en una única serie.

PARTICION DE ARCHIVOS. Extracción de una o varias series particulares a partir de una sola.

SIMBOLOS DE OPERACIÓN DESCRIPCION

DIRECCION DEL FLUJO. Indica el sentido de ejecución de las operaciones.

LINEAS DE TELEPROCESO. Transmisión de información mediante una telecomunicación.

LÓGICA COMPUTACIONAL Hünicken, Helvia E.

41

PARA DIAGRAMAS DE FLUJO DEL PROGRAMA (ORDINOGRAMA)

SIMBOLOS DE OPERACIÓN DESCRIPCION

TERMINAL (INICIO, FIN, PARADA). Representa el comienzo “inicio” y el final, “fin”, de un programa.

OPERACIÓN EN GENERAL. Cualquier tipo de operación que pueda originar cambio de valor, formato o posición de la información en memoria, operaciones aritméticas, de transferencia, etc.

OPERACIÓN DE E/S EN GENERAL. Cualquier tipo de introducción de datos en la memoria desde los periféricos, “entrada”, o registro de la información procesada en un periférico, “salida”).

SUBPROGRAMA. Llamada a subrutina o a un proceso predeterminado. Una subrutina es un módulo independiente del programa principal, que recibe una entrada procedente de dicho programa, realiza una tarea determinada y regresa, al terminar, al programa principal.

MODIFICACION DE PROGRAMA O INICIALIZACION DE DECLARACIONES.

OPERACIÓN MANUAL

SIMBOLO DE COMENTARIOS DESCRIPCION

COMENTARIO. Se utiliza para añadir comentarios clasificadores a otros símbolos del diagrama de flujo. Se pueden dibujar a cualquier lado del símbolo.

SIMBOLO DE DECISION DESCRIPCION

DECISION (2/3 SALIDAS). Indica operaciones lógicas o de comparación entre datos –normalmente dos- y en función del resultado de la misma determina cuál de los distintos caminos alternativos del programa se debe seguir; normalmente tiene dos salidas (respuestas SI o NO), pero puede tener tres o más según los casos.

LINEAS DE FLUJO DESCRIPCION

DIRECCION DEL FLUJO. Indica el sentido de ejecución de las operaciones.

SIMBOLO DE CONEXION DESCRIPCION

REAGRUPAMIENTO

CONECTOR EN LA MISMA PAGINA. Sirve para enlazar dos partes cualesquiera de un ordinograma a través de un conector en la salida y otro conector en la entrada. Se refiere a la conexión en la misma página del diagrama.

CONECTOR EN DISTINTA PAGINA. Conexión entre dos puntos del organigrama situado en páginas diferentes.