• No se han encontrado resultados

Lógica de Programación

N/A
N/A
Protected

Academic year: 2021

Share "Lógica de Programación"

Copied!
125
0
0

Texto completo

(1)

INSTITUTO NACIONAL DE USULUTÁN INSTITUTO NACIONAL DE USULUTÁN

DESARROLLO

DESARROLLO DE DE SOFTWARE SOFTWARE NELLYNELLY

DESARROLLO DE SOFTWARE

DESARROLLO DE SOFTWARE

INSTITUTO NACIONAL DE USULUTÁN

INSTITUTO NACIONAL DE USULUTÁN

BACHILLERATO TÉCNICO VOCACIONAL OPCIÓN DESARROLLO DE SOFTWARE BACHILLERATO TÉCNICO VOCACIONAL OPCIÓN DESARROLLO DE SOFTWARE

DOCENTE: NELLY MERCEDES BARRERA GRANADA DOCENTE: NELLY MERCEDES BARRERA GRANADA

(2)
(3)

INSTITUTO NACIONAL DE USULUTÁN INSTITUTO NACIONAL DE USULUTÁN

DESARROLLO

DESARROLLO DE DE SOFTWARE SOFTWARE NELLYNELLY

DESARROLLO DE SOFTWARE

(4)

INSTITUTO NACIONAL DE USULUTÁN INSTITUTO NACIONAL DE USULUTÁN

DESARROLLO

DESARROLLO DE DE SOFTWARE SOFTWARE NELLYNELLY

DESARROLLO DE SOFTWARE DESARROLLO DE SOFTWARE Lógica de programación Lógica de programación INDICE INDICE   GENERALIDADESGENERALIDADES 

 T1: HERRAMIENTAS DE PROGRAMACIONT1: HERRAMIENTAS DE PROGRAMACION 

 T2: ESTRUCTURAS BASICAS DE PROGRAMACIONT2: ESTRUCTURAS BASICAS DE PROGRAMACION 

 T3: ESTRUCTURA DE DATOST3: ESTRUCTURA DE DATOS

El presente módulo tiene como finalidad que usted pueda desarrollar la lógica 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 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 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, gráfica y pseudo codificada; a partir del análisis de un problema en particular, lo que propiciará que usted pueda

lo que propiciará que usted pueda iniciarse en el campo de iniciarse en el campo de la programación.la programación. No se pretende enseñar un lenguaje de programación, sino dar a conocer las 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 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 (pseudocódigo), que luego le facilite aprender a utilizar un lenguaje de programación en particular.

programación en particular.

El módulo está compuesto por una unidad que proporcionará paso a paso, las 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 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 lógica de programación, y así plantear soluciones a problemas en el área de la informática.

informática.

Está dividido en tres partes: la primera constituye la fase inicial de la Está dividido en tres partes: la primera constituye la fase inicial de la identificación de competencias y se refiere a conceptos fundamentales del identificación de competencias y se refiere a conceptos fundamentales del desarrollo de software, donde se

desarrollo de software, donde se definen las reglas que debe definen las reglas que debe seguir para aplicarseguir para aplicar  jerarquía de operador

 jerarquía de operadores y tablas de verdad, los cuales reflejará a es y tablas de verdad, los cuales reflejará a través de unatravés de una representación algorítmica. representación algorítmica. GENERALIDADES GENERALIDADES Introducción. Introducción.

(5)

INSTITUTO NACIONAL DE USULUTÁN

DESARROLLO DE SOFTWARE NELLY

DESARROLLO DE SOFTWARE

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.

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.

 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. Objetivo general.

(6)

INSTITUTO NACIONAL DE USULUTÁN

DESARROLLO DE SOFTWARE NELLY

DESARROLLO DE SOFTWARE  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

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

(7)

INSTITUTO NACIONAL DE USULUTÁN

DESARROLLO DE SOFTWARE NELLY

DESARROLLO DE SOFTWARE

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

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

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 1.1.1 Pasos del desarrollo de software.

