Está en la página 1de 125

DESARROLLO DE SOFTWARE

INSTITUTO NACIONAL DE USULUTÁN

INSTITUTO NACIONAL DE USULUTÁN


BACHILLERATO TÉCNICO VOCACIONAL OPCIÓN DESARROLLO DE SOFTWARE
DOCENTE: NELLY MERCEDES BARRERA GRANADA

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Lógica de programación

INDICE

 GENERALIDADES
 T1: HERRAMIENTAS DE PROGRAMACION
 T2: ESTRUCTURAS BASICAS DE PROGRAMACION
 T3: ESTRUCTURA DE DATOS

GENERALIDADES

Introducción.

El presente módulo tiene como finalidad que usted pueda desarrollar la lógica
de programación, a través del estudio de diferentes herramientas que le
servirán para plantear la solución de problemas por medio de representación
gráfica y pseudo codificada; a partir del análisis de un problema en particular,
lo que propiciará que usted pueda iniciarse en el campo de la programación.

No se pretende enseñar un lenguaje de programación, sino dar a conocer las


bases de la programación; a través de un lenguaje similar al habla humana
(pseudocódigo), que luego le facilite aprender a utilizar un lenguaje de
programación en particular.

El módulo está compuesto por una unidad que proporcionará paso a paso, las
bases que usted necesita para adquirir los conocimientos e ir desarrollando la
lógica de programación, y así plantear soluciones a problemas en el área de la
informática.

Está dividido en tres partes: la primera constituye la fase inicial de la


identificación de competencias y se refiere a conceptos fundamentales del
desarrollo de software, donde se definen las reglas que debe seguir para aplicar
jerarquía de operadores y tablas de verdad, los cuales reflejará a través de una
representación algorítmica.

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Luego estudiaremos las herramientas básicas de programación, donde a partir
del análisis de un problema informático se representará su solución en forma
gráfica o pseudo codificada.

Finalmente, la tercera parte se centra en las estructuras de datos y


subalgoritmos para que resuelva problemas más complejos y los aplique en
situaciones de la vida real.

Objetivo general.

Al finalizar este módulo, usted habrá adquirido las competencias para aplicar
las técnicas básicas que le permitan realizar el análisis de un problema,
representado por medio de diagramas de flujo o pseudocódigo.

Competencias.

 Aplicar Tablas de Verdad y Jerarquía de Operadores.


 Elaborar Algoritmos narrados y pseudocodificados.
 Diseñar Flujogramas para resolver problemas.
 Elaborar la estructura general de un programa.
 Elaborar algoritmos usando estructuras básicas de programación.
 Elaborar algoritmos usando arreglos en una y dos dimensiones.
 Resolver problemas aplicando cadenas de caracteres.
 Resolver problemas usando procedimientos y funciones.
 Aplicar métodos de ordenamiento y búsqueda en la solución de
problemas.

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN


Lógica de Programación
 INDICE
 GENERALIDADES
 T1: HERRAMIENTAS DE PROGRAMACIÓN
o 1.1 Herramientas de Programación
o 1.2 Tablas de verdad
o 1.3 Tipos de datos y jerarquía de operadores
o 1.4 Algoritmos y Diagramas de Flujo
 T2: ESTRUCTURAS BÁSICAS DE PROGRAMACIÓN
 T3: ESTRUCTURAS DE DATOS

1.1 Herramientas de Programación

Sistema de información: es un conjunto de elementos que interactúan entre sí


con el fin de apoyar las actividades de una empresa o negocio[1].

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Procesamiento de Información: Es la capacidad de los Sistemas de Información
para realizar cálculos con base en secuencias de operaciones preestablecidas.
Estos cálculos pueden efectuarse con datos introducidos recientemente en el
sistema o bien con datos que están almacenados. Esta característica de los
sistemas permite la transformación de datos fuente en información que puede
ser utilizada para la toma de decisiones, lo que hace posible, entre otras cosas,
que un tomador de decisiones genere una proyección financiera a partir de los
datos que contiene un estado de resultados o un balance general de un año
base1.

Procesamiento de Datos: es cualquier ordenación o tratamiento de datos, o los


elementos básicos de información, mediante el empleo de un sistema. Procesar
datos es generar información para la toma de decisiones[2].

1.1.1 Pasos del desarrollo de software.

Escribir un programa para resolver un problema involucra una serie de pasos


desde su análisis hasta llegar a su implementación. Estos pasos se conocen
como Desarrollo de Software y algunas veces como Ingeniería de Software o
Ciclo de Vida de un Sistema.

El desarrollo de software se puede definir como la aplicación práctica del


conocimiento científico al diseño y construcción de programas de computadora
y a la documentación asociada requerida para desarrollar, operar y
mantenerlos. [Bohem, 1976].

1.1.2 Lenguajes de Programación.

Un lenguaje de programación es un conjunto de símbolos y reglas sintácticas y


semánticas que se utiliza para escribir los programas de computadoras. Un
lenguaje de programación permite a uno o más programadores especificar la
forma precisa en que los datos van a ser operados en una computadora, cómo
van a ser almacenados o transmitidos y qué acciones tomar ante
ciertas circunstancias o problemas que se deben resolver. El programador debe
ser capaz de seleccionar el lenguaje de programación apropiado para resolver
DESARROLLO DE SOFTWARE NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
un problema bajo ciertas circunstancias específicas, de manera óptima. Una
característica relevante de los lenguajes de programación es precisamente que
más de un programador puedan tener un conjunto común de instrucciones que
puedan ser comprendidas entre ellos para realizar la construcción del programa
de forma colaborativa.

[1] Tomado de http://www.slideshare.net/miniproject/sistemas-de-


informacin-1708626.

[2] Tomado de fccea.unicauca.edu.co/old/procesamiento.htm

1.1.3 Intérpretes y Compiladores.

Los compiladores, los interpretes y ls ensambladores se encargan de traducir lo


que haya escrito en los lenguajes de alto nivel (código fuente) y lo convierten
en código objeto (casi ejecutable).

Existen dos tipos principales de traductores de los lenguajes de programación


de alto nivel:

 Compilador, que analiza el programa fuente y lo traduce a otro


equivalente escrito en otro lenguaje (por ejemplo, en el lenguaje de la
máquina). Su función es similar a la de un traductor humano, que toma

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
un libro lo analiza completamente y produce otro equivalente escrito en
una lengua diferente.
 Intérprete, que analiza el programa fuente y lo ejecuta directamente, sin
generar ningún código equivalente. Su acción equivale a la de un
intérprete humano, que traduce las frases que oye sobre la marcha, sin
producir ningún escrito permanente. Intérpretes y compiladores tienen
diversas ventajas e inconvenientes que los hacen complementarios:
o Con el intérprete es más fácil la búsqueda de errores, pues la
ejecución del programa se puede interrumpir en cualquier
momento para estudiar el entorno (valores de las variables, etc.).
El intérprete va analizando instrucción por instrucción y al
momento en que detecta un error se detiene permitiendo su
modificación o corrección. Además, el programa puede
modificarse sobre la marcha, sin necesidad de volver a comenzar
la ejecución.
o El compilador genera programas más rápidos y eficientes, pues
este analiza todo el código de una sola vez y luego genera un
archivo objeto, por lo cual el análisis del lenguaje fuente se hace
una sola vez, durante la generación del programa equivalente. Se
tarda analizando solamente la primera vez, pero luego lo que se
ejecuta es el código objeto, por lo cual las demás ejecuciones son
más rápidas. En cambio, un intérprete como no genera el código
objeto, siempre se tarda realizando el análisis pues lo hace
instrucción por instrucción hasta que termina y no hayan más
errores detectados. El tiempo de ejecución se irá reduciendo
cuando se vayan depurando todos los errores encontrados.
o Un intérprete permite utilizar funciones y operadores más
potentes, como por ejemplo ejecutar código contenido en una
variable en forma de cadenas de caracteres. Usualmente, este tipo
de instrucciones es imposible de tratar por medio de
compiladores. Los lenguajes que incluyen este tipo de operadores
y que, por tanto, exigen un intérprete, se llaman interpretativos.
Los lenguajes compilativos, que permiten el uso de un compilador,
prescinden de este tipo de operadores. [1]

LENGUAJES COMPILADOS

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Es un programa que traduce un programa escrito en un lenguaje de alto nivel,
en un programa en lenguaje de máquina que la computadora es capaz de
entender y ejecutar directamente.

Ejemplo de lenguajes que usan compilador:

 Pascal
 Cobol
 Fortran
 Ada
 Modula 2
 C , C++

Involucra dos pasos en su operación:

1. Convertir código fuente a objeto


2. Ejecutar el código objeto

Fases de compilación:

[1] Tomado de www.scribd.com/doc/37261651/Emulador-y-Simulador.

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
ENLAZADOR (LINKER)

El enlazador realiza la tarea de enlazar la funcionalidad de las teclas y funciones


con el código objeto generado a través de la compilación de un programa.

Una librería es la colección de varias teclas y sus funciones, las cuales son
creadas por programadores expertos y almacenadas en lugares especiales para
que se puedan utilizar por otros programadores. También pueden ser algunas
funciones estándar como raíz cuadrada, logaritmo, random y otras.

Para poder utilizar estas funciones predefinidas que están guardadas en las
librerías, el programador tiene que hacer referencia a dicha librería, que es un
archivo que se llama en la cabecera del programa.

El proceso de enlace es mostrado a continuación:

 Lógica de Programación
 INDICE
 GENERALIDADES
 T1: HERRAMIENTAS DE PROGRAMACIÓN
o 1.1 Herramientas de Programación
o 1.2 Tablas de verdad
o 1.3 Tipos de datos y jerarquía de operadores
o 1.4 Algoritmos y Diagramas de Flujo
 T2: ESTRUCTURAS BÁSICAS DE PROGRAMACIÓN
DESARROLLO DE SOFTWARE NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
 T3: ESTRUCTURAS DE DATOS

1.2 Tablas de verdad

1.2.1 Lógica de proposiciones.

LÓGICA.

Es la capacidad de pensar racionalmente acerca de soluciones alternativas y los


resultados de aplicarlas, y por lo tanto, de hacer elecciones inteligentes.

Otras definiciones de Lógica:

• Es el estudio crítico del razonamiento y tiene un valor teórico y práctico.[1]

• Es el estudio de los métodos y principios usados al distinguir entre los


argumentos correctos (buenos) y los argumentos incorrectos (malos).

• En un sentido amplio, es el estudio del correcto razonamiento.

ARGUMENTOS.

Cuando el razonamiento se expresa con palabras, recibe el nombre de


“argumento”.

Un argumento es un grupo cualquiera de proposiciones o enunciados que


forman premisas y conclusiones. Este puede constar de varias premisas pero de
una sola conclusión.

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
PREMISAS Y CONCLUSIÓN
Las premisas de un argumento son proposiciones afirmadas como fundamento
o razones para aceptar una conclusión.
La conclusión es la proposición afirmada que se basa en las otras proposiciones
o premisas.
Una proposición puede ser premisa en un argumento y conclusión en otro.

Hay dos condiciones que debe satisfacer un argumento para establecer la


verdad de su conclusión: Debe ser válido y todas sus premisas deben ser
verdaderas. A esto se le llama razonamiento confiable.[2]

TIPOS DE PROPOSICIONES O ENUNCIADOS:

 Simples o átomos
 Compuestas

Enunciado Simple:

Es el que no contiene otro enunciado como parte componente. Los átomos o


proposiciones simples son tales que no es posible encontrar en ellas otras
proposiciones

Ej. “Las rosas son rojas”

Enunciado compuesto:

Es el que se compone de varios enunciados. Estas proposiciones compuestas


están conformadas de varias proposiciones simples a través de lo que se
denomina conectores lógicos, entre los cuales se encuentran: y, o, implica.

Ej. “Las rosas son rojas y las violetas son azules”.

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Valor de Verdad

Es la certeza o falsedad de una proposición. Se representa por T (True) o V


(verdadero) cuando es cierta y por F (false o falso) cuando no es cierta.

CONECTIVAS LOGICAS (Algebra de Boole)

Las conectivas lógicas también se llaman a veces operadores, y son de dos tipos:

Operadores unarios:
NEGACION: Not, ¬

Ejemplo: El periódico no ha llegado todavía.

Operadores binarios:
CONJUNCION: AND, &, y , ^
DISYUNCION: OR , V
CONDICIONAL: ==> implica
BICONDICIONAL: <==> sí y sólo sí

Ejemplo:

Ayer fui al supermercado y a la escuela. (Conjunción)

Compra soda o jugo (Disyunción)

Si tomas entonces no manejes (Condicional)

Ganarás el concurso sí y sólo sí respondes bien todas las preguntas


(Bicondicional).

[1] Tomado de www.slideshare.net/marthaill10/unidad-iv-algoritmos

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
[2] Tomado de www.scribd.com/doc/3863819/apuntesprog

1.2.2 Tabla de valores de verdad.

Como se mencionó anteriormente, para formar expresiones compuestas


