Lógica Computacional
LÓGICA COMPUTACIONAL LOCO-N UNIDAD DE APRENDIZAJE I: DATOS Y OPERACIONES BÁSICAS DOCENTE ING. GABRIEL ALEJANDRO DOMINGUEZ DOMINGUEZ
SAN SALVADOR, ENERO 2018
Lógica Computacional
ÍNDICE UNIDAD I COMPETENCIAS ...................................................................................................................... 1 UNIDAD I................................................................................................................................. 2 DATOS Y OPERACIONES BÁSICAS ......................................................................................... 2 OBJETIVO GENERAL ............................................................................................................. 2 OBJETIVOS ESPECÍFICOS ...................................................................................................... 2 INTRODUCCIÓN................................................................................................................... 3 DATOS Y OPERACIONES BÁSICAS ......................................................................................... 4 DATOS..................................................................................................................................... 4 1.1.
TIPOS DE DATOS ........................................................................................................... 4
Diferentes tipos de datos se pueden clasificar en: ................................................................... 5 1.2.
IDENTIFICADORES ........................................................................................................ 6
Regla de los identificadores: ................................................................................................... 8 1.3.
Palabras Reservadas ..................................................................................................... 9
1.4.
SINTAXIS....................................................................................................................... 9
1.5.
CONSTANTES ................................................................................................................ 9
1.6.
VARIABLES .................................................................................................................. 11
2.
OPERADORES ................................................................................................................. 13
2.1.
OPERADORES ARITMÉTICOS ....................................................................................... 13
2.2.
CONVERSIÓN DE FORMULAS MATEMÁTICAS. ............................................................ 16
2.3.
OPERADORES RELACIONALES ..................................................................................... 16
TABLAS DE LA VERDAD .......................................................................................................... 19 EJEMPLO APLICANDO JERARQUÍA DE OPERADORES.............................................................. 21
Ing. Gabriel Dominguez
Lógica Computacional
2.4.
OPERANDO CON CADENAS ......................................................................................... 22
2.5.
ASIGNACIÓN............................................................................................................... 23
3.
METODOLOGÍA PARA LA SOLUCIÓN DE PROBLEMAS ..................................................... 26
3.1.
DEFINICIÓN DE PROBLEMA......................................................................................... 26
3.2.
RESOLUCIÓN DE PROBLEMAS ..................................................................................... 26
3.3.
FASE DE RESOLUCIÓN DE PROBLEMA ......................................................................... 27
ANÁLISIS DEL PROBLEMAS .................................................................................................... 27 BIBLIOGRAFÍA ....................................................................................................................... 28 GLOSARIO ............................................................................................................................. 29 CONCLUSIÓN ........................................................................................................................ 30
Ing. Gabriel Dominguez
Unidad I
Lógica Computacional
COMPETENCIAS Unidad de Competencia: Resolver problemas de lógica computacional, utilizando las estructuras de control y estructuras de datos.
Elementos de competencias: 1. Establecer las operaciones básicas para las fases de la resolución de problemas. 2. Diseñar algoritmos y diagramas de flujo para la solución de problemas. 3. Aplicar las estructuras de control para la solución de problemas. 4. Aplicar estructuras de datos para la solución de problemas.
Valores institucionales a desarrollar ✓ Innovación permanente. ✓ Liderazgo institucional. ✓ Integridad.
Ing. Gabriel Dominguez
1
Unidad I
Lógica Computacional
UNIDAD I DATOS Y OPERACIONES BÁSICAS
OBJETIVO GENERAL Identificar y describir la importancia de los conceptos de datos, constante, variables, asignación, operación de asignación integra un algoritmo que conlleva a analizar y aplicarlo en los problemas prácticos del área de Informática.
OBJETIVOS ESPECÍFICOS Al finalizar la temática el estudiante será capaz de: o Identificar los tipos de datos para aplicarlo manera correcta para la solución del problema. o Conocer las reglas de los identificadores. o Aplicar las sentencias de asignación para la resolución de problemas. o Conocer y aplicar la jerarquía de operadores para la resolución de problemas. o Utilizar de manera correcta la utilización de las variables y constates.
Ing. Gabriel Dominguez
2
Unidad I
Lógica Computacional
INTRODUCCIÓN En este tema conoceremos como Aplicar los tipos de datos para la solución de problemas también conoceremos como identificar los operadores aritméticos y lógicos y aplicando las reglas de los operadores de las expresiones aritméticas y lógicas en la solución Y aplicar las operaciones de asignación para la solución de problemas.
Ing. Gabriel Dominguez
3
Unidad I
Lógica Computacional
DATOS Y OPERACIONES BÁSICAS DATOS Definición: Los datos son la representación simbólica, bien sea mediante números o letras de una recopilación de información la cual puede ser cualitativa o cuantitativa. Como, por ejemplo: “mayo”, “de” o un valor entero como 10. Por si mismos los datos no tienen capacidad de comunicar un significado y por tanto no pueden afectar el comportamiento de quien los recibe. Para ser útiles, los datos deben convertirse en información. La información no es un dato conjunto cualquiera de ellos, Es más bien un conjunto de datos significativo, conocimiento, ideas, conclusiones o que describan sucesos o entidades. Con el ejemplo anterior; al ordenar los datos quedaría: 10 de mayo, que quiere indicar una fecha festiva como el día de las madres.
1.1.
TIPOS DE DATOS
Los algoritmos y programas de computador, con independencia de lenguaje en que estén escritos, están diseñados para manipular información. Los datos a procesar por una computadora pueden clasificarse en: • •
Simples. Estructurados (Compuestos).
La principal característica de los datos simples es que ocupan sólo una casilla de memoria (Fig. 1 a), por lo tanto, una variable simple hace referencia a un único valor a la vez. Dentro de este grupo de datos se encuentran: Numéricos, Lógicos o (Booleanos), Alfanuméricos. Los datos estructurados se caracterizan por el hecho de que con un nombre se hace referencia a un grupo de casillas de memoria (Fig. 1.1b). Es decir, un dato estructurado tiene varios componentes. Dentro de este grupo de datos se encuentran: arreglos, cadena de caracteres, registros y conjuntos. Los datos Estructurados se estudiarán más adelante por el momento se estudiará los tipos de datos Simples.
Ing. Gabriel Dominguez
4
Unidad I
Lógica Computacional
Figura 1.1 Datos Simples y Estructurados.
Diferentes tipos de datos se pueden clasificar en: 1. DATOS NUMÉRICOS: Los datos de tipo numéricos son el conjunto de valores numéricos tanto positivos, negativos y cero, que se puede realizar en operaciones aritméticas. Dentro de los tipos de datos numéricos se encuentran los numéricos enteros y los numéricos reales. •
Los numéricos Enteros: Son todos los números Positivos o negativos que no tengan parte decimal o parte fraccionarios, por Ejemplo: 350
•
-556
7431
46
61004
-9864
Los numéricos Reales: Son todos los números positivos o negativos y que tienen una parte decimal. Por ejemplo: 4.5
-45.15
154.0
9744.45
4889.05
-984.24
2. DATOS ALFANUMÉRICOS: Dentro de este tipo de datos se encuentran los de tipo carácter (simple o Char) y cadena de caracteres (estructurado o String). Son datos cuyo contenido pueden ser letras del abecedario(a,b,c,...z), dígitos (0, 1, 2,.....9) o símbolos especiales (#, $, *,*, %, /,..., entre otros). Nota: Aunque estos tipos de datos pueden contener números, pero no pueden ser utilizados para realizar operaciones aritméticas.
Ing. Gabriel Dominguez
5
Unidad I
Lógica Computacional
•
Dato de tipo carácter (Simple o char): Este tipo de dato contiene un solo carácter, entre la mayoría de lenguaje se escribe entre apostrofes o comilla simple. Por ejemplo:
‘S’ •
‘$’
‘Z’
‘#’
‘4’
‘w’
Dato de tipo cadena (estructurado o string): Es un conjunto de caracteres y se escribe entre comillas. La longitud de una cadena depende de los lenguajes de programación. Por Ejemplo: “UNIVERSIDAD TECNOLÓGICA DE EL SALVADOR” “WWW.PORTAL.UTEC.EDU.SV” “INGENIERO FRANCISCO ZEPEDA”
3. DATOS LÓGICOS O BOOLEANOS: Dentro de estos tipos de datos solo se encontrarán con dos posibles valores: Verdaderos (True), Falso (False). • •
Estos datos se utilizan para representar las condiciones que se incluyen en las estructuras de control (si/no). Se forman a partir de los operadores relacionales y lógicos.
Ejemplo:
1.2.
Operación
Resultado
5=5 “Libro” = “Cuaderno” “Tecno” = “Tecno”
Verdadero Falso Verdadero
IDENTIFICADORES
Los Datos a procesar por una computadora, ya sean simples o estructurados, deben almacenarse en casillas o celdas de memoria para su parte de utilización. Estas casillas o celdas de memoria (Constante o variables) tienen un nombre que permite su identificación.
Ing. Gabriel Dominguez
6
Unidad I
Lógica Computacional
Que es un Identificador: Un identificador es el nombre que se le asigna a las casillas de memorias de un programa para almacenar datos (constantes, variables, tipos de datos), y que nos permiten facilitar el acceso a su contenido. La memoria del computador está dividida en celdas numeradas de forma consecutiva, por lo que, cada una de ellas tiene una dirección. En informática las direcciones de memoria suelen representarse con números hexadecimal (Figura 1.2).
Figura 1.2 Estructura de contenido y direcciones de una memoria.
Gráficamente si se guarda un dato en una celda de memoria, por ejemplo, el número 5 (Figura 1.3), se observará que la dirección de memoria de la variable podría ser 012FF88. Para poder acceder al dato se tendría que saber la dirección de memoria.
Figura 1.3 Dato almacenado en memoria
Ing. Gabriel Dominguez
7
Unidad I
Lógica Computacional
Con el uso de los identificadores se reserva un espacio para la variable y se le asigna un identificador con el nombre de: “numero”, solo se tendrá que hacer referencia al nombre para acceder al dato donde se ha almacenado la variable. (Figura 1.4).
Figura 1.4Uso de identificador número.
Regla de los identificadores: La regla para construir un identificador establece que: Debe comenzar con una letra del alfabeto (A a Z mayúscula o minúscula). Letras, dígitos o símbolo como guion bajo (_) están permitidos después del primer carácter. No está permitido la letra ‘ñ’ o ‘Ñ’. No deben contener espacios en blanco. No pueden existir dos identificadores iguales, es decir dos variables no pueden nombrarse de la misma forma, sin embargo, un identificador puede aparecer más de una vez en el algoritmo. Los identificadores elegidos deben ser significativos. Las letras no pueden ser tildadas. Se recomienda un máximo de 25 caracteres, valor que dependerá del lenguaje de programación. Indicar el tipo de datos (Entero, real, cadena). En las constantes es necesario declarar con su valor a ocupar. No se puede utilizar palabras reservadas propias del lenguaje algorítmico.
Ing. Gabriel Dominguez
8
Unidad I
Lógica Computacional
1.3.
Palabras Reservadas
En los lenguajes de programación es una palabra que tiene un significado gramatical para ese lenguaje y no puede ser utilizada como identificador, del Pseudocódigo a estudiar las palabras reservadas serian: Cadena, Real, Entero, Inicio, Fin, carácter, lógico, si, entonces, entre otros. o Ejemplos de identificadores no validos: Dirección 7sueldos Entero Sueldo Neto
No pueden llevar tildes. No puede comenzar con valor numérico. No se puede utilizar palabra reservada. No puede llevar espacio en blanco.
o Ejemplos de identificadores validos: a) Sueldo_Neto d) Anio g) Docente
1.4.
b) Edad e) Promedio h) Nombre
c) Direccion f) Porcentaje i) Carnet
SINTAXIS
La sintaxis de un lenguaje de programación se define como el conjunto de reglas que deben seguirse al escribir el código fuente de los programas o dentro del algoritmo, para darle las instrucciones necesarias al ordenador y generar en él una respuesta adecuada; durante el desarrollo del libro se encontraran partes de sintaxis que se ocupara para resolver los problemas planteados.
1.5.
CONSTANTES
Una constante es un dato que permanece sin cambio durante el desarrollo del algoritmo o durante la ejecución del programa, es decir valores fijos que no pueden ser alterados por el usuario. En la constante se les declarara el tipo de datos al que va pertenecer, entre ellos tenemos: Entero, real y cadena (Tabla 1.1). Tipos de datos Entero Real Carácter Cadena
Descripción y ejemplos Son números enteros, tanto positivos y negativos. Ejemplo: 12 Son números con punto decimal. Ejemplo 42.54 Contiene un solo carácter Ejemplo: ‘Z’ Contiene una serie de caracteres. Ejemplo: “Tecnológica” Tabla 1.1Tipos de constantes
Ing. Gabriel Dominguez
9
Unidad I
Lógica Computacional
La constante se declara con la palabra reservada const, dentro de la sección de definición de variables. La sintaxis de una constante es: Const: <tipo_de_dato>: <Identificador> =<datos almacenar>
Donde: <tipo_de_dato>: <Identificador>: <datos_almacenar>
Representa un tipo de dato. El nombre del identificador El valor o dato que le vamos asignar que no cambiara en todo el desarrollo del algoritmo.
Por ejemplo: Const: Cadena: Nombre= “Juan” Real: Porcentaje= 0.25 Para declarar más de una constante del mismo tipo, se separa por una coma (,) Ejemplo: Const: Cadena: Nombre = “Juan”, Carnet =”25-1878-2015” Real: Porcentaje = 0.25, Interes = 0.4 Donde Nombre y carnet son de tipo cadena, al constante nombre se le asigna un dato que es “Juan” y a la constante Carnet tiene almacenado el número de carnet “25-1878-2015”. El Porcentaje tiene almacenado 0.25 e interés tiene almacenado 0.4 donde ambos son de tipos Real, estas variables no cambiaran valores durante el desarrollo del algoritmo. Constantes en memoria: Se puede observar (Figura 1.5), al declarar la constante en memoria queda almacenado los datos correspondientes al tipo de datos que se le va declarando.
Ing. Gabriel Dominguez
10
Unidad I
Lógica Computacional
Tipo de dato: Entero
Tipo de dato: Cadena
Tipo de dato: Real
1.6.
Figura 1.5 Constantes representadas en memoria.
VARIABLES
Una variable es un objeto cuyo valor puede cambiar durante el desarrollo del algoritmo o ejecución del programa, es decir representa un valor almacenado en memoria que se puede modificar en cualquier momento o conservar para ser usado tantas veces como se desee. Declaración de variables: Todas las variables pueden ser declaradas antes de ser usadas, cada variable tiene asociado un tipo de dato, identificador y un valor. En la variable se les declarara el tipo de datos que va permanecer; entre ellos: Entero, real y cadena (Tabla 1.2). Tipos de datos Entero Real Carácter Cadena
Descripción y ejemplos Son números enteros, tanto positivos y negativos. Ejemplo: 576 Son números con punto decimal. Ejemplo 64.45 Contiene un solo carácter Ejemplo: ‘G’ Contiene una serie de caracteres. Ejemplo: “Universidad” Tabla 1.2 Tipos de variables.
La Variable se declara con la palabra reservada Var, dentro de la sección de definición de variables. La sintaxis de una variable es: Var: <tipo_de_dato>: <Identificador>
Donde: Representa un tipo de dato. <Identificador>El nombre del identificador donde se almacenará el dato. <tipo_de_dato>:
Ing. Gabriel Dominguez
11
Unidad I
Lógica Computacional
Por ejemplo: Var: Cadena: Codigo Real: Salario Para declarar más de una variable del mismo tipo, se separa por una coma (,) Ejemplo: Var: Cadena: codigo, nombre, telefono Real: salario, descuento, Entero: Edad, TotalPersonas Inicialización de una variable: Es darle un valor inicial a la variable que se está declarando en la definición de variables antes de usarla en un proceso. Por ejemplo: Var: Entero: numero = 0 Real: nota = 0.0 Reserva de memoria Cuando se declara una variable se le está diciendo al compilador que debe reservar un espacio en memoria, que a cada espacio de memoria se le asigne un nombre y un número determinado de bytes, dependiendo del tipo de dato asignado, a la vez se le está indicando que tipo de dato puede almacenar. Una variable es un objeto donde se puede almacenar temporalmente un valor, podemos observar (Figura 1.6), al declarar las variables en memoria queda inicializado con valores ceros que seguramente cambiaran su valor durante la ejecución del algoritmo.
Tipo de dato: Entero Tipo de dato: Real Figura 1.6 Variables representadas en memoria.
Ing. Gabriel Dominguez
12
Unidad I
Lógica Computacional
2. OPERADORES Un operador es un símbolo que permite relacionar dos datos en una expresión y evaluar el resultado de la operación. Los programas de las computadoras y los algoritmos se apoyan esencialmente en la realización de numerosas operaciones aritméticas de diferentes complejidades. Los operadores fundamentales son: o Aritméticos o Relacionales o Lógicos
2.1.
OPERADORES ARITMÉTICOS
Los operadores aritméticos (Tabla1.3), pueden ser utilizados con los tipos enteros y reales, sirven para realizar operadores aritméticos básicos. Para algunos operadores algebraicos será necesario convertirlo a una expresión a que la computadora lo entienda; a eso se le llama en forma: Algorítmica. OPERADORES ARITMÉTICOS Operador Operador Ejemplo Ejemplo Significado Resultado Algebraico Algorítmica Algebraico Algorítmica Circunflejo ⁿ ^ 4² 4^2 16 Multiplicación × * 5×5 5*5 25 División ÷ / 10 ÷ 4 20/ 6 3.3333 Suma + + 45+10 45 + 10 55 Resta 60-45 60 – 45 15 División entera Div (\) 20 div 6 3 Modulo Mod (%) 20mod6 2 Tabla 1.3 Operadores aritméticos.
LOS OPERADORES DIV Y MOD La división de dos números, sin importar su tipo, puede dar como resultados de tipo real, para obtener resultados enteros sin importar el tipo se puede ocupar los operadores DIV la cual devolverá la parte entera del resultado del cociente, el MOD devolverá la parte entera del residuo. Sintaxis del DIV: <Dividendo> DIV <Divisor>
Sintaxis del MOD: <Dividendo>MOD<Divisor>
Ing. Gabriel Dominguez
13
Unidad I
Lógica Computacional
Ejemplo: 1. Operar 49 DIV 5 2. Operar 49 MOD 5 Desarrollo: Para este ejercicio se trabaja como que fuera una división normal (Figura 1.7), pero al momento de extraer el resultado se trabaja de la siguiente manera: 1. Al trabajar 49 DIV 5 el resultado será 9porque devuelve solamente la parte entera del cociente. 2. Al trabajar 49 MOD5el resultado será 4 porque devuelve solamente la parte entera del residuo.
Figura 1.7Parte de la división.
Al evaluar expresiones que contengan operadores aritméticos se tiene que respetar la jerarquía de operadores, es decir, al tener una expresión más de un operador, se tiene que aplicar primero el operador de mayor jerarquía, resolver esa operación, y así sucesivamente, se presentara la jerarquía de operadores aritméticos, (Tabla 1.4). NOTA: Es importante señalar que el operador de paréntesis “( )” es un operador asociativo que tiene la prioridad más alta. JERARQUÍA DE OPERADORES ARITMÉTICOS () • Mayor ^ *, / Div (\), Mod (%) • Menor +, NOTA: Al existir operadores de un mismo nivel jerárquico en una expresión, se operan de izquierda a derecha. Tabla 1.4Jerarquía de operadores aritméticos.
Ing. Gabriel Dominguez
14
Unidad I
Lógica Computacional
Regla para resolver una expresión aritmética: • • •
Si una expresión contiene expresiones entre paréntesis, estas se evaluarán primero. Si las expresiones se encuentran con paréntesis internos, primero se evaluarán los paréntesis que estén más internos. Los operadores de mismo nivel jerárquico se trabajan el que está más a la izquierda.
Ejemplos: Encontrar el valor de cada una de las siguientes expresiones aritméticas: a) Resolver la siguiente operación: 10 + 12 –5 10 + 12 -5
como existe operadores de mismo nivel se trabaja el que este más a la izquierda.
22 – 5
Luego se opera la resta.
17
Respuesta.
b) Resolver la siguiente operación: – ((4 * (5 – 2) DIV 3) * 6) – ((4 * (5 – 2) DIV 3) * 6)
Se resuelve el primer paréntesis interno.
– ((4 * 3 DIV 3) * 6)
Se resuelve el siguiente paréntesis interno respetando la jerarquía de operadores, que sería la
multiplicación. – ((12 DIV 3) * 6)
Se sigue trabajando el paréntesis con el operador DIV.
– (4 * 6)
Se realiza la multiplicación.
– 24
Respuesta.
Ing. Gabriel Dominguez
15
Unidad I
Lógica Computacional
c) Resolver la siguiente operación: 75/25 *10 + 4 ^ 2 MOD 5 75/25 *10 + 4 ^ 2 MOD 5 75/25 *10 + 16MOD 5 trabaja el
Se resuelve primero el operador de circunflejo. Como hay dos operadores del mismo nivel se que se encuentra más a la izquierda de la expresión.
3 *10 + 16MOD 5
Se resuelve el operador de la multiplicación.
30 +16MOD 5
Se resuelve el operador del MOD.
30 + 1
se resuelve la suma.
31 32
Respuesta.
2.2.
CONVERSIÓN DE FORMULAS MATEMÁTICAS.
Como se comentaba en algunos párrafos atrás, para los operadores algebraicos será necesario convertirlo a una expresión Algorítmica por eso es necesario conocer el orden de las operaciones aritméticas para que la computadora entienda y ejecute en el orden correcto, vemos algunos ejemplos. Ejemplo: Convertir a expresiones algorítmica los siguientes ejercicios Expresiones algebraicas
Conversión Algorítmicas
54 ( 68 ÷ 2)
54 * ( 68 / 2)
5² ( 6 – 2) ³
5^2*(6–2)^3
4+b c² a + d+e √2 + 4
2.3.
(4 + b) / (a+(c^2 / (d + e))) (2 + 4)^ (1/2)
OPERADORES RELACIONALES
Los operadores relacionales son símbolos que se usan para comparar dos valores, todos los operadores relacionales dan como resultado un valor lógico (Booleano). Si el resultado de la comparación es correcto la expresión es considerada verdadera, en caso contrario es falso. Ejemplo: 4 > 10 (Cuatro es mayor a diez) es falso. Ya que cuatro es menor que 10.
Ing. Gabriel Dominguez
16
Unidad I
Lógica Computacional
Los operadores relacionales también tienen símbolos que no pueden ser interpretados por la máquina y es necesario convertirlo algorítmicamente. (Tabla 1.5). Operadores algebraicos
Conversión algorítmica
≥ ≤ ≠
>= <= <>
Tabla 1.5Conversión algorítmicamente a operadores relacionales.
Los operadores relacionales tienen el siguiente significado general: • • • • •
El operador = comprueba si dos operandos son iguales. El operador <>comprueba si dos operandos no son iguales. El operador <comprueba si el primer operando es menor al segundo operando. El operador >comprueba si el primer operando es mayor que el segundo operando. El operador <= comprueba si el primer operando es menor o igual que el segundo operando. • El operador >= comprueba si el primer operando es mayor o igual que el segundo operando. Todos los operadores relacionales pertenecen al mismo nivel de prioridad, pero a la vez se encuentran en un nivel inferior al grupo de operadores aritméticos, (Tabla1.6). JERARQUÍA DE OPERADORES ARITMÉTICOS Y RELACIONALES () • Mayor ^ *, / Div (\), Mod (%) +, • Menor >, <, <=, >=, =, <> NOTA: Al existir operadores de un mismo nivel jerárquico en una expresión, se operan de izquierda a derecha. Tabla 1.6Jerarquía de operadores aritméticos y relacionales.
Los operandos pueden ser de tipo numéricos, cadena, constantes o variables, entre las constantes o variables pueden ser de tipo entero, real, carácter o cadena, a continuación, se presentará operadores relacionales con sus respectivos resultados (Tabla 1.7).
Ing. Gabriel Dominguez
17
Unidad I
Lógica Computacional
Operador > < >= <= = <>
Significado Mayor que Menor que Mayor o Igual Menor o Igual Igual Diferente
Ejemplo 5<2 25 < 50 23 > = 23 64 < = 60 “ IVA” = “IBA” 5 <> 6
Resultado Falso Verdadero Verdadero Falso Falso Verdadero
Tabla 1.7Operadores relaciones con sus respectivos resultados.
Hasta estos momentos se ha estudiado los operadores aritméticos y relacionales con sus significados y sus prioridades Ejemplos: Encontrar el valor de cada una de los siguientes ejercicios: a) Resolver la siguiente operación: 75/3>3*25 75/3>3*25
Respetando jerarquía de operadores se trabaja la multiplicación.
75 / 3> 75
Luego se resuelve la división
25 > 75 Falso
Se compara dichos valores (25 es mayor que 75) Respuesta
b) Resolver las siguientes operaciones:3 / 3 <= 6 * 2 3/3<= 6*2
Respetando jerarquía de operadores se trabaja la división.
1<= 6*2
Luego se resuelve la multiplicación.
1<= 12
Se compara dichos valores (1 es menor o igual que 12)
Verdadero
Respuesta
Ing. Gabriel Dominguez
18
Unidad I
Lógica Computacional
OPERADORES LÓGICOS O BOOLEANOS Se le denominan operadores Booleanos, en honor a George Boole, considerado como uno de los fundadores del campo de las ciencias de la computación. LOS OPERADORES LÓGICOS Cambian su operando de acuerdo con las reglas del algebra de Boole, con el fin de producir un nuevo valor que se convierta en el valor de expresión. Son empleados para comparar dos valores (Verdadero o falso). Los operadores lógicos básicos son: OPERADOR SIGNIFICADO Not (no)
Negación
And (Y)
Producto Lógico
Or (O)
Suma Lógica
Hay que tener en cuenta que cada operador lógico tiene su jerarquía de operadores (Tabla 1.8). JERARQUÍA DE OPERADORES LÓGICOS • Mayor NOT AND (Y) OR (O)
•
Menor
Tabla 1.8Jerarquía de operadores Lógicos.
Las definiciones de los operadores lógicos, se puede resumir en unas tablas conocidas como: tablasde verdad.
TABLAS DE LA VERDAD • Operador NOT En el operador not (Negación), afecta a la expresión cambiando su estado lógico, lo invierte de verdadero a falso o viceversa, (Figura 1.8).
NOT Valor1 Resultado Verdadero
Falso
Falso
Verdadero
Figura 1.8Tabla de verdad NOT.
Ing. Gabriel Dominguez
19
Unidad I
Lógica Computacional
• Operador AND (Y) En el operador And (Producto Lógico), es un operador que afecta a dos operadores, este operador va devolver valor verdadero únicamente cuando ambos operando sean verdaderos, (Figura1.9). And (y) Valor1
Valor2
Resultado
Falso Falso
Falso Verdadero
Falso Falso
Verdadero
Falso
Falso
Verdadero
Verdadero
Verdadero
Figura 1.9Tabla de verdad And.
• Operador OR (O) En el operador OR (Suma Lógica), es un operador que afecta a dos operadores, este operador va devolver valor falso únicamente cuando ambos operando sean Falso, (Figura1.10).
OR (O) Valor1
Valor2
Resultado
Falso
Falso
Falso
Falso
Verdadero
Verdadero
Verdadero
Falso
Verdadero
Verdadero
Verdadero
Verdadero
Figura 1.10 Tabla de verdad OR.
Tabla de Jerarquía de Operadores: Al haber comprendido los diferentes tipos de operadores que son: Aritmético, relacionales y lógicos; a continuación, se presentara como quedara los niveles de jerarquía de cada uno de los operadores estudiado, (Tabla 1.9).
Ing. Gabriel Dominguez
20
Unidad I
Lógica Computacional
JERARQUÍA DE OPERADORES OPERADOR JERARQUÍA () • Mayor ^ *, / Div (\), Mod (%) +, >, <, <=, >=, =, <> Not (no) And (y) Or(o)
• Menor NOTA: Al existir operadores de un mismo nivel jerárquico en una expresión, se operan de izquierda a derecha. Tabla 1.9Jerarquía o prioridad de los Operadores.
EJEMPLO APLICANDO JERARQUÍA DE OPERADORES A continuación, se presentarán algunos ejemplos, recordando que es necesario aplicar la jerarquía de operadores. Para no escribir la palabra completa “Verdadero” o “Falso” se abreviará en: ‘V’ para “Verdadero” y ‘F’ para “Falso”. a) Resolver:( 15 > = 7 * 2 AND 8 > 3 AND 15 > 6 )OR NOT ( 21 > 5 + 24 DIV 3 ^ 3 ) Desarrollo: (15> = 7 * 2 AND 8 > 3 AND 15 >6) OR NOT (21> 5 + 24 DIV 3 ^ 3) (15> = 14 AND 8 > 3 AND 15 >6) OR NOT (21> 5 + 24 DIV 3 ^ 3) (V AND V AND V) OR NOT (21> 5 + 24 DIV 3 ^ 3) (V AND V) OR NOT (21> 5 + 24 DIV 3 ^ 3) V OR NOT (21> 5 + 24 DIV 3 ^ 3) V OR NOT (21> 5 + 24 DIV 27) V OR NOT (21> 5 + 0) V OR NOT (21 > 5) V OR NOT (V) V OR F V
Ing. Gabriel Dominguez
21
Lógica Computacional
Unidad I
b) Resolver: 16 DIV 5 + ( ( 100 MOD 90 ) ^ 2 ) DIV 3 - 25 MOD 20 Desarrollo: 16 DIV 5 + ( ( 100 MOD 90 ) ^ 2 ) DIV 3 - 25 MOD 20 16 DIV 5 + ( 10 ^ 2 ) DIV 3 - 25 MOD 20 16 DIV 5 + 100 DIV 3 - 25 MOD 20 3 + 100 DIV 3 - 25 MOD 20 3 + 33 - 25 MOD 20 3 + 33 - 5 36 - 5 31
Nota: En otros ejercicios se pueden obtener resultados diferentes tanto positivos, negativos, valores numéricos tanto como enteros o decimal o también podemos obtener valores lógicos como Verdadero o Falso.
2.4.
OPERANDO CON CADENAS
Como se estudió anteriormente, los tipos de datos cadena o de caracteres pueden contener números, pero estos tipos de datos no pueden ser utilizados para realizar operaciones aritméticas. Sin embargo, con estos datos podemos trabajar haciendo uso de ellos, por ejemplo, hacer comparaciones y concatenaciones.
COMPARACIONES DE CADENAS: consiste en comparar cadenas comenzando por el primer carácter de la izquierda, así de igual forma cuando se consulta un diccionario que se encuentra ordenado porcada carácter en orden alfabético, por ejemplo: se puede buscar si entre la palabra María va antes o después de Mario: Maria< Mario como resultado será Verdadero, ya que según el orden alfabético y orden de filtrado la palabraMaria va antes de la palabra Mario.
CONCATENACIÓN CON CADENAS: Esta operación es de unir varias cadenas a una sola, conservando el orden de cadenas de cada una de ellas, el símbolo para concatenar va depender del lenguaje de programación puede ser tanto (+, coma (,), &, entre otros) Ejemplo.
Ing. Gabriel Dominguez
22
Lógica Computacional
Unidad I
Al tener almacenado dos variables de tipo cadena: Cadena: Var1 = “Hola” Cadena: Var2 = “Mundo” Al concatenar las dos variables Var1 + Var2se tendría formada la palabra “HolaMundo”, como se observar al concatenar las variables var1 y var2, nos refleja unido la palabra, para procurar a que eso no se dé, podemos hacer uso de las comillas entre las variables para indicar que se quiere dejar un espacio entre cada palabra, quedando de la siguiente manera:
Var1 + " " + Var2, se tendría formada la palabra: “Hola Mundo”, como se puede observar al usar las comillas la máquina entiende que tiene que dejar los espacio en donde se le ha indicado. Al asignar un numérico como tipo cadena y se quiere operar aritméticamente este valor devolverá una concatenación y no un resultado esperado. Por ejemplo: Al tener almacenado dos variables de tipo cadena: Cadena: Numero1 = “5” Cadena: Numero2 = “10” Al concatenar las dos variables Numero1 + Numero2se tendrá como resultado “510”, aunque se entienda textualmente que es la representación de una suma, una vez que se declare de tipo cadena las variables, el computo entenderá de lo que se quiere hacer es una concatenación y no una operación aritmética.
2.5.
ASIGNACIÓN
El bloque de asignación se utiliza para asignar valores a una variable, viéndolo de otra forma, la asignación es una operación destructiva, que, si la variable tiene asignado un valor, este valor es eliminado, quedando con un nuevo valor.
Ing. Gabriel Dominguez
23
Unidad I
Lógica Computacional
Instrucciones de Asignación: o La operación de asignación se denota con el símbolo del = o El nombre de la variable cuyo valor va a ser modificado debe ser escrito a la izquierda del operador de asignación y a la derecha se sitúa una expresión, cuyo valor es asignado a la variable situada a la izquierda, Ejemplo: X = 32; la variable es: ‘X’ y la expresión es el número 32. o Es posible utilizar el mismo nombre de la variable en ambos lados del operador de asignación. Ejemplo: Contador = Contador + 1. o Se le llama Asignación de variables al declarar a = 1 o b=” Hola”. o A la variable en la que se le va asignar tiene que ser del mismo tipo. La sintaxis para hacer referencia a una asignación seria: <Identificador = Expresión >
DIFERENTES TIPOS DE ASIGNACIÓN: i.
ii.
Asignación Aritmética AMN = 164 – 6.46
TER2 = 7 + 6
TER1 = 3.2 + 14.12 + 8.0
MEDIA = TER1 / TER2
Asignación Lógica: M =3>5 N=7<6 P = NOT( 4 <> 4)
iii.
Asignación de carácter o de cadena: Tema = “Algoritmo I” Codi = ‘Z’ X = “ 12 de junio de 1981”
Ejemplos de Asignación de variables (Tabla 1.10). Ing. Gabriel Dominguez
24
Unidad I
Lógica Computacional
OPERACIÓN DESARROLLO
EXPLICACIÓN
X=5
A la variable X se le asigna valor 5.
Y=2
A la variable Y se le asigna valor 2.
Z = 10
A la variable Z se le asigna valor 10. A la variable Z obtiene el valor 8, por el resultado de la resta de Z – Y que cada uno de ellos contiene valor de 10 y 2. Elimina el valor de la Z anterior y obtiene un nuevo valor. A la variable Y obtiene el valor 13, por el resultado de sumar X que contiene el valor de 5 más la variable de Z que contiene 8 ya que se utiliza el ultimo valor almacenado
Z =Z–Y
Z = 10 – 2 Z=8
Y = X +Z
Y=5+8 Y = 13
X=Y+2
X = 13 + 2 X = 15
Y=Z–X
Y = 8 – 15 Y = -7
Z = X + 10
Z = 15 + 10 Z = 25
X=Z–Y
X = 25 – ( -7) X = 25 + 7 X = 32
Y=Y-3
Y = -7 – 3 Y = -10
A la variable X obtiene el valor 15, por el resultado de sumar el ultimo valor de Y que es 13 más la constante 2. A la variable Y obtiene el valor -7, por el resultado de restar Z que contiene el valor de 8 menos la variable X que contiene 15. A la variable Z obtiene el valor 25, por el resultado de sumar X que contiene el valor de 15 más la constante de 10. A la variable X obtiene el valor 32, recordando ley de los signos menos por menos, es más, quiere decir que el contenido de la variable Z se sumara con el contenido de la variable Y. A la variable Y obtiene el valor -10, respetando ley de los signos, números con igual signo se suma y su resultado será negativo, quiere decir que el contenido de la variable Y se sumara con la constante 3.
Tabla 1.10 Ejemplos de asignación de variables.
Los resultados finales serian: o X = 32 o Y = -10 o Z = 25 Son resultados finales por ser los últimos valores adquirido; ya que recordando que la asignación es una operación destructiva eliminando valores anteriores y quedando con los valores últimos.
Ing. Gabriel Dominguez
25
Unidad I
Lógica Computacional
3. METODOLOGÍA PARA LA SOLUCIÓN DE PROBLEMAS Es un proceso o camino sistemático establecido para realizar una tarea o trabajo con el fin de alcanzar un objetivo predeterminado. Para resolver el problema, es indispensable entender exactamente en qué consiste el problema y que tipo de resultado solicita. La mayoría de los problemas se pueden resolver más de una forma, por lo que es necesario pensar y plantear diferentes alternativas que permitan resolver cada problema planteado.
3.1.
DEFINICIÓN DE PROBLEMA
Representa una dificultad o una situación que necesita ser transformada de un estado a otro. En esta fase está dada por el enunciado del problema, se tiene como objetivo alcanzar, mediante una serie de operaciones, actividades o métodos bien definidos a encontrar una solución.
3.2.
RESOLUCIÓN DE PROBLEMAS
En el proceso de creación de un programa pueden ser identificadas por dos fases: (Figura 2.1). I. II.
Fase de resolución de problema. Fase de implementación (Realización) del computador. II.
I .
Figura 2.1 Fase de resolución de problemas.
Ing. Gabriel Dominguez
26
Unidad I
Lógica Computacional
3.3.
FASE DE RESOLUCIÓN DE PROBLEMA
Esta fase incluye: o Análisis del problema. o Diseño del algoritmo. o Verificación del algoritmo.
ANÁLISIS DEL PROBLEMAS Para encontrar una solución a un problema es necesario hacer un análisis de datos, es decir reconocer con que datos se cuentan y cuáles son los datos que se pretenden conseguir, para después lograr asociar algún proceso u operación a fin de obtener aquellos datos que se desea conseguir (Solución), se deberá examinar cuidadosamente el problema a fin de obtener ideas claras para conseguir datos necesarios.
Tres factores Fundamentales para implementar un análisis de problema (Figura 2.2). 1. Que información se necesita para obtener el resultado de los datos (Datos de Entrada). 2. Los métodos y fórmulas que se necesitan para procesar los datos y producir una salida (Proceso). 3. Que información se desea producir (Datos de Salida).
Figura 2.2Análisis de problema.
HAY QUE TENER EN CUENTA LAS SIGUIENTES RECOMENDACIONES: • • • •
Requiere del máximo de imaginación y creatividad por parte del programador. Se debe examinar cuidadosamente el problema a fin de identificar qué tipo de información se necesita producir. Se debe identificar aquellos elementos de información dados en el problema que puedan ser útiles para obtener la solución. Finalmente, un procedimiento para producir los resultados deseados a partir de datos y que será el algoritmo.
Ing. Gabriel Dominguez
27
Unidad I
Lógica Computacional
BIBLIOGRAFÍA
•
Aguilar, L. J. (2011). Programación en Java 6: Algoritmos, programación orientada a objetos e interfaz gráfica de usuario. México: McGraw Hill. 3 ejemplares
•
López, G. (2013). Análisis y diseño de algoritmos: implementaciones en C y Pascal. México: Alfa Omega. 3 ejemplares
•
López, G. (2013). Análisis y diseño de algoritmos: Implementaciones en C y Pascal. México: Alfa Omega. 3 ejemplares
Ing. Gabriel Dominguez
28
Unidad I
Lógica Computacional
GLOSARIO
Abstracción (abstracción)
Acoplamiento (coupling)
Propiedad y/o técnica de software que oculta los detalles de la implementación. Java soporta abstracción de clases y abstracción de métodos. La abstracción de métodos se define separando el uso de un método sin conocer como esta implementado ese método. Si decide combinar la implementación, el programa cliente será afectado. De modo similar la abstracción de clases oculta la implementación de la clase del cliente. Medida del grado en el que un objeto o componente depende de otro. Bajo acoplamiento minimiza las dependencias y es una indicación de un buen diseño
Agregación (aggregation)
Algoritmo (algorithm)
Ámbito de clase (scope class)
Análisis (analysis) Aplicacion (application)
Ing. Gabriel Dominguez
Relación en la que un objeto se compone o está construido de uno o más objetos, de modo que la colección completa representa un todo. Las relaciones de agregación se especifican entre clases y se reflejan en instancias de objetos Método que describe como se resuelve un problema en término de las acciones que se ejecutan y especifica el orden en que se ejecutan estas acciones. Los algoritmos ayudan al programador a planificar un programa antes de su escritura en un lenguaje de programación. Las variables privadas definidas fuera de los métodos internos a la clase tienen ámbito de clase. Son accesibles desde todos los métodos del interior de la clase, con independencia del orden en que están definidas. Los métodos privados también tienen ámbito de clase. Proceso de identificación, modelado y descripción de lo que hace un sistema y de cómo trabaja Programa autónomo Java tal como cualquier programa escrito utilizando un lenguaje de alto nivel. Las aplicaciones se pueden ejecutar desde cualquier computadora con un intérprete Java. Las aplicaciones no están sometidas a las restricciones impuestas los applets de Java. Una clase aplicación debe contener un método main. Se utiliza como sinónimo de programa
29
Lógica Computacional
Unidad I
IDE (integrated Software para ayudar a los programadores a escribir código development) eficientemente. Identificador (identifier) Nombre de una variable, método, clase, interfaz o paquete. IGU, Interfaz Gráfica de Una interfaz es un programa que se implementa utilizando Usuario (GUI, Graphical componentes AWT tales como cuadros, botones, etiquetas, User Interface) campos de texto, etc. Implementación La actividad de escribir, compilar, probar y depurar el (implementation) código de un programa. Instancia (instance) Objeto de una clase Instanciación Proceso de creación de un objeto de una clase. (instantiation) Instanciación (instantion) Proceso de crear un objeto de una clase. Interfaz (interface) Una interfaz se trata como una clase especial de Java. Cada interface se compila en un archivo independiente de bytecode, tal como una clase ordinaria. No se puede crear una instancia de la interfaz. La estructura de una interfaz Java es similar al de una clase abstracta en la que se puede tener datos y metodos. Los datos, sin embargo, deben ser constantes y los metodos pueden tener solo declaraciones sin implementación. En Java existe solo herencia simple y una clase puede heredar de una superclase. Esta restricción se puede superar por el uso de una interfaz. Interprete (Interpreter) Software que interpreta y ejecuta bytecode de Java. La máquina virtual Java (JVM) es un intérprete de bytecodes de Java que proporciona una emulación de software de un procesador de máquina. JDK (Java development kit) Define el APJ de Java y contiene un conjunto de utilidades véase J25KJ de líneas de ordenes tales como Javac(compilador) y Java(interprete). Jerarquía de clases (class Colección de clases organizadas en términos de relaciones de superclases y subclases. hierarchy) JVM, Máquina Virtual Java Una emulación de software de una máquina que puede (Java Virtual ejecutar bytecodes de Java. Proporciona una implementación del procesador, sistema de memoria e Machine) interfaces a dispositivos hardware. Todos los programas Java se compilan a bytecodes que se ejecutan por una JVM. Ligadura dinámica Ligadura o enlace del nombre de un método al cuerpo de (dynamic binding) dicho método que se ejecuta mientras que un programa se está ejecutando, al contrario del enlace que se produce cuando se compila el programa.
Ing. Gabriel Dominguez
30
Lógica Computacional
CONCLUSIÓN Los Algoritmos son una manera de expresar cualquier situación por medio de una secuencia de pasos ordenados y lógicos que buscan el aclaramiento de cualquier problema para así identificar lo que se necesita, como se hace y el resultado final, el cual debe ser igual siempre por lo que se busca que hayan alternativas para cualquier solución posible.
Los diagramas de flujo son la representación gráfica de un algoritmo y tiene como finalidad lograr una mayor comprensión de este. Está compuesto por diversos símbolos que especifican las diversas partes del algoritmo, como los componentes iniciales, los procedimientos, las diversas posibilidades y los resultados.
Ing. Gabriel Dominguez
30