(8)

INSTITUTO NACIONAL DE USULUTÁN

DESARROLLO DE SOFTWARE NELLY

DESARROLLO DE SOFTWARE

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

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 1.1.3 Intérpretes y Compiladores.

(9)

INSTITUTO NACIONAL DE USULUTÁN

DESARROLLO DE SOFTWARE NELLY

DESARROLLO DE SOFTWARE

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]

(10)

INSTITUTO NACIONAL DE USULUTÁN

DESARROLLO DE SOFTWARE NELLY

DESARROLLO DE SOFTWARE

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:

(11)

INSTITUTO NACIONAL DE USULUTÁN

DESARROLLO DE SOFTWARE NELLY

DESARROLLO DE SOFTWARE

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

(12)

INSTITUTO NACIONAL DE USULUTÁN

DESARROLLO DE SOFTWARE NELLY

DESARROLLO DE SOFTWARE

 T3: ESTRUCTURAS DE DATOS

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

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.

1.2 Tablas de verdad

1.2.1 Lógica de proposiciones.

LÓGICA.

(13)

INSTITUTO NACIONAL DE USULUTÁN

DESARROLLO DE SOFTWARE NELLY

DESARROLLO DE SOFTWARE 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”.

(14)

INSTITUTO NACIONAL DE USULUTÁN

DESARROLLO DE SOFTWARE NELLY

DESARROLLO DE SOFTWARE

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.

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 Valor de Verdad

(15)

INSTITUTO NACIONAL DE USULUTÁN

DESARROLLO DE SOFTWARE NELLY

DESARROLLO DE SOFTWARE

[2] Tomadodewww.scribd.com/doc/3863819/apuntesprog

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.

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

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

1.2.2 Tabla de valores de verdad.

Conjunción

(16)

INSTITUTO NACIONAL DE USULUTÁN

DESARROLLO DE SOFTWARE NELLY

DESARROLLO DE SOFTWARE

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

(17)

INSTITUTO NACIONAL DE USULUTÁN

DESARROLLO DE SOFTWARE NELLY

DESARROLLO DE SOFTWARE

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.

(18)

INSTITUTO NACIONAL DE USULUTÁN

DESARROLLO DE SOFTWARE NELLY

DESARROLLO DE SOFTWARE  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

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 1.3 Tipos de datos y jerarquía de operadores

(19)

INSTITUTO NACIONAL DE USULUTÁN

DESARROLLO DE SOFTWARE NELLY

DESARROLLO DE SOFTWARE

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

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 a) Tipos de Datos Simples.

(20)

INSTITUTO NACIONAL DE USULUTÁN

DESARROLLO DE SOFTWARE NELLY

DESARROLLO DE SOFTWARE

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

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

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.

REGLAS DE LOS IDENTIFICADORES

1.3.1 Operación de asignación.

(21)

INSTITUTO NACIONAL DE USULUTÁN

DESARROLLO DE SOFTWARE NELLY

DESARROLLO DE SOFTWARE

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

(22)

INSTITUTO NACIONAL DE USULUTÁN

DESARROLLO DE SOFTWARE NELLY

DESARROLLO DE SOFTWARE

izquierda recibe las operaciones, variables o expresiones de la derecha, siempre y cuando éstas generen un valor para ser asignado.

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  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:

1.3.2 Operadores y expresiones

(23)

INSTITUTO NACIONAL DE USULUTÁN

DESARROLLO DE SOFTWARE NELLY

DESARROLLO DE SOFTWARE

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

Los operadores aritméticos son usados para realizar cálculos matemáticos. Algunos de los operadores aritméticos se listan a continuación:

(24)

INSTITUTO NACIONAL DE USULUTÁN

DESARROLLO DE SOFTWARE NELLY

DESARROLLO DE SOFTWARE

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

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.

(25)

INSTITUTO NACIONAL DE USULUTÁN