necesitamos conectivos lógicos. Comenzaremos con un conectivo unitario; este
es el que se aplica solamente a una proposición. Se le llama Negación.

La operación unitaria de negación, se representa por el símbolo de Not (¬ ) y


tiene la siguiente tabla de verdad:

Por ejemplo, si tenemos el enunciado: El pizarrón es verde. Su negación sería:


El pizarrón no es verde.

Conjunción (AND, , &) : Es una conectiva que puede definirse como verdadera
sólo cuando ambas variables proposicionales sean verdaderas. En cualquier
otro caso es falsa.

Disyunción (V,OR) : La sentencia será verdadera cuando una o ambas variables


proposicionales sean verdaderas. Con la disyunción a diferencia de la
conjunción, basta con que una de las variables sea verdadera para que la
disyunción nos dé verdadero. En otras palabras, sólo cuando las dos premisas
son falsas, la disyunción nos dará una conclusión falsa.

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN

1.2.3 Jerarquía de operadores.

Los ( ) tienen la mayor prioridad pues pueden cambiar el valor de verdad a una
expresión.

El NOT se aplica directamente a una proposición, si no existen paréntesis.

AND tiene más prioridad que OR

La jerarquía nos queda entonces:

()

NOT

AND

OR

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
EJEMPLO.

Si A y B son valores verdaderos y P y Q son falsos, cuál es el valor de


verdad de la siguiente expresión:

1. ¬ (A or B) ^ (P ^ ¬Q)

Solución:

Lo primero que tenemos que hacer es sustituir la expresión por los


valores de verdad que nos da el enunciado.

Evaluamos primero los paréntesis, comenzando con el primero. En la


tabla OR buscamos a qué equivalen Verdadero or Verdadero (porque
A y B son verdaderos según el enunciado). Obtenemos que es
Verdadero. Como la expresión está negada, su valor opuesto es Falso.

Al evaluar el segundo paréntesis, Q es falso y al negarlo nos queda


verdadero. Luego, si P es falso nos queda Falso and Verdadero, y
esto es igual a Falso.
Entonces:

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN

 Lógica de Programación
 INDICE
 GENERALIDADES
 T1: HERRAMIENTAS DE PROGRAMACIÓN
o 1.1 Herramientas de Programación
o 1.2 Tablas de verdad
o 1.3 Tipos de datos y jerarquía de operadores
o 1.4 Algoritmos y Diagramas de Flujo
 T2: ESTRUCTURAS BÁSICAS DE PROGRAMACIÓN
 T3: ESTRUCTURAS DE DATOS

1.3 Tipos de datos y jerarquía de operadores

Uno de los propósitos de las computadoras es manejar información. La


información está formada por datos.

Un dato es toda aquella información característica de una entidad, que es


susceptible de tratamiento en un programa informático. También es la
expresión general que describe los objetos con los cuales opera una
computadora.

En un programa los datos de entrada se transforman por el programa hasta


producir datos de salida. Para la solución de problemas, definir adecuadamente

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
las estructuras de los datos es tan importante como el diseño mismo de la
solución del problema.

Todos los datos tienen un tipo asociado con ellos que nos servirá para poder
conocer con qué información trabajaremos. Por ejemplo, cuando ingresamos
el sueldo de un trabajador necesitamos que este contenga decimales, o al
solicitar la edad de una persona ésta tiene que estar con números enteros, etc.
Además hay operaciones que no tienen sentido como la suma entre caracteres.

La asignación de tipos a los datos tiene dos objetivos principales:

 Detectar errores de operaciones aritméticas en los programas


 Determinar cómo ejecutar las operaciones.

Los tipos de datos son clasificados como sigue:

a) Simples

b) Estructurados

a) Tipos de Datos Simples.

Los tipos de datos simples son los que ocupan sólo una casilla de memoria, por
lo tanto una variable simple hace referencia a un único valor a la vez. Los datos
simples pueden dividirse en:

1. Numéricos
2. Tipos de Datos Alfanuméricos
3. Tipos de datos Lógicos o booleanos

b) Tipos de Datos Estructurados

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Estos son un tipo de datos especial que tienen la ventaja de almacenar varios
valores al mismo tiempo dentro de una misma variable.

Entre éstos tenemos: Arreglos (arrays), Registros (record), Archivos o Ficheros


(File) y Punteros (pointer).

REGLAS DE LOS IDENTIFICADORES:

 Deben comenzar por una letra.


 Pueden estar constituidos por letras y dígitos, y en algunos casos por el
signo del subrayado. Ejemplo: dato_1
 No deben contener espacios en blanco.
 Las letras no deben ser tildadas
 El número máximo de caracteres dependerá del compilador utilizado. Se
recomienda usar nombres cortos.
 El nombre asignado debe tener relación con la información que contiene.

No podrá coincidir con palabras reservadas, propias del lenguaje algorítmico.


Tampoco debe tener el mismo nombre de una función, ya sea definida por el
usuario o de la biblioteca del lenguaje que se utilice.

1.3.1 Operación de asignación.

Es el modo de darle valores a una variable. Se representa con el símbolo ß, el


cual se conoce como instrucción o sentencia de asignación.

El formato general de una operación de asignación es:

La flecha de asignación se sustituye en algunos lenguajes de programación por


el símbolo de =.

Ejemplo:

A ß 15 significa que a la variable A se le ha asignado el valor 15.

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
La acción de asignar es destructiva, ya que cada vez que le asignamos un valor
a una variable, éste le cae encima al anterior pues se está almacenando en un
área de memoria. Por ejemplo, en la secuencia de asignaciones

Aß5

A ß 123

Aß6

Cuando éstas se ejecutan, el último valor que toma A es 6 por lo tanto los otros
dos han desaparecido.

Reglas de asignación.

 Una variable o expresión que esta al lado derecho de una sentencia de


asignación debe tener un valor antes de asignársele a la variable de la
izquierda. Esto quiere decir que hasta que un programa le da un valor a
una variable, esa variable no tiene valor.

Ejemplos:

Si x no tiene un valor antes de realizar la operación y= 2x+10, se


producirá un error pues el computador no sabrá qué valor le tiene que
asignar a x.

Si a,b y c no tienen un valor antes de realizar la operación de x= a+b+c,


también se producirá un error.

 En la izquierda de una sentencia de asignación sólo puede existir una


variable que reciba operaciones a la derecha, no operaciones en sí. Por
consiguiente no es válido lo siguiente:

valor_neto – interes = 3.5

sueldo + comision = nuevo_sueldo (lo correcto sería hacer


nuevo_sueldo = sueldo + comisión). Recuerde que la variable de la

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
izquierda recibe las operaciones, variables o expresiones de la derecha,
siempre y cuando éstas generen un valor para ser asignado.

1.3.2 Operadores y expresiones

Las expresiones son combinaciones de constantes, variables, símbolos de


operación, paréntesis y nombres de funciones especiales.

Una expresión representa una unidad de datos simple, tal como un número o
un carácter. También puede consistir en alguna combinación de entidades
interconectadas por uno o más operadores. Las expresiones también pueden
representar condiciones lógicas que son verdaderas o falsas.

Cada expresión tiene un valor, que se determina tomando los valores de las
variables y constantes implicadas ejecutando las operaciones indicadas.

Ejemplos:

X = 9 * 15 + 6

2.5 + 13 = 15.5

A+B = C+D

ELEMENTOS DE UNA EXPRESIÓN:

 OPERANDOS
 OPERADORES

Un operador es un símbolo o palabra que significa que se ha de realizar cierta


acción entre dos o más valores, llamados operandos.

Ejemplos:

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN

OPERADORES

Los operadores especifican el tipo de cálculo que se quiere desarrollar en los


elementos de una expresión. Los operadores se pueden clasificar en las
siguientes categorías:

 Aritméticos
 Relacionales
 Lógicos
 Alfanuméricos
 Asociativos

OPERADORES ARITMÉTICOS [1]

Los operadores aritméticos son usados para realizar cálculos matemáticos.


Algunos de los operadores aritméticos se listan a continuación:

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN

[1] Extracto tomado de Fundamentals of Programming. NIIT.

EJEMPLOS:

Supóngase que unas variables a y b tienen valores 10 y 3,


respectivamente. Se muestran a continuación varias
expresiones aritméticas en las que aparecen estas
variables, acompañadas del resultado.

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN

Para resolver una expresión aritmética se deben seguir las siguientes reglas:

 Primero se resuelven las expresiones que se encuentran entre


paréntesis.
 Todas las sub expresiones entre paréntesis se evalúan de adentro hacia
afuera, desde el paréntesis más interno hasta ir desapareciéndolos
todos. Se deben seguir ciertas reglas de prioridad que veremos más
adelante.

OPERADORES RELACIONALES

Usted puede comparar dos operandos utilizando operadores relacionales. El


resultado es un valor de verdad ya sea Cierto o Falso.

Tenemos seis operadores relacionales. La siguiente tabla muestra dichos


operadores:

Operador Descripción Ejemplo Explicación


Relacional
= Compara los dos x = y Devuelve verdadero si
operandos y evalúa si los valores son iguales y
son iguales falso si no lo son
<> Compara los dos x <> y Devuelve verdadero si
operandos y evalúa si los valores no son iguales
son diferentes y falso en caso contrario
> Evalúa si el operando x > y Devuelve verdadero si el
izquierdo es mayor primero es mayor que el
que el derecho segundo y falso en caso
contrario
< Evalúa si el operando x < y Devuelve verdadero si el
izquierdo es menor primero es menor que el
que el derecho

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
segundo y falso en caso
contrario
>= Evalúa si el operando x >= y Devuelve verdadero si el
izquierdo es mayor o primero es mayor o es
igual que el derecho igual que el segundo y
falso en caso contrario
<= Evalúa si el operando x <= y Devuelve verdadero si el
izquierdo es menor o primero es menor o es
igual que el derecho igual que el segundo y
falso en caso contrario

EJEMPLO

Supongamos que i,j y k son variables enteras con valores


asignados 2,3 y 4 respectivamente. A continuación, se
presentan varias expresiones lógicas en las que aparecen
estas variables.

OPERADORES LÓGICOS O BOOLEANOS

Los operadores lógicos son usados para combinar el resultado de expresiones


conteniendo operadores relacionales.

Existen tres operadores lógicos, que se describen en la siguiente tabla:

Operador
Descripción Ejemplo
Lógico

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
AND Operador lógico AND x < 7 AND y > 100
OR Operador lógico OR x < 7 OR y > 100
NOT Operador Lógico de negación NOT x = 10

1.3.3 Jerarquía de operadores

El resultado de evaluar una expresión aritmética es un número. Ahora bien,


cuando aparecen dos o más expresiones aritméticas, ¿Cómo saber qué
operaciones hay que realizar primero?

Por ejemplo, si tenemos una expresión 3 + 7 * 4. ¿Cuál es la respuesta correcta?

Veamos:

1) 3 + 7 = 10

10 * 4 = 40. Si hacemos primero la suma el resultado será 40.

2) 7 * 4 = 28

3) 3 + 28 = 31. Si hacemos el producto y el resultado lo sumamos con el primer


término, la respuesta es 31.

Sabemos que la matemática es exacta, entonces ¿Si hay una única respuesta,
cómo la obtenemos?

Veamos otro ejemplo.

Sea la expresión: X2 + 1 / 2

Observe que esta expresión es totalmente diferente a esta otra (X2+1)/2, por lo
que es importante codificar las expresiones aritméticas correctamente. Los
paréntesis nos indican un orden para realizar las operaciones. Pero no siempre
nos darán los paréntesis, por lo se creó la jerarquía de operadores.

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
La jerarquía varía de lenguaje a lenguaje, por lo que es importante que cuando
usted vaya a codificar en algún lenguaje, lo primero que debe revisar es la
jerarquía que corresponde a ese lenguaje.

REGLAS DE PRIORIDAD

Para resolver una expresión se deben seguir las siguientes reglas:

 Primero se resuelven las expresiones que se encuentran entre


paréntesis.
 Se procede aplicando la jerarquía de operadores.
 Al evaluar una expresión, si hay dos operadores con la misma jerarquía,
se procede a evaluar de izquierda a derecha.
 Si hay expresiones relacionales, se resuelven primero paréntesis, luego
se encuentran los valores de verdad de las expresiones relacionales y por

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
último se aplica jerarquía de operadores lógicos. En caso de haber
iguales, proceder de izquierda a derecha.
 El orden correcto a seguir, es primero resolver operadores aritméticos,
luego los relacionales y por último los lógicos.
 Si solo hay operadores aritméticos, el resultado es un número. Si hay
operadores aritméticos y relacionales, el resultado es un valor booleano.

EJEMPLO 1

EJEMPLOS DE OPERADORES ARITMÉTICOS.

1. Se tiene la siguiente expresión aritmética:

X=3+4*6/3*2–6*8/3*4+5*3/2*2

¿Cuál sería el valor que al final quedará almacenado en


la variable X?
SOLUCIÓN

Lo primero que haría el computador es recorrer la


