INTEGRANTES:Castillo Díaz Margarita Cruz Fuentes Manuel Barco Gonzáles Rina         Custodio Llontop Miguel Aquino Odar Gu...
1CAPITULO                     ALGORITMOS Y PROGRAMAS             1.1.             Los sistemas de procesamiento de la info...
El resto del capítulo trata de los datos y las operaciones elementales necesarias para el diseño del       algoritmo. El p...
000000014646d6e640000025400000070646d6464000002c400000088767565640000034c0000008676696577000003d4000000246c756d69000003f80...
ffd8ffe00010                                                             4a464946000                                      ...
1.2. CONCEPTO DE ALGORITMOEl objetivo fundamental de esta texto es enseñar a resolver problemas mediante una computadora. ...
programación y ejecutarse en una computadora distinta; sin embargo, el algoritmo será siempre el mismo. Así,por ejemplo, e...
LLas características fundamentales que debe cumplir todo algoritmo son:UUn algoritmo debe ser preciso e indicar el orden d...
Por ejemplo, si N es 131, los pasos anteriores serian:1.Inicio.2.X = 2.    3 y 4. 131 / X. Como el resultado no es un ente...
1.3.1.Instrucciones a la computadoraLos diferentes pasos (acciones) de un algoritmo se expresan en los programas como inst...
programa a la memoria) sin neces idad de traducción poster ior lo que supone una velocidad   de ejecución super ior a cual...
95a0000024000000014646d6e640000025400000070646d6464000002c400000088767565640000034c0000008676696577000003d4000000246c756d6...
Figura 1.5. Programa ensamblador                                    m                 Los inconvenientes más notables de l...
están muy extendidosClipper Ada Modula-2 Prolog LISP Smalltalky comienzan a difundirse:Visual Object Delphi Miranda Eiffel...
Figura 1.7. La compilación de programas.1.3.5.2. CompiladoresUn compilador es un programa que traduce los programas fuente...
El proceso de ejecución sería el mostrado en las Figuras 1.9 y 1.10. Programa                                             ...
1.4.     DATOS, TIPOS                                 DE         DATOS     Y     OPERACIONES       PRIMITIVAS       El pri...
fuera de este rango no se suelen representar como enteros, sino como reales, aunque existen                  excepciones (...
1.4.2. Datos lógicos (booleanos)El tipo lógico –también denominado booleano– es aquel dato que solo puede tomar uno de dos...
Constantes                                                                     reales             Constantes Reales no v?l...
VariablesUna variable es un objeto o partida de datos cuyo valor puede cambiar durante el desarrollo del algoritmoo ejecuc...
*                                         Divisi?n                                     Entero o real                      ...
15 � 6 32 cocienterestoEn forma de operadoresresultará la operación anterior:15 div 6 = 2 15 mod 6 =3Otros ejemplos son:19...
1.6.1.1. Reglas de prioridadLas expresiones que tienen dos o más operandos requieren unas reglas matemáticas que permitand...
ffd8ffe000                    104a46494600                    01020100c800                    c80000ffe20c                ...
Tabla 1.2. Operadores de relaci?n                                        expresión1 OPERADOR DE RELACIÓN expresión2       ...
Cuando se utilizan los operadores de relación, con valores lógicos, la constante False (Falso) esmenor que la constante Tr...
EXPRESI?N L?GICA     PRIORIDAD DE LOS OPERADORES EN LAS EXPRESIONES LÓGICAS                             RESULTADOLos opera...
FUNCI?N                                                        DESCRIPCI?N                                                ...
Fundamentos de programacion
Fundamentos de programacion
Fundamentos de programacion
Fundamentos de programacion
Fundamentos de programacion
Fundamentos de programacion
Fundamentos de programacion
Fundamentos de programacion
Fundamentos de programacion
Fundamentos de programacion
Fundamentos de programacion
Fundamentos de programacion
Próxima SlideShare
Cargando en…5
×

Fundamentos de programacion

823 visualizaciones

Publicado el

Publicado en: Tecnología, Viajes
0 comentarios
0 recomendaciones
Estadísticas
Notas
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

Sin descargas
Visualizaciones
Visualizaciones totales
823
En SlideShare
0
De insertados
0
Número de insertados
1
Acciones
Compartido
0
Descargas
16
Comentarios
0
Recomendaciones
0
Insertados 0
No insertados

No hay notas en la diapositiva.

Fundamentos de programacion

  1. 1. INTEGRANTES:Castillo Díaz Margarita Cruz Fuentes Manuel Barco Gonzáles Rina Custodio Llontop Miguel Aquino Odar Gustavo
  2. 2. 1CAPITULO ALGORITMOS Y PROGRAMAS 1.1. Los sistemas de procesamiento de la informaci?n. 1.2. Concepto de algoritmo. 1.3. Los lenguajes de programaci?n. 1.4. Datos, tipos de datos y operaciones primitivas. 1.5. CONTENIDO Constantes y variables. 1.6. Expresiones. 1.7. Funciones internas.ACTIVIDADES DE PROGRAMACIÓN RESUELTAS. EJERCICIOS. 1.8. La operaci?n de asignaci?n. 1.9.La principal Entrada y salida de informaci?n. razón para que las personas aprendan lenguajes y técnicas de programación es utilizar lacomputadora como una herramienta para resolver problemas. La resolución de un problema exige almenos los siguientes pasos:1.Definición o análisis del problema.2.Diseño del algoritmo. ffd8ffe000104a4649460001020100c800c80000ffe20c584943433.Transformación del algoritmo en un programa. 5f50524f46494c4500010100000c484c696e6f021000006d6e74724.Ejecución y validación del 5247422058595a2007ce00020009000600310000616373704d53 programa. 4654000000004945432073524742000000000000000000000000 0000f6d6000100000000d32d48502020000000000000000000000Uno de los objetivos0000000000000000000000000000000000000000000000000000fundamentales dee este libro es0000000000000000000001163707274000001500000003364657el aprendizaje y diseño de363000001840000006c77747074000001f000000014626b707400algoritmos. Este capítulo000204000000147258595a00000218000000146758595a000002introduce al lector en el concepto2c000000146258595a0000024000000014646d6e640000025400de algoritmo y de programa, así000070646d6464000002c400000088767565640000034c000000como las herramientas que8676696577000003d4000000246c756d69000003f8000000146d6permiten <<dialogar>> al usuario561730000040c0000002474656368000004300000000c7254524con la máquina: los lenguajes de30000043c0000080c675452430000043c0000080c62545243000programación. 0043c0000080c7465787400000000436f70797269676874202863Un algoritmo es un método para292031393938204865776c6574742d5061636b61726420436f6d7resolver un problema. Aunque la 0616e79000064657363000000000000001273524742204945433popularización del término ha 6313936362d322e3100000000000000000000001273524742204llegado con el advenimiento de la 9454336313936362d322e3100000000000000000000000000000era informática, algoritmo 0000000000000000000000000proviene de Mohammed al–Khowarizmí, matemático persa que vivió durante el siglo IX y alcanzó gran reputación por el enunciadode las reglas paso a paso para sumar, restar, multiplicar y dividir números decimales; la traducción al latíndel apellido en la palabra algorismus derivó posteriormente en algoritmo. Euclides, el gran matemáticogriego (del siglo IV antes de Cristo), que inventó un método para encontrar el máximo común divisor dedos números, se considera con Al–Khowarizmí el otro gran padre de la algoritmia (ciencia que trata de losalgoritmos).
  3. 3. El resto del capítulo trata de los datos y las operaciones elementales necesarias para el diseño del algoritmo. El profesor Niklaus Wirth –inventor de Pascal, Modula-2 y Oberon– tituló uno de sus más famosos libros, Algoritmos + Estructuras de datos = Programas, significándonos que sólo se puede llegar a realizar un buen programa con el diseño de un algoritmo y una correcta estructura de datos. Esta ecuación será una de las hipótesis fundamentales consideradas en esta obra.1.1. LOS SISTEMAS DE PROCESAMIENTO DE LA INFORMACIÓN. Una definición antigua de computadora es: <<una máquina o aparato electrónico capaz de ejecutar operaciones repetitivas muy complejas a altas velocidades>>. Ahora bien, ésta definición no describe las modernas computadoras. Éstas son más que una máquina de ejecutar operaciones aritméticas. De hecho, los términos procesador de datos y sistemas de procesamiento (tratamiento) de la información se utilizan con frecuencia en lugar de computadora (ordenador, en la jerga informática usual en España). En el uso diario, datos e información son esencialmente sinónimos. Sin embargo, los informáticos suelen hacer una diferencia: datos se refiere a la representación de un hecho, concepto o entidad real (los datos pueden tomar diferentes formas: por ejemplo, palabras escritas o habladas, números y dibujos); información implica datos procesados y organizados. Un sistema en general se define como conjunto de componentes conectados e interactivos, que tienen un propósito y una unidad total. Sistema de procesamiento de información es un sistema que transforma datos brutos en información organizada, significativa y útil. La Figura 1.1 muestra los tres componentes de un sistema de proceso de la información: entrada, salida y procesador. El procesador, que puede ser bastante complicado, se representa por una simple caja y puede aceptar datos llamados entrada, y esta entrada se transforma entonces para producir una información denominada salida o resultados. Basados en este esquema, muchos dispositivos u organismos pueden ser considerados sistemas de procesamiento de la información. Un termostato que controla la temperatura de un edificio es un sistema de procesamiento de la información. La entrada es la temperatura media y la salida es una señal que controla la caldera del aire acondicionado. El corazón de un animal o un ser humano es un sistema complejo de procesamiento de la información. El conjunto de instrucciones que especifican la secuencia de operaciones a realizar, en orden, para resolver un sistema específico o clase de problemas, se denomina algoritmo. En otras palabras, un algoritmo es una fórmula para la resolución de un problema. Entrada=datos ffd8ffe000104a4649460001020100c8 00c80000ffe20c584943435f50524f464 94c4500010100000c484c696e6f0210 00006d6e74725247422058595a2007c e00020009000600310000616373704d 5346540000000049454320735247420 000000000000000000000000000f6d6 000100000000d32d485020200000000 0000000000000000000000000000000 0000000000000000000000000000000 0000000000000000000000000116370 7274000001500000003364657363000 001840000006c77747074000001f000 000014626b707400000204000000147 258595a00000218000000146758595a 0000022c000000146258595a0000024
  4. 4. 000000014646d6e640000025400000070646d6464000002c400000088767565640000034c0000008676696577000003d4000000246c756d69000003f8000000146d6561730000040c0000002474656368000004300000000c725452430000043c0000080c675452430000043c0000080c625452430000043c0000080c7465787400000000436f70797269676874202863292031393938204865776c6574742d5061636b61726420436f6d70616e790000646573630000000000000012735247422049454336313936362d322e31000000000000000000000012735247422049454336313936362d322e31000000000000000000000000000000000000000000000000000000Salida=información Procesador
  5. 5. ffd8ffe00010 4a464946000 1020100c800c 80000ffe20c5 84943435f505 24f46494c450 0010100000c 484c696e6f02 1000006d6e7 47252474220 Figura 1.1. Sistema de proceso de la información 58595a2007ce Para realizar un proceso se le debe suministrar al00020009000 procesador un algoritmoadecuado. Por ejemplo, al cocinero debe dársele una receta, 60031000061 al pianista la partitura y asisucesivamente, considerando al cocinero y al pianista como6373704d534 procesadores. Cuando el procesador es una computadora, el algoritmo65400000000 ha de expresarse de unaforma que recibe el nombre de programa. Un programa sen 49454320735 escribe en un lenguaje deprogramación y a la actividad de expresar un algoritmo en forma de programa se ledenomina programación. Cada paso en algoritmo está24742000000 expresado por medio de unainstrucción en el programa. Por consiguiente, un programa00000000000 consta de una secuencia deinstrucciones, cada una de las cuales especifica las00000000000f operaciones que deberealizar la computadora. 6d600010000 Existen dos conceptos importantes a considerar en los0000d32d485 sistemas de procesamientode la información: hardware y software. Hardware es el 02020000000 conjunto de componentesfísicos de una computadora (Figura 1.2) –equipo físico– y software es el conjunto deprogramas que controlan el funcionamiento de una00000000000 computadora –equipológico– . 00000000000 00000000000 EL hardware de una computadora se compone de: 00000000000 000000000001La Unidad Central de Proceso, UCP (Central Processing 00000000000 Unit, CPU). La UCP es elconjunto de circuitos electrónicos capaces de ejecutar algunos cálculos sencilloscomo suma o multiplicación de números. La potencia de una 00000000000 computadora dependecompletamente de la velocidad y fiabilidad de la UCP. 000000000002Memoria central. La información procesada por la UCP se 11637072740 almacena normalmente enla memoria central hasta que se terminan los cálculos. Los programas de computadorase almacenan también en la memoria central. 000015000003Dispositivos de almacenamiento secundario (memoria 00336465736 auxiliar). Diferentesdispositivos, tales como discos y cintas magnéticas, se usan 30000018400 para almacenar grandescantidades de información. Para ser procesados por la UCP, los datos sealmacenan en dispositivos de almacenamiento auxiliar y 00006c77747 luego tienen que llevarse ala memoria central. 074000001f004Periférico o dispositivos de entrada/salida (E/S). Estos 0000014626b dispositivos permiten alusuario comunicarse con la computadora. Un sistema de computadoras puede tenerdiferentes dispositivos periféricos conectados a ella. 70740000020 40000001472 En la práctica, una instalación grande de computadora58595a00000 puede tener diferentes UCP,cada una con su propia memoria central compartida, una21800000014 variedad de dispositivos dealmacenamiento secundario y periféricos localizados en diferentes partes de unmismo edificio o diferentes edificios e incluso diferentes6758595a000 ciudades o países. 0022c000000 ffd8ffe000104a4649460001020100c800c80000ffe20c584943435f50524f46494c4500010100000c484c696e6f02100 146258595a0 0006d6e74725247422058595a2007ce00020009000600310000616373704d53465400000000494543207352474200 00002400000 00000000000000000000000000f6d6000100000000d32d48502020000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000011637072740000015000000033646573630000 0014646d6e6 01840000006c77747074000001f000000014626b707400000204000000147258595a00000218000000146758595a0 40000025400 000022c000000146258595a0000024000000014646d6e640000025400000070646d6464000002c400000088767565 640000034c0000008676696577000003d4000000246c756d69000003f8000000146d6561730000040c000000247465 000070646d6 6368000004300000000c725452430000043c0000080c675452430000043c0000080c625452430000043c0000080c7 464000002c4 465787400000000436f70797269676874202863292031393938204865776c6574742d5061636b61726420436f6d706 00000088767 16e790000646573630000000000000012735247422049454336313936362d322e3100000000000000000000001273 5247422049454336313936362d322e31000000000000000000000000000000000000000000000000000000 56564000003 Figura 1.2. Diagrama esquemático de una computadora (hardware) 4c000000867 66965770000 03d40000002 46c756d6900 0003f8000000 146d6561730 000040c0000 00247465636 80000043000 00000c72545 2430000043c 0000080c675 45243000004 3c0000080c62
  6. 6. 1.2. CONCEPTO DE ALGORITMOEl objetivo fundamental de esta texto es enseñar a resolver problemas mediante una computadora. Unprogramador de computadora es antes que nada una persona que resuelve problemas, por lo que para llegar aser un programador eficaz se necesita aprender a resolver problemas de un modo riguroso y sistemático. A lolargo de todo este libro nos referimos a la metodología necesaria para resolver problemas medianteprogramas, al concepto se denomina metodología de la programación . El eje central de esta metodologíaes el concepto, ya tratado, de algoritmo. La resolución de un problema exige el diseño de un algoritmo que resuelva el problema propuesto. Diseño Programa Problema ffd8ffe000104a4649460001020100c800c80000ffe20c584943435f50524f46494c4500010100000c484c696e6f021000006d6e74725247422058595a2007ce00020009000600310000616373704d5346540000000049454320735247420000000000000000000000000000f6d6000100000000d32d4850202000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001163707274000001500000003364657363000001840000006c77747074000001f000000014626b707400000204000000147258595a00000218000000146758595a0000022c000000146258595a0000024000000014646d6e640000025400000070646d6464000002c400000088767565640000034c0000008676696577000003d4000000246c756d69000003f8000000146d6561730000040c0000002474656368000004300000000c725452430000043c0000080c675452430000043c0000080c625452430000043c0000080c7465787400000000436f70797269676874202863292031393938204865776c6574742d5061636b61726420436f6d70616e790000646573630000000000000012735247422049454336313936362d322e31000000000000000000000012735247422049454336313936362d322e310000000000000000000000000000000000000000000000000 00000del ffd8ffe000104a4649460001020100c800c80000ffe20c584943435f50524f46494c4500010100000c484c696e6f021000006d6e74725247422058595a2007ce00020009000600310000616373704d5346540000000049454320735247420000000000000000000000000000f6d6000100000000d32d4850202000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001163707274000001500000003364657363000001840000006c77747074000001f000000014626b707400000204000000147258595a00000218000000146758595a0000022c000000146258595a0000024000000014646d6e640000025400000070646d6464000002c400000088767565640000034c0000008676696577000003d4000000246c756d69000003f8000000146d6561730000040c0000002474656368000004300000000c725452430000043c0000080c675452430000043c0000080c625452430000043c0000080c7465787400000000436f70797269676874202863292031393938204865776c6574742d5061636b61726420436f6d70616e790000646573630000000000000012735247422049454336313936362d322e31000000000000000000000012735247422049454336313936362d322e31000000000000000000000000000000000000000000000000000000de algoritmo computadora Figura 1.3. Resolución de un problema Los pasos para la resolución de un problema son:1Diseño del algoritmo que describe la secuencia ordenada de pasos –sin ambigüedades– que conducena la solución de un problema dado. (Análisis del programa y desarrollo del algoritmo.)2Expresar el algoritmo como un programa en un lenguaje de programación adecuado. (Fase decodificación.)3Ejecución y validación del programa por la computadora. Para llegar a la realización de un programa es necesario el diseño previo de un algoritmo, de modoque sin algoritmo no puede existir un programa. Los algoritmos son independientes tanto del lenguaje de programación en que se expresan como de lacomputadora que los ejecuta. En cada problema el algoritmo se puede expresar en un lenguaje diferente de
  7. 7. programación y ejecutarse en una computadora distinta; sin embargo, el algoritmo será siempre el mismo. Así,por ejemplo, en una analogía con la vida diaria, una receta de un plato de cocina se puede expresar enespañol, inglés o francés, pero cualquiera que sea el lenguaje, los pasos para la elaboración del plato serealizarán sin importar el idioma del cocinero. En la ciencia de la computación y en la programación, los algoritmos son mas importantes que loslenguajes de programación o las computadoras. Un lenguaje de programación es tan solo un medio paraexpresar un algoritmo y una computadora es sólo un procesador para ejecutarlo. Tanto el lenguaje deprogramación como la computadora son los medios para obtener un fin: conseguir que el algoritmo se ejecutey se efectúe el proceso correspondiente. Dada la importancia del algoritmo en la ciencia de la computación, un aspecto muy importante será eldiseño de algoritmos. A la enseñanza y práctica de esta tarea se dedica gran parte de esta libro. El diseño de la mayoría de los algoritmos requiere creatividad y conocimientos profundos de latécnica de la programación. En esencia, la solución de un problema se puede expresar mediante unalgoritmo.1.2.1. CARACTER Í S T I CAS DE LOS ALGORITMOS
  8. 8. LLas características fundamentales que debe cumplir todo algoritmo son:UUn algoritmo debe ser preciso e indicar el orden de realización de cada paso.Un algoritmo debe estar definido. Si se sigue un algoritmo dos veces, se debe obtener el mismo resultadoc vez.cadaUn algoritmo debe ser finito. Si se sigue un algoritmo, se debe terminar en algún momento; osea, debetener un número finito de pasos. La definición de un algoritmo debe describir tres partes: Entrada, proceso y salida. En el algoritmo dereceta de cocina citado anteriormente se tendrá: Entrada: Ingredientes y utensilios empleados Proceso: Elaboración de la receta en la cocina. Salida: Terminación del plato (por ejemplo, cordero).Ejemplo 1.1Un cliente ejecuta un pedido a una fábrica. La fábrica examina en su banco de datos la ficha del cliente, siel cliente es solvente entonces la empresa acepta el pedido; en caso contrario, rechazará el pedido.Redactar el algoritmo correspondiente.Los pasos del algoritmo son:1Inicio.2Leer el pedido.3Examinar la ficha del cliente4Si el cliente es solvente, aceptar pedido; en caso contrario, rechazar pedido5FinEjemplo 1.2Se desea diseñar un algoritmo para saber si un número es primo o no.Un número es primo si solo puede dividirse por si mismo y pro la unidad (es decir no tiene más divisoresque él mismo y la unidad). Por ejemplo, 9, 8, 6, 4, 12, 16, 20, etc, no son primos ya que son divisibles pornúmeros distintos en a ellos y a la unidad. Así, 9 es divisible por 3, 8 lo es por 2, etc. El algoritmo de resolución del problema pasa por dividir sucesivamente el número por 2, 3, 4. . ., etc.1Inicio.2Poner X igual a 2 (X = 2, X, variable que representa a los divisores delnúmero que se busca N).3Dividir N por X (N / X).4Si el resultado de N / X es entero, entonces N no es un número primo ybifurcar al punto 7; en caso contrario continuar el proceso.5Suma 1 a X (X • X + 1).6Si X es igual a N, entonces N es un número primo en caso contrario bifurcaral punto 3.7Fin.1 Esta condición puede ser sustituida por X = n div 2 (donde div es el operador división entera). Véase tabla1.1 página 19
  9. 9. Por ejemplo, si N es 131, los pasos anteriores serian:1.Inicio.2.X = 2. 3 y 4. 131 / X. Como el resultado no es un entero, se continua el proceso.1.X • 2 + 1, luego X = 3 .2.Como X no es 131, se bifurca al punto 3. 3 y 4. 131 / X resultado no es un entero.1.X • 3 + 1, X = 4 .2.Como X no es 131, se bifurca al punto 3. 3 y 4. 131 / X..., etc . 7. Fin.Ejemplo 1.3Realizar la suma de todos los números pares entre 2 y 1000.El problema consiste en sumar 2 + 4 + 6 + 8 + ... + 1000. Utilizaremos las palabras SUMA Y NUMERO (variables, serán denominadas mas tarde) pararepresentar las sumas sucesivas (2 + 4), (2 + 4 + 6), (2 + 4 + 6 + 8), etc. La solución se puede escribir con el siguiente algoritmo:1.Inicio.2.Establecer SUMA a 0 .3.Establecer NUMERO a 2 .4.Sumar NUMERO A SUMA .El resultado será el nuevo valor de la suma (SUMA) .5.Incrementar NUMERO 2 unidades .6.El NUMERO =< 1000 bifurca al paso 4 ; en caso contrario, escribir el ultimo valor de SUMA y terminar el proceso .7.Fin .1.3. LOS LENGUAJES DE PROGRAMACIÓNComo se ha visto en el apartado anterior, para que un procesador realice un proceso se le debesuministrar en primer lugar un algoritmo adecuado. El procesador debe ser capaz de interpretar elaalgoritmo, lo que significa:ccomprender las instrucciones de cada paso,realizar las operaciones correspondientes. Cuando el procesador es un computadora, el algoritmo se ha de expresar en un formato que se denominaprograma. Un programa se escribe en un lenguaje de programación y las operaciones que conducen aexpresar en un algoritmo en forma de programa se llaman programación. Así pues, los lenguajes utilizadospara escribir programas de computadoras son los lenguajes de programación y programadores son losescritores y diseñadores de programas. Los principales tipos de lenguajes utilizados en la actualidad son tres:lenguaje maquina,lenguaje de bajo nivel ( ensamblador),lenguajes de alto nivel.
  10. 10. 1.3.1.Instrucciones a la computadoraLos diferentes pasos (acciones) de un algoritmo se expresan en los programas como instrucciones,sugerencias o proposiciones (normalmente el término instrucción se suele referir a los lenguajes maquina ybajo nivel, reservando la sentencia o proposición para los lenguajes de alto nivel). Por consiguiente, unprograma consta de una secuencia de instrucciones, cada una de las cuales especifica ciertas operaciones quedebe ejecutar la computadora. La elaboración de un programa requerirá conocer el juego o repertorio de instrucciones del lenguaje.Aunque en el Capítulo 3 se analizarán con mas detalle las instrucciones, adelantaremos los tiposfundamentales de instrucciones que una computadora es capaz de manipular y ejecutar. Lasinstrucciones básicas y comunes a casi todos los lenguajes de programación se pueden condensar enccuatro grupos:Instrucciones de entrada/salida. Instrucciones de transferencia de información y datos entre periféricos((teclado, impresora, unidad de disco, etc.) y la memoria central.Instrucciones aritmético-lógicas. Instrucciones que ejecutan operaciones aritméticas (suma, resta,mmultiplicación, división, potenciación), lógicas (operaciones and, or, not, etc).Instrucciones selectivas. Instrucciones que permiten la selección de tareas alternativas en función de losrresultados de diferentes expresiones condicionales.Instrucciones repetitivas. Instrucciones que permiten la repetición de secuencias de instrucciones unnúmero determinado o indeterminado de veces.1.3.2.Lenguajes máquinaLos lenguajes máquina son aquellos que están escritos en lenguajes directamente inteligibles por la máquina(computadora), ya que sus instrucciones son cadenas binarias (cadenas o series de caracteres –dígitos-0 y 1)que especifican una operación y las posiciones (dirección) de memoria implicadas en la operación sedenominan instrucciones de máquina o código máquina. El código máquina es el conocido código binario. Las instrucciones en lenguaje máquina dependen del hardware de la computadora y, por tanto,diferirán de una computadora a otra. El lenguaje máquina de una PC (computadora personal) serádiferente de un sistema HP 9000 (HP, Hewlett Packard) o un sistema 6000 IBM. Las ventajas de programar en lenguaje máquina son la posibilidad de cargar (transferir un Memoria Direcci?n Contenido Posiciones de memoria0100 0010 0000 0000 0100 0101 0100Instrucciones binarias (código máquina) Figura 1.4. instrucciones0000 0000 en lenguaje máquina 0101 0102 0011 0000 0000 0110
  11. 11. programa a la memoria) sin neces idad de traducción poster ior lo que supone una velocidad de ejecución super ior a cualquier otro lenguaje de programación. Los inconvenientes –en la actualidad– superan a las ventajas, lo que hace prácticamente no r recomendables los lenguajes máquina. Estos inconvenientes son: D Dificultad y lentitud en la codificación. P Poca fiabilidad D Dificultad grande de verificar y poner a punto los programas. Los programas sólo son ejecutables en el mismo procesador (UCP, Unidad Central de Proceso). Para evitar los lenguajes máquina, desde el punto de vista del usuario, se han creado otros lenguajes que permiten escribir programas con instrucciones similares al lenguaje humano (por desgracia, casi siempre inglés, aunque existen excepciones, como es el caso de las versiones españolas del lenguaje LOGO). Estos lenguajes son los de alto nivel y bajo nivel. 1.3.3 Lenguajes de bajo nivel Los lenguajes de bajo nivel son más fáciles de utilizar que los lenguajes máquina, pero, al igual que ellos, dependen de la máquina en particular. El lenguaje de bajo nivel por excelencia es el ensamblador (assembly language). Las instrucciones en lenguaje ensamblador son conocidas como nemotécnicos (mnemonics). Por ejemplo, nemotécnicos típicos de operaciones aritméticas son: en inglés, ADD, SUB, DIV, etc: en español, SUM, RES, DIV, etc. Una instrucción típica de suma sería: ADD M, N, P Esta instrucción podría significar <<sumar el número contenido en la posición de memoria M al número almacenado en la posición de memoria N y situar el resultado en la posición de memoria P>>. Evidentemente, es mucho más sencillo recordar la instrucción anterior con un nemotécnico que su equivalente en código máquina: 0110 1001 1010 1011 Un programa escrito en lenguaje ensamblador no puede ser ejecutado directamente por la computadora –en esto se diferencia esencialmente del lenguaje máquina–, sino que requiere una fase de traducción al lenguaje máquina. El programa original escrito en lenguaje ensamblador se denomina programa fuente y el programa traducido en lenguaje máquina se conoce como programa objeto, ya directamente inteligible por la computadora. El traductor de programas fuente a objeto es un programa llamado ensamblador (assembler), existente en casi todas las computadoras (Figura 1.5). No se debe confundir –aunque en español adoptan el mismo nombre– el programa ensamblador (assembler), encargado de efectuar la traducción del programa fuente escrito a lenguaje máquina, con el lenguaje ensamblador (assembly language), lenguaje de programación con una estructura y gramáticas definidas. Los lenguajes ensambladores presentan la ventaja frente a los lenguajes máquina de su mayor facilidad de codificación y, en general, su velocidad de cálculo.Programa fuente en ensamblador ffd8ffe000104a4649460001020100c800c80000ffe20c584943435f50524f46494c4500010100000c48 4c696e6f021000006d6e74725247422058595a2007ce00020009000600310000616373704d5346540 000000049454320735247420000000000000000000000000000f6d6000100000000d32d4850202000 000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000001163707274000001500000003364657363000001840000006c77747074000001f00000 0014626b707400000204000000147258595a00000218000000146758595a0000022c0000001462585
  12. 12. 95a0000024000000014646d6e640000025400000070646d6464000002c400000088767565640000034c0000008676696577000003d4000000246c756d69000003f8000000146d6561730000040c0000002474656368000004300000000c725452430000043c0000080c675452430000043c0000080c625452430000043c0000080c7465787400000000436f70797269676874202863292031393938204865776c6574742d5061636b61726420436f6d70616e790000646573630000000000000012735247422049454336313936362d322e31000000000000000000000012735247422049454336313936362d322e31000000000000000000000000000000000000000000000000000000Programa objeto en (assembly) código máquina
  13. 13. Figura 1.5. Programa ensamblador m Los inconvenientes más notables de los lenguajes ensambladores son:Dependencia total de la máquina, lo que impide la transportabilidad de los programas (posibilidad deejecutar un programa en diferentes máquinas). El lenguaje ensamblador del PC es distinto del lenguajeeensamblador del Apple Macintosh.La formación de los programadores es más compleja que la correspondiente a los programadores de altonivel, ya que exige no sólo las técnicas de programación, sino también el conocimiento del interior de lamáquina.Hoy día los lenguajes ensambladores tienen sus aplicaciones muy reducidas en la programación deaplicaciones y se centran en aplicaciones de tiempo real, control de proceso y de dispositivoselectrónicos etc.1.3.4. Lenguajes de alto nivelLos lenguajes de alto nivel son los más utilizados por los programadores. Están diseñados para que laspersonas escriban y entiendan los programas de un modo mucho más fácil que los lenguajes máquina yensambladores. Otra razón es que un programa escrito en un lenguaje de alto nivel es independiente de lamáquina; esto es, las instrucciones del programa de la computadora en particular. En consecuencia, losprogramadores escritos en lenguajes de alto nivel son portableso transportables, lo que significa la posibilidad de poder ser ejecutados con poca o ninguna modificaciónen diferentes tipos de computadoras; al contrario que los programas en lenguaje máquina o ensamblador,que sólo se pueden ejecutar en un determinado tipo de computadora. Los lenguajes de alto nivel presentan las siguientes ventajas::EEl tiempo de formación de los programadores es relativamente corto comparador con otros lenguajes.La escritura de programas se basa en reglas sintácticas similares a los lenguajes humanos. Nombres dellas instrucciones, tales como READ, WRIET, PRINT, IOPEN, etc.LLas modificaciones y puestas a punto de los programas son más fáciles.RReducción del coste de los programas.TransportabilidadLLos inconvenientes se concretan en:Incremento del tiempo de puesta a punto, al necesitarse diferentes traducciones del programa fuentep conseguir el programa definitivo.paraNo se aprovechan los recursos internos de la máquina, que se explotan mucho mejor en lenguajesmmáquina y ensambladores.AAumento de la ocupación de memoria.El tiempo de ejecución de los programas es mucho mayor.Al igual que sucede con los lenguajes ensambladores, los programas fuente tienen que ser traducidospor programas traductores, llamados en este caso compiladores o intérpretes. Los lenguajes deprogramación de alto nivel existentes hoy son muy numerosos aunque la práctica demuestra que su usomayoritario se reduce a:C C++ COBOLFORTRAN BASIC Pascal Visual BASIC.
  14. 14. están muy extendidosClipper Ada Modula-2 Prolog LISP Smalltalky comienzan a difundirse:Visual Object Delphi Miranda Eiffelaunque los dos primeros no dejan de ser entornos de programación orientados a objetos con soporte enlos lenguajes Clipper y Turbo Pascal.1.3.5. Traductores de lenguajeLos traductores de lenguaje son programas que traducen a su vez los programas fuente escritos enlenguajes de alto nivel a código máquina. L Los traductores se dividen en:CCompiladores.Intérpretes.1.3.5.1. IntérpretesUn intérprete es un traductor que toma un programa fuente, lo traduce y a continuación lo ejecuta. Los programas intérpretes clásicos como BASIC, prácticamente ya no se utilizan, aunque lasversiones Qbasic y QuickBASIC se comercializan todavía con el Sistema Operativo DOS que corre en lascomputadoras personales. Sin embargo, está muy extendida la versión interpretada del lenguajeSmalltalk, un lenguaje orientado o objetos puro. Programa fuente Int?rprete Traducci?n y ejecuci?n l?nea a l?nea Figura 1.6. Int?rprete. Programa fuente Compilador Programa Objeto
  15. 15. Figura 1.7. La compilación de programas.1.3.5.2. CompiladoresUn compilador es un programa que traduce los programas fuente escritos en lenguajes de alto nivel –Pascal, FORTRAN, ...–a lenguaje máquina. Los programas escritos en lenguajes de alto nivel se llaman programas fuente y el programatraducido programa objeto o código objeto. El compilador traduce –sentencia a sentencia– el programafuente. Los lenguajes compiladores típicos son: C, C++, PASCAL, FORTRAN, COBOL.1.3.6. La compilación y sus fases.La compilación es el proceso de traducción de programas fuente a programas objeto. El programa objetoobtenido de la compilación ha sido traducido normalmente a código máquina. Para conseguir el programa máquina real se debe utilizar un programa llamado montador o enlazador(linker). El proceso de montaje conduce a un programa en lenguaje máquina directamente ejecutable(Figura 1.8).El proceso de ejecución de un programa Pascal, por ejemplo, tiene los siguientes pasos:1Escritura del programa fuente ffd8ffe000104a4649460001020100c800c80000f con un editor(programa que permite a una fe20c584943435f50524f46494c4500010100000c computadora actuar demodo similar a una máquina de 484c696e6f021000006d6e74725247422058595aescribir electrónica) yguardarlo en un dispositivo de 2007ce00020009000600310000616373704d534 almacenamiento (porejemplo un disco). 6540000000049454320735247420000000000002Introducir el programa fuente 0000000000000000f6d6000100000000d32d485 en memoria.3Compilar el programa con el 020200000000000000000000000000000000000 compilador Pascal.4Verificar y corregir errores de 000000000000000000000000000000000000000 compilación (listado deerrores). 0000000000000000000001163707274000001505Obtención del programa 0000003364657363000001840000006c7774707 objeto.6El montador obtiene el 4000001f000000014626b707400000204000000 programa ejecutable.7Se ejecuta el programa y, si 147258595a00000218000000146758595a00000 no existen errores, se 22c000000146258595a0000024000000014646dtendrá la salida del programa. 6e640000025400000070646d6464000002c4000 00088767565640000034c000000867669657700 0003d4000000246c756d69000003f8000000146d 6561730000040c0000002474656368000004300 000000c725452430000043c0000080c67545243 0000043c0000080c625452430000043c0000080 c7465787400000000436f7079726967687420286 3292031393938204865776c6574742d5061636b 61726420436f6d70616e7900006465736300000 00000000012735247422049454336313936362d 322e31000000000000000000000012735247422 049454336313936362d322e3100000000000000 000000000000000000000000000000000000000 0
  16. 16. El proceso de ejecución sería el mostrado en las Figuras 1.9 y 1.10. Programa ffd8ffe000104a46494600010Datos Programa ejecutable 20100c800c80000ffe20c58494 3435f50524f46494c45000101 00000c484c696e6f021000006 d6e74725247422058595a200 7ce000200090006003100006 16373704d534654000000004 945432073524742000000000 0000000000000000000f6d600 Modificación programa fuente 0100000000d32d4850202000 000000000000000000000000 Figura 1.10. Fases de la ffd8ffe000104a4649460001020100c800c80 ejecución de 000000000000000000000000 un programa. 000ffe20c584943435f50524f46494c4500010 000000000000000000000000 000000000000000000001163 100000c484c696e6f021000006d6e74725247 707274000001500000003364 422058595a2007ce00020009000600310000 657363000001840000006c77 616373704d53465400000000494543207352 747074000001f000000014626 47420000000000000000000000000000f6d60 b70740000020400000014725 8595a0000021800000014675 00100000000d32d485020200000000000000 8595a0000022c00000014625 000000000000000000000000000000000000 8595a0000024000000014646 000000000000000000000000000000000000 d6e640000025400000070646 000000000116370727400000150000000336 d6464000002c400000088767 565640000034c00000086766 4657363000001840000006c7774707400000 96577000003d4000000246c7 1f000000014626b7074000002040000001472 56d69000003f8000000146d65 58595a00000218000000146758595a000002 61730000040c000000247465 2c000000146258595a000002400000001464 6368000004300000000c7254 52430000043c0000080c67545 6d6e640000025400000070646d6464000002 2430000043c0000080c625452 c400000088767565640000034c0000008676 430000043c0000080c7465787 696577000003d4000000246c756d69000003f 400000000436f707972696768 742028632920313939382048 8000000146d6561730000040c00000024746 65776c6574742d5061636b61 56368000004300000000c725452430000043 726420436f6d70616e7900006 c0000080c675452430000043c0000080c625 465736300000000000000127 452430000043c0000080c746578740000000 352474220494543363139363 62d322e31000000000000000 0436f70797269676874202863292031393938 000000012735247422049454 204865776c6574742d5061636b6172642043 336313936362d322e3100000 6f6d70616e790000646573630000000000000 000000000000000000000000 012735247422049454336313936362d322e3 000000000000000000000000 0 100000000000000000000001273524742204 9454336313936362d322e310000000000000 000000000000000000000000000000000000 00000
  17. 17. 1.4. DATOS, TIPOS DE DATOS Y OPERACIONES PRIMITIVAS El primer objetivo de toda computadora es el manejo de la información o datos. Estos datos pueden ser las cifras de ventas de un supermercado o las calificaciones de una clase. Un dato es la expresión general que describe los objetivos con los cuales opera una computadora. La mayoría de las computadoras pueden trabajar con varios tipos (modos) de datos. Los algoritmos y los programas correspondientes operan sobre datos. La acción de las instrucciones ejecutables de las computadoras en cambios en los valores de las partidas de datos. Los datos de entrada se transforman por el programa, después de las etapas intermedias, en datos de salida. En el proceso de solución de problema el diseño de la estructura de datos es tan importante como el diseño del algoritmo y del programa que se basa en el mismo. Existen dos clases de tipos de datos: simples (sin estructura) y compuestos (estructurados). Los datos estructurados se estudian a partir del Capítulo 6 y son conjuntos de partidas de datos simples con relaciones definidas entre ellos. Los distintos tipos de datos se representan en diferentes formas en la computadora. A nivel de máquina, un dato es un conjunto o secuencia de bits (dígitos 0 y 1). Los lenguajes de alto nivel permiten basarse en abstracciones e ignorar los detalles de la representación interna. Aparece el concepto de tipo de datos, así como su representación. Los tipos de datos simples son los siguientes: numéricos (integer, real), lógicos (bolean), carácter (char, string). Existen algunos lenguajes de programación –FORTRAN esencialmente– que admite otros tipos de datos; complejos, que permiten tratar los números complejos, y otros lenguajes –Pascal– que también permiten declarar y definir sus propios tipos de datos: enumerados (enumerated) y subrango (subrange). 1.4.1 Datos numéricos El tipo numéricos es el conjunto de los valores numéricos. Éstos pueden representarse en dos formas d distintas. ( Tipo numérico entero (integer), Tipo numérico real (real). Enteros: El tipo entero es un subconjunto finito de los número enteros. Los enteros son números complejos, no tienen componentes fraccionarios o decimales y pueden ser negativos o positivos. Ejemplos de números enteros son: 56 -15 -4 20 17 1340 26 Los enteros se denominan en ocasiones números de punto o coma fija. Los números enteros máximos y mínimos de una computadora2 suelen ser –32768 a +32767–. Los números enteros 2 En computadoras de 16 bits como IBM PC o compatibles.
  18. 18. fuera de este rango no se suelen representar como enteros, sino como reales, aunque existen excepciones (enteros largos: FORTRAN, Quick/Qbasic, C, C++, etc). Reales: El tipo real consiste en un subconjunto de los números reales. Los números reales siempre tienen un punto decimal y pueden ser positivos o negativos. Un número real consta de un entero y una parte decimal. Los siguientes ejemplos son números reales: 0.08.1 3739.41 3.7452 -52.321 -8.12 3.0 En aplicaciones científicas se requiere una representación especial para manejar números muy grandes, como la masa de la Tierra, o muy pequeños, como la masa de un electrón. Una computadora sólo puede representar un número fijo de dígitos. Este número puede variar de una máquina a otra, siendo ocho dígitos un número típico. Este límite provocará problemas para representar y almacenar números muy grandes o muy pequeños como son los ya citados o los siguientes: 4867213432 0.00000000387 Existe un tipo de representación denominado notación exponencial o científica y que se utiliza para números muy grandes o muy pequeños. Así, 367520100000000000000 se representa en notación científica descomponiéndolo en grupos de tres dígitos: 367520 100 000 000 000 000 y posteriormente en forma de potencias de 10: 3.675201 X 1020 y de modo similar: .0000000000302579 se representa como: 3.02579 X 10-22 La representación en coma flotante es una generalización de notación científica. Obsérveseque las siguientes expresiones son equivalentes: 1019 1020 1021 3.675201 X = .3675207 X = .03675201 X = . .. 1018 1017 = 36.75201 X = 367.5201 X = . .. en estas expresiones se considera la mantisa (parte decimal) al número real y al exponente (parte potencial) el de la potencia de diez. 36.75201 mantisa 18 exponente
  19. 19. 1.4.2. Datos lógicos (booleanos)El tipo lógico –también denominado booleano– es aquel dato que solo puede tomar uno de dos valores: cierto o verdadero (true) y falso (false). Este tipo de datos se utiliza para representar las alternativas (si/no) a determinadas condiciones. Porejemplo, cuando se pide si un valor entero es par, la respuesta será verdadera o falsa, según sea par oimpar.1.4.3. Datos tipo carácter y tipo cadenaEl tipo carácter es el conjunto finito y ordenado de caracteres que la computadora reconoce. Un dato tipocarácter contiene un solo carácter. Los caracteres que reconocen las diferentes computadoras no son estándar; sin embargo, la mayoríarreconoce los siguientes caracteres alfabéticos y numéricos:ccaracteres alfabéticos (A, B,C, . . . , Z) (a, b, c, . . . , z),ccaracteres numéricos (1, 2, . . . , 9, 0),caracteres especiales (+, –, *, /, ^, . , ; . <, >, $, . . . ). Una cadena (string) de caracteres es una sucesión de caracteres que se encuentran delimitados poruna comilla (apóstrofo) o dobles comillas, según el tipo de lenguaje de programación. La longitud de unacadena de caracteres es el número de ellos comprendidos entre los separadores o limitadores. Algunoslenguajes tiene datos tipo cadena.´Hola Mortimer´ ´8 de Octubre de 1946´ ´Sr. Mckenna´RESUMEN: Los tipos de datos primitivos se clasifican en: ffd8ffe000104a4649460001020100c800c80000ffe20c584943435f50524f46494c4500010100000c 484c696e6f021000006d6e74725247422058595a2007ce00020009000600310000616373704d5346 540000000049454320735247420000000000000000000000000000f6d6000100000000d32d48502 0200000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000001163707274000001500000003364657363000001840000006c77747074000 001f000000014626b707400000204000000147258595a00000218000000146758595a0000022c000 000146258595a0000024000000014646d6e640000025400000070646d6464000002c40000008876 7565640000034c0000008676696577000003d4000000246c756d69000003f8000000146d65617300 00040c0000002474656368000004300000000c725452430000043c0000080c675452430000043c0 000080c625452430000043c0000080c7465787400000000436f70797269676874202863292031393 938204865776c6574742d5061636b61726420436f6d70616e7900006465736300000000000000127 35247422049454336313936362d322e310000000000000000000000127352474220494543363139 36362d322e31000000000000000000000000000000000000000000000000000000
  20. 20. Constantes reales Constantes Reales no v?lidas :1.5.CONSTANTES VARIABLES v?lidas :Los programas de computadora contiene ciertos valores que no deben cambiar durante la ejecución delprograma. Tales valores se llaman constantes. De igual forma, existen otros valores que cambiarán 1.234durante la ejecución del programa; a estos valores se les llama variables. 1,752.63 (comas no permitidas) Una constante es una partida de datos (objetos) que permanecen sin cambios durante todo eldesarrollo del algoritmo o durante la ejecución del programa. -0.1436 82(normalmente contienenConstantes reales en notación científica : un3.374562E2 equivale a 3.374562 x 10 punto decimal, Una constante tipo carácter o constante de caracteres consiste en un carácter válido encerrado dentrode apóstrofos: por ejemplo : aunque existenB + 4 ; + 54437324 Si se desea incluir el apóstrofo en la cadena, entonces debe aparecer como un par de apóstrofos, lenguajes que lo admiten sin punto)encerrados dentro de simples comillas. Una secuencia de caracteres se denomina normalmente una cadena y una constante tipo cadena esuna cadena encerrada entre apóstrofos. Por consiguiente,Juan DominguezyPepe Luis Garcíason constantes de cadena válidas. Nuevamente, si un apóstrofo es uno de los caracteres es unaconstante de cadena, debe aparecer como un par de apóstrofos:Juan "sConstantes lógicas (boolean)Sólo existen dos constantes lógicas o boolean: verdad falso La mayoría de los lenguajes de programaciónpermiten diferentes tipos de constantes: enteras,reales, caracteres y boolean o lógicas, y representan datos de esos tipos.
  21. 21. VariablesUna variable es un objeto o partida de datos cuyo valor puede cambiar durante el desarrollo del algoritmoo ejecución del programa. Dependiendo del lenguaje, hay diferentes tipos de variables, tales como entera, reales, carácter,lógicas y de cadena. Una variable que es de un cierto tipo puede tomar únicamente valores de ese tipo. Una variable decarácter, por ejemplo, puede tomar como valor sólo caracteres, mientras que una variable entera puedetomar sólo valores enteros.Si se intenta asignar un valor de un tipo a una variable de otro tipo se producirá un error de tipo. Una variable se identifica por los siguientes atributos: nombre que lo asigna y tipo que describe el usode la variable. Los nombres de las variables, a veces conocidos como identificadores, suelen constar de varioscaracteres alfanuméricos, de los cuales el primero normalmente es una letra. No se deben utilizar -aunque lo permita el lenguaje, caso de FORTRAN -como nombres de identificadores palabras reservadasdel lenguaje de programación.Nombres válidos de variables son:A510NOMBRESNOTASNOMBRE_APELLIDOS3 NOMBRE para representar nombres de personas Los nombres de las variables elegidas para el algoritmo o el programa deben ser significativos y tener PRECIOS para representar los precios de diferentes art?culos.relación con el objeto que representan, como pueden ser los casos siguientes: NOTAS para representar las notas de una clase Existen lenguajes -Pascal -en los que es posible darles nombre a determinadas constantes típicasutilizadas en cálculos matemáticos, financieros, etc. Por ejemplo, las constantes � = 3.141592... y e =2.7182818 (base de los logaritmos naturales) se les pueden dar los nombres Pi yE.PI = 3.141592E = 2.7182821.6. EXPRESIONESLas expresiones son combinaciones de constantes, variables, símbolos de operación, paréntesis ynombres de funciones especiales. Las mismas ideas son utilizadas en notación matemática tradicional;por ejemplo,A+ (b+3) + c +b + (b-5) + lcAquírepresenta la función raízorden de cálculo y s los paréntesis indican el cuadrada. Cada expresión toma un valor que se determina tomando los valores de las variables y constantesimplicadas y la ejecución de las operaciones indicadas. Algunos lenguajes de programación admiten como válido el carácter subrayado en los identificadores.
  22. 22. * Divisi?n Entero o real Entero o real / Exponenciaci?n Real Real Div Ejemplos: Una expresión consta de operandos y operadores. Divisi?n entera Según sea el tipo de objetos que manipulan, las Entero x 7 5expresiones se clasifican en:e mod se representa por* Entero M?dulo (resto) 5aaritméticas, Entero7 6 Enterollógicas, se representa porcarácter. 6/4 4 El resultado de la expresión aritmética es de tipo numérico; el resultado de la expresión relacional yde una expresión lógica es de tipo lógico; el resultado de una expresión carácter es de tipo carácter.1.6.1.Expresiones aritméticas 3 se representa por 3^7Las expresiones aritméticas son análogas a las fórmulas matemáticas. Las variables y constantes sonnuméricas (real o entera) y las operaciones son las aritméticas.+ Suma -Resta * Multiplicación/ División -,**,^ Exponenciación Div División entera Mod Módulo (resto) Los símbolos +,-,*,**,^(-o **) y las palabras clave div y mod se conocen como operadoresaritméticos. En la expresión 5 + 3los valores 5 y 3se denominan operandos. El valor de la expresión 5 +3 se conoce como resultado de laexpresión. Los operadores se utilizan de igual forma que en matemáticas. Por consiguiente, A x B se escribe enalgoritmo como A * B, y 1/4 x C como C/4. Al igual que en matemáticas el signo menos juega undoble papel, como resta en A -B y como cambio de signo en -A. No todos los operadores aritméticos existen en todos los lenguajes de programación; por ejemplo, enFORTRAN no existe div ni mod. El operador exponenciación es diferente según sea el tipo de lenguaje de programación elegido (^,-enBASIC, ** en FORTRAN). Los cálculos que implican tipos de datos relaes y enteros suelen dar normalmente resultados delmismo tipo si los operandos lo son también. Por ejemplo, el producto de operandos reales produce unreal (véase Tabla 1.1). Tabla 1.1 Operadores aritméticos Operador Significado Tipos de Tipo de operandos resultado Operadores DIV y MOD -,^,** Sum a Ent er o o r eal Ent er o o r eal + Rest aEl símbolo / se utiliza para la división real y el operador div -en algunos lenguajes, por ejemplo BASIC,se suele utilizar el símbolo -representa la divisónreal Ent er o o r entera. Ent er o o eal - Mul t ipl icaci?nA div B Ent er o o r eal Ent er o o r eal Sólo se puede utilizar si A y B son expresiones enteras y obtiene la parte entera de A/B. Porconsiguiente,19 div 6toma el valor 3. Otro ejemplo puede ser la división 15/6:
  23. 23. 15 � 6 32 cocienterestoEn forma de operadoresresultará la operación anterior:15 div 6 = 2 15 mod 6 =3Otros ejemplos son:19 div 3equivale a 6 19 mod 6 equivale a 1Ejemplo 1.4Los siguientes ejemplos muestran resultados de expresiones aritméticas:3. Expresión Resultado Expresión Resultado10.5/3.0 3.5 10 div 33 1/4 0.25 18 div 29 2.0/4.0 0.5 30 div 30 1 6/1 6.0 6div 80 30/30 1.0 10 mod 31 6/8 0.75 10 mod 20
  24. 24. 1.6.1.1. Reglas de prioridadLas expresiones que tienen dos o más operandos requieren unas reglas matemáticas que permitandeterminar el orden de las operaciones, se denominan reglas de prioridad o precedencia y son:1Las operaciones que están encerradas entre paréntesis se evalúan primero. Si existen diferentesparéntesis animados (interiores unos a otros), las expresiones más internas se evalúan primero.2Las operaciones aritméticas dentrode una expresión suelen seguirel siguiente orden de prioridad: • operador exponencial ( , � o bien **).OOperadores *, /, ,Operadores div y mod. .Operadores + ,-. En caso de coincidir varios operadores de igual prioridad en una expresión o subexpresión encerradaentre paréntesis, el orden de prioridad en este caso es de izquierda a derecha.Ejemplo 1.5.¿Cuál es el resultado de las siguientes expresiones? a) 3 + 6 * 14 b) 8 + 7 * 3 +4 * 6 a) 3 + 6 ffd8ffe000 104a46494600 01020100c800 c80000ffe20c 584943435f50 ffd8ffe000104a46 524f46494c45 49460001020100c 53 00010100000cEjemplo 800c80000ffe20c5 1.6 ffd8ffe000104a4649460001 484c696e6f02 020100c800c80000ffe20c584 84943435f50524f4Obtener los resultados de las expresiones: 1000006d6e74 6494c4500010100 943435f50524f46494c45000 000c484c696e6f02 10100000c484c696e6f02100 725247422058 -4 * 1000006d6e74725 -5 7 + 2 ^ 3 / 4 0006d6e7472524742205859 595a2007ce001.-4 * 7 + 8 /4 -5 247422058595a20 5a2007ce000200090006003 0200090006002.-28 + 07ce00020009000 8 / 4 -5 10000616373704d53465400 310000616373 600310000616373 000000494543207352474203.-28 + 2 -5 704d53465400 00000000000000000000000 704d53465400000 0000004945434.-26 -5 -31 000494543207352 0000f6d6000100000000d32d 207352474200 48502020000000000000000 474200000000000Ejemplo 000000000000000 1.7 00000000000000000000000 000000000000 00f6d6000100000 00000000000000000000000 000000000000Convertir en expresiones aritméticas algorítmicas las siguientes expresiones algebraicas: 00000000000000000000000 000d32d48502020 00f6d6000100 000000000000000 00000000001163707274000 000000d32d48 5 · ( x000000000000000 +y) 00150000000336465736300 502020000000 000000000000000 0001840000006c777470740 000000000000 00001f000000014626b70740 a2+ b2 000000000000000 000000000000 000000000000000 0000204000000147258595a 000000000000 00000218000000146758595 x + y 000000000000000 u +w u a0000022c00000014625859 000000000000 000011637072740 000015000000033 5a0000024000000014646d6 000000000000 x . (646573630000018 z+ w ) y e640000025400000070646d 000000000000 40000006c777470 6464000002c400000088767 000000000000 74000001f000000 565640000034c0000008676 000011637072Los resultados serán : 696577000003d4000000246 014626b70740000 740000015000 020400000014725 c756d69000003f8000000146 000033646573 d6561730000040c00000024 8595a0000021800 630000018400 0000146758595a0 74656368000004300000000 000022c00000014 c725452430000043c0000080 00006c777470 6258595a0000024 c675452430000043c0000080 74000001f000 000000014646d6e c625452430000043c0000080 000014626b70 640000025400000 c7465787400000000436f707 740000020400 070646d64640000 97269676874202863292031 000014725859 393938204865776c6574742 02c400000088767 5a0000021800 565640000034c00 d5061636b61726420436f6d7 000014675859 0616e790000646573630000 000086766965770 00003d400000024 00000000001273524742204 5a0000022c00 6c756d69000003f8 9454336313936362d322e31 000014625859 000000146d65617 00000000000000000000001 5a0000024000 30000040c000000 27352474220494543363139 000014646d6e 247465636800000 36362d322e3100000000000 640000025400 4300000000c7254 00000000000000000000000 000070646d64 0000000000000000000029 + 52430000043c000 64000002c400 0080c6754524300 24 000088767565 00043c0000080c6
  25. 25. ffd8ffe000 104a46494600 01020100c800 c80000ffe20c 584943435f50 524f46494c45 00010100000c 484c696e6f02 1000006d6e74 725247422058 595a2007ce00 0200090006005 * (x + y) a 310000616373 ^ 2+ b ^ 2 (x + y) / ( u + w / a) x / y * ( z+ w) 704d53465400 000000494543Ejemplo 1.8 207352474200Los paréntesis 000000000000 tienen prioridad sobre el resto de las operaciones: 000000000000A * ( B + 3 ) la 00f6d6000100 constante 3 se suma primero al valor de B, después este 000000d32d48 resultado se multiplica por el valor de A. (A * B) + 3 A y B semultiplican 502020000000 primero y a continuación se suma 3. A + (B + C) + D Esta expresiónequivale a A + B 000000000000 + C + D. (A + B / C) +D Equivale a A -B / C+ D. A * B / C * D Equivale 000000000000a ((A * B) / C) * D y no a (A * B) / (C * D). 000000000000 000000000000 000000000000Ejemplo 1.9 000000000000Evaluar la 000000000000 expresión 12 + 3 * 7 + 5 *4. 000011637072En este ejemplo 740000015000 existen dos operadores de igual prioridad, * (multiplicación); por ellolos pasos 000033646573 sucesivos son: 630000018400 00006c77747012 + 21 + 5 * 4 74000001f000 ffd8ffe000104a464946000102010 20 000014626b70 0c800c80000ffe20c584943435f505 740000020400 24f46494c4500010100000c484c69 12 + 21 + 20 = 53 000014725859 6e6f021000006d6e7472524742205 5a0000021800 8595a2007ce00020009000600310 000616373704d534654000000004 000014675859 9454320735247420000000000000 5a0000022c00 000000000000000f6d600010000001.6.2. Expresiones lógicas 000014625859 00d32d4850202000000000000000 5a0000024000 0000000000000000000000000000 (booleanas) 000014646d6e 0000000000000000000000000000 640000025400Un 0000000000000000000000001163 segundo tipo de expresiones es la expresión lógica o booleana, 000070646d64 7072740000015000000033646573 63000001840000006c7774707400 cuyo valor es siempre verdadero o falso. Recuerde que existen 64000002c400dos 0001f000000014626b70740000020constantes lógicas, verdad (true) y falso (false) y que las 000088767565 4000000147258595a00000218000 variables lógicas pueden tomar sólo estos dos valores. En 640000034c00 000146758595a0000022c0000001 esencia, una expresión lógica es una expresión que sólo puede 000086766965 46258595a0000024000000014646 tomar estos dos valores, verdad y falso. Se denominan también 77000003d400 d6e640000025400000070646d646 4000002c40000008876756564000 expresiones booleanas en honor del matemático británico George 0000246c756d 69000003f800 0034c0000008676696577000003d Boole, que desarrollo el Álgebra lógica de Boole. Las expresiones 0000146d6561 4000000246c756d69000003f80000 lógicas se forman combinando constantes lógicas, variables 730000040c00 00146d6561730000040c00000024 lógicas y otras expresiones lógicas, utilizando los operadores 74656368000004300000000c7254 lógicos not, and y or, y los operadores relacionales (de 000024746563 52430000043c0000080c67545243 680000043000 0000043c0000080c625452430000 relación o comparación) =,<,>,<=,>=,<>. 00000c725452 043c0000080c7465787400000000 430000043c00 436f70797269676874202863292031.6.2.1. Operadores de relación 00080c675452 1393938204865776c6574742d506 430000043c00Los 1636b61726420436f6d70616e7900operadores relacionales o de relación permiten realizar 00080c625452 0064657363000000000000001273 5247422049454336313936362d32 comparaciones de valores de tipo numérico o carácter. Los 430000043c00 2e31000000000000000000000012 operadores de relación sirven para expresar las condiciones en 00080c746578los 735247422049454336313936362d algoritmos. 740000000043 322e310000000000000000000000 Los operadores de relación se recogen en la Tabla 1.2. 6f7079726967 0000000000000000000000000000 El formato general para las comparaciones es: 687420286329 0000 203139393820 4865776c6574 742d5061636b 61726420436f 6d70616e7900 006465736300 000000000000 127352474220 494543363139 36362d322e31 000000000000 000000000012 735247422049 454336313936
  26. 26. Tabla 1.2. Operadores de relaci?n expresión1 OPERADOR DE RELACIÓN expresión2 Operador SignificadoY el resultado de la operación será verdadero o falso. Así, por ejemplo. Si A = 4 y B = 3. Entonces: A > B es verdad < Mientras que: (A –2) > (B –4) es falso menor que > Los operadores de relación se pueden aplicar a cualquiera de los cuatro tipos de datos estándar: enteros, mayor que real, lógico, caracter. La aplicación a valores numéricos es evidente. Los ejemplos siguientes sin = significativos. igual que <= Para realizar comparaciones de datos tipo caracter, se requiere una secuencia de ordenación de los menor o igual que >= caracteres, similar al orden creciente o decreciente. Esta ordenación suele ser alfabética, tanto, mayúsculas como minúsculas y numérica, considerándolas que modo independiente. Pero si se consideran mayor o igual de <> caracteres mixtos, se debe recurrir a un código normalizado como es el ASCII. Aunque todas las computadoras siguen el código normalizado en su juego completo de caracteres, si son prácticamente distinto de e estándar los códigos de los caracteres alfanuméricos más usuales. Estos códigos normalizados son: L caracteres especiales #, %, $, (,), +, -, /, ...... exigen laN1 Los consulta del código de ordenación. N2 Los valores de loscaracteres que representan a los dígitos están en su orden natural. Esto es, ‘0’ < ‘1’, ‘1’ < ‘2’ ........... ‘8’ < ‘9’ < EXPRESI?N L?GICA L Las letras mayúsculas A a Z siguen el orden alfabético (‘A’ < ‘B’, ‘C’ < ‘F’, etc.) RESULTADO Si existen letras minúsculas, éstas siguen el mismo criterio 3 alfabético (‘a’ < ‘b’, ‘c’<’h’, etc.) 6 3<6 En general, los cuatro grupos anteriores están situadosVerdadero en el código ASCII en orden creciente. Así, ‘F’< 0 ’A’ y ‘B’< ’C’. Sin embargo, para tener completa la seguridad será preciso consultar el código de 1 caracteres de su computadora (normalmente, el ASCII (American Estándar Code for Información 0>1 Falso Interchange) o bien el EBCDIC (Extended Binary – Coded Decimal Interchange Code), utilizado en 4 computadoras en computadoras IBM diferentes a los modelos PC y PC/2). 2 4=2 Falso 8 5 8<=5 Falso 9 9 9>=9 Verdadero 5 5 5<>5 Falso
  27. 27. Cuando se utilizan los operadores de relación, con valores lógicos, la constante False (Falso) esmenor que la constante True (Verdad). False < True Falso < Verdad True > False Verdad > FalsoCuando se utilizan los operadores relacionales = y < > para comparar cantidades numéricas, es importanterecordar que la mayoría de los valores reales no pueden ser almacenados exactamente. En consecuencia, lasexpresiones lógicas formales con comparación de cantidades reales con ( = ), a veces se evalúan como falsas,incluso aunque esas cantidades sean algebraicamente iguales. Así. (1.0 / 3.0) * 3.0 = 1.0 Teóricamente es verdadera y, sin embargo, al realizar el cálculo en unacomputadora se puede obtener .999999... y, en consecuencia, el resultado es falso; esto es debido a laprecisión limitada de la aritmética real en las computadoras. Por consiguiente, a veces deberá excluir lascomparaciones con datos de tipo real. OPERADORES LÓGICOS Los operadores lógicos o boléanos básicos son not (no), and (y) y or (o). La tabla siguiente recoge elfuncionamiento de dichos operadores: OPERADOR L?GICO EXPRESI?N L?GICO SIGNIFICADO OPERADORES LÓGICOS NO (NOT) NO p (NOT p) NEGACI?N DE pLas definiciones de las operaciones no, y, o se resumen en unas tablas conocidas como Tablas de Y (AND)Verdad . p Y q (p AND q) CONJUNCI?N DE p Y q O (OR) p O q (p OR q) a DISYUNCI?N DE p Y q no a a bEn las expresiones lógicas se pueden mezclar operadores de relación y lógicos. Así por ejemplo: (1 < 6) Verdad Falso y (6 < 10) Es verdad (6 > 10) o (A < B) Es verdad,yya que A < B a b No (6 > 11) es verdad Verdad Falso Verdad Verdad Ya y b es verdad s?lo a que (6 > 11) es falso a Verdad Falso b Falso si a y b sonbverdad ao Falso a o bVerdad son verdad Verdad Falso Verdad Verdad cuando Falso ambas a, b o Falso Verdad Falso Falso Verdad son verdad Falso Verdad Verdad Falso Falso Falso
  28. 28. EXPRESI?N L?GICA PRIORIDAD DE LOS OPERADORES EN LAS EXPRESIONES LÓGICAS RESULTADOLos operadores aritméticos seguían un orden específico de prioridad cuando existían más de un operadoren las expresiones. De modo similar, OBSERVACIONES los operadores lógicos y relaciones, tienen un orden de prioridad. (1 > 0) Y (3 = 3) VERDAD NO PRUEBA EXPRESIONES LÓGICAS VERDAD - PRUEBA es un valor l?gico Falso PRIORIDAD DE OPERADORESO (LENGUAJE PASCAL) (0 < 5) (0 > 5) VERDAD PRIORIDAD DE OPERADORES (LENGUAJE BASIC) (5 < = 7) Y (2 > 4) FALSOAl igual que en las expresiones aritméticas, los paréntesis se pueden utilizar y tendrán prioridad sobrecualquier operación. EXPRESI?N L?GICA NO (5 < > 5)Ejemplo: VERDAD PRIORIDADNO 4 > 5 Produce un error, ya que el operador no se aplica(NOT) (4 > 14) Produce un valor verdadero NO a 4 NO M?S ALTA (PRIMERA OPERACI?N EJECUTADA) (1.0 < X) Y (X < Z – 7.0) Si X vale 7 y Z vale 4, (N?MERO seMOD, Y = un valor verdadero. = 1)obtiene 4) /,*, DIV, O (7 > (AND) VERDAD - -, +, O (OR) N?MERO es una variable entera de valor 5 <, >, =, < =, > =, < > EXPRESI?N L?GICA MAS BAJA (?LTIMA OPERACI?N EJECUTADA) PRIORIDAD / FUNCIONES INTERNAS Las operaciones internas que se M?S BAJArequieren en los programas exigen numerosas ocasiones, además de las operaciones de las operaciones *aritméticas básicas, ya tratadas, un número determinado de operaciones especiales que se denominan DIV ( )Funciones Internas, incorporadas o estándar. Por ejemplo, la función 1n se puede utilizar para MODdeterminar el logaritmo neperiano de un número y la función raíz2 (sqrt) calcular la raíz cuadrada de unnúmero positivo. Existen otras funciones que se utilizan para determinar las funciones geométricas. -, + <, >, =, < >, < =, > = NO (NOT) Y (AND) O (OR) M?S ALTA
  29. 29. FUNCI?N DESCRIPCI?N TIPO DE ARGUMENTO RESULTADO Abs (x) Valor Absoluto de x Entero o real Igual que argumento Arctan (x) Arco Tangente de x Entero o real FUNCIONES INTERNAS Real Cos (x) Coseno de x Entero o realLas funciones aceptan argumentos reales o enteros y Real resultados dependen de la tarea que realice la susfunción: Exp (x) Exponencial de x Entero o real RealEjemplo Utilizar las funciones internas para obtener la 1n (x) 2 Logaritmosolución de la ecuación cuadrática: ax + bx + c = Neperiano de x0 ; las raíces de la ecuación son: Entero o real Real 2− Log10 (x) Logaritmo Decimal de x Entero o real −b± Real Redondeo (x) (round (x)) 2a Redondeo de xO lo que es igual: Real Entero Sen (x) (sin (x)) 2−2− Seno de x Entero o real Real −b± Cuadrado (x) (sqr (x)) Cuadrado de x EXPRESI?N Entero o real Las expresiones se escriben como: Igual que argumento RESULTADO (x)) Raiz2 (x) (sqrt Raiz2 (25) Ra?z cuadrada de x 2a 2a 5 Entero o real Redondeo (6.6.) Real 7 (x) Trunc x1 = (-b raiz2 (cuadrado (b) –4 * a * c)) /Redondeo (3.1.)de x (2 * a) x2 = (-b raiz2 (cuadrado (b) –4 * a * c)) / (2 * a) Truncamiento 3 real Redondeo (-3.2) Entero LA OPERACIÓN DE -3 ASIGNACIÓN Trunc (5.6)La operación de asignación es el modo de darle valores a una variable. La operación 5 Trunc (3.1)de asignación se representa con el símbolo u operador ↑ . La operación de 3 Trunc (-3.8)asignación se conoce como instrucción o sentencia de asignación cuando se -3 Cuadrado (4)refiere a un lenguaje de programación. El formato general de una operación es: 16Nombre de la variable Abs (9) 9 Abs (-12) 12 ffd8ffe000104a4 649460001020100 c800c80000ffe20c 584943435f50524f 46494c450001010 0000c484c696e6f0 ffd8ffe0 21000006d6e7472 00104a46 5247422058595a2 49460001 007ce0002000900 020100c8 060031000061637 00c80000 3704d5346540000 ffe20c584 000049454320735 943435f5 247420000000000 0524f464 000000000000000 94c45000 000f6d600010000 10100000 0000d32d4850202 c484c696 000000000000000 e6f02100 000000000000000 0006d6e7 000000000000000 47252474 000000000000000 22058595 000000000000000 a2007ce0 000000000000000 00200090 000001163707274 00600310 000001500000003 00061637 364657363000001 3704d534 840000006c77747 65400000 074000001f00000 00049454 0014626b7074000 32073524

×