DESARROLLO DE SOFTWARE NELLY

DESARROLLO DE SOFTWARE

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:

= Compara los dos

operandos y evalúa si son iguales

x = y Devuelve verdadero si los valores son iguales y falso si no lo son

<> Compara los dos operandos y evalúa si son diferentes

x <> y Devuelve verdadero si los valores no son iguales y falso en caso contrario > Evalúa si el operando

izquierdo es mayor que el derecho

x > y Devuelve verdadero si el primero es mayor que el segundo y falso en caso contrario

< Evalúa si el operando izquierdo es menor que el derecho

x < y Devuelve verdadero si el primero es menor que el Operador

(26)

INSTITUTO NACIONAL DE USULUTÁN

DESARROLLO DE SOFTWARE NELLY

DESARROLLO DE SOFTWARE

segundo y falso en caso contrario

>= Evalúa si el operando izquierdo es mayor o igual que el derecho

x >= y Devuelve verdadero si el primero es mayor o es igual que el segundo y falso en caso contrario <= Evalúa si el operando

izquierdo es menor o igual que el derecho

x <= y Devuelve verdadero si el primero es menor o es igual que el segundo y falso en caso contrario

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: EJEMPLO

Operador

(27)

INSTITUTO NACIONAL DE USULUTÁN

DESARROLLO DE SOFTWARE NELLY

DESARROLLO DE SOFTWARE

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

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.

(28)

INSTITUTO NACIONAL DE USULUTÁN

DESARROLLO DE SOFTWARE NELLY

DESARROLLO DE SOFTWARE

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.

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 REGLAS DE PRIORIDAD

(29)

INSTITUTO NACIONAL DE USULUTÁN

DESARROLLO DE SOFTWARE NELLY

DESARROLLO DE SOFTWARE

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

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 EJEMPLO 1

(30)

INSTITUTO NACIONAL DE USULUTÁN

DESARROLLO DE SOFTWARE NELLY

DESARROLLO DE SOFTWARE 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

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.

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 X = -30 Respuesta.

(31)

INSTITUTO NACIONAL DE USULUTÁN

DESARROLLO DE SOFTWARE NELLY

DESARROLLO DE SOFTWARE 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

Resolver la siguiente expresión, para A=5 y B=16. (A ^ 2) > (B * 2)

SOLUCIÓN

A = -2 Respuesta.

(32)

INSTITUTO NACIONAL DE USULUTÁN

DESARROLLO DE SOFTWARE NELLY

DESARROLLO DE SOFTWARE

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

( paréntesis, primero el de

más a la izquierda

25 > ( Resolvemos el paréntesis de la derecha 25 > 32 Se evalúa la expresión relacional y el

resultado es

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 ^ 3 / 4)

Sustituir los valores de X y B (

3 / 4) de más a la izquierda

(

3 / 4) la izquierda, hacemos división

entera

30 <= (6 * 5 + Procediendo con el paréntesis de la derecha, potencia tiene mayor prioridad

30 <= ( Producto y división real tienen misma prioridad, pero producto está más a la izquierda

30 <= (30 + Luego sigue la división real

30 <= ( ) Efectuamos la suma

5 ^ 2) > (16 * 2) Efectuamos los 16 * 2)

Falso  Respuesta

EJEMPLO 4

6 ^ 3 \ 7) <= (6 * 5 + 7 ^Evaluando potencia en paréntesis 216 \ 7) <= (6 * 5 + 7 ^Resolviendo paréntesis de más a

7 ^ 3 / 4) 6 * 5 +343 / 4)

343 / 4) 30 +85.75

(33)

INSTITUTO NACIONAL DE USULUTÁN

DESARROLLO DE SOFTWARE NELLY

DESARROLLO DE SOFTWARE

Ya eliminamos los paréntesis, procedemos a evaluar el operador relacional

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 >=

8 * 2) mod 4 < > 3 * 2 div 2) or 3 >= 3)