expresión buscando paréntesis, luego expresiones de
potencia (o sea el símbolo ^ para resolverlo de primero
debido a que este es el operador de mayor peso en la
jerarquía). Como no encuentra ninguno, entonces vuelve
al principio de la expresión y comienza a buscar (y resolver
a medida que los encuentre) multiplicaciones y divisiones.
X=3+4*6/3*2–6*8/3*4+5*3/2*2

X = 3 + 24 / 3 * 2 – 6 * 8 / 3 * 4 + 5 * 3 / 2 * 2

X=3+8*2–6*8/3*4+5*3/2*2

X = 3 + 16 – 6 * 8 / 3 * 4 + 5 * 3 / 2 * 2

X = 3 + 16 – 48 / 3 * 4 + 5 * 3 / 2 * 2

X = 3 + 16 – 16 * 4 + 5 * 3 / 2 * 2

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
X = 3 + 16 – 64 + 5 * 3 / 2 * 2

X = 3 + 16 – 64 + 15 / 2 * 2

X = 3 + 16 - 64 + 7.5 * 2

X = 3 + 16 – 64 + 15

X = 19 – 64 + 15

X = -45 + 15

X = -30 Respuesta.
Con lo cual hayamos que, luego de resuelta la expresión,
el valor que quedará almacenado en la variable X será el
valor –30. Es muy importante que cuando tenga que
resolver una expresión de estas, lo haga paso a paso, sin
apresuramientos y verá como obtiene, sin mayores
tropiezos, el mismo resultado que le daría al computador.

EJEMPLO 2

Se tiene la siguiente expresión aritmética:

A=5*2/2*2+6*4/2*2–4*6*2/2*3/2

SOLUCIÓN

Como en esta expresión no existen paréntesis,


operaciones de potenciación ni signo, entonces se
procede a resolver el siguiente nivel de la jerarquía, de
izquierda a derecha (multiplicaciones y divisiones)
A=5*2/2*2+6*4/2*2–4*6*2/2*3/2

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
A = 10 / 2 * 2 + 6 * 4 / 2 * 2 – 4 * 6 * 2 / 2 * 3 / 2

A=5*2+6*4/2*2–4*6*2/2*3/2

A = 10 + 6 * 4 / 2 * 2 – 4 * 6 * 2 / 2 * 3 / 2

A = 10 + 24 / 2 * 2 – 4 * 6 * 2 / 2 * 3 / 2

A = 10 + 12 * 2 – 4 * 6 * 2 / 2 * 3 / 2

A = 10 + 24 – 4 * 6 * 2 / 2 * 3 / 2

A = 10 + 24 – 24 * 2 / 2 * 3 / 2

A = 10 + 24 – 48 / 2 * 3 / 2

A = 10 + 24 – 24 * 3 / 2

A = 10 + 24 – 72 / 2

A = 10 + 24 – 36

A = 10 + 24 – 36

A = 34 – 36

A = -2 Respuesta.

EJEMPLO 3

Resolver la siguiente expresión, para A=5 y B=16.

(A ^ 2) > (B * 2)

SOLUCIÓN

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN

(A ^ 2) > (B * 2) El primer paso es sustituir los valores de A


yB
(5 ^ 2) > (16 * 2) Efectuamos los paréntesis, primero el de
más a la izquierda
25 > (16 * 2) Resolvemos el paréntesis de la derecha
25 > 32 Se evalúa la expresión relacional y el
resultado es
Falso Respuesta

EJEMPLO 4

Resolver la siguiente expresión, donde X=6 y B = 7.

(X ^ 3 \ B) <= (X * 5 + B ^ 3 / 4)

SOLUCIÓN
(X ^ 3 \ B) <= (X * 5 + B ^Sustituir los valores de X y B
3 / 4)
(6 ^ 3 \ 7) <= (6 * 5 + 7 ^Evaluando potencia en paréntesis
3 / 4) de más a la izquierda
(216 \ 7) <= (6 * 5 + 7 ^Resolviendo paréntesis de más a
3 / 4) la izquierda, hacemos división
entera
30 <= (6 * 5 + 7 ^ 3 / 4) Procediendo con el paréntesis de
la derecha, potencia tiene mayor
prioridad
30 <= (6 * 5 +343 / 4) Producto y división real tienen
misma prioridad, pero producto
está más a la izquierda
30 <= (30 +343 / 4) Luego sigue la división real
30 <= (30 +85.75) Efectuamos la suma

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
30 <= 115.75 Ya eliminamos los paréntesis,
procedemos a evaluar el
operador relacional
Verdadero Respuesta

EJEMPLO 3

Resolver la siguiente expresión

NOT((15 > = 7 ^ 2) and ( (43 – 8 * 2) mod 4 < > 3 * 2 div 2 )


or 3 > = 3 )
SOLUCIÓN

NOT((15 >= 7 ^ 2) and ( (43 –Resolviendo paréntesis de


8 * 2) mod 4 < > 3 * 2 div 2) oradentro hacia afuera y el de
3 >= 3) más a la izquierda. Potencia
tiene mayor prioridad.

Not ((15 >= 49) and ((43 – 8 *Pasamos al paréntesis de la


2) mod 4 < > 3 * 2 div 2 ) or 3derecha pues ya no hay
>=3) operadores aritméticos en
el primer paréntesis

Not ((15>=49) and ((43 – 16)Efectuamos la resta para


mod 4 < > 3 * 2 div 2 ) or 3 > =quitar el paréntesis
3)
Not ((15>=49) and (27 mod 4Seguimos con el producto
<> 3 * 2 div 2 ) or 3 > = 3 )
Not ((15>=49) and (27 mod 4Div y mod tienen igual
<> 6 div 2 ) or 3 > = 3 ) prioridad, el de más a la
izquierda es mod.
Not ((15>=49) and (3 <> 6 divLuego efectuamos el div
2 ) or 3 > = 3 )

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Not ((15>=49) and (3 <> 3 ) orYa no hay operadores
3>=3) aritméticos, seguimos con
los relacionales, el
paréntesis de más a la
izquierda
Not (Falso and (3 <> 3 ) or 3 >Luego con el de la derecha
=3)
Not (Falso and Falso or 3 > = 3Quitamos el último
) operador relacional
Not (Falso and Falso orAnd tiene mayor prioridad
Verdadero) que Or
Not(Falso or Verdadero) Efectuamos Or
Not(Verdadero) Evaluamos Negación
False Respuesta

1.3.4 Escritura de formulas

Las fórmulas matemáticas se deben escribir en formato lineal. Esto obliga al uso
frecuente de paréntesis que indiquen el orden de evaluación correcto de las
operaciones. Linealizar una expresión significa, convertir una expresión
algebraica en expresión aritmética o algorítmica.

EJEMPLOS 1:

Linealizar las siguientes expresiones: (no se olvide que


linealizar significa escribir una expresión algebraica en una
sola línea).

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN

Sabemos que la división real se representa por / y que


usamos paréntesis para que se realicen las operaciones en
el orden correcto.

Respuesta:

X= (a+b/c)/(a/b+c)

EJEMPLOS 1:

Linealizar las siguientes expresiones: (no se olvide que


linealizar significa escribir una expresión algebraica en una
sola línea).

Recuerde que los paréntesis ayudan a separar las


expresiones para que se evalúen en el orden correcto,
debemos poner los que sean necesarios, pero tratando de
que no vayan más de la cuenta.

Respuesta:

X = ( a / (a + b)) / (a / (a - b))

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
 Lógica de Programación
 INDICE
 GENERALIDADES
 T1: HERRAMIENTAS DE PROGRAMACIÓN
o 1.1 Herramientas de Programación
o 1.2 Tablas de verdad
o 1.3 Tipos de datos y jerarquía de operadores
o 1.4 Algoritmos y Diagramas de Flujo
 T2: ESTRUCTURAS BÁSICAS DE PROGRAMACIÓN
 T3: ESTRUCTURAS DE DATOS

1.4 Algoritmos y Diagramas de Flujo

1.4.1 Introducción a los algoritmos

CONCEPTO DE ALGORITMO:

Es un conjunto de pasos secuenciales y ordenados que permiten lograr un


objetivo. Que sean pasos secuenciales significa que deben ser ejecutados uno
después de otro y que sean pasos ordenados quiere decir que deben llevar un
orden casi obligatorio (u obligatorio en la mayoría de los casos). Como puede
notar el algoritmo permite lograr un objetivo. O sea que la clave para hacer
buenos algoritmos y llegar a la solución de un problema es tener claro el
objetivo y no perderlo nunca de vista.

Debe ser independiente de la sintaxis de un lenguaje de programación puesto


que es la concreción de un plan y un medio para comunicar ideas entre
personas. Lo que sí es importante notar, es que de un algoritmo sale el código
en un lenguaje de programación. Por cada línea del algoritmo se corresponden
una o varias líneas de código en un lenguaje de programación.

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN

METODOLOGÍA A SEGUIR:

 Establecer el problema.
 Analizar el problema. Para ello nos hacemos las siguientes preguntas:
o ¿Qué información tenemos?
o ¿Qué necesitamos conocer?
o ¿Qué queremos obtener?
 Diseñar el algoritmo para su solución.
 Codificar.

CARACTERÍSTICAS QUE DEBEN DE CUMPLIR LOS ALGORITMOS


OBLIGATORIAMENTE:

♦ Un algoritmo debe resolver el problema para el que fue formulado.

Lógicamente no sirve un algoritmo que no resuelve ese problema. En el caso de


los programadores, a veces crean algoritmos que resuelven problemas
diferentes al planteado. Los algoritmos deben mostrar claramente cuáles son
los datos iniciales y cuáles son los resultados.

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
♦ Los algoritmos son independientes del computador. Los algoritmos se
escriben para poder ser utilizados en cualquier máquina.

♦ Los algoritmos deben de ser precisos. Los resultados de los cálculos deben de
ser exactos, de manera rigurosa. No es válido un algoritmo que sólo aproxime
la solución. Debe constar de pasos claros, precisos y no ambiguos.

♦ Los algoritmos deben de ser finitos. Deben alcanzar la solución correcta en un


tiempo finito. No es un algoritmo válido aquel que produce situaciones en las
que el algoritmo no termina.

♦ Los algoritmos deben de poder repetirse. Deben de permitir su ejecución las


veces que sea necesario. No son válidos los que, tras ejecutarse una vez, ya no
pueden volver a hacerlo por la razón que sea. Debe tener la capacidad de
resolver el problema aun cuando cambiemos los datos de entrada.

CARACTERÍSTICAS ACONSEJABLES PARA LOS ALGORITMOS

♦ Validez. Un algoritmo es válido si carece de errores. Un algoritmo puede


resolver el problema para el que se planteó y sin embargo no ser válido debido
a que posee errores.

♦ Eficiencia. Un algoritmo es eficiente si obtiene la solución al problema en


poco tiempo. No lo es si es lento en obtener el resultado.

♦ Óptimo. Un algoritmo es óptimo si es el más eficiente posible y no contiene


errores. La búsqueda de este algoritmo es el objetivo prioritario del
programador. No siempre podemos garantizar que el algoritmo hallado es el
óptimo, a veces sí.

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
ESTRUCTURA GENERAL DE UN ALGORITMO.

Aunque no existe una única forma de representar un algoritmo, la estructura


general de éste debería ser como la siguiente:

REPRESENTACIÓN DE ENTRADAS Y SALIDAS DE UN ALGORITMO.

ENTRADAS

Entradas son los datos proporcionados al computador para procesar y generar


la salida. Para que los resultados sean correctos, se tienen que dar los datos de
entrada correctos. La entrada se puede representar de varias formas.
Flujogramas y pseudocódigo tienen diferentes métodos de representar la
instrucción de aceptar una entrada. Algunos ejemplos de representación de
entradas son los siguientes:

En un Flujograma, la instrucción es representada usando el símbolo llamado


“Entrada de datos”. Existe un símbolo para entrada por tarjeta perforada que
ya está en desuso por haber desaparecido las mismas (Ver imágen 1).

Los símbolos utilizados en flujogramas para representar las entradas son los
siguientes: En un pseudocódigo, la instrucción se da a través de teclado.

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN

Existen varias formas de representar el pseudocódigo. Por ejemplo, para leer la


edad de un estudiante en una variable llamada edad (Ver imágen 2).

Un computador requiere entradas para generar las salidas. Después de aceptar


la entrada, el computador la procesa y luego despliega el resultado. Este
resultado es llamado la salida.

SALIDAS:

Al igual que las entradas, hay diferentes formas de representar la salida.


En un Flujograma, se utiliza el símbolo “desplegar”.
Los símbolos utilizados en flujogramas para representar las salidas se ven en la
imagen 3:

En pseudocódigo, la instrucción “desplegar salida” es representada usando


salida a pantalla o a papel que se ve en la imagen 4.

Representación de entradas en algoritmos.

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN

Seleccione una imágen para agrandarla.

1.4.2 Representación de algoritmos.

Los comentarios en un algoritmo se usan como una referencia para explicar la


lógica del mismo. Es una forma de documentar el proceso, estos no tienen
efecto en el código del programa (el computador los ignora), sino que sirven

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
para que el programador comprenda mejor lo que se está representando en el
algoritmo. Los comentarios se pueden representar ya sea en una sola línea o en
varias líneas.

Para representar comentarios en una sola línea, se utilizan dos barras:

//Este es un comentario.

Para representar un comentario en varias líneas se utiliza la siguiente


simbología:

/* Este

es un

comentario

en varias

Líneas */

NOTACIONES PARA EL DISEÑO DE ALGORITMOS

Los algoritmos pueden ser representados en diferentes formas, entre las cuales
tenemos:

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN

Representación en pseudocódigo

PSEUDO: Falso, imitación

CODIGO: instrucciones escritas en un lenguaje de programación

El pseudocódigo no es propiamente un código sino un tipo de descripción que


incluye un poco de lenguaje natural y de instrucciones estandarizadas para los
lenguajes de programación. Podemos decir que es un lenguaje intermedio
entre el lenguaje natural (nuestra forma normal de expresarnos) y cualquier
lenguaje de programación específico, como por ejemplo C, Fortran, Pascal, etc.

Es una mezcla de lenguaje natural, símbolos, términos y otras características


comúnmente utilizadas en los lenguajes de programación. Además, es una
técnica para diseño de programas que permite definir las estructuras de datos,
las operaciones que se aplicarán a los datos y la lógica que tendrá el programa
de computadora para solucionar un determinado problema.

No existe una notación formal o estándar de pseudocódigo, sino que, cada


programador puede utilizar la suya propia.

Usted puede detectar errores cuando escribe pseudocódigo porque cada paso
del pseudocódigo puede ser revisado durante la creación.

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Se concibió para superar las dos principales desventajas de los flujogramas:
requiere mucho trabajo para elaborarlo y que no se puede modificar tan
fácilmente sin tener que hacer un nuevo redibujo.

VENTAJAS DEL PSEUDOCÓDIGO.

 Es más fácil y rápido de elaborar en comparación con el Flujograma.


 Es más fácil detectar errores y hacer cambios.
 No necesita ser reescrito si se hacen cambios, ya que cada paso es
independiente y puede ser modificado sin alterar los otros pasos.
 Es fácil su traducción a cualquier lenguaje de programación. Esto no se
logra con los flujogramas y tablas de decisión, ya que el formato usado
por el pseudocódigo es similar a un programa. Ambos contienen un
grupo de instrucciones secuenciales usando un grupo de instrucciones
definidas.
 Es un lenguaje algorítmico similar al español u otro idioma
 Es una imitación de las instrucciones reales para una computadora
 Permite representar en forma fácil operaciones repetitivas complejas.
 Al seguir las reglas se pueden observar claramente los niveles que tiene
cada operación.

DESVENTAJAS DEL PSEUDOCÓDIGO.

 No provee una representación gráfica del algoritmo, por lo que puede


ser difícil entender la lógica compleja de un pseudocódigo.
 Si el pseudocódigo contiene demasiadas condiciones anidadas puede ser
difícil de entender.

El pseudocódigo puede ser diseñado en español o en inglés. Cuando se diseña


en inglés, se tiene un grupo de instrucciones más parecidas a un lenguaje de
programación.

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Entre las instrucciones utilizadas en el pseudocódigo inglés tenemos las
siguientes:

 Begin …. End/ Start…. Stop. Estas instrucciones son usadas para iniciar y
finalizar.
 Accept, read, input: Estas instrucciones son usadas para obtener una
entrada de un usuario.
 Display, write, print: Estas son usadas para presentar un resultado o una
salida.
 If… else: Son usadas para hacer decisiones.

EJEMPLO

Elaborar el pseudocódigo para encontrar la superficie de un


círculo para un radio cualquiera.

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN

1.4.3 Diseño de flujogramas

Continuando con el estudio de algoritmos, estudiaremos la representación en


Diagramas de Flujo o llamados también Flujogramas.

FLUJOGRAMAS

Son la representación gráfica de la secuencia de actividades de un proceso en


los algoritmos. Consiste en símbolos para representar los pasos de un
algoritmo. Cada símbolo tiene un significado que representa una acción a ser
seguida, correspondiente a un paso del algoritmo. Cada símbolo se conecta a
través de flechas, denominadas líneas de flujo, que indican el orden en que los
pasos deben ser ejecutados.

Puesto que un Flujograma es la representación gráfica de un algoritmo,


también debe tener: ENTRADA – PROCESO – SALIDA.

Para comprender mejor los diagramas de flujo, se tiene que respetar las reglas
de construcción. Al realizar una prueba manual, se debe tomar un conjunto de
datos significativos de entrada y comenzar a recorrer el Flujograma de arriba
hacia abajo y de izquierda a derecha; según sea la forma representada, para ver
cómo se comporta el Flujograma y si los resultados obtenidos son correctos y
coherentes.

EJEMPLO 1.

En ejemplos anteriores, diseñamos un pseudocódigo para


encontrar la superficie de un círculo para un radio
cualquiera.

El Flujograma que representa a dicho ejemplo es el


siguiente:

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN


Lógica de Programación
 INDICE
 GENERALIDADES
 T1: HERRAMIENTAS DE PROGRAMACIÓN

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
 T2: ESTRUCTURAS BÁSICAS DE PROGRAMACIÓN
o 2.1 Metodología para la solución de problemas
o 2.2 Tipos de estructuras básicas.
o 2.3 Estructuras secuenciales
o 2.4 Estructuras de selección
o 2.5 Estructuras cíclicas
 T3: ESTRUCTURAS DE DATOS

2.1 Metodología para la solución de problemas

Siempre que vamos a resolver un problema nos enfrentamos con la dificultad


de tener que encontrar una solución. Para ello, tenemos que tener bien claro
cuál es el problema que queremos resolver para luego determinar la solución
que sea más adecuada. Esto quiere decir que debemos determinar el objetivo
o propósito de querer resolver el problema.

Un problema es una situación real, bajo ciertas condiciones y/o restricciones,


que se necesita transformar, y conocer su comportamiento al variar algunos de
sus componentes.

2.1.1 Fases de resolución de un problema para el diseño de un programa.

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN

 Lógica de Programación
 INDICE
 GENERALIDADES
 T1: HERRAMIENTAS DE PROGRAMACIÓN
 T2: ESTRUCTURAS BÁSICAS DE PROGRAMACIÓN
o 2.1 Metodología para la solución de problemas
o 2.2 Tipos de estructuras básicas.
o 2.3 Estructuras secuenciales
o 2.4 Estructuras de selección
o 2.5 Estructuras cíclicas
 T3: ESTRUCTURAS DE DATOS

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
2.2 Tipos de estructuras básicas.

Un problema se puede dividir en acciones elementales o instrucciones, usando


un número limitado de estructuras de control (básicas) y sus combinaciones
que pueden servir para resolver dicho problema.

Las estructuras de control de un lenguaje de programación son métodos de


especificar el orden en que las instrucciones de un algoritmo se ejecutarán.
Estas son por consiguiente fundamentales en los lenguajes de programación y
en los diseños de algoritmos. Se les llama de control debido a que controlan el
modo de ejecución del programa.

Las Estructuras Básicas pueden ser:

Secuenciales: cuando una instrucción del programa sigue a otra. Constan de


Entrada, Proceso y Salida.

Selección o decisión: acciones en las que la ejecución de alguna dependerá de


que se cumplan una o varias condiciones. Pueden ser simples, dobles,
compuestas y múltiples.

Repetición o Iteración: cuando un proceso se repite en tanto cierta condición


sea establecida para finalizar ese proceso. Estas pueden ser: Mientras (While),
Desde/Para (For) y Repetir (Repeat)

 Lógica de Programación
 INDICE
 GENERALIDADES
 T1: HERRAMIENTAS DE PROGRAMACIÓN
 T2: ESTRUCTURAS BÁSICAS DE PROGRAMACIÓN
o 2.1 Metodología para la solución de problemas
o 2.2 Tipos de estructuras básicas.
o 2.3 Estructuras secuenciales
o 2.4 Estructuras de selección

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
o 2.5 Estructuras cíclicas
 T3: ESTRUCTURAS DE DATOS

2.3 Estructuras secuenciales

Son problemas en los que, para su solución se emplea una serie de acciones
ejecutadas invariablemente en un orden secuencial.

Las tareas suceden de tal modo que la salida de una es la entrada de la siguiente
y así sucesivamente hasta el fin del proceso.

Dentro de este tipo podemos encontrar operaciones de inicio/fin, inicialización


de variables, operaciones de asignación, cálculo, sumarización, etc.

Este tipo de estructura se basa en las 5 fases de que consta todo algoritmo o
programa:

 Definición de variables (Declaración)


 Inicialización de variables.
 Lectura de datos
 Cálculos
 Salida

REPRESENTACIÓN GRÁFICA.

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
EJEMPLOS:

1. En una tienda se ofrece un descuento del 15% sobre el


total de la compra y un cliente desea saber cuánto deberá
pagar finalmente por su compra.

Resolveremos el ejercicio, aplicando los pasos de la metodología


de la solución de un problema:

DEFINICIÓN DEL PROBLEMA:

Obtener la cantidad de dinero que tendrá que pagar el cliente, si


la tienda ofrece un 15% de descuento sobre el total de la compra.

ANÁLISIS DEL PROBLEMA:

Para obtener el descuento es necesario conocer la cantidad total


de la compra, y sobre ésta aplicar el 15%. Posteriormente, este
descuento deberá ser sustraído de la cantidad total de la compra
para así obtener la cantidad con descuento, que es la que el
cliente pagará.

Pasos que se deben realizar:

Salidas: Cantidad a pagar

Entradas: Total de la compra

Datos adicionales: el descuento equivale al 15% sobre el total de


la compra.

Aplicar las siguientes fórmulas:

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Descuento = total de la compra * 0.15

Cantidad a pagar = total de la compra – descuento

Sección de Declaraciones:

Var

Real: CP, TC, D

Donde CP será Cantidad a pagar

TC será total de la compra y

D será el descuento
DISEÑO DEL ALGORITMO:

PRUEBA MANUAL DEL ALGORITMO:

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN

EJEMPLOS:

Un vendedor recibe un sueldo base más un 10% extra por comisión de


sus ventas. El vendedor desea saber cuánto dinero obtendrá por
concepto de comisiones por las tres ventas que realiza en el mes y el
total que recibirá en el mes tomando en cuenta su sueldo base y sus
comisiones.

DEFINICIÓN DEL PROBLEMA:

Obtener la cantidad de dinero que recibirá un vendedor por concepto


de comisiones por tres ventas realizadas en el mes, y el total que
recibirá en el mes por sueldo y comisión. Se sabe que el vendedor
recibe un sueldo base y un 10% extra por comisiones de todas sus
ventas.

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
ANÁLISIS DEL PROBLEMA:

Para obtener la comisión y la cantidad que recibirá el vendedor, se


necesita realizar lo siguiente:

Para obtener la cantidad total de ventas hay que conocer la cantidad


de cada una de sus ventas en el mes y
sumarlas. Posteriormente, sobre el total de las ventas se debe aplicar
el 10% para obtener la comisión. Por último, para obtener el total de
dinero que debe recibir el vendedor hay que sumarle al sueldo base la
comisión.

Pasos que se deben realizar:

Salidas: Cantidad a recibir por comisión, cantidad total a recibir

Entradas: cantidad de venta 1, 2 y 3, sueldo base

Datos adicionales: el descuento de 10% se aplicará sobre el total de


las ventas del mes

Aplicar las siguientes fórmulas:

Total de las ventas = Venta 1 + Venta 2 + Venta 3

Comisión = Total de las ventas * 0.10

Total a recibir = Sueldo base + Comisión

Sección de Declaraciones:

Var

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Real: TV, V1,V2,V3,TR,C, SB

Donde SB será Salario Base

TV será Total de las Ventas

V1,V2 y V3 será el valor de las tres ventas

C será la comisión

TR será el total a recibir


DISEÑO DEL ALGORITMO:

PRUEBA MANUAL DEL ALGORITMO:

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN

 Lógica de Programación
 INDICE
 GENERALIDADES
 T1: HERRAMIENTAS DE PROGRAMACIÓN
 T2: ESTRUCTURAS BÁSICAS DE PROGRAMACIÓN
o 2.1 Metodología para la solución de problemas
o 2.2 Tipos de estructuras básicas.
o 2.3 Estructuras secuenciales
o 2.4 Estructuras de selección
 2.4.1 Estructuras selectivas simples
 2.4.2 Estructuras selectivas dobles
 2.4.3 Estructuras selectivas compuestas
 2.4.4 Estructuras selectivas múltiples
 2.4.5 Expresiones lógicas
o 2.5 Estructuras cíclicas
 T3: ESTRUCTURAS DE DATOS

2.4 Estructuras de selección