adentro hacia afuera y el de más a la izquierda. Potencia tiene mayor prioridad.

Not ((15 >= 49) and ((43 – > = 3 ) operadores aritméticos en el primer paréntesis Not ((15>=49) and (( mod 4 < > 3 * 2 div 2 ) or 3 > = 3 ) quitar el paréntesis Not ((15>=49) and (27 mod 4

<>

Seguimos con el producto Not ((15>=49) and ( <> 6 div 2 ) or 3 > = 3 ) prioridad, el de más a la izquierda es mod. Not ((15>=49) and (3 <> 30 <= 115.75 Verdadero  Respuesta EJEMPLO 3

7 ^ ) and ( (43 –Resolviendo paréntesis de

8 * ) mod 4 < > 3 * 2 div 2 ) or 3

Pasamos al paréntesis de la derecha pues ya no hay

43 16)Efectuamos la resta para

3 * 2 div 2 ) or 3 > = 3 )

27 mod 4Div y mod tienen igual 6 div

 ) or 3 > = 3 )

(34)

INSTITUTO NACIONAL DE USULUTÁN INSTITUTO NACIONAL DE USULUTÁN

DESARROLLO

DESARROLLO DE DE SOFTWARE SOFTWARE NELLYNELLY

DESARROLLO DE SOFTWARE

DESARROLLO DE SOFTWARE

Not ((

Not (( ) and (3 <> 3 ) or) and (3 <> 3 ) or 3 > = 3 )

3 > = 3 )

Ya no hay operadores Ya no hay operadores aritméticos, seguimos con aritméticos, seguimos con los relacionales, el los relacionales, el paréntesis de más a la paréntesis de más a la izquierda izquierda Not (Falso and (

Not (Falso and (  ) or 3 > ) or 3 > = 3 )

= 3 )

Luego con el de la derecha Luego con el de la derecha Not (Falso and Falso or

Not (Falso and Falso or

)) operador relacionaloperador relacional Not (

Not ( oror

Verdadero) Verdadero)

And tiene mayor prioridad And tiene mayor prioridad que Or

que Or Not(Falso

Not(Falso or or Verdadero) Verdadero) Efectuamos Efectuamos OrOr Evaluamos

Evaluamos NegaciónNegación

Las fórmulas matemáticas se deben escribir en formato lineal. Esto

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

algebraica en expresión aritmética o algorítmica.

Linealizar las siguientes expresiones: (no se olvide que Linealizar las siguientes expresiones: (no se olvide que linealizar significa escribir una expresión algebraica en una linealizar significa escribir una expresión algebraica en una sola línea). sola línea). 15>=49 15>=49 3 <> 3 3 <> 3 3 > = 3

3 > = 3Quitamos Quitamos el el últimoúltimo Falso and Falso

Falso and Falso Not Verdadero)

Not Verdadero) False

False   RespuestaRespuesta

1.3.4 Escritura de formulas 1.3.4 Escritura de formulas

EJEMPLOS 1: EJEMPLOS 1:

(35)

INSTITUTO NACIONAL DE USULUTÁN INSTITUTO NACIONAL DE USULUTÁN

DESARROLLO

DESARROLLO DE DE SOFTWARE SOFTWARE NELLYNELLY

DESARROLLO DE SOFTWARE

DESARROLLO DE SOFTWARE

Sabemos que la

Sabemos que la división real división real se representa se representa por / por / y quey que usamos paréntesis para que se realicen las operaciones en usamos paréntesis para que se realicen las operaciones en el orden correcto. el orden correcto. Respuesta: Respuesta: X = X = ( a + b / ( a + b / c ) / ( a / b + c c ) / ( a / b + c ))

Linealizar las siguientes expresiones: (no se olvide que Linealizar las siguientes expresiones: (no se olvide que linealizar significa escribir una expresión algebraica en una linealizar significa escribir una expresión algebraica en una sola línea).

sola línea).