Una decisión es la estructura según la cual se puede escoger uno de entre dos
caminos lógicos dependiendo de una condición que al ser evaluada nos brinda
la oportunidad de saber cuál de los dos caminos escoger. La evaluación de dicha
condición siempre va a originar una respuesta VERDADERA (cuando la
condición se cumple) o FALSA (cuando dicha condición no se cumple) y con ello

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
se podrá saber cuál es el conjunto de instrucciones a resolver. La
representación de una estructura selectiva se hace con palabras en
pseudocódigo (if – then – else o en español si – entonces - sino) y en flujograma
con una figura geométrica en forma de rombo.

La condición, en algoritmos técnicos, se podrá expresar en términos de dos


tipos de operadores: los operadores relacionales y los operadores booleanos.
Recordemos que los operadores relacionales son aquellos que nos originan una
respuesta Verdadera o Falsa y que corresponden a los símbolos mayor que,
menor que, mayor o igual, menor o igual, igual (de comparación) y diferente
de. Los operadores booleanos son aquellos que nos permiten establecer
conexiones entre expresiones en donde aparezcan los operadores booleanos y
corresponden a los operadores:

 AND: Genera Verdadero si todas las expresiones relacionales conectadas


son Verdaderas
 OR: Genera Verdadero si al menos una de las expresiones conectadas es
Verdadera
 NOT que invierte el sentido lógico de la expresión

Con estos elementos podemos recordar que la utilización de las decisiones


como estructura básica de programación no tiene ninguna restricción y que
pueden considerarse como válidos los siguientes casos:

 Una decisión dentro de otra


 Una decisión a continuación de otra
 Muchas decisiones dentro de otras
 Muchas decisiones a continuación de otras

Los lenguajes de programación normalmente cuentan con una forma de


seleccionar uno de entre varios caminos lógicos que correspondería a una
pequeña modificación de la estructura de DECISIÓN pero que en última parte
del mismo supuesto.

Las estructuras selectivas o alternativas se clasifican en:

a) Simples
DESARROLLO DE SOFTWARE NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
b) Dobles

c) Compuestas

d) Múltiples

 Lógica de programación
 INDICE
 GENERALIDADES
 T1: HERRAMIENTAS DE PROGRAMACIÓN
 T2: ESTRUCTURAS BÁSICAS DE PROGRAMACIÓN
o 2.1 Metodología para la solución de problemas
o 2.2 Tipos de estructuras básicas.
o 2.3 Estructuras secuenciales
o 2.4 Estructuras de selección
 2.4.1 Estructuras selectivas simples
 2.4.2 Estructuras selectivas dobles
 2.4.3 Estructuras selectivas compuestas
 2.4.4 Estructuras selectivas múltiples
 2.4.5 Expresiones lógicas
o 2.5 Estructuras cíclicas
 T3: ESTRUCTURAS DE DATOS

2.4.1 Estructuras selectivas simples

Se identifican porque están compuestos únicamente de una condición.

La estructura si – entonces evalúa la condición y en tal caso:

Si la condición es verdadera, entonces ejecuta la acción Si (o acciones si son


varias).

Si la condición es falsa, entonces no se hace nada.

Representación gráfica:

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN

DONDE:

Condición: Expresa la condición o conjunto de condiciones a evaluar

Acción: Expresa la operación o conjunto de operaciones que se van a realizar si


la condición resulta verdadera.

EJEMPLOS
Construir un algoritmo tal, que dado como dato la calificación de
un alumno en un examen, escriba

DEFINICIÓN DEL PROBLEMA

El mismo enunciado.

ANÁLISIS DEL PROBLEMA

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Salidas: mensaje de aprobado si se cumple la condición.

Entradas: calificación

Datos adicionales: un alumno aprueba si la calificación es mayor


o igual que 7.

Sección de declaraciones:

Var Real: Cal

Donde Cal = calificación“Aprobado” en caso que esa calificación


fuese mayor o igual que 7.

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
PRUEBA MANUAL:

 Lógica de Programacion
 INDICE
 GENERALIDADES
 T1: HERRAMIENTAS DE PROGRAMACIÓN
 T2: ESTRUCTURAS BÁSICAS DE PROGRAMACIÓN
o 2.1 Metodología para la solución de problemas
o 2.2 Tipos de estructuras básicas.
o 2.3 Estructuras secuenciales
o 2.4 Estructuras de selección
 2.4.1 Estructuras selectivas simples
 2.4.2 Estructuras selectivas dobles
 2.4.3 Estructuras selectivas compuestas
 2.4.4 Estructuras selectivas múltiples
 2.4.5 Expresiones lógicas
o 2.5 Estructuras cíclicas
 T3: ESTRUCTURAS DE DATOS

2.4.2 Estructuras selectivas dobles

Son estructuras lógicas que permiten controlar la ejecución de varias acciones


y se utilizan cuando se tienen dos opciones de acción, por la naturaleza de estas

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
se debe ejecutar una o la otra, pero no ambas a la vez, es decir, son
mutuamente excluyentes.

REPRESENTACIÓN GRÁFICA:

DONDE:

Condición: Expresa la condición o conjunto de condiciones a evaluar

Acción 1: Expresa la operación o conjunto de operaciones que se


van a realizar si la condición resulta verdadera.

Acción 2: Expresa la operación o conjunto de operaciones que se


van a realizar si la condición resulta falsa

REPRESENTACIÓN PSEUDOCODIFICADA.

Español Inglés

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Si <condición> entonces If <condición> then

<acción S1> <acción S1>

sino else

<acción S2> <acción S2>

Fin_Si End_if

En este caso se constituye en una selección de dos posibilidades. Si la condición


es verdadera se ejecuta la acción 1, y si es falsa, se ejecuta la acción 2. En el
Flujograma es recomendable que el camino verdadero deba colocarse a la
derecha y lo falso a la izquierda. En el diagrama N-S no se puede cambiar el
orden del Si y No.

EJEMPLOS

Dado como dato la calificación de un alumno en un examen, escriba


“aprobado” si su calificación es mayor o igual que 7 y “Reprobado” en
caso contrario.

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN

EJEMPLOS

Dado el sueldo de un empleado, encontrar el nuevo sueldo si obtiene


un aumento del 10% si su sueldo es inferior a $600, en caso contrario
no tendrá aumento.
DEFINICIÓN DEL PROBLEMA.

El mismo enunciado.

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
ANALISIS DEL PROBLEMA.

Salidas: nuevo sueldo

Entradas: sueldo del empleado

 Lógica de programación
 INDICE
 GENERALIDADES
 T1: HERRAMIENTAS DE PROGRAMACIÓN
 T2: ESTRUCTURAS BÁSICAS DE PROGRAMACIÓN
o 2.1 Metodología para la solución de problemas
o 2.2 Tipos de estructuras básicas.
o 2.3 Estructuras secuenciales
o 2.4 Estructuras de selección
 2.4.1 Estructuras selectivas simples
 2.4.2 Estructuras selectivas dobles

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
 2.4.3 Estructuras selectivas compuestas
 2.4.4 Estructuras selectivas múltiples
 2.4.5 Expresiones lógicas
o 2.5 Estructuras cíclicas
 T3: ESTRUCTURAS DE DATOS

2.4.3 Estructuras selectivas compuestas

En la solución de problemas encontramos numerosos casos en los que luego de


tomar una decisión y marcar el camino correspondiente a seguir, es necesario
tomar otra decisión. Dicho proceso puede repetirse numerosas veces.

En aquellos problemas en donde un bloque condicional incluye otro bloque


condicional se dice que un bloque está anidado dentro del otro.

A este tipo de estructuras se les conoce también como estructuras selectivas


anidadas.

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN

En este caso hay dos condiciones, la primera condición S1 es una selectiva


simple, porque solamente tiene una posibilidad. Cuando es verdadera, se
ejecuta la condición S2. Si es falsa, se continúa directamente con el siguiente
bloque de diagrama. La condición S2 es selectiva doble, tiene dos posibilidades.
Cuando es verdadera, se ejecuta la acción S21 y si es falsa, se ejecuta la acción
S22.

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
EJEMPLOS

1. Determinar la cantidad de dinero que recibirá un trabajador


por concepto de las horas extras trabajadas en una empresa,
sabiendo que cuando las horas de trabajo exceden de 40, el
resto se consideran horas extras y que éstas se pagan al doble
de una hora normal cuando no exceden de 8; si las horas extras
exceden de 8 se pagan las primeras 8 al doble de lo que se paga
por una hora normal y el resto al triple.
DEFINICIÓN DEL PROBLEMA

El mismo enunciado.

ANÁLISIS DEL PROBLEMA.

Datos de salida: Pago.

Datos de entrada: número de horas trabajadas y pago por hora


normal.

Datos Adicionales:

Lo primero que hay que determinar es si el trabajador trabajó


horas extras o no.

Encontrar las horas extras de la siguiente forma:

Horas extras = horas trabajadas – 40

En caso que sií trabajó horas extras:

Si horas extras > 8 entonces a horas extras excedentes de 8 =


horas extras –8 y pago por horas extras = pago por hora normal
* 2 * 8 + pago por hora normal * 3 * horas extras excedentes
de 8

De otra forma (solo horas al doble) pago por horas extras =


pago por hora normal * 2 * horas extras.

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Finalmente, pago total que recibirá el trabajador será:

Pago = pago por hora normal * 40 + pago por horas extras.

Si no trabajó horas extras tendremos:

Pago = pago por hora normal * horas trabajadas.

Definición de variables:

ht = horas trabajadas het = horas extras


que exceden de 8

ph = pago por hora normal phe = pago por horas


extras

he = horas extras pt = pago que recibe


el trabajador

DECLARACIÓN DE VARIABLES:

ENTERO: ht, he, het REAL: ph, phe, pt

PSEUDOCÓDIGO:

Begin

Read (ht, ph)

If ht >40 then

he ß ht – 40

If he > 8 then

het ß he – 8

phe ß ph * 2 * 8 + ph * 3 * het

else

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
phe ß ph * 2 * he

End_if

pt ß ph * 40 + phe

else

pt <-- ph * ht

End_if

Print (“El pago total de horas trabajadas es:”, pt)

Fin

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN

EJEMPLO 2.

Leer tres números enteros diferentes entre sí y determinar el número


mayor de los tres.

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
PRUEBA MANUAL DEL ALGORITMO

ENTRADA PROCESO SALIDA


N1 N2 N3 NM
10 8 1

(N1 > N2) and (N1 > N3)?

(10>8) and (10>1)? YES

NM = 10

10
2 13 4

(N1 > N2) and (N1 > N3)?

(2 > 13) and (2 > 4)

F and F NO

(N2 > N3)?

(13 > 4) YES

NM = 13

13
5 2 8

(N1 > N2) and (N1 > N3)?

(5 > 2) and (5 >8)

T and F NO

(N2 > N3)?

(2 > 8) NO

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
NM = 8

8
 Lógica de programación
 INDICE
 GENERALIDADES
 T1: HERRAMIENTAS DE PROGRAMACIÓN
 T2: ESTRUCTURAS BÁSICAS DE PROGRAMACIÓN
o 2.1 Metodología para la solución de problemas
o 2.2 Tipos de estructuras básicas.
o 2.3 Estructuras secuenciales
o 2.4 Estructuras de selección
 2.4.1 Estructuras selectivas simples
 2.4.2 Estructuras selectivas dobles
 2.4.3 Estructuras selectivas compuestas
 2.4.4 Estructuras selectivas múltiples
 2.4.5 Expresiones lógicas
o 2.5 Estructuras cíclicas
 T3: ESTRUCTURAS DE DATOS

2.4.4 Estructuras selectivas múltiples

Con frecuencia es necesario que existan más de dos elecciones posibles. Este
problema se podría resolver por estructuras selectivas simples o dobles,
anidadas o en cascada, pero si el número de alternativas es grande puede
plantear serios problemas de escritura y de legibilidad.

Usando la estructura de decisión múltiple se evaluará una expresión que podrá


tomar n valores distintos, 1, 2 , 3, ...., n y según que elija uno de estos valores
en la condición, se realizará una de las n acciones o lo que es igual, el flujo del
algoritmo seguirá sólo un determinado camino entre los n posibles.

Esta estructura se representa por un selector el cual si toma el valor 1 ejecutará


la acción 1, si toma el valor 2 ejecutará la acción 2, si toma el valor N realizará
la acción N.

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN

Así, si el selector toma el valor 1 se ejecutará la acción 1, si toma el valor 2 se


ejecutará la acción 2, si toma el valor N, se realizará la acción N. De otra forma,
si no es ningún caso de los anteriores, significa que no se cumplió ninguna de
las anteriores, entonces se realizará la acción X.

Deberá reemplazar Selector por variables, propiedad o expresión que vaya a ser
el valor clave.

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
EJEMPLO:

Diseñar un algoritmo tal que dados como datos dos variables de tipo
entero, obtenga el resultado de la siguiente función:

DEFINICION DEL PROBLEMA

El mismo enunciado.

ANALISIS DEL PROBLEMA

Salidas: Resp

Entradas: V, num

Datos adicionales: según el valor que tome num, así encontraremos


Resp con las fórmulas dadas.

Sección de Declaraciones:

Var integer: V, num

Real: resp

Donde resp será el resultado de la función, V y num los valores de las


dos variables de entrada

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN

PRUEBA MANUAL DEL ALGORITMO

ENTRADA PROCESO SALIDA


NUM V Resp
1 4
Switch (1) resp=100 * 4

Resp = 400
400

5 2 Switch(5) default:

Resp = 0

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Para este ejercicio es recomendable agregar una validación antes de
entrar al switch, ya que V nunca puede ser cero pues invalida la opción
3 al volverse indeterminada la división.

 Lógica de programación
 INDICE
 GENERALIDADES
 T1: HERRAMIENTAS DE PROGRAMACIÓN
 T2: ESTRUCTURAS BÁSICAS DE PROGRAMACIÓN
o 2.1 Metodología para la solución de problemas
o 2.2 Tipos de estructuras básicas.
o 2.3 Estructuras secuenciales
o 2.4 Estructuras de selección
 2.4.1 Estructuras selectivas simples
 2.4.2 Estructuras selectivas dobles
 2.4.3 Estructuras selectivas compuestas
 2.4.4 Estructuras selectivas múltiples
 2.4.5 Expresiones lógicas
o 2.5 Estructuras cíclicas
 T3: ESTRUCTURAS DE DATOS

2.4.5 Expresiones lógicas

Sirven para plantear condiciones o comparaciones y dan como resultado un


valor booleano verdadero o falso, es decir, se cumple o no se cumple la
condición. Se pueden clasificar en simples y complejas.

Las simples son las que usan operadores relacionales y las complejas las que
usan operadores lógicos.

EJEMPLO

Un ejemplo en el cual usamos el operador lógico AND


sería:

Una escuela aplica dos exámenes a sus aspirantes, por lo


que cada uno de ellos obtiene dos calificaciones
DESARROLLO DE SOFTWARE NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
denotadas como C1 y C2. El aspirante que obtenga
calificaciones mayores que 80 en ambos exámenes es
aceptado; en caso contrario es rechazado.

En este ejemplo se dan las condiciones siguientes:

If (C1 >= 80) and (C2 >= 80) then

print (“aceptado”)

else

print (“rechazado”)

end_if

Note que también usa operadores relacionales. Por lo general cuando hay
operadores lógicos, éstos van acompañados de operadores relacionales.

Un ejemplo usando el operador lógico OR sería:

Una escuela aplica dos exámenes a sus aspirantes, por lo que cada uno de ellos
obtiene dos calificaciones denotadas como C1 y C2. El aspirante que obtenga
una calificación mayor que 90 en cualquiera de los exámenes es aceptado; en
caso contrario es rechazado.

En este caso se dan las condiciones siguientes:

If (C1 >=90) or (C2 >=90) then

print (“aceptado”)

else

print (“rechazado”)

Fin_si

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
La instrucción equivale a OR ya que nos dice que puede ser en cualquiera de los
exámenes no necesariamente en los dos. En el ejemplo 1 la palabra ambos
equivalía a seleccionar la instrucción AND.

Si la instrucción nos dijera “que obtenga una nota en cualquiera de los


exámenes pero no en ambos”, nos estaría indicando una instrucción XOR que
es un tipo de OR pero exclusivo. Es decir, no puede considerarse el caso en que
tenga la misma nota en los dos exámenes, solo en uno de los dos.

 Lógica de programación
 INDICE
 GENERALIDADES
 T1: HERRAMIENTAS DE PROGRAMACIÓN
 T2: ESTRUCTURAS BÁSICAS DE PROGRAMACIÓN
o 2.1 Metodología para la solución de problemas
o 2.2 Tipos de estructuras básicas.
o 2.3 Estructuras secuenciales
o 2.4 Estructuras de selección
o 2.5 Estructuras cíclicas
 2.5.1 Tipos de ciclos
 2.5.2 La estructura FOR
 2.5.3 La estructura WHILE
 2.5.4 La estructura REPEAT
 2.5.5 Conversión de estructuras
 2.5.6 Bucles anidados
 T3: ESTRUCTURAS DE DATOS

2.5 Estructuras cíclicas

2.5.1 Conceptios básicos

Estos conceptos básicos de un programa son fundamentales en las estructuras


repetitivas.

2.5.2 BUCLES (LAZO)

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
El bucle, ciclo o lazo, es un segmento de un algoritmo o programa cuyas
instrucciones se repiten un número determinado de veces, mientras se cumple
una determinada condición específica (existe o es verdadera la condición).[1]

Un ciclo tiene las siguientes características:

a. El conjunto de instrucciones debe ser finito

b. La cantidad de veces que se repita dicho conjunto de instrucciones también


debe ser finita. En algunos casos esta cantidad de veces va a depender de una
condición explícita y en otros casos va a depender de una condición implícita.
Una condición es explícita cuando depende solamente de la misma ejecución
del programa sin que sea importante la participación del usuario. Asimismo una
condición es implícita cuando depende solamente de la voluntad del usuario y
por lo tanto la cantidad de iteraciones o repeticiones del ciclo podría llegar a
ser diferente cada vez pues sería posible que cambiara con cada usuario.

c. Deben estar claramente demarcados el inicio y el fin del ciclo. En los casos en
los cuales solo exista una instrucción a iterar, no serán necesarias dichas
marcas.

d. Dentro de un ciclo podrá ir cualquiera de las otras estructuras que se han


estudiado incluyendo otros ciclos.

Un bucle consta de tres partes:

 Decisión
 Cuerpo del bucle
 Salida del bucle

2.5.3 Iteración

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Es cada una de las diferentes pasadas o ejecuciones de todas las instrucciones
contenidas en el bucle.

2.5.4 Contadores

Un contador es una variable cuyo valor se incrementa o decrementa en una


cantidad fija en cada iteración. Se utilizan en los siguientes casos:

 Para contabilizar el número de veces que es necesario repetir una acción


(variable de control de un bucle)
 Para contar un suceso particular solicitado por el enunciado del
problema (asociado a un bucle independiente)
 Representa la variable de control del ciclo.
 Toma un valor inicial (generalmente 0 ó 1) y se incrementa en la mayoría
de los casos.
 Toma un valor inicial y se compara con el valor final.

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Los contadores se utilizan con la finalidad de contar sucesos o acciones internas
de un bucle; deben realizar una operación de inicialización y posteriormente las
sucesivas de incremento o decremento del mismo.

La inicialización consiste en asignarle al contador un valor. Se situará antes y


fuera del bucle.

Representación:

<nombre del contador> ß <nombre del contador> + <valor constante>

Si en vez de incremento es decremento se coloca un menos en lugar del más.

Ejemplo: i = i + 1 (incremento)

i = i – 1 (decremento)

2.5.5 Acumulador o totalizador

Un acumulador es un campo de memoria que suma sobre sí misma un conjunto


de valores para de esta manera tener la suma de todos ellos en una sola
variable. Se utiliza en aquellos casos en que se desea obtener el total
acumulado de un conjunto de cantidades, siendo preciso inicializarlo con el
valor cero.

Además 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.

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN

La diferencia entre un contador y un acumulador es que mientras el primero va


aumentando de uno en uno en un valor constante, el acumulador va
aumentando en una cantidad variable.

Representación: <Nombre del acumulador> ß <nombre del acumulador> +


<valor variable>

[1] Tomado de enriquebarrueto0.tripod.com/algoritmos/cap03.doc

EJEMPLO DE ACUMULADOR Y TOTALIZADOR.

Debe notar que el cambio de las variables contadoras se realiza de uno


en uno y el de las variables acumuladoras de la suma de los números.

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN

 Lógica de programación
 INDICE
 GENERALIDADES
 T1: HERRAMIENTAS DE PROGRAMACIÓN
 T2: ESTRUCTURAS BÁSICAS DE PROGRAMACIÓN
o 2.1 Metodología para la solución de problemas
o 2.2 Tipos de estructuras básicas.
o 2.3 Estructuras secuenciales
o 2.4 Estructuras de selección
o 2.5 Estructuras cíclicas
 2.5.1 Tipos de ciclos
 2.5.2 La estructura FOR
 2.5.3 La estructura WHILE

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
 2.5.4 La estructura REPEAT
 2.5.5 Conversión de estructuras
 2.5.6 Bucles anidados
 T3: ESTRUCTURAS DE DATOS

2.5.1 Tipos de ciclos

 Lógica de programación
 INDICE
 GENERALIDADES
 T1: HERRAMIENTAS DE PROGRAMACIÓN
 T2: ESTRUCTURAS BÁSICAS DE PROGRAMACIÓN
o 2.1 Metodología para la solución de problemas
o 2.2 Tipos de estructuras básicas.
o 2.3 Estructuras secuenciales
o 2.4 Estructuras de selección
o 2.5 Estructuras cíclicas
 2.5.1 Tipos de ciclos
 2.5.2 La estructura FOR
 2.5.3 La estructura WHILE
 2.5.4 La estructura REPEAT
 2.5.5 Conversión de estructuras
 2.5.6 Bucles anidados
 T3: ESTRUCTURAS DE DATOS

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
2.5.2 La estructura FOR

DEFINICIÓN

La estructura repetitiva For (desde) es aquella en la que el número de


iteraciones se conoce por anticipado, y por ello no se precisa poner ninguna
condición de salida para detener el bucle. En su lugar un contador cuenta el
número de iteraciones fijas y se termina cuando llega al valor final previamente
definido.

Quiere decir que esta estructura se usa frecuentemente cuando se conoce de


antemano el número de veces que se ejecutarán las acciones de un bucle. Esta
es una de sus características.

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
EJEMPLO

Calcular la suma de los cuadrados de los primeros 100


enteros y escribir el resultado.

DEFINICIÓN DEL PROBLEMA

El mismo enunciado.

ANÁLISIS DEL PROBLEMA

Salidas: cuadrados de los primeros 100 enteros

Entradas: ninguna

Datos adicionales:

Acumulador de cuadrados: la variable suma

Para generar los cuadrados usamos suma ß suma + i * i

Sección de declaraciones:

Var entero: suma , i

Donde i es el índice del bucle, suma es el acumulador de

la suma de cuadrados.

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN

PRUEBA MANUAL DEL ALGORITMO

Como son 100 elementos, el algoritmo resulta muy


grande, por lo tanto realizaremos la prueba con valor final
de 4 en vez de 100, solamente para ver el funcionamiento
del bucle.

ENTRADA PROCESO SALIDA


Suma = 0

i=1

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
suma = suma + i * i

suma = 0 + 1 * 1 = 1

i=2

suma = 1 + 2 * 2 = 5

i=3

suma = 5 + 3 * 3 = 14

i=4

suma= 14 + 4 * 4 = 14+16=
30

i=5 fuera del rango.


(Termina el bucle)
30

Observe que no hay entradas en este ejercicio.

Hay un número importante de reglas que deben seguirse cuando se utilizan


instrucciones FOR:

 Los valores inicial y final de la variable de control se determinan antes de


que empiece la repetición y no pueden cambiarse durante la ejecución
de la instrucción For.
 Dentro del cuerpo del bucle For, los valores de las variables que
especifican los valores inicial y final pueden cambiar, pero esto no va a
afectar al número de repeticiones.
 La instrucción del cuerpo del bucle de una instrucción For puede utilizar
el valor de la variable de control, pero no debe modificar este valor.
 Esta estructura se puede usar únicamente en aquellos casos en que
conocemos el número de veces que se va a realizar el ciclo.

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
 Esta estructura hace el incremento automáticamente y se inicializa en la
instrucción For.

 Lógica de programación
 INDICE
 GENERALIDADES
 T1: HERRAMIENTAS DE PROGRAMACIÓN
 T2: ESTRUCTURAS BÁSICAS DE PROGRAMACIÓN
o 2.1 Metodología para la solución de problemas
o 2.2 Tipos de estructuras básicas.
o 2.3 Estructuras secuenciales
o 2.4 Estructuras de selección
o 2.5 Estructuras cíclicas
 2.5.1 Tipos de ciclos
 2.5.2 La estructura FOR
 2.5.3 La estructura WHILE
 2.5.4 La estructura REPEAT
 2.5.5 Conversión de estructuras
 2.5.6 Bucles anidados
 T3: ESTRUCTURAS DE DATOS

2.5.3 La estructura WHILE

Se llama Mientras a la estructura algorítmica que se ejecuta mientras la


condición evaluada resulte verdadera.

Se evalúa la expresión booleana y, si es cierta, se ejecuta la instrucción


especificada, llamada el cuerpo del bucle. Entonces se vuelve a evaluar la
expresión booleana, y si todavía es cierta se ejecuta de nuevo el cuerpo. Este
proceso de evaluación de la expresión booleana y ejecución del cuerpo se repite
mientras la expresión sea cierta. Cuando se hace falsa, finaliza la repetición.