Recuerde que los paréntesis ayudan a separar las Recuerde que los paréntesis ayudan a separar las expresiones para que se evalúen en el orden correcto, expresiones para que se evalúen en el orden correcto, debemos poner los que sean necesarios, pero tratando de debemos poner los que sean necesarios, pero tratando de que no vayan más de la cuenta.

que no vayan más de la cuenta. Respuesta: Respuesta: X = X = ( a / (a + b)) ( a / (a + b)) / (a / (a - b))/ (a / (a - b)) EJEMPLOS 1: EJEMPLOS 1:

(36)

INSTITUTO NACIONAL DE USULUTÁN INSTITUTO NACIONAL DE USULUTÁN

DESARROLLO

DESARROLLO DE DE SOFTWARE SOFTWARE NELLYNELLY

DESARROLLO DE SOFTWARE

DESARROLLO DE SOFTWARE

 Lógica de ProgramaciónLógica de Programación 

 INDICEINDICE 

 GENERALIDADESGENERALIDADES 

 T1: HERRAMIENTAS DE PROGRAMACIÓNT1: HERRAMIENTAS DE PROGRAMACIÓN

o

o 1.1 Herramientas de Programación1.1 Herramientas de Programación

o

o 1.2 Tablas de verdad1.2 Tablas de verdad

o

o 1.3 Tipos de datos y jerarquía de operadores1.3 Tipos de datos y jerarquía de operadores

o

o 1.4 Algoritmos y Diagramas de Flujo1.4 Algoritmos y Diagramas de Flujo

 T2: ESTRUCTURAS BÁSICAS DE PROGRAMACIÓNT2: ESTRUCTURAS BÁSICAS DE PROGRAMACIÓN 

 T3: ESTRUCTURAS DE DATOST3: ESTRUCTURAS DE DATOS

CONCEPTO DE ALGORITMO: CONCEPTO DE ALGORITMO:

Es un conjunto de pasos secuenciales y ordenados que permiten lograr un Es un conjunto de pasos secuenciales y ordenados que permiten lograr un objetivo. Que sean pasos secuenciales significa que deben ser ejecutados uno 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 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 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 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 buenos algoritmos y llegar a la solución de un problema es tener claro el objetivo y no perderlo nunca de vista.

objetivo y no perderlo nunca de vista.

Debe ser independiente de la sintaxis de un lenguaje de programación puesto 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 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 personas. Lo que sí es importante notar, es que de un algoritmo sale el código en un lenguaje de

en un lenguaje de programación. Por cada línea del algoritmo se programación. Por cada línea del algoritmo se correspondencorresponden una o varias líneas de

una o varias líneas de código en un lenguaje de código en un lenguaje de programación.programación. 1.4 Algoritmos y Diagramas de Flujo

1.4 Algoritmos y Diagramas de Flujo 1.4.1 Introducción a los algoritmos 1.4.1 Introducción a los algoritmos

(37)

INSTITUTO NACIONAL DE USULUTÁN

DESARROLLO DE SOFTWARE NELLY

DESARROLLO DE SOFTWARE

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:

♦ .

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.

(38)

INSTITUTO NACIONAL DE USULUTÁN

DESARROLLO DE SOFTWARE NELLY

DESARROLLO DE SOFTWARE

♦ . Los algoritmos se

escriben para poder ser utilizados en cualquier máquina.

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.

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

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

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

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

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

♦ 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í.

Los algoritmos son independientes del computador

Los algoritmos deben de ser precisos. Los resultados de los cálculos deben de

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

Los algoritmos deben de poder repetirse

Validez.

Eficiencia. Óptimo.

(39)

INSTITUTO NACIONAL DE USULUTÁN

DESARROLLO DE SOFTWARE NELLY

DESARROLLO DE SOFTWARE

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

(40)

INSTITUTO NACIONAL DE USULUTÁN

DESARROLLO DE SOFTWARE NELLY

DESARROLLO DE SOFTWARE

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.

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.

SALIDAS:

(41)

INSTITUTO NACIONAL DE USULUTÁN

DESARROLLO DE SOFTWARE NELLY

DESARROLLO DE SOFTWARE

Seleccione una imágen para agrandarla.

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 1.4.2 Representación de algoritmos.

(42)

INSTITUTO NACIONAL DE USULUTÁN

DESARROLLO DE SOFTWARE NELLY

DESARROLLO DE SOFTWARE

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:

(43)

INSTITUTO NACIONAL DE USULUTÁN

DESARROLLO DE SOFTWARE NELLY

DESARROLLO DE SOFTWARE

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.

(44)

INSTITUTO NACIONAL DE USULUTÁN

DESARROLLO DE SOFTWARE NELLY

DESARROLLO DE SOFTWARE

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.

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

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

VENTAJAS DEL PSEUDOCÓDIGO

(45)

INSTITUTO NACIONAL DE USULUTÁN

DESARROLLO DE SOFTWARE NELLY

DESARROLLO DE SOFTWARE

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.

Elaborar el pseudocódigo para encontrar la superficie de un círculo para un radio cualquiera.

(46)

INSTITUTO NACIONAL DE USULUTÁN

DESARROLLO DE SOFTWARE NELLY

DESARROLLO DE SOFTWARE

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:

(47)

INSTITUTO NACIONAL DE USULUTÁN

DESARROLLO DE SOFTWARE NELLY

DESARROLLO DE SOFTWARE  Lógica de Programación  INDICE  GENERALIDADES  T1: HERRAMIENTAS DE PROGRAMACIÓN

(48)

INSTITUTO NACIONAL DE USULUTÁN

DESARROLLO DE SOFTWARE NELLY

DESARROLLO DE SOFTWARE

 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

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 Metodología para la solución de problemas

(49)

INSTITUTO NACIONAL DE USULUTÁN

DESARROLLO DE SOFTWARE NELLY

DESARROLLO DE SOFTWARE

 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

(50)

INSTITUTO NACIONAL DE USULUTÁN

DESARROLLO DE SOFTWARE NELLY

DESARROLLO DE SOFTWARE

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 2.2 Tipos de estructuras básicas.

(51)

INSTITUTO NACIONAL DE USULUTÁN

DESARROLLO DE SOFTWARE NELLY

DESARROLLO DE SOFTWARE

o 2.5 Estructuras cíclicas

 T3: ESTRUCTURAS DE DATOS

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. 2.3 Estructuras secuenciales

(52)

INSTITUTO NACIONAL DE USULUTÁN

DESARROLLO DE SOFTWARE NELLY

DESARROLLO DE SOFTWARE

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: EJEMPLOS:

(53)

INSTITUTO NACIONAL DE USULUTÁN

DESARROLLO DE SOFTWARE NELLY

DESARROLLO DE SOFTWARE

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:

(54)

INSTITUTO NACIONAL DE USULUTÁN

DESARROLLO DE SOFTWARE NELLY

DESARROLLO DE SOFTWARE

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.

(55)

INSTITUTO NACIONAL DE USULUTÁN

DESARROLLO DE SOFTWARE NELLY

DESARROLLO DE SOFTWARE

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

(56)

INSTITUTO NACIONAL DE USULUTÁN

DESARROLLO DE SOFTWARE NELLY

DESARROLLO DE SOFTWARE

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:

(57)

INSTITUTO NACIONAL DE USULUTÁN

DESARROLLO DE SOFTWARE NELLY

DESARROLLO DE SOFTWARE

 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

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 2.4 Estructuras de selección

(58)

INSTITUTO NACIONAL DE USULUTÁN

DESARROLLO DE SOFTWARE NELLY

DESARROLLO DE SOFTWARE

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

(59)

INSTITUTO NACIONAL DE USULUTÁN

DESARROLLO DE SOFTWARE NELLY

DESARROLLO DE SOFTWARE 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

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:

(60)

INSTITUTO NACIONAL DE USULUTÁN

DESARROLLO DE SOFTWARE NELLY

DESARROLLO DE SOFTWARE

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.

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 EJEMPLOS

(61)

INSTITUTO NACIONAL DE USULUTÁN

DESARROLLO DE SOFTWARE NELLY

DESARROLLO DE SOFTWARE

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.

(62)

INSTITUTO NACIONAL DE USULUTÁN

DESARROLLO DE SOFTWARE NELLY

DESARROLLO DE SOFTWARE

 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

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

PRUEBA MANUAL:

(63)

INSTITUTO NACIONAL DE USULUTÁN

DESARROLLO DE SOFTWARE NELLY

DESARROLLO DE SOFTWARE

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.

(64)

INSTITUTO NACIONAL DE USULUTÁN

DESARROLLO DE SOFTWARE NELLY

DESARROLLO DE SOFTWARE

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.

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.

(65)

INSTITUTO NACIONAL DE USULUTÁN

DESARROLLO DE SOFTWARE NELLY

DESARROLLO DE SOFTWARE

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.

(66)

INSTITUTO NACIONAL DE USULUTÁN INSTITUTO NACIONAL DE USULUTÁN

DESARROLLO

DESARROLLO DE DE SOFTWARE SOFTWARE NELLYNELLY

DESARROLLO DE SOFTWARE

DESARROLLO DE SOFTWARE

ANALISIS DEL PROBLEMA. ANALISIS DEL PROBLEMA. Salidas: nuevo sueldo Salidas: nuevo sueldo

 Lógica de programaciónLógica de programación 

 INDICEINDICE 

 GENERALIDADESGENERALIDADES 

 T1: HERRAMIENTAS DE PROGRAMACIÓNT1: HERRAMIENTAS DE PROGRAMACIÓN 

 T2: ESTRUCTURAS BÁSICAS DE PROGRAMACIÓNT2: ESTRUCTURAS BÁSICAS DE PROGRAMACIÓN

o

o 2.1 Metodología para la solución de problemas2.1 Metodología para la solución de problemas

o

o 2.2 Tipos de estructuras básicas.2.2 Tipos de estructuras básicas.

o

o 2.3 Estructuras secuenciales2.3 Estructuras secuenciales

o

o 2.4 Estructuras de selección2.4 Estructuras de selección

 2.4.1 Estructuras selectivas simples2.4.1 Estructuras selectivas simples 

 2.4.2 Estructuras selectivas dobles2.4.2 Estructuras selectivas dobles

Entradas: sueldo del empleado Entradas: sueldo del empleado

Referencias

Documento similar

Consiste en la aplicación del corpus de conocimiento sobre lógica para el diseño de lenguajes de programación; no debe confundirse con la disciplina de la

Siguiendo una lógica, ellos comienzan por una Introducción a la Programación que enseñan a los estudiantes los conceptos básicos de algoritmos y estructuras de datos, junto con el

GUÍA DOCENTE DE ESTRUCTURAS DISCRETAS Y LÓGICA La presente guía docente corresponde a la asignatura Estructuras Discretas y Lógica (EDyL), aprobada para el curso lectivo 2017-2018

Referente a la hipótesis específica 2, &#34;El pensamiento creativo tiene relación significativamente con el aprendizaje de la lógica de programación en los estudiantes de

Constituye una intersección entre el Aprendizaje Automatizado y la Programación Lógica de primer orden, manteniendo el mismo fin que el primero y aprovechando las potencialidades de

Desarrollar la lógica de programación en los estudiantes de los primeros niveles de la carrera de análisis de sistemas constituye un aspecto importante y previo al

Se presentan algunas experiencias desarrolladas con la utilización de acertijos lógicos como ejercicios en las cátedras de programación lógica. La inclusión de esta problemática

En general, el modelo creado nos ha permitido comprobar las capacidades que tienen los sistemas de reconocimiento mediante el uso de la programación lógica probabilística,