Si la condición del bucle While se evalúa a falso cuando se ejecuta el bucle por
primera vez, el cuerpo del bucle no se ejecutará nunca. En este caso se dice que
el bucle se ha ejecutado cero veces.

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
La condición lógica en un bucle While, debe tener un valor la primera vez que
se evalúa; en caso contrario, el programa abortará al ejecutarse While.

La condición lógica en un bucle While, debe ser modificada por una sentencia
en el cuerpo del bucle, normalmente por un contador, en caso contrario, el
bucle es infinito.

REPRESENTACIÓN GRÁFICA:

Métodos:

Existen tres métodos para controlar o terminar un bucle:

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN

BUCLE CONTROLADO POR CONTADOR

Un bucle controlado por contador es un bucle cuyas iteraciones se controlan


por una variable, cuyo valor representa a un contador. El mecanismo utilizado
es una variable de control del bucle que actúa como contador.

Un bucle controlado por contador consta de tres partes, además del cuerpo y
de la condición de salida:

 Inicialización de la variable de control del bucle


 Comprobación del valor de la variable de control del bucle
 Incremento del valor de la variable del control del bucle

El formato de este bucle es:

1. Establecer variable contador a un valor inicial


2. While variable contador < valor final do

Proceso

Incrementar variable contador en X veces

1. End_While

Se utiliza un bucle controlado por contador, cuando se conoce con anticipación


el número de veces que se va a realizar la acción, es decir cuántas iteraciones
se deben ejecutar exactamente. En ese caso decimos que esta estructura
trabaja igual que la estructura For.

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
EJEMPLO

Elabore pseudocódigo para el caso en que se desean


escribir los números del 1 al 100

Begin

Var

integer: i

i=1

While i <=100 do

print ( i )

i=i+1

End_While

End

BUCLE CONTROLADO POR CONDICIÓN

Los bucles controlados por centinela se utilizan cuando no se sabe con


anticipación, el número exacto de iteraciones a realizar.

Existen dos técnicas para realizar este bucle controlado por condición:

1. Bucle controlado por el usuario

Este método consiste simplemente en preguntar al usuario si existen más


entradas. Se sale del bucle cuando el usuario lo decide. El bucle se realiza
mientras haya más entradas, usando una expresión booleana Si/No. Si el

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
usuario no desea continuar repitiendo el bucle, digita N o No, según se haya
establecido la condición de respuesta del usuario.

1. Bucle controlado por un valor centinela.

Un centinela es un valor especial utilizado para señalar el final de una lista de


datos. El valor elegido debe ser totalmente distinto de los posibles valores de la
lista, para que se pueda utilizar para señalar el final de la lista. Es decir que no
debe pertenecer al rango de datos válido.

EJEMPLO

Diseñe un pseudocódigo para calcular la suma y producto


de N números enteros, utilizando un bucle controlado por
el usuario.

Begin

Var

integer : suma, prod, num

char : resp

suma = 0

prod = 1

Read ( resp )

While(resp < > ‘ N’) and ( resp < > ‘n’) do

Read (num)

suma = suma +
num

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
prod = prod * num

print (“Desea continuar (S / N)?”)

read ( resp )

End_While

print (“Total de la suma es:” , suma)

print (“Total de producto es:”, prod)

End

EJEMPLO

Diseñe un pseudocódigo para calcular la suma y producto


de N números enteros, utilizando un bucle controlado por
centinela.
Begin

Var

integer : suma, prod, num

suma ß 0

prod ß 1

read (num)

While ( num < > -1) do

suma ß suma +
num

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
prod ß prod * num

read ( num )

End_While

print (“Total de la suma es:” , suma)

print (“Total de producto es:”, prod)

Fin

BUCLE CONTROLADO POR BANDERAS O INTERRUPTORES

Una bandera o interruptor (flag) es una variable lógica que se utiliza para
conservar el estado (verdadero o falso) de una condición. El valor
del interruptor debe inicializarse antes de comenzar el bucle y debe cambiar
su estado (valor) dentro del cuerpo del bucle.

Normalmente la bandera puede tomar los valores de 1 o 0, True o False 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é acción realizar
 Para hacer que dos acciones diferentes se ejecuten alternativamente
dentro de un bucle.

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
EJEMPLO

Determinar si un número entero proporcionado por el


usuario es primo. Un número primo es un entero que no
tiene más divisores que él mismo y la unidad. Elaborar
Pseudocódigo:
Begin

Var

boolean: primo

integer: divisor, num, res

primo = ‘True’

divisor = 2

read (num)

while ((divisor < num) and (primo = ‘T’)) do

Res = num mod divisor

if (res = 0) then

primo = ‘F’

end_if

divisor = divisor + 1

end_while

if primo = ‘T’ then

print (“Numero”, num, “es primo”)

else

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
print (“Numero”, num, “no es primo”)

end_if

End

 Lógica de programación
 INDICE
 GENERALIDADES
 T1: HERRAMIENTAS DE PROGRAMACIÓN
 T2: ESTRUCTURAS BÁSICAS DE PROGRAMACIÓN
o 2.1 Metodología para la solución de problemas
o 2.2 Tipos de estructuras básicas.
o 2.3 Estructuras secuenciales
o 2.4 Estructuras de selección
o 2.5 Estructuras cíclicas
 2.5.1 Tipos de ciclos
 2.5.2 La estructura FOR
 2.5.3 La estructura WHILE
 2.5.4 La estructura REPEAT
 2.5.5 Conversión de estructuras
 2.5.6 Bucles anidados
 T3: ESTRUCTURAS DE DATOS

2.5.4 La estructura REPEAT

Se llama Repetir a la estructura algorítmica que se ejecuta un número definido


de veces hasta que la condición se torna verdadera.

Las reglas para construcción de una estructura usando Repeat, nos dicen que
debemos declarar una variable contador que debe inicializarse antes del ciclo e

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
incrementarse dentro del ciclo. A diferencia de la estructura While, la condición
ahora estará colocada al final del bucle para que primero ejecutemos la
instrucción y luego preguntamos si la condición se cumple. Esto quiere decir,
que en esta estructura el bucle se realizará por lo menos una
vez. También podrá observar que la condición está al revés, porque el bucle se
repite hasta que la condición se cumpla. En el bucle While, la condición se
evaluaba mientras era cierta. Hoy en Repeat se evalúa mientras es falsa.

Igual que el bucle While, el bucle repeat puede ser controlado por contador,
por condición o por banderas.

REPRESENTACIÓN PSEUDOCODIFICADA:

Español Inglés

Repetir Repeat

Acciones Acciones

Hasta que <condición> Until <condición>

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN

BUCLE REPEAT CONTROLADO POR CONTADOR:

Cuando el bucle es controlado por contador, se inicializa la variable contadora,


luego se realiza el proceso, se incrementa la variable contadora y después se
coloca la condición. Como en el bucle While se usa el símbolo menor o menor
o igual, aquí usamos el símbolo mayor o mayor o igual; debido a que la
condición es contraria a la del While, y porque se realizará mientras sea falsa.
En ese caso decimos que el bucle repeat se realizará por lo menos una vez.

BUCLE REPEAT CONTROLADO POR CONDICIÓN

Cuando el bucle es controlado por condición, si es controlado por el usuario, se


continuará cuando el usuario lo indique pero se entrará siempre la primera vez
y luego se coloca la condición para que el usuario decida si continúa o sale.

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Si la condición es por centinela, al contrario del bucle While, acá realizaremos
las acciones hasta que la variable sea igual al centinela. Note que en el bucle
While se hace mientras es diferente de centinela, aquí es lo contrario.

BUCLE REPEAT CONTROLADO POR BANDERAS.

El proceso es igual que en el bucle Mientras, con la diferencia de que la


condición se coloca en la parte de abajo. Generalmente cuando se usan
banderas para controlar un bucle, se utilizan operadores lógicos en la condición.

Las banderas también se pueden usar como parte de un proceso, para controlar
la secuencia de dichos procesos.

EJEMPLO

Aplicar los pasos de la metodología para la solución de


un problema para leer un número entero N y calcular el
resultado de la siguiente serie:

1 – 1/2+ 1/3 – 1/4 +.... +/- 1/N. Resolveremos el


problema utilizando bucle Repeat controlado por
contador y usando banderas.
DEFINICIÓN DEL PROBLEMA

El mismo enunciado.

ANÁLISIS DEL PROBLEMA

Salidas: suma de los términos de la serie.

Entradas: número de términos para la serie

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Datos adicionales: ninguno.

Cálculos:

Serie ß serie +/- (1/I)

Sección de Declaraciones:

Var

Integer: I,N

Real: serie

Char: band

PSEUDOCÓDIGO

Begin

Serie = 0

I=1

Read (N)

band = ‘T’

Repeat

If band = ‘T’ then

Serie = serie + (1/I)

band = ‘F’

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
else

Serie = serie – (1/I)

band = ‘T’

end_if

I=I+1

Until (I > N)

print (serie)

End

 Lógica de programación
 INDICE
 GENERALIDADES
 T1: HERRAMIENTAS DE PROGRAMACIÓN
 T2: ESTRUCTURAS BÁSICAS DE PROGRAMACIÓN
o 2.1 Metodología para la solución de problemas
o 2.2 Tipos de estructuras básicas.
o 2.3 Estructuras secuenciales
o 2.4 Estructuras de selección
o 2.5 Estructuras cíclicas
 2.5.1 Tipos de ciclos
 2.5.2 La estructura FOR
 2.5.3 La estructura WHILE
 2.5.4 La estructura REPEAT
 2.5.5 Conversión de estructuras
 2.5.6 Bucles anidados
 T3: ESTRUCTURAS DE DATOS

2.5.5 Conversión de estructuras

Las estructuras repetitivas e iterativas sirven para resolver problemas en los


cuales el mismo proceso se repite un número determinado de veces. El mismo
problema puede resolverse con cualquiera de las tres estructuras estudiadas,

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
siempre y cuando se cumplan ciertos requisitos que corresponden a cada
estructura. A continuación se muestra un cuadro comparativo de las tres
estructuras, a tomar en cuenta para resolver un problema.

CUADRO COMPARATIVO DE LAS TRES ESTRUCTURAS


FOR WHILE REPEAT
Se usa cuando Se usa cuando Se usa cuando
conocemos el número sabemos o no el sabemos o no el
de veces que se hará el número de veces que número de veces que
bucle se hará el bucle se hará el bucle
Se maneja con Se puede manejar con Se puede manejar con
contadores contadores y con contadores y con
centinelas centinelas
Se inicializa y se Si se controla con Si se controla con
incrementa contadores, se debe contadores, se debe
automáticamente inicializar e inicializar e
incrementar incrementar
Es una estructura Es una estructura Es una estructura
repetitiva iterativa iterativa
Pueden usarse Pueden usarse Pueden usarse
banderas o banderas o banderas o
acumuladores acumuladores acumuladores
Tiene su propio símbolo No tienen un símbolo No tienen un símbolo
en el Flujograma. en el flujograma, usan en el flujograma, usan
el de decisión el de decisión
Se realiza cero o más Puede en algunos Se realiza por lo
veces casos no realizarse ni menos una vez
una vez
La condición está La condición se sitúa al La condición se sitúa al
implícita en la definición inicio del bucle final del bucle
Se realiza mientras la Se realiza mientras las Se realiza hasta que la
condición evaluada es condición evaluada es condición evaluada se
verdadera verdadera hace verdadera (se
hace cuando es falsa)

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
 Lógica de programación
 INDICE
 GENERALIDADES
 T1: HERRAMIENTAS DE PROGRAMACIÓN
 T2: ESTRUCTURAS BÁSICAS DE PROGRAMACIÓN
o 2.1 Metodología para la solución de problemas
o 2.2 Tipos de estructuras básicas.
o 2.3 Estructuras secuenciales
o 2.4 Estructuras de selección
o 2.5 Estructuras cíclicas
 2.5.1 Tipos de ciclos
 2.5.2 La estructura FOR
 2.5.3 La estructura WHILE
 2.5.4 La estructura REPEAT
 2.5.5 Conversión de estructuras
 2.5.6 Bucles anidados
 T3: ESTRUCTURAS DE DATOS

2.5.6 Bucles anidados

Los bucles son anidados cuando están dispuestos de tal modo que unos son
interiores a otros. Las reglas para construir las estructuras anidadas establecen
que la estructura interna debe estar incluida totalmente dentro de la externa y
no debe existir solapamiento.

Las variables índices o de control de los bucles toman valores de modo tal que
por cada valor de la variable índice del ciclo externo se debe ejecutar
totalmente el bucle interno.

EJEMPLOS:

Ejemplo 1:

Calcular el factorial de N números enteros leídos de


teclado.

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
El problema consistirá en realizar una estructura de N
iteraciones aplicando el factorial de un número.

El pseudocódigo es el siguiente:
Begin

Read (n)

For i = 1 to n do

read (numero)

fact = 1

for j = 1 to numero do

fact = fact * j

End_for

Print (“El factorial del numero”, numero, “es”, fact )

End_for

Fin

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN

 Lógica de programación
 INDICE
 GENERALIDADES
 T1: HERRAMIENTAS DE PROGRAMACIÓN
 T2: ESTRUCTURAS BÁSICAS DE PROGRAMACIÓN
 T3: ESTRUCTURAS DE DATOS
o 3.1 Estructura de datos
o 3.2 Arreglos en una dimensión
o 3.3 Arreglos en dos dimensiones

T3: ESTRUCTURAS DE DATOS

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN

 Lógica de programación
 INDICE
 GENERALIDADES
 T1: HERRAMIENTAS DE PROGRAMACIÓN
 T2: ESTRUCTURAS BÁSICAS DE PROGRAMACIÓN
 T3: ESTRUCTURAS DE DATOS
o 3.1 Estructura de datos
o 3.2 Arreglos en una dimensión
o 3.3 Arreglos en dos dimensiones

3.1 Estructura de datos

CONCEPTOS

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Todas las variables que se han considerado hasta ahora son de tipo simple. Una
variable de tipo simple consiste de una sola caja de memoria y sólo puede
contener un valor cada vez.

Una variable de tipo estructurado consiste en toda una colección de casillas de


memoria.

Los tipos de datos estudiados: entero, real, alfabético son considerados como
datos de tipo simple, puesto que una variable que se define con alguno de estos
tipos sólo puede almacenar un valor a la vez, es decir, existe una relación de
uno a uno entre la variable y el número de elementos (valores) que es capaz de
almacenar.

En cambio, un dato de tipo estructurado, como el arreglo, puede almacenar


más de un elemento (valor) a la vez, con la condición de que todos los
elementos deben ser del mismo tipo, es decir, que se puede tener un conjunto
de datos enteros, reales, etc.

3.1.1 Introducción a las Estructuras de Datos.

ESTRUCTURA DE DATOS es una colección de datos que se caracterizan por su


organización y las operaciones que se definen en ella.

Los datos estructurados, llamados también estructuras de datos, son una


colección o conjunto de datos simples que tiene el mismo nombre.

LAS ESTRUCTURAS DE DATOS SE CLASIFICAN EN:

a) ESTRUCTURA DE DATOS ESTÁTICAS:

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Son aquellas en las que el espacio ocupado en memoria se define en tiempo de
compilación y no puede ser modificado durante la ejecución del
programa. Entre ellas tenemos:

 Arrays
 Registros
 Archivos

b) ESTRUCTURAS DE DATOS DINÁMICAS:

Son aquellas en las que el espacio ocupado en memoria puede ser modificado
en tiempo de ejecución.

Corresponden a este tipo:

 Lineales (Pilas, Colas y listas enlazadas)


 No lineales (árboles y grafos).

Estas estructuras no son soportadas en todos los lenguajes.

La elección de la estructura de datos idónea, dependerá de la naturaleza del


problema a resolver, y en menor medida, del lenguaje.

Las estructuras de datos tienen en común que un identificador, nombre, puede


representar a múltiples datos individuales.

ARRAYS:

Un arreglo (array) es una colección de datos del mismo tipo, que se almacenan
en posiciones consecutivas de memoria y reciben un nombre común. Para

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
referirse a un determinado elemento de un array se deberá utilizar un índice,
que especifique su posición relativa en el array.[1]

Un arreglo es una colección finita, homogénea y ordenada de elementos.

Finita: Todo arreglo tiene un límite; es decir, debe determinarse cuál será el
número máximo de elementos que podrán formar parte del arreglo.

Homogénea: Esto significa que todos los elementos del arreglo deben ser del
mismo tipo. (Todos enteros, todos reales, todos booleanos, etc.)

Ordenada: Se puede determinar cuál es el primer elemento, el segundo, el


tercero,.... y el n-ésimo elemento.

También el orden es significativo, el orden viene dado por el subíndice de un


vector.

[1] Tomado de http://www.mailxmail.com/curso-aprende-


programar/estructuras-datos-arreglos

 Lógica de programación
 INDICE
 GENERALIDADES
 T1: HERRAMIENTAS DE PROGRAMACIÓN
 T2: ESTRUCTURAS BÁSICAS DE PROGRAMACIÓN
 T3: ESTRUCTURAS DE DATOS
o 3.1 Estructura de datos
o 3.2 Arreglos en una dimensión
o 3.3 Arreglos en dos dimensiones

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
3.2 Arreglos en una dimensión

DEFINICION.

Están formados por un conjunto de elementos de un mismo tipo de datos que


se almacenan bajo un mismo nombre, y se diferencian por la posición que tiene
cada elemento dentro del arreglo de datos.

Cuando se define un arreglo, es necesario hacerlo como una variable. En la


parte de declaraciones de variables se utiliza el siguiente formato:

NombreVariable: Arreglo[tamaño] Tipo de dato

Donde:

NombreVariable Es el nombre de identificación de la variable

Arreglo Es la palabra reservada que indica que la variable es un arreglo

Tamaño Es un número entero que indica la cantidad de elementos que


tendrá el arreglo, por ejemplo 10, 20, 50, etc.

Tipo de dato Es el tipo de dato que tendrá el conjunto de elementos del


arreglo que se está definiendo, puede ser Entero, Real, Carácter, etc.

Cuando declare un arreglo, debe indicar el tipo de valor que va a guardar, así
como el número de elementos que contendrá (llamados elementos del
arreglo).

 Cada elemento del arreglo tiene que ser del mismo tipo, digamos int,
float o char.
 Para guardar un valor dentro de un arreglo, debe indicar el número del
elemento dentro del cual quiere almacenar el valor. Por ejemplo, el
primer elemento del arreglo es el 0, el segundo, el 1 , y así sucesivamente.
 Para acceder al valor guardado dentro del arreglo, los programas
especifican el nombre de éste y el número del elemento, colocándolo
dentro de corchetes, como en calificación[3].

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Al declarar un arreglo, se debe inicializar sus elementos antes de utilizarlos.

Entonces, para declarar un arreglo tiene que indicar su tipo, un nombre único y
la cantidad de elementos que va a contener. Por ejemplo, las siguientes
instrucciones declaran tres arreglos distintos:

char nombre[30];

Float costo_partes[50];

Int edad_empleados[100];

Float precios_acciones[25];

A los arreglos en una dimensión se les llama también Vectores o Listas. Los
vectores se representan de forma lineal, indicando el valor del índice asociado
a cada componente en la parte inferior, y el nombre del arreglo en la parte
superior. Estos vectores se pueden representar, como filas o como columnas
de datos.

EJEMPLO

Sea un vector “Calificaciones” de 100 componentes:

En forma de columna se representaría así:

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN

Para acceder a valores específicos del arreglo, use un valor de índice que apunte
al elemento deseado. Por ejemplo, para acceder al primer elemento del arreglo
calificaciones debe utilizar el valor de índice 0 ( calificaciones[0] ).

INICIALIZACIÓN Y ASIGNACIÓN DE VALORES

Como se decía anteriormente, antes de utilizar un arreglo es necesario


inicializarlo:

calificaciones[0];

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN

Para inicializar todos los elementos de una vez, se colocan dentro de un bucle,
comúnmente una estructura For que va del primer elemento al último que
contiene el arreglo.

Para asignar un valor a un elemento del arreglo se hace por ejemplo:

calificaciones[0] = 100;

Cuando se usan arreglos, una operación común es usar una variable índice para
acceder a los elementos de un arreglo. Suponiendo que la variable índice I
contiene el valor 3, la siguiente instrucción asigna el valor 400 a valores[3]:

valores[I] = 400;

EJEMPLO

Aplicar las fases para la resolución de un problema para


leer un vector de 20 números enteros y a continuación
escribir en un vector A todos los números negativos y en un
vector B todos los positivos o iguales a cero. Imprimir dichos
vectores.
ANÁLISIS DEL PROBLEMA

Salidas: vectores A y B

Entradas: vector de 20 números enteros

Datos adicionales:

if numero > 0 then positivo

else negativo o cero

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN

Sección de Declaraciones:

Var

Entero: Num[20], i, j,k,A[20], B[20]


Pseudocódigo:

Begin

j=1

k=1

For i=1 to 20 do

Read(Num[i])

If (Num[i] >0) then

A[j] = Num[i]

j=j+1

else

B[k] = Num[i]

k=k+1

end_if

end_for

for i=1 to j do

print(A[i])

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
end_for

for i=1 to k do

print(B[i])

end_for

End

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
 Lógica de programación
 INDICE
 GENERALIDADES
 T1: HERRAMIENTAS DE PROGRAMACIÓN
 T2: ESTRUCTURAS BÁSICAS DE PROGRAMACIÓN
 T3: ESTRUCTURAS DE DATOS
o 3.1 Estructura de datos
o 3.2 Arreglos en una dimensión
o 3.3 Arreglos en dos dimensiones

Arreglos en dos dimensiones

Una matriz es una tabla con números distribuidos en filas y columnas de forma
que todas las filas tienen el mismo número de elementos y lo mismo para todas
las columnas.

Es un conjunto de datos homogéneo, finito y ordenado, donde se hace


referencia a cada elemento por medio de dos índices. El primero de los índices
se utiliza generalmente para indicar los renglones (filas) y el segundo para
indicar columnas, por lo cual cada componente de la matriz se direcciona
mediante su Nombre, seguido de los dos índices separados por coma y entre
paréntesis.

También puede definirse como un arreglo de arreglos.

La dimensión u orden de una matriz es una forma de definir el número de filas


y de columnas que esta tiene. Si tiene m filas y n columnas, se dice que la
dimensión u orden de la matriz es de m x n. Esto quiere decir que internamente
en memoria se reservan MxN posiciones consecutivas para almacenar todos los
elementos del arreglo.

A los elementos de una matriz se les denota por Aij siendo i el nº de fila y j el nº
de columna. Así el elemento a34 sería el elemento de la tercera fila que ocupa
la cuarta columna.

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
REPRESENTACIÓN GRÁFICA DE MATRICES:

Se representa de forma tabular, de igual forma a la utilizada en Matemática,


situando las filas horizontalmente y las columnas en forma vertical.

DECLARACIÓN DE UNA MATRIZ

Pseudocódigo para el recorrido por filas:

Const

M=valor1

N= valor2

Tipo

Array[1..M,1..N] de real:matriz

Var

Matriz: A

Desde i = 1 hasta M hacer

Desde j = 1 hasta N hacer

Escribir (A[i,j])
DESARROLLO DE SOFTWARE NELLY
DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
Fin_desde

Fin_desde

El recorrido por columnas se hace de manera similar, invirtiendo el sentido de


los índices.

Desde j = 1 hasta N hacer

Desde i = 1 hasta M hacer

Escribir (A[i,j])

Fin_desde

Fin_desde

El número de elementos que contendrá una fila viene dado por

U1-L1+1 (Valor mayor – valor menor +1)

Igualmente, el número de elementos para la columna es U2-L2+1

Así, el número total de elementos de la tabla es (U2-L2+1)*(U1-L1+1)

EJEMPLO

Se tiene información sobre las calificaciones de 6 exámenes


de un grupo de 30 alumnos. Los datos sobre estos
exámenes se proporcionan de la siguiente manera:

Cal1,1 Cal1,2 ............ Cal1,6

Cal2,1 Cal2,2 ............ Cal2,6

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
.......................

Cal30,1 Cal30,2 ........ Cal30,6

Donde Cali,j es una variable real que expresa la calificación


que obtuvo el alumno i en el examen j.

1 £ i £ 30, 1£ j £ 6

Calcular lo siguiente:

a) el promedio de calificaciones de cada uno de los 6


exámenes

b) el promedio de cada alumno

c) el tipo (número) de examen que tuvo el mayor


promedio de calificación. Escriba también dicho promedio.

El pseudocódigo para el ejemplo es el siguiente:

Begin

For i=1 to 30 do

For j=1 to 6 do

Print (“Escriba la calificación del alumno”,i,


“en el examen”,j)

Read (cal[ i,j ]) //lectura de las calificaciones


de los 6 exámenes de los 30 alumnos

End_for

End_for

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
//cálculo del promedio de calificaciones de cada uno de los
exámenes

For j=1 to 6 do

sum = 0

For i=1 to 30 hacer

sum = sum + cal[i,j]

end_for

prom[j] = sum/30

print(“promedio examen”, j , prom[j])

End_for

//cálculo del promedio de cada alumno

For i=1 to 30 do

sum = 0

For j=1 to 6 do

sum = sum + cal[i,j]

End_for

print(“promedio del alumno” , i, sum/6)

End_for

DESARROLLO DE SOFTWARE NELLY


DESARROLLO DE SOFTWARE
INSTITUTO NACIONAL DE USULUTÁN
//cálculo del tipo de examen que tuvo el mayor promedio
de calificación.

Examen = 1

promayor = prom[1]

For j=2 to 6 do

if promayor < prom[j] then

promayor = prom[j]

Examen = j

End_if

End_for

Print (“el examen”, Examen, “obtuvo el mayor promedio=”,


promayor)

End

DESARROLLO DE SOFTWARE NELLY

También podría gustarte