20102TTT103IC02T106

Embed Size (px)

Citation preview

  • 8/17/2019 20102TTT103IC02T106

    1/170

  • 8/17/2019 20102TTT103IC02T106

    2/170

      Algoritmo y Estructura de Datos I 

    1

    UNIVERSIDAD TECNOLÓGICA DEL PERÚ Vicerrectorado de Investigación 

    Algoritmo y Estructura de Datos I 

    TINS Básicos Ingeniería de Telecomunicaciones 

    TEXTOS DE INSTRUCCIÓN BÁSICOS (TINS) / UTP 

    Lima ‐ Perú 

  • 8/17/2019 20102TTT103IC02T106

    3/170

    Algoritmo y Estructura de Datos I 

    2

     

    © Algoritmo

     y Estructura

     de

     Datos

     I 

    Desarrollo y Edición: Vicerrectorado de Investigación Elaboración del TINS: Ing. Carlos Lon Kan Prado Diseño y Diagramación: Julia Saldaña Balandra Soporte académico: Instituto de Investigación Producción: Imprenta Grupo IDAT 

    Queda 

     prohibida 

    cualquier  

     forma 

    de 

    reproducción, 

    venta, 

    comunicación 

     pública 

    y  

    transformación 

    de 

    esta 

    obra. 

  • 8/17/2019 20102TTT103IC02T106

    4/170

      Algoritmo y Estructura de Datos I 

    3

     

    “El  presente  material  contiene  una  compilación  de  obras  de  Algoritmo  I publicadas  lícitamente,  resúmenes  de  los  temas  a  cargo  del  profesor; constituye  un  material  auxiliar  de  enseñanza  para  ser  empleado  en  el desarrollo de las clases en nuestra institución. 

    Éste material es de uso exclusivo de los alumnos y docentes de la Universidad Tecnológica  del  Perú,  preparado  para  fines  didácticos  en  aplicación  del 

    Artículo 41

     inc.

     C

     y el

     Art.

     43

     inc.

     A.,

     del

     Decreto

     Legislativo

     822,

     Ley

     sobre

     

    Derechos de Autor”. 

  • 8/17/2019 20102TTT103IC02T106

    5/170

    Algoritmo y Estructura de Datos I 

    4

  • 8/17/2019 20102TTT103IC02T106

    6/170

      Algoritmo y Estructura de Datos I 

    5

    Presentación 

    El presente texto  elaborado en el marco de desarrollo de la Ingeniería, es un material de ayuda instruccional, en la Carrera de Ingeniería de Telecomunicaciones, para la Asignatura de Algoritmos y Estructura de Datos I. 

    Plasma  la  iniciativa  institucional  de  innovación  de  la  enseñanza‐aprendizaje  educativo universitario,  que  en  acelerada  continuidad  promueve  la  producción  de  materiales educativos, actualizados en concordancia a las exigencias de estos tiempos. 

    Esta primera edición apropiadamente recopilada, de diversas fuentes bibliográficas, de uso frecuente  en  la  enseñanza  de  algoritmos,  está  ordenada  en  función  del  sillabus  de  la Asignatura, arriba mencionada. 

    La conformación del texto ha sido posible gracias al esfuerzo y dedicación académica del Profesor  Ing.Carlos  Lo  Kan  Prado,  como  fruto  de  su  destacada  experiencia  profesional  y académica; contiene VII capítulos, cuyas descripciones genéricas son como sigue: 

    En el Capítulo I está referido a los conceptos fundamentales de los algoritmos. 

    En el Capítulo II se explica los diferentes tipos de datos que se utilizan en la programación. 

    En el Capítulo III se aborda la herramienta informática que se utilizara para el desarrollo de las aplicaciones en el computador. 

    En el Capítulo IV se explica las diversas estructuras de control que se presentan. 

    El Capítulo V se centra en la solución de temas de programación modular. 

    En el Capítulo VI se estudia los temas de recursividad. 

    Y en el Capítulo VII se presenta las diversas aplicaciones en lenguaje C. 

    Finalmente, al cierre de estas líneas, el agradecimiento  institucional al profesor Ing.Carlos Lo Kan Prado por su contribución a la elaboración del presente texto. 

    Ing. Lucio H. Huamán Ureta Vicerrectorado de Investigación

  • 8/17/2019 20102TTT103IC02T106

    7/170

    Algoritmo y Estructura de Datos I 

    6

  • 8/17/2019 20102TTT103IC02T106

    8/170

      Algoritmo y Estructura de Datos I 

    7

    Índice 

    Capítulo I Conceptos Fundamentales 

    1.1  Introducción ...........................................................................................................   11 1.2  Definición de lenguaje............................................................................................   13 

    1.3 

    Definición de

     algoritmo..........................................................................................

     14

     

    1.4  Tipos de algoritmos ................................................................................................   14 1.5  Lenguajes algorítmicos ...........................................................................................   14 1.6

     

    Metodología para la solución de problemas por medio de computadora ............  31 1.7

     

    Definición del problema .........................................................................................   31 1.8  Análisis del problema .............................................................................................   31 1.9

     

    Diseño del algoritmo ..............................................................................................   32 1.10

     

    Codificación ............................................................................................................   32 1.11

     

    Prueba y depuración...............................................................................................   32 1.12  Documentación ......................................................................................................   32 1.13

     

    Mantenimiento.......................................................................................................   33 

    Capítulo II Tipos de Datos 

    2.1 

    Tipos de datos.........................................................................................................   35 2.2  Expresiones.............................................................................................................   35 2.3  Operadores y operandos........................................................................................   36 2.4  Identificadores........................................................................................................   40 

    Capítulo III Lenguaje de Programación C 

    3.1 

    Introducción ...........................................................................................................   43 3.2  Características ........................................................................................................   43 3.3  Proceso de edición y compilación ..........................................................................   43 3.4

     

    Estructura de un programa ....................................................................................   44 

  • 8/17/2019 20102TTT103IC02T106

    9/170

    Algoritmo y Estructura de Datos I 

    8

    Capítulo IV Estructuras de Control 

    4.1  Tipos de estructuras básica ....................................................................................   59 4.2  Estructura secuencial .............................................................................................   59 4.3  Problemas secuenciales..........................................................................................   60 

    Capítulo V Programación Modular 

    5.1  El diseño descendente: subprogramas ..................................................................   89 5.2

     

    El diseño modular...................................................................................................   90 

    Capítulo VI Recursividad 

    6.1 

    Recursividad ...........................................................................................................   99 6.2  Prototipos de funciones .........................................................................................   107 6.3

     

    Arreglos unidimensionales y multidimensionales..................................................   108 

    Capítulo VII Aplicaciones 

    Ejercicios............................................................................................................................ 

    115 

    Bibliografía ........................................................................................................................   169 

  • 8/17/2019 20102TTT103IC02T106

    10/170

      Algoritmo y Estructura de Datos I 

    9

     

    Distribución Temática 

    Clase N° 

    Tema  Semana  Horas 

    Conceptos Fundamentales Concepto de algoritmo. Lenguajes de programación. Herramientas de programación. 

    2 Tipos de datos. Constantes,  variables,  identificadores,  expresiones, 

    funciones. 

    Estructura General de un Programa Estructura de un Programa en C. Estructura de algoritmos. Contadores, acumuladores. 

    Estructuras de Control Programación Estructurada. Estructuras de Control ‐ Tipos Secuencial Selectiva simple (SI). 

    Selectiva doble (SI ‐ SINO). Selectiva

     múltiple

     (SI

     ‐SINO

     ‐SI).

     5 

    6  Selectiva de control (SEGÚN ‐SEA).  6 

    7  Iterativa (REPETIR ‐ DESDE).  7 

    8  Estructura Iterativa (REPETIR ‐ MIENTRAS).  8 

    9  Ejercicios propuestos y nivelación  9 

    10  E X A M E N  P A R C I A L  10 

    11 Sub

     programación

     

    Programación Modular. Subprogramas  – Tipos 

    11 

    12 Variables globales y locales. Funciones, paso de parámetros. Procedimientos paso de parámetros 

    12 

    13 Recursividad Datos estructurados 

    13 

  • 8/17/2019 20102TTT103IC02T106

    11/170

    Algoritmo y Estructura de Datos I 

    10

    14 

    Tipos. Arreglos unidimensionales, declaración y acceso.  14 

    Clase N° 

    Tema  Semana  Horas 

    15  Arreglos bidimensionales, declaración y acceso.  15 

    16 Registros Concepto. Declaración y acceso. 

    16 

    17 Arreglo de registros. Cadena de caracteres. 

    17 

    18 

    Índices 

    18 

    19  Ejercicios propuestos y nivelación.  19 

    20  E X A M E N  F I N A L  20 

  • 8/17/2019 20102TTT103IC02T106

    12/170

      Algoritmo y Estructura de Datos I 

    11

     

    CAPÍTULO I 

    Conceptos 

    Fundamentales 

    1.1  Introducción La computadora no solamente es una  máquina que puede realizar procesos para darnos resultados, sin que tengamos la noción exacta de las operaciones que realiza para llegar a esos  resultados.  Con  la  computadora  además  de  lo  anterior  también  podemos  diseñar soluciones a la medida, de problemas específicos que se nos presenten. Más aun, si estos 

    involucran operaciones

     matemáticas

     complejas

     y/o

     repetitivas,

     o requieren

     del

     manejo

     de

     

    un volumen muy grande de datos. 

    El  diseño  de  soluciones  a  la  medida  de  nuestros  problemas,  requiere  como  en  otras disciplinas una metodología que nos enseñe de manera gradual, la forma de llegar a estas soluciones. 

    A  las  soluciones creadas  por  computadora  se  les  conoce  como programas  y  no  son  más que una serie de operaciones que realiza  la computadora para  llegar a un resultado, con un grupo de datos específicos. Lo anterior nos lleva al razonamiento de que un programa nos sirve para solucionar un problema específico. 

    Para poder realizar programas, además de conocer  la metodología mencionada, también debemos  de  conocer,  de  manera  específica  las  funciones  que  pueden  realizarse  en  la computadora y las formas en que se pueden manejar los elementos que hay en la misma. 

    Computadora: Es un dispositivo electrónico utilizado para procesar información y obtener resultados.  Los  datos  y  la  información  se  pueden  introducir  en  la  computadora  como entrada (input) y a continuación se procesan para producir una salida (output). 

    Proceso de información en la computadora (Fig. 1) 

    Datos de Proceso Datos deEntrada salida 

    Figura 1. Proceso 

    Programa: Es el  conjunto de  instrucciones escritas de algún  lenguaje  de  programación  y que ejecutadas secuencialmente resuelven un problema especifico. 

  • 8/17/2019 20102TTT103IC02T106

    13/170

    Algoritmo y Estructura de Datos I 

    12

    Organización física de una computadora 

    CPU

    Uni da de Uni dad

    Dispositi vos de Contr ol Ari t.-Log. Di sposit ivos de

    Entrada Salida

    Memori a

    Figura 2. Organización del Computador 

    Dispositivos  de  Entrada:  Como  su  nombre  lo  indica,  sirven  para  introducir  datos 

    (información) en

     la

     computadora

     para

     su

     proceso.

     Los

     datos

     se

     leen

     de

     los

     dispositivos

     de

     

    entrada  y  se  almacenan  en  la  memoria  central  o  interna.  Ejemplos:  teclado,  scanners (digitalizadores de rastreo), mouse (ratón), trackball (bola de ratón estacionario),  joystick (palancas de  juego), lápiz óptico. 

    Dispositivos  de  Salida:  Regresan  los  datos  procesados  que  sirven  de  información  al usuario. Ejemplo: monitor, impresora. 

    La Unidad Central de Procesamiento (C.P.U) se divide en dos:   Unidad de control 

     

    Unidad Aritmético ‐ Lógica 

    Unidad  de  Control:  Coordina  las  actividades  de  la  computadora  y  determina  que operaciones se deben  realizar  y en qué orden; así  mismo  controla  todo el proceso de  la computadora. 

    Unidad Aritmética  ‐ Lógica:  Realiza  operaciones  aritméticas  y  lógicas,  tales  como  suma, resta, multiplicación, división y comparaciones. 

    La Memoria de la computadora se divide en dos:   Memoria Central o Interna 

     

    Memoria Auxiliar o Externa 

    Memoria Central  (interna):  La  CPU  utiliza  la  memoria  de  la  computadora  para  guardar información mientras trabaja con ella; mientras esta información permanezca en memoria, la  computadora  puede  tener  acceso  a  ella  en  forma  directa.  Esta  memoria  construida internamente se llama memoria de acceso aleatorio (RAM). 

    La memoria interna consta de dos áreas de memoria: 

    La  memoria  RAM  (Randon  Access  Memory):  Recibe  el  nombre  de  memoria  principal  o memoria del usuario, en ella se almacena  información solo mientras la computadora esta 

  • 8/17/2019 20102TTT103IC02T106

    14/170

      Algoritmo y Estructura de Datos I 

    13

    encendida.  Cuando  se  apaga  o  arranca  nuevamente  la  computadora,  la  información  se pierde, por lo que se dice que la memoria RAM es una memoria volátil. 

    La memoria ROM (Read Only Memory): Es una memoria estática que no puede cambiar, la computadora puede  leer  los datos almacenados en  la memoria ROM, pero no se pueden introducir datos en ella, o cambiar los datos que ahí  se encuentran; por lo que se dice que esta memoria es de solo  lectura. Los datos de  la memoria ROM están grabados en forma permanente y son introducidos por el fabricante de la computadora. 

    Memoria  Auxiliar  (Externa):  Es  donde  se  almacenan  todos  los  programas  o  datos  que  el usuario  desee.  Los  dispositivos  de  almacenamiento  o  memorias  auxiliares  (externas  o secundarias) más comúnmente utilizados son: cintas magnéticas y discos magnéticos. 

    1.2  Definición de Lenguaje Lenguaje: Es una serie de símbolos que sirven para transmitir uno o más mensajes (ideas) entre dos  entidades diferentes.  A  la  transmisión de  mensajes se  le  conoce comúnmente como comunicación. 

    La comunicación  es un  proceso  complejo que  requiere una serie de  reglas  simples, pero indispensables para poderse llevar a cabo. Las dos principales son las siguientes: 

    Los mensajes deben correr en un sentido a la vez. Debe  forzosamente  existir  4  elementos:  Emisor,  Receptor,  Medio  de  Comunicación  y 

    Mensaje. 

    Lenguajes de Programación Es un conjunto de símbolos, caracteres y reglas (programas) que permiten a  las personas comunicarse con la computadora. 

    Los  lenguajes  de  programación  tienen  un  conjunto  de  instrucciones  que  nos  permiten realizar  operaciones  de  entrada/salida,  calculo,  manipulación  de  textos, lógica/comparación y almacenamiento/recuperación. 

    Los lenguajes de programación se clasifican en: 

    Lenguaje Maquina:

     Son

     aquellos

     cuyas

     instrucciones

     son

     directamente

     entendibles

     por

     la

     

    computadora  y  no  necesitan  traducción  posterior  para  que  la  CPU  pueda  comprender  y ejecutar el programa. Las instrucciones en lenguaje maquina se expresan en términos de la unidad de memoria mas pequeña el bit (dígito binario 0 o 1). 

    Lenguaje  de  Bajo  Nivel  (Ensamblador):  En  este  lenguaje  las  instrucciones  se  escriben  en códigos  alfabéticos  conocidos  como  mnemotécnicos  para  las  operaciones  y  direcciones simbólicas. 

  • 8/17/2019 20102TTT103IC02T106

    15/170

    Algoritmo y Estructura de Datos I 

    14

    Lenguaje de Alto Nivel: Los lenguajes de programación de alto nivel (BASIC, pascal, cobol, frotran, etc.) son aquellos en los que  las  instrucciones o sentencias a  la computadora son escritas  con  palabras  similares  a  los  lenguajes  humanos  (en  general  en  ingles),  lo  que facilita la escritura y comprensión del programa. 

    1.3  Definición de Algoritmo Un  algoritmo  es  una  serie  de  pasos  organizados  que  describe  el  proceso  que  se  debe seguir, para dar solución a un problema específico. 

    Un  algoritmo  es  una  secuencia  finita  de  instrucciones  cada  una  de  las  cuales  tiene  un significado claro y puede ser efectuada con una cantidad finita de esfuerzo en una longitud de tiempo también finito. 

    En matemáticas, ciencias  de  la computación  y disciplinas  relacionadas,  un algoritmo  (del latín, dixit algorithmus y éste a su vez del matemático persa al‐Jwarizmi) es una  lista bien definida, ordenada y  finita de operaciones que permite hallar  la solución a un problema. Dado un estado inicial y una entrada, a través de pasos sucesivos y bien definidos se llega a un  estado  final,  obteniendo  una  solución.  Los  algoritmos  son  objeto  de  estudio  de  la algoritmia. 

    En la vida cotidiana se emplean algoritmos en multitud de ocasiones para resolver diversos problemas. Algunos ejemplos se encuentran en los instructivos (manuales de usuario), los cuales  muestran  algoritmos  para  usar  el  aparato  en  cuestión  o  inclusive  en  las 

    instrucciones que

     recibe

     un

     trabajador

     por

     parte

     de

     su

     patrón.

     También

     existen

     ejemplos

     

    de  índole  matemática,  como  el  algoritmo  de  la  división  para  calcular  el  cociente  de  dos números, el algoritmo de Euclides para calcular el máximo común divisor de dos enteros positivos, o el método de Gauss para resolver un Sistema lineal de ecuaciones. 

    1.4  Tipos de Algoritmos 

     

    Cualitativos: Son aquellos en los que se describen los pasos utilizando palabras. 

     

    Cuantitativos: Son aquellos en  los que se utilizan cálculos numéricos para definir los pasos del proceso. 

    1.5 Lenguajes

     Algorítmicos

     

    Es  una  serie  de  símbolos  y  reglas  que  se  utilizan  para  describir  de  manera  explícita  un proceso. 

    Tipos de Lenguajes Algorítmicos Gráficos:  Es  la  representación  gráfica  de  las  operaciones  que  realiza  un  algoritmo (diagrama de flujo). 

  • 8/17/2019 20102TTT103IC02T106

    16/170

      Algoritmo y Estructura de Datos I 

    15

    No  Gráficos:  Representa  en  forma  descriptiva  las  operaciones  que  debe  realizar  un algoritmo (pseudocodigo). 

    Medios de expresión de un algoritmo Los algoritmos pueden ser expresados de muchas maneras, incluyendo al lenguaje natural, pseudocódigo,  diagramas  de  flujo  y  lenguajes  de  programación  entre  otros.  Las descripciones en lenguaje natural tienden a ser ambiguas y extensas. El usar pseudocódigo y diagramas de flujo evita muchas ambigüedades del lenguaje natural. Dichas expresiones son  formas  más  estructuradas  para  representar  algoritmos;  no  obstante,  se  mantienen independientes de un lenguaje de programación específico. 

    La descripción de un algoritmo usualmente se hace en tres niveles: Descripción

     de

     alto

     nivel.

     Se

     establece

     el

     problema,

     se

     selecciona

     un

     modelo

     matemático

     y 

    se  explica  el  algoritmo  de  manera  verbal,  posiblemente  con  ilustraciones  y  omitiendo detalles. 

    Descripción  formal.  Se  usa  pseudocódigo  para  describir  la  secuencia  de  pasos  que encuentran la solución. 

    Implementación.  Se  muestra  el  algoritmo  expresado  en  un  lenguaje  de  programación específico o algún objeto capaz de llevar a cabo instrucciones. 

    También  es  posible  incluir  un  teorema  que  demuestre  que  el  algoritmo  es  correcto,  un 

    análisis de

     complejidad

     o ambos.

     

    Diagrama de flujo 

    Definición Es  la  representación  gráfica  de  flujo  de  un algoritmo o de secuencia rutinaria. Se basan en  la utilización  de  diversos  símbolos  para  representar operaciones específicas. Se les llama diagramas de flujo  porque  los  símbolos  utilizados  se  conectan por medio de  flechas para  indicar  la secuencia de 

    la operación.

     

    Un diagrama de flujo es una forma de representar gráficamente  los  detalles  algorítmicos  de  un proceso multifactorial. Se utiliza principalmente en programación,  economía  y  procesos  industriales, pasando  también  a  partir  de  estas  disciplinas  a 

    formar  parte  fundamental  de  otras,  como  la psicología  cognitiva.  Estos  diagramas  utilizan  una 

    Figura 3. Diagrama de flujo 

  • 8/17/2019 20102TTT103IC02T106

    17/170

    Algoritmo y Estructura de Datos I 

    16

    serie de símbolos con significados especiales y  son  la  representación  gráfica  de  los  pasos de un proceso. En computación, son modelos tecnológicos  utilizados  para  comprender  los rudimentos de la programación lineal. 

    Símbolos utilizados Los  símbolos  que  se  utilizan  para  diseño  se someten  a  una  normalización,  es  decir,  se hicieron símbolos casi universales, ya que, en un  principio  cada  usuario  podría  tener  sus propios  símbolos  para  representar  sus procesos

     en

     forma

     de

     Diagrama

     de

     flujo.

     Esto

     

    trajo como consecuencia que sólo aquel que conocía  sus  símbolos,  los  podía  interpretar. La simbología utilizada para la elaboración de diagramas  de  flujo  es  variable  y  debe ajustarse  a  las  normas  preestablecidas universalmente  para  dichos  símbolos  o datos. 

    Los diagramas de flujo sirven para representar algoritmos de manera gráfica. 

    Características  que  debe  cumplir  un diagrama de flujo En los diagramas de flujo se presuponen los siguientes aspectos: 

      Existe  siempre  un  camino  que  permite  llegar  a  una  solución  (finalización  del algoritmo). 

     

    Existe un único inicio del proceso. 

     

    Existe un único punto de fin para el proceso de flujo (salvo del rombo que  indica una comparación con dos caminos posibles). 

    Figura 4. Diagrama de flujo 

  • 8/17/2019 20102TTT103IC02T106

    18/170

      Algoritmo y Estructura de Datos I 

    17

    Desarrollo del Diagrama de Flujo Las siguientes son acciones previas a la realización del diagrama de flujo: 

      Identificar las ideas principales a ser incluidas en el diagrama de flujo. Deben estar presentes  el  dueño  o  responsable  del  proceso,  los  dueños  o  responsables  del proceso  anterior  y  posterior  y  de  otros  procesos  interrelacionados,  otras  partes interesadas. 

      Definir qué se espera obtener del diagrama de flujo. 

     

    Identificar quién lo empleará y cómo. 

     

    Establecer el nivel de detalle requerido.   Determinar los límites del proceso a describir. Los pasos a seguir para construir el 

    diagrama de flujo son: 

     

    Establecer  el  alcance  del  proceso  a  describir.  De  esta  manera  quedará  fijado  el comienzo

     y el

     final

     del

     diagrama.

     Frecuentemente

     el

     comienzo

     es

     la

     salida

     del

     

    proceso previo y el final la entrada al proceso siguiente. 

     

    Identificar y listar las principales actividades/subprocesos que están incluidos en el proceso a describir y su orden cronológico. 

     

    Si el nivel de detalle definido incluye actividades menores, listarlas también.   Identificar y listar los puntos de decisión. 

     

    Construir  el  diagrama  respetando  la  secuencia  cronológica  y  asignando  los correspondientes símbolos. 

      Asignar  un  título  al  diagrama  y  verificar  que  esté  completo  y  describa  con exactitud el proceso elegido. 

    Recomendaciones 

    A  su  vez,  es  importante  que  al  construir  diagramas  de  flujo,  se  observen  las  siguientes recomendaciones: 

     

    Evitar sumideros infinitos, burbujas que tienen entradas pero no salidas.   Evitar  las  burbujas  de  generación  espontánea,  que  tienen  salidas  sin  tener 

    entradas, porque son sumamente sospechosas y generalmente incorrectas. 

     

    Tener cuidado con  los  flujos y procesos no etiquetados. Esto suele ser un  indicio de  falta  de  esmero,  pero  puede  esconder  un  error  aún  más  grave:  a  veces  el analista  no  etiqueta  un  flujo  o  un  proceso  porque  simplemente  no  se  le  ocurre algún nombre razonable. 

  • 8/17/2019 20102TTT103IC02T106

    19/170

    Algoritmo y Estructura de Datos I 

    18

    Ventajas de los diagrama de flujo Favorecen la comprensión del proceso a través de mostrarlo  como  un  dibujo.  El  cerebro  humano reconoce  fácilmente  los  dibujos.  Un  buen diagrama  de  flujo  reemplaza  varias  páginas  de texto. 

    Permiten  identificar  los  problemas  y  las oportunidades  de  mejora  del  proceso.  Se identifican los pasos redundantes, los flujos de los re‐procesos,  los  conflictos  de  autoridad,  las responsabilidades,  los  cuellos  de  botella,  y  los puntos

     de

     decisión.

     

    Muestran  las  interfaces  cliente‐proveedor  y  las transacciones que en ellas se  realizan,  facilitando a los empleados el análisis de las mismas. 

    Son  una  excelente  herramienta  para  capacitar  a los  nuevos  empleados  y  también  a  los  que desarrollan  la  tarea,  cuando  se  realizan  mejoras en el proceso. 

    Tipos de

     diagramas

     de

     flujos

     

    Formato vertical: En él el  flujo o  la secuencia de las operaciones, va de arriba hacia abajo. Es una  lista ordenada de  las operaciones de un proceso con toda la información que se considere necesaria, según su propósito. 

    Formato  horizontal:  En  él,  el  flujo  o  la  secuencia  de  las  operaciones,  va  de  izquierda  a derecha. 

    Formato  panorámico:  El  proceso  entero  está  representado  en  una  sola  carta  y  puede apreciarse de una sola mirada mucho más rápido que  leyendo el texto,  lo que  facilita su comprensión, aun para personas no familiarizadas. Registra no solo en  línea vertical, sino 

    también horizontal,

     distintas

     acciones

     simultáneas

     y la

     participación

     de

     más

     de

     un

     puesto

     o 

    departamento que el formato vertical no registra. 

    Formato  Arquitectónico:  Describe  el  itinerario  de  ruta  de  una  forma  o  persona  sobre  el plano arquitectónico del área de trabajo. El primero de los flujogramas es eminentemente descriptivo, mientras que los utilizados son fundamentalmente representativos. 

    Crear diagramas de flujos Un  diagrama  de  flujo  u  organigrama  es  una  representación  diagramática  que  ilustra  la secuencia de las operaciones que se realizarán para conseguir la solución de un problema. 

    Figura 5.

     Diagrama

     de

     flujo

     

  • 8/17/2019 20102TTT103IC02T106

    20/170

      Algoritmo y Estructura de Datos I 

    19

    Los diagramas de flujo se dibujan generalmente antes de comenzar a programar el código frente  a  la  computadora.  Los  diagramas  de  flujo  facilitan  la  comunicación  entre  los programadores y la gente del negocio. Estos diagramas de flujo desempeñan un papel vital en la programación de un problema y facilitan la comprensión de problemas complicados y sobre todo muy largos. Una vez que se dibuja el diagrama de flujo, llega a ser fácil escribir el programa en cualquier  idioma de alto nivel. Vemos a menudo cómo  los diagramas de flujo  nos  dan  ventaja  al  momento  de  explicar  el  programa  a  otros.  Por  lo  tanto,  está correcto decir que un diagrama de flujo es una necesidad para la documentación mejor de un programa complejo. 

    Reglas para dibujar un diagrama de flujo Los Diagramas de flujo se dibujan generalmente usando algunos símbolos estándares; sin embargo,

     algunos

     símbolos

     especiales

     pueden

     también

     ser

     desarrollados

     cuando

     sean

     

    requeridos. Algunos símbolos estándares, que se requieren con frecuencia para diagramar programas de computadora se muestran a continuación: 

    Inicio o fin del programa 

    Pasos, procesos o líneas de instrucción de programa de computo 

    Operaciones de entrada y salida 

    Toma de decisiones y Ramificación 

    Conector para unir el flujo a otra parte del diagrama 

    Cinta magnética 

    Disco magnético 

    Conector de pagina 

    Líneas de flujo 

  • 8/17/2019 20102TTT103IC02T106

    21/170

    Algoritmo y Estructura de Datos I 

    20

     

    Anotación 

    Display, para mostrar datos 

    Envía datos a la impresora 

    Figura 6. Simbolos para el diseño de diagramas de flujo 

    Observación: Para

     obtener

     la

     correcta

     elaboración

     de

     los

     símbolos,

     existen

     plantillas.

     Las

     

    puedes conseguir en Papelerías. 

    Símbolos gráficos Dentro de los símbolos fundamentales para la creación de diagramas de flujo, los símbolos gráficos  son  utilizados  específicamente  para  operaciones  aritméticas  y  relaciones condicionales. La siguiente es una lista de los símbolos más comúnmente utilizados: 

    +  Sumar ‐ Menos *  Multiplicación 

    División 

    ±  Mas o menos =  Equivalente a >  Mayor que =  Mayor o igual que 

  • 8/17/2019 20102TTT103IC02T106

    22/170

      Algoritmo y Estructura de Datos I 

    21

    e. 

    Todo texto escrito dentro de un símbolo debe ser legible, preciso, evitando el uso de muchas palabras. 

    f.  Todos  los  símbolos  pueden  tener  más  de  una  línea  de  entrada,  a  excepción  del símbolo final. 

    g.  Solo los símbolos de decisión pueden y deben tener más de una  línea de flujo de salida. 

    Ejemplos de diagramas de flujo Diagrama de flujo que encuentra la suma de los primeros 50 números naturales 

    Figura 8. Diagrama de flujo 

    Bueno, ahora la descripción detallada del diagrama anterior 

    Suma, es la variable a  la que se le va agregando el valor de cada número natural. N, es el contador. Éste recorrerá los números hasta llegar al 50. 

  • 8/17/2019 20102TTT103IC02T106

    23/170

    Algoritmo y Estructura de Datos I 

    22

     

    •  El primer bloque indica el inicio del Diagrama de flujo 

    •  El  segundo  bloque,  es un Símbolo de procesos  En  este bloque  se  indica  que  las  variables  suma  y  N  han  sido declaradas  previamente  y  se  inicializan  en  0  para comenzar el conteo y la suma de valores. 

    •  El tercer bloque, es también un Símbolo de procesos En éste paso se  incrementa en 1  la variable N (N = N + 1). Por  lo que, en  la primera  lectura  la variable N valdrá 1, ya que se inicializo en 0. 

    •  El  cuarto  bloque  es  exactamente  lo  mismo  que  el 

    anterior Pero

     aquí 

     la

     variable

     suma

     es

     igual

     a la

     variable

     

    suma agregada en el valor de N (En el primer caso Suma contendrá 1, ya que N = 1). 

    •  El quinto bloque es un Símbolo de Toma de decisiones y Ramificación  Lo  que  hay  dentro  del  bloque  es  una pregunta  que  se  le  hace  a  alguna  variable  para  validar una  condición.  En  este  caso  ¿Es N=50?,  Obviamente  la respuesta  es  no,  ya  que  N  todavía  es  1.  por  lo  que  el flujo  de  nuestro  programa  se  dirigirá  hacía  la  parte  en donde  se  observa  la  palabra  no:  Tercer  Bloque,  éste  le sumará 1 (N=N+1) y vuelve a llegar a éste bloque, donde 

    preguntará ¿Es

     N=50?...

     ¡No!,

     todavía

     es

     2.

     Entonces,

     

    regresa al Tercer bloque y vuelve hacer  lo mismo. Y así  hasta llegar a 50, obteniendo así  la suma de los primeros 50 primeros números naturales. 

    •  Por último indicamos que el resultado será mostrado en la pantalla (Display). 

    •  Fin del programa (o diagrama) 

    Pseudocódigo Pseudocódigo  es  la  descripción  de  un  algoritmo  que  asemeja  a  un  lenguaje  de programación  pero  con  algunas  convenciones  del  lenguaje  natural.  Tiene  varias  ventajas con  respecto  a  los  diagramas  de  flujo,  entre  las  que  se  destaca  el  poco  espacio  que  se requiere  para  representar  instrucciones  complejas.  El  pseudocódigo  no  está  regido  por ningún  estándar.  Pseudo  viene  de  falso  y  por  ende  es  un  código  al  que  aunque  es entendible no se aplica al proceso que debe realizar la máquina o computador. 

  • 8/17/2019 20102TTT103IC02T106

    24/170

      Algoritmo y Estructura de Datos I 

    23

    Un  pseudocódigo  (lenguaje  natural),  es  una  serie  de  palabras  léxicas  y  gramaticales referidos a los lenguajes de programación, pero sin llegar a la rigidez de la sintaxis de estos ni  a  la  fluidez  del  lenguaje  coloquial.  Esto  permite  codificar  un  programa  con  mayor agilidad  que  en  cualquier  lenguaje  de  programación,  con  la  misma  validez  semántica, normalmente se utiliza en las fases de análisis o diseño de Software, o en el estudio de un algoritmo.  Forma  parte  de  las  distintas  herramientas  de  la  ingeniería  de  software.  Es, netamente, lenguaje de tipo informático. 

    Para  probar  el  algoritmo  se  utiliza  un  Pseudo  intérprete  el  cual  se  encuentra  disponible para  las  plataformas  GNU/Linux  y  Windows,  es  de  código  libre  y  está  escrito  en  C++.  El mismo se ejecuta en un Terminal. 

    El pseudocódigo

     describe

     un

     algoritmo

     utilizando

     una

     mezcla

     de

     frases

     en

     lenguaje

     común,

     

    instrucciones  de  programación  y  palabras  clave  que  definen  las  estructuras  básicas.  Su objetivo es permitir que el programador se centre en los aspectos lógicos de la solución a un problema. 

    No siendo el pseudocódigo un lenguaje formal, varían de un programador a otro, es decir, no hay una estructura semántica ni arquitectura estándar. Es una herramienta ágil para el estudio  y  diseño  de  aplicaciones,  veamos  un  ejemplo,  que  podríamos  definir  como: lenguaje  imperativo,  de  tercera  generación,  según  el  método  de  programación estructurada. 

    Pseudocódigo = Pseudo

     (Supuesto)

     + Código

     (Instrucción)

     

    Comencemos  aclarando  que  no  es  una  forma  de  programación.  Se  trata  de  una herramienta que  los analistas de sistemas utilizan para comunicar a los programadores  la estructura del programa que van a realizar, de forma de tener una idea bien clara de lo que se necesita programar. 

    Digamos que el pseudo código es una  forma de diagramar un algoritmo para resolver un determinado problema, sin atenerse a ningún lenguaje de programación en especial. 

    Un algoritmo es un conjunto de procedimientos que permiten resolver un problema. 

    En vez de escribir el programa directamente en un lenguaje de programación determinado (C,  C++,  Visual  Basic, etc.),  crearemos  un borrador  entendible para  todos,  para  luego  de tener bien en claro lo que se debe hacer, pasar a la programación propiamente dicha. 

    Figura 9. Pseudo codigo 

  • 8/17/2019 20102TTT103IC02T106

    25/170

    Algoritmo y Estructura de Datos I 

    24

     

    No hay que confundirlo con un diagrama de flujo. 

    En el diagrama de  flujo se  representa el  transcurso del programa, el momento donde se obtienen los datos, cuando se procesan y el momento de presentar los resultados. Si bien son dos herramientas que se utilizan en conjunto, cada una representa dos partes distintas en el diseño de un sistema. El pseudo código se refiere a crear un código para orientar a los programadores, pero sin la sintaxis ni la estructura propia de ningún lenguaje. 

    Utilización en la práctica En el trabajo de un ingeniero analista, una de las partes más trabajosas es la de determinar qué  es  lo  que  necesitan  de  un  sistema  los  usuarios  finales.  Se  dedican  muchas  horas  a hacer

     un

     relevamiento

     de

     los

     datos

     que

     serán

     necesarios,

     los

     tipos

     de

     procesamientos,

     las

     

    salidas, etc. Y debe existir una realimentación entre el diseño y el usuario, para garantizar que el sistema cumpla con los requisitos del usuario. 

    Figura 10. Un sistema 

    Supongamos que tenemos un sistema para una empresa que utiliza una interfaz gráfica en Visual Basic, algunas aplicaciones específicas en C, y páginas PHP para trabajo vía Internet. Seguramente que crear un diagrama específico para cada lenguaje sería una tarea tediosa. 

    Gracias a esta herramienta, podemos reunir a todos los programadores, dar las pautas de trabajo, y mediante el pseudo código, cada programador sabrá  lo que hace el sistema, y 

    podrá escribir

     el

     código

     correspondiente.

     

    Incluso dos programadores que dominen el mismo lenguaje pueden tener metodologías de trabajo  distintas.  Un  problema  puede  ser  resuelto  de  muchas  maneras,  cada  una  más  o menos eficiente que la otra, pero todas cumplen con el objetivo. 

  • 8/17/2019 20102TTT103IC02T106

    26/170

      Algoritmo y Estructura de Datos I 

    25

     

    Figura 11. Lenguajes y el pseudo codigo 

    El pseudo código elimina estas diferencias, dando  libertad a  los programadores para que puedan ajustarse a su metodología de trabajo. 

    Generalmente,  este  código  se  escribe  con  la  participación  de  todos  los  programadores. Esto representa la ventaja de que muchas opiniones ayudan a elegir la mejor entre todas, logrando una solución efectiva y eficaz al problema planteado. 

    Definición de datos del Pseudocódigo La  definición  de  datos  se  da  por  supuesta,  sobre  todo  en  las  variables  sencillas,  si  se emplea formaciones: pilas, colas, vectores o registros, se pueden definir en la cabecera del 

    algoritmo, y naturalmente

     cuando

     empleemos

     el

     pseudocódigo

     para

     definir

     estructuras

     de

     

    datos, esta parte la desarrollaremos adecuadamente. 

    Funciones y operaciones Como  se  había  mencionado  antes,  cada  autor  usa  su  propio  pseudocódigo  con  sus respectivas convenciones. Por ejemplo, considere la instrucción "Reemplace el valor de la variable  x  por  el  valor  de  la  variable  y";  algunas  de  las  posibles  sintaxis  para  indicar  lo anterior podrían ser: 

    Asigne a  el valor de 

    Las operaciones aritméticas se representan de la forma usual en matemáticas. 

  • 8/17/2019 20102TTT103IC02T106

    27/170

    Algoritmo y Estructura de Datos I 

    26

     

    y las operaciones complejas se representan del mismo modo: 

    Ejemplo 1: Hacer un pseudocodigo que imprima los números del 1 al 100. 

    PROGRAMA contador1 

    ENTORNO: 

    c  0 ALGORITMO: 

    Borrar_pantalla( ) MIENTRAS c =

     0 HACER

     

    ESCRIBIR c c  c ‐ 1 

    FINMIENTRAS 

    FINPROGRAMA 

  • 8/17/2019 20102TTT103IC02T106

    28/170

      Algoritmo y Estructura de Datos I 

    27

    Ejemplo 3: Hacer un pseudocodigo que imprima los números pares entre 0 y 100. 

    PROGRAMA pares 

    ENTORNO: c  2 

    ALGORITMO: Borrar_pantalla( ) MIENTRAS c 

  • 8/17/2019 20102TTT103IC02T106

    29/170

    Algoritmo y Estructura de Datos I 

    28

    Ejemplo 5: Hacer un pseudocódigo que  imprima  los números  impares hasta el 100 y que imprima cuantos impares hay. 

    PROGRAMA impares 

    ENTORNO: c  1 son  0 

    ALGORITMO: Borrar_pantalla( ) MIENTRAS c 

  • 8/17/2019 20102TTT103IC02T106

    30/170

      Algoritmo y Estructura de Datos I 

    29

    Ejemplo 7: Introducir un numero por teclado. Que nos diga si es par o impar. 

    PROGRAMA paridad 

    ENTORNO: num  0 

    ALGORITMO: Borrar_pantalla( ) ESCRIBIR "Introduce un n£mero: " LEER num SI num = int( num / 2 ) * 2 ENTONCES 

    ESCRIBIR "es par" SINO

     

    ESCRIBIR "es impar" FINSI 

    FINPROGRAMA 

    Ejemplo  8:  Imprimir  y  contar  los  múltiplos  de  3  desde  la  unidad  hasta  un  numero  que introducimos por teclado. 

    PROGRAMA multiplo 

    ENTORNO: i  3 n  0 c  0 

    ALGORITMO: Borrar_pantalla( ) ESCRIBIR "Numero: " LEER n MIENTRAS i 

  • 8/17/2019 20102TTT103IC02T106

    31/170

    Algoritmo y Estructura de Datos I 

    30

    Ejercicios Propuestos Construir diagramas de Flujo y Pseudo Códigos para los siguientes enunciados: 

    1.  Mostrar su Nombre y su Apellido 2.  Mostrar  el  Nombre  y  Apellido  de  cualquier  persona  de  quien  se  introduzcan  los 

    datos. 3.  Sumar  2  +  2  y  mostrar  el  resultado  (por  pantalla,  por  impresora,  por  pantalla  e 

    impresora) 4.

     

    Sumar 2 números cualesquiera. 5.  Dados  2  números,  estar  en  capacidad  de  sumarlos,  restarlos,  multiplicarlos  y 

    dividirlos. 6.

     

    Dados los coeficientes de una Ecuación de 2do Grado, calcular y mostrar x1 y x2. 7.

     

    Calcular la

     Serie

     de

     Fibonacci

     hasta

     un

     número

     dado.

     

    8.  Calcular la edad 

     

    fácil: al introducir sólo el año de nacimiento 

     

    mediano: al introducir el mes y año de nacimiento 

     

    complejo: al introducir el día, mes y año de nacimiento 9.  Calcular  la nota definitiva para 5 alumnos, tomando en cuenta  las ponderaciones 

    siguientes: 

     

    1er Practica: 30%   2do Practica: 25%   3er Practica: 20%   4ta Practica: 25% 

    10. 

    10.Calcular el

     sueldo

     quincenal,

     tomando

     en

     cuenta

     los

     siguientes

     parámetros:

     

      Bs 450.000 por quincena   Bono de 10% de profesionalización a los que tienen título universitario   Bono quincenal de transporte de Bs 70.000 

     

    Bono de alimentación de Bs 5.000 por día laborado   Deducciones: 

      2% Seguro Colectivo  

    1% Paro Forzoso  

    2% Seguro Social  

    2% Caja de Ahorro 11.

     

    Calcular los números primos en un rango dado. 

    12. 

    Calcular la

     suma

     de

     todos

     los

     números

     enteros

     impares,

     en

     un

     rango

     dado.

     

    13. 

    Calcular el factorial de un número. 14.  Problema: Buscar una carta 

    Se tiene un mazo de cartas  inglesas, el cual no está completo, pero se sabe que tiene  “n”  cartas,  y  está  desordenado.  Se  desea  determinar  si  una  carta determinada está o no en el mazo, y si está, en qué posición 

    15.  Problema: serie de ulam Dado un valor inicial “x”, se pide generar los términos de la serie de Ulam. 

  • 8/17/2019 20102TTT103IC02T106

    32/170

      Algoritmo y Estructura de Datos I 

    31

    Se  dice  que  cualquier  número  menor  que  1800  converge  a  1  si  se  calcula  cada término siguiendo las reglas de la serie de Ulam. La regla para calcular el término siguiente a “x” es:   Si x par, el siguiente término se obtiene dividiendo x por 2   Si x es impar, el siguiente término se obtiene multiplicando x por 3 y sumando 

    1 al resultado. 16.  Problema: caída libre 

    La  ecuación  que  rige  el  movimiento  uniformemente  acelerado  de  una  partícula está  dado por  la  siguiente  fórmula: x(t)= xo  + vo *  t  +  ½  * a *  t2,  donde  xo es  la posición inicial de la partícula, vo es la velocidad inicial y a, la aceleración. El movimiento de caída  libre se rige por  la misma ecuación anterior, salvo que  la velocidad  inicial es cero, (se deja caer el objeto del reposo), y  la aceleración es  la constante

     g,

     que

     se

     puede

     aproximar

     por

     10

     con

     signo

     negativo.

     

    Construya  un  algoritmo  que  reciba  como  entrada  una  altura  h,  desde  la  cual  se deja caer un objeto, y entregue como salida la posición de la partícula, y el tiempo transcurrido en cada segundo desde que es soltado hasta que llega al suelo. Indicación. Considere posición inicial h, y posición final 0 (suelo) 

    17.  Problema: Máquina de Sencillar Se tiene una máquina que permite sencillar dinero. La máquina está diseñada para que, dado un monto cualquiera,  indique  cuantos billetes de 1000 y monedas de 100,  10  y  1  debe  entregar,  a  cambio  de  ese  monto.  Una  característica  de  esta máquina es que siempre intentará dar la menor cantidad de monedas. Construya el algoritmo que permita que la máquina funcione de la forma descrita. 

    Es 

    decir, 

    un 

    algoritmo 

    que 

    reciba 

    como 

    entrada 

    un 

    monto 

    de 

    dinero, 

    entero, 

    positivo  y  entregue  como  salida  la  cantidad  de  billetes  y  de  monedas  de  las distintas denominaciones que equivalen a dicho monto. 

    1.6  Metodología para la solución de problemas por medio de computadora 

    1.7  Definición del Problema Esta fase está dada por el enunciado del problema, el cual requiere una definición clara y precisa.  Es  importante  que  se  conozca  lo  que  se  desea  que  realice  la  computadora; mientras  esto  no  se  conozca  del  todo  no  tiene  mucho  caso  continuar  con  la  siguiente etapa. 

    1.8  Análisis del Problema Una vez que se ha comprendido lo que se desea de la computadora, es necesario definir: 

     

    Los datos de entrada.   Cuál es la información que se desea producir (salida)   Los métodos y fórmulas que se necesitan para procesar los datos. 

  • 8/17/2019 20102TTT103IC02T106

    33/170

  • 8/17/2019 20102TTT103IC02T106

    34/170

      Algoritmo y Estructura de Datos I 

    33

     

    Documentación  Interna:  Son  los  comentarios  o  mensaje  que  se  añaden  al  código fuente para hacer más claro el entendimiento de un proceso. 

    Documentación Externa: Se define en un documento escrito los siguientes puntos: 

      Descripción del Problema 

     

    Nombre del Autor 

     

    Algoritmo (diagrama de flujo o pseudocodigo)   Diccionario de Datos   Código Fuente (programa) 

    Manual del

     Usuario:

     Describe

     paso

     a paso

     la

     manera

     cómo

     funciona

     el

     programa,

     con

     

    el fin de que el usuario obtenga el resultado deseado. 

    1.13 Mantenimiento Se  lleva  a  cabo  después  de  terminado  el  programa,  cuando  se  detecta  que  es  necesario hacer algún cambio, ajuste o complementación al programa para que siga trabajando de manera  correcta.  Para  poder  realizar  este  trabajo  se  requiere  que  el  programa  este correctamente documentado. 

  • 8/17/2019 20102TTT103IC02T106

    35/170

    Algoritmo y Estructura de Datos I 

    34

  • 8/17/2019 20102TTT103IC02T106

    36/170

      Algoritmo y Estructura de Datos I 

    35

    CAPÍTULO II 

    Tipos 

    de 

    Datos 

    2.1  Tipos De Datos Todos  los datos tienen un tipo asociado con ellos. Un dato puede ser un simple carácter, tal  como  ‘b’,  un  valor  entero  tal  como  35.  El  tipo  de  dato  determina  la  naturaleza  del conjunto de valores que puede tomar una variable. 

     Numéricos

    Simples LógicosAlfanuméricos (string)

    Tipos dedatos Arreglos (Vectores, Matrices)

    Estructurados Registros(Def. por el Archivosusuario) Apuntadores

    Tipos de Datos Simples Datos Numéricos: Permiten representar valores escalares de forma numérica, esto incluye 

    los 

    números 

    enteros 

    los 

    reales. 

    Este 

    tipo 

    de 

    datos 

    permiten 

    realizar 

    operaciones aritméticas comunes. 

    Datos  Lógicos:  Son  aquellos  que  solo  pueden  tener  dos  valores  (cierto  o  falso)  ya  que representan  el  resultado  de  una  comparación  entre  otros  datos  (numéricos  o alfanuméricos). 

    Datos Alfanuméricos (String): Es una secuencia de caracteres alfanuméricos que permiten representar valores identificables de forma descriptiva, esto incluye nombres de personas, direcciones, etc. Es posible representar números como alfanuméricos, pero estos pierden su propiedad matemática, es decir no es posible hacer operaciones con ellos. Este tipo de 

    datos se

     representan

     encerrados

     entre

     comillas.

     

    Ejemplo: “Instituto Tecnológico de los Olivos” “2009” 

    2.2  Expresiones Las  expresiones  son  combinaciones  de  constantes,  variables,  símbolos  de  operación, paréntesis y nombres de funciones especiales. Por ejemplo: 

  • 8/17/2019 20102TTT103IC02T106

    37/170

    Algoritmo y Estructura de Datos I 

    36

    a+(b + 3)/c 

    Cada  expresión  toma  un  valor  que  se  determina  tomando  los  valores  de  las  variables  y constantes implicadas y la ejecución de las operaciones indicadas. 

    Una  expresión  consta  de  operadores  y  operandos.  Según  sea  el  tipo  de  datos  que manipulan, se clasifican las expresiones en: 

     

    Aritméticas   Relaciónales   Lógicas 

    2.3 Operadores

     y Operandos

     

    Operadores: Son elementos que relacionan de forma diferente,  los valores de una o más variables y/o constantes. Es decir, los operadores nos permiten manipular valores. 

    Aritméticos

    Tipos de Operadores Relaciónales

    Lógicos

    Operadores  Aritméticos:  Los  operadores  aritméticos  permiten  la  realización  de operaciones

     matemáticas

     con

     los

     valores

     (variables

     y constantes).

     

    Los  operadores aritméticos pueden ser  utilizados  con  tipos de  datos enteros  o  reales.  Si ambos son enteros, el resultado es entero; si alguno de ellos es real, el resultado es real. 

    Operando (Operador) Operando

    Valor

    (constante o variable)

    Operadores Aritméticos

     

    + Suma ‐ Resta * Multiplicación / División Mod Modulo (residuo de la división entera) 

  • 8/17/2019 20102TTT103IC02T106

    38/170

      Algoritmo y Estructura de Datos I 

    37

    Ejemplos: 

    Expresión Resultado 

      7 / 2 = 3.5   12 mod 7 =  5   4  + 2 * 5 = 14 

    Prioridad de los Operadores Aritméticos 

    Todas las expresiones entre paréntesis se evalúan primero. Las expresiones con paréntesis anidados se evalúan de dentro a fuera, el paréntesis más interno se evalúa primero. 

    Dentro de una misma expresión los operadores se evalúan en el siguiente orden. 

    1.‐ ^ Exponenciación 2.‐ *, /, mod Multiplicación, división, modulo. 3.‐ +, ‐ Suma y resta. 

    Los  operadores  en  una  misma  expresión  con  igual  nivel  de  prioridad  se  evalúan  de izquierda a derecha. 

    Ejemplos: 

      4 + 2 * 5 = 14   23 * 2 / 5 = 9.2   46 / 5 = 9.2  

    3 + 5 * (10 ‐ (2 + 4)) = 23 3 + 5 * (10 ‐ 6) = 3 + 5 * 4 = 3 + 20 = 23 

     

    3.5 + 5.09 ‐ 14.0 / 40 = 5.09 3.5 + 5.09 ‐ 3.5 = 8.59 ‐ 3.5 = 5.09 

     

    2.1 * (1.5

     + 3.0

     * 4.1)

     = 28.98

     

    2.1 * (1.5 + 12.3) = 2.1 * 13.8 = 28.98 

    Operadores Relaciónales: 

      Se utilizan para establecer una relación entre dos valores.   Compara  estos  valores  entre  si  y  esta  comparación  produce  un  resultado  de 

    certeza o falsedad (verdadero o falso). 

  • 8/17/2019 20102TTT103IC02T106

    39/170

    Algoritmo y Estructura de Datos I 

    38

     

    Los  operadores  relaciónales  comparan  valores  del  mismo  tipo  (numéricos  o cadenas) 

      Tienen el mismo nivel de prioridad en su evaluación.   Los operadores relaciónales tiene menor prioridad que los aritméticos. 

    Operadores Relaciónales 

    > Mayor que  = Mayor o igual que  c Falso a ‐ c Verdadero a ‐ b = c Falso a * b  c Verdadero 

    Ejemplos no

     lógicos:

     

  • 8/17/2019 20102TTT103IC02T106

    40/170

      Algoritmo y Estructura de Datos I 

    39

    Operando And 

    Operando1 Operador Operando2 ResultadoT AND  T T T F F F T FF F F

    Operando Or 

    Operando1 Operador Operando2 Resultado  T OR T T

    T F TF T TF F F

    Operando Not 

    Operando Resultado

    T F

    F T

    Ejemplos: (a < b) and (b < c)

    (10, =, Or

  • 8/17/2019 20102TTT103IC02T106

    41/170

    Algoritmo y Estructura de Datos I 

    40

    Ejemplos: 

    a = 10 b = 12 c = 13 d =10

    1)  ((a > b) or (a < c)) and ((a = c) or (a > = b))F T F F

    T FF

    2)  ((a > = b) or (a < d)) and (( a > = d) and (c > d))F F T T

    F TF

    3) not (a = c) and (c > b)F T

    TT

    2.4  Identificadores Los  identificadores representan  los datos de un programa (constantes, variables, tipos de datos).  Un  identificador  es  una  secuencia  de  caracteres  que  sirve  para  identificar  una posición en la memoria de la computadora, que nos permite tener acceso a su contenido. 

    Ejemplo: 

      Nombre   Num_hrs   Calif2 

    Reglas para formar un Identificador 

      Debe  comenzar  con  una  letra  (A  a  Z,  mayúsculas  o  minúsculas)  y  no  deben contener espacios en blanco. 

     

    Letras,  dígitos  y  caracteres  como  la  subraya  (  _  )  están  permitidos  después  del 

    primer carácter.

       La longitud de identificadores puede ser de hasta 8 caracteres. 

    Constantes y Variables Constante: Una constante es un dato numérico o alfanumérico que no cambia durante  la ejecución del programa. 

    Ejemplo: pi = 3.1416 

  • 8/17/2019 20102TTT103IC02T106

    42/170

      Algoritmo y Estructura de Datos I 

    41

    Variable:  Es  un  espacio  en  la  memoria  de  la  computadora  que  permite  almacenar temporalmente un dato durante  la ejecución de un proceso, su contenido puede cambia durante la ejecución del programa. Para poder reconocer una variable en la memoria de la computadora, es necesario darle un nombre con el cual podamos  identificarla dentro de un algoritmo. 

    Ejemplo: área = pi * radio ^ 2 

    Las variables son: el radio, el área y la constate es pi 

    Clasificación de las Variables 

     NuméricasPor su Contenido Lógicas

    Alfanuméricas (String)

    Variables

    De TrabajoPor su Uso Contadores

    Acumuladores

    Por su Contenido Variable Numéricas: Son aquellas en  las cuales se almacenan valores numéricos, positivos o negativos, es decir almacenan números del 0 al 9, signos (+ y ‐) y el punto decimal. 

    Ejemplo: 

    IGV=0.15 pi=3.1416 costo=2500 

    Variables  Lógicas:  Son  aquellas  que  solo  pueden  tener  dos  valores  (cierto  o  falso)  estos representan el resultado de una comparación  entre otros datos. 

    Variables  Alfanuméricas:  Esta  formada  por  caracteres  alfanuméricos  (letras,  números  y caracteres especiales). 

    Ejemplo: 

    letra=’a’ apellido=’lopez’ direccion=’Av. Libertad  #190’ 

  • 8/17/2019 20102TTT103IC02T106

    43/170

    Algoritmo y Estructura de Datos I 

    42

    Por su Uso Variables  de  Trabajo:  Variables  que  reciben  el  resultado  de  una  operación  matemática completa y que se usan normalmente dentro de un programa. Ejemplo: 

    Suma=a+b/c 

    Contadores:  Se  utilizan  para  llevar  el  control  del  número  de  ocasiones  en  que  se  realiza una operación o se cumple una condición. Con  los  incrementos generalmente de uno en uno. 

    Acumuladores: Forma que toma una variable y que sirve para  llevar  la suma acumulativa de una serie de valores que se van leyendo o calculando progresivamente. 

  • 8/17/2019 20102TTT103IC02T106

    44/170

      Algoritmo y Estructura de Datos I 

    43

    CAPÍTULO III 

    Lenguaje 

    de 

    Programación 

    C  

    3.1  Introducción Fue creado por Dennis Ritchie de  los laboratorios BELL en 1972, cuando trabajaba  junto a Ken  Thompson,  en  el  diseño  del  sistema  operativo  UNIX.  Se  deriva  del  lenguaje  B  de Thompson, que a su vez se deriva del BCPL de Martín Richards. 

    3.2  Características Es un lenguaje moderno de propósito general, que incorpora las características de control 

    apuntadas como

     deseables

     por

     la

     teoría

     y práctica

     de

     la

     informática.

     

     Planificación escalonada. 

     

    Programación estructurada. 

     

    Diseño modular.  Programas compactos. 

     

    Rapidez de ejecución. 

     

    Portátil. 

     

    De relativo bajo nivel.  Precisa compilarse. 

    3.3 Proceso

     de

     edición

     y compilación

     

    Los pasos necesarios para desarrollar un programa C son los siguientes: 

    a. 

    Edición: Utilizar un editor para escribir el programa fuente texto.  b.

     

    Compilación:  Compilar  el  programa  fuente,  es  decir,  traducir  el  programa  a lenguaje máquina. 

    c.  Ejecución: Una vez compilado se procede a la ejecución del programa tecleando el 

    nombre del fichero‐programa. 

  • 8/17/2019 20102TTT103IC02T106

    45/170

    Algoritmo y Estructura de Datos I 

    44

     

    Figura 1.

     Diagrama

     de

     flujo

     

    3.4  Estructura de un programa Un  programa  en  C  consiste  en  una  o  más  funciones,  de  las  cuales  una  de  ellas,  debe llamarse main() y es la principal de todas. 

     

    El programa comienza con la función: main()   Cada función o programa, consta de un cuerpo de función delimitado por llaves de 

    comienzo y fin { }   En  el  cuerpo  de  la  función  irán  incluidas:  sentencias,  variables,  funciones,  etc. 

    terminadas cada

     una

     de

     ellas

     por

     un

     punto

     y coma;

     

  • 8/17/2019 20102TTT103IC02T106

    46/170

      Algoritmo y Estructura de Datos I 

    45

     

    Programa ejemplo:

     

    /* Este programa imprime un mensaje */ #include  main() { printf(“LENGUAJE C\n”); } 

    En el programa anterior, existen dos funciones: main() que es la principal del programa en sí  y la función printf() que es una función de la librería estándar del lenguaje C. 

    Al ejecutar el programa, en pantalla aparece el texto LENGUAJE C. Programa ejemplo: 

    /* El programa solicita el radio y muestra el */ /* valor del área del círculo y la longitud de */ /* la circunferencia */ #include  #define PI 3.14159 main() { 

    int r;

     float l, a; printf(“Introduce radio (entero): “); scanf(“%d”, &r); l=2*PI*r; a=PI*r*r; printf(“La longitud de la circunferencia vale %f\n”, l); printf(“El área del círculo vale %f\n”, a); } 

  • 8/17/2019 20102TTT103IC02T106

    47/170

    Algoritmo y Estructura de Datos I 

    46

    Los datos en C: Variables y Constantes 

    Tipos de Datos Los datos manejados en C pueden ser de cinco tipos básicos. 

      INT:  enteros  sin  decimales  entre  (‐32768  y  +32767).  Ocupan  en  la  memoria  2 bytes. 

     

    CHAR: caracteres alfabéticos, signos especiales, etc. El rango es (0 y 255). Ocupan en la memoria 1 byte. 

      FLOAT:  números  decimales  entre  (3.4E‐38  a  3.4E+38)  con  ocho  dígitos  de precisión. Ocupan en la memoria 4 bytes. 

     

    DOUBLE:  números  decimales  entre  (1.7E‐308  a  1.7E+308)  con  16  dígitos  de precisión.

     Ocupan

     en

     la

     memoria

     8 bytes.

     

      VOID: sin valor. No almacenar nada y por tanto no necesitan espacio físico de  la memoria. 

    Identificadores de Tipo Todos  los tipos básicos excepto void pueden tener modificadores. Se usan para alterar el significado de un tipo base de acuerdo con nuestras necesidades. 

    Los modificadores son: 

      signed 

     

    unsigned 

      long   short 

    Se pueden aplicar todos los modificadores para los tipos base carácter y entero. 

    También se puede aplicar el modificador  long a double. A continuación mostramos todas las posibles combinaciones de los tipos básicos y los modificadores. 

  • 8/17/2019 20102TTT103IC02T106

    48/170

      Algoritmo y Estructura de Datos I 

    47

     

    Figura 2. Tipos de identificadores 

    NOTA:  El  espacio  ocupado  en  la  memoria  por  los  tipos  de  datos  aquí   mostrados  vendrá determinado  por  el  tipo  de  compilador  implementado.  En  cualquier  caso,  mediante  la función sizeof  (tipo de dato) se podrá determinar el número de bytes ocupados. 

    Variables 

    Se utilizan para almacenar  datos  internamente en  la memoria de  trabajo del  ordenador, durante la ejecución de un programa. 

    Como nombres de variables se admiten letras y números (por norma letras minúsculas).   El primer carácter debe ser una letra.   No se admiten blancos pero sí  el signo de subrayado. 

     

    Sólo se admiten los ocho primeros caracteres.   Mayúsculas y minúsculas se diferencian.   No se pueden emplear palabras clave del lenguaje. 

    Las variables

     deben

     ser

     declaradas

     según

     el

     tipo

     de

     datos

     que

     van

     a almacenar.

     

    Bien al comienzo del programa o antes de ser usadas por primera vez. 

    La forma de declararlas es:   Se define el tipo de dato a almacenar.   Nombre de la variable. 

     

    Asignación de un valor inicial (no obligatorio). 

  • 8/17/2019 20102TTT103IC02T106

    49/170

    Algoritmo y Estructura de Datos I 

    48

    Ejemplo: 

    /* Declaración de variables */ #include  main() { int a=3, b=7, c=0; c=a*b; printf(“El resultado es: %d”,c); } 

    Constantes Son

     valores

     que

     no

     varían

     durante

     la

     ejecución

     de

     un

     programa.

     Pueden

     adoptar

     

    cualquiera de  los tipos de datos declarados anteriormente. Es conveniente declararlas al principio del programa. 

    La  sentencia  #define  es  usada  para  definir  las  constantes  y  se  coloca  al  principio  del programa antes de la función main(). 

    #define PI 3.14159 #define PRIMO 13 

    Las constantes como norma se suelen escribir con mayúsculas. 

    Operadores Fundamentales En  C  se  utilizan  operadores  para  representar  operaciones  matemáticas.  Por  ejemplo,  el operador + hace que se sumen los valores situados a su izquierda y derecha. 

    Veamos los que hemos dado en llamar fundamentales. 

    Operador  de  asignación:  =  Asigna  a  la  variable  de  la  izquierda  el  valor  de  la derecha. 

    bmw=2002; 

    Operador de adición: + Hace que los dos valores situados a su izquierda y derecha se sumen. 

    bmw=10+20; 

  • 8/17/2019 20102TTT103IC02T106

    50/170

      Algoritmo y Estructura de Datos I 

    49

     

    Operador de sustracción:  ‐ Hace que se reste el número situado a su derecha del situado a su izquierda. 

    costo=350‐25; 

    El signo menos también se utiliza para indicar o cambiar el signo algebraico de un valor. 

    pepe=‐12; paco=‐pepe; 

    Operador de multiplicación: * Hace que se multipliquen los dos valores situados a su

     izquierda

     y derecha.

     

    pulg=10; cm=2.54*pulg; 

    Operador de división: / Hace que el valor situado a su izquierda sea dividido por el que se encuentra a su derecha. 

    cuatro=12.0/3.0; 

    Operadores Adicionales 

    A la

     lista

     de

     los

     operadores

     anteriores

     (que

     son

     los

     más

     comunes),

     vamos

     a añadir

     ahora

     

    tres operadores que resultan bastantes útiles. 

    Operador  módulo: % Proporciona el  resto  de  la división entera del  número  situado a  su izquierda entre el situado a su derecha. 

    pepe=15%5; 

    Operador incremento: ++ Realiza la tarea de incrementar en uno el valor de su operando. 

    a++; modo sufijo 

    ++a; modo

     prefijo

     

    La  diferencia  entre  ambos,  reside  en el  preciso  momento  en que  se  realiza  la  operación incremento. 

    Operador decremento: ‐‐ Realiza la tarea de disminuir en uno el valor de su operando. 

    b‐‐; modo sufijo ‐‐b; modo prefijo 

  • 8/17/2019 20102TTT103IC02T106

    51/170

    Algoritmo y Estructura de Datos I 

    50

    La diferencia entre ambos, es la misma que en el caso anterior. 

    Operadores Condicionales o de Relación Los  operadores  de  relación  o  condicionales  se  emplean  para  hacer  comparaciones.  A continuación, mostramos una lista completa de estos operadores en C. 

    Operadores Lógicos Cuando  necesitamos  combinar  dos  o  más  expresiones  de  relación,  hacemos  uso  de  los operadores lógicos. Existen tres operadores lógicos en C. 

    Operadores de Bit Las operaciones sobre bits se refieren a la comprobación, configuración o desplazamiento de los bits reales en un byte o palabra, que corresponden a los tipos de datos char e int. 

    No se pueden usar operaciones sobre bits en los tipos float, double, long doublé y void. 

    Los operadores que existen para el tratamiento de bits, son los siguientes: 

  • 8/17/2019 20102TTT103IC02T106

    52/170

      Algoritmo y Estructura de Datos I 

    51

    Normas de Precedencia de los Operadores No  todos  los  operadores  tienen  la  misma  prioridad,  lo  que  quiere  decir,  que  aquellas operaciones que utilizan ciertos operadores se efectuarán antes que otras. 

    Libreria stdio.h 

    stdio.h, 

    que 

    significa 

    "standard 

    input‐output

     header"  (cabecera  estandar  E/S),  es  la biblioteca  estándar  del  lenguaje  de programación  C,  el  archivo  de  cabecera  que contiene  las  definiciones  de  macros,  las constantes,  las declaraciones de  funciones y  la definición  de  tipos  usados  por  varias operaciones  estándar  de  entrada  y  salida.  Por motivos  de  compatibilidad,  el  lenguaje  de programación  C++  (derivado  de  C)  también tiene  su  propia  implementación  de  estas 

    funciones, 

    que 

    son 

    declaradas 

    con 

    el 

    archivo 

    de 

    cabecera cstdio. 

    Las  funciones  declaradas  en  stdio.h  son sumamente populares. 

  • 8/17/2019 20102TTT103IC02T106

    53/170

    Algoritmo y Estructura de Datos I 

    52

    Ejemplo: En lenguaje C y sus derivados, todas las funciones son declaradas en archivos de cabecera. Así, los programadores tienen que incluir el archivo de cabecera stdio.h dentro del código fuente  para  poder  utilizar  las  funciones  que  están  declaradas.  nota:  el  compilador diferencia las mayúsculas entre las minúsculas. 

    #include  

    int main(void) { 

    int ch; 

    while ((ch

     = getchar())

     !=

     EOF)

     

    putchar(ch); putchar('\n'); 

    return 0; } 

    El  programa  lee  todas  las  entradas  desde  la  entrada  estándar  y  las  muestra  en  la  salida estándar, línea a línea. 

    Funciones miembro 

    Las funciones

     declaradas

     en

     stdio.h

     pueden

     clasificarse

     en

     dos

     categorías:

     

    Funciones de manipulación de ficheros y funciones de manipulación de entradas y salidas. 

    Nombre  Descripción 

    Funciones de manipulación de ficheros 

    fclose  cierra un fichero a través de su puntero 

    fopen, 

    freopen, fdopen 

    abre un

     fichero

     para

     lectura,

     para

     escritura/reescritura

     o para

     adición

     

    remove  elimina un fichero 

    rename  cambia al fichero de nombre 

    rewind La función rewind coloca el indicador de posición de fichero para el stream apuntado por stream al comienzo del fichero. 

    tmpfile crea y abre un fichero temporal que es borrado cuando cerramos con la función fclose() 

  • 8/17/2019 20102TTT103IC02T106

    54/170

      Algoritmo y Estructura de Datos I 

    53

    Funciones 

    de 

    manipulación 

    de 

    entradas 

    salidas 

    clearerr Despeja los indicadores de final de fichero y de posición de fichero para el stream apuntado por stream al comienzo del fichero. 

    feof   comprueba el indicador de final de fichero 

    ferror  comprueba el indicador de errores 

    fflush 

    Si  stream apunta a  un  stream  de salida  o de actualización  cuya  operación más reciente no era de entrada,  la función  fflush envía cualquier dato aún sin escribir al entorno  local o a ser escrito en el fichero; si no, entonces el comportamiento no está definido. Si stream es un puntero nulo, la función fflush realiza el despeje para todos  los streams cuyo comportamiento está descrito

     anteriormente.

     

    fgetpos  devuelve la posición actual del fichero 

    fgetc  devuelve un carácter de un fichero 

    fgets  consigue una cadena de caracteres de un fichero 

    fputc  escribe un carácter en un fichero 

    fputs  escribe una cadena de caracteres en un fichero 

    ftell  devuelve la posición actual del fichero como número de bytes 

    fseek  sitúa el puntero de un fichero en una posición aleatoria 

    fsetpos  cambia la posición actual de un fichero 

    fread  lee diferentes tamaños de datos de un fichero 

    fwrite 

    envía,  desde  el  array  apuntado  por  puntero,  hasta  nmemb  de  elementos cuyo  tamaño  es  especificado  por  tamanyo.  El indicador  de  posición  de ficheros es avanzado por el número de caracteres escritos correctamente. Si existe un error, el valor resultante del  indicador de posición de ficheros es indeterminado. 

    getc  devuelve un carácter desde un fichero 

    getchar  igual que getc 

    gets lee caracteres de entrada hasta que encuentra un salto de línea, y los almacena en un único argumento. 

    printf, fprintf, sprintf  snprintf  

    usados para imprimir salidas de datos 

    vprintf   también utilizado para imprimir salidas 

  • 8/17/2019 20102TTT103IC02T106

    55/170

    Algoritmo y Estructura de Datos I 

    54

    perror 

    escribe 

    un 

    mensaje 

    de 

    error 

    stderr 

    putc  devuelve un carácter de un fichero 

    putchar, fputchar 

    igual que putc(stdout) 

    scanf, fscanf, sscanf  

    utilizado para introducir entradas. 

    vfscanf, vscanf, vsscanf  

    también utilizado para introducir entradas. 

    setbuf  Esta función es equivalente a la función setvbuf  pasando los valores  _IOFBF para modo y BUFSIZ para tamaño, o (si acumulador es un puntero nulo), con el valor  _IONBF para modo. 

    setvbuf  

    sólo  puede  ser  usada  después  de  que  el  stream  apuntado  por  stream  ha sido asociado con un fichero abierto y antes de otra operación cualquiera es llevada acabo al stream. El argumento modo determina cómo stream será almacenado  según  lo  siguiente:  _IOFBF  ocasiona  la  entrada/salida  a  ser completamente  almacenado;   _IOLBF  ocasiona  la  entrada/salida  a almacenar  por  líneas;   _IONBF  ocasiona  la  entrada/salida  a  no  ser almacenado.  Si  acumulador  no  es  un  puntero  nulo,  el  array  al  que  es 

    apuntado 

    puede 

    ser 

    usado 

    en 

    vez 

    de 

    la 

    acumulación 

    adjudicada 

    por 

    la 

    función setvbuf. El argumento tamanyo específica el tamaño del array. 

    tmpnam 

    Genera una cadena de caracteres que es un nombre válido para ficheros y que  no  es  igual  al  nombre  de  un  fichero  existente.  La  función  tmpnam genera una cadena diferente cada vez que es llamada, hasta un máximo de TMP_MAX  veces.  Si  la  función  es  llamada  más  veces  que  TMP_MAX,entonces  el  comportamiento  de  la  función  está  definido  según  la implementación del compilador. 

    ungetc 

    puts  imprime una de cadena de caracteres 

    Funciones de Entrada/Salida Las  funciones  de  entrada/salida  permiten  al  programa  comunicarse  con  el  exterior.  Son utilizadas para sacar determinadas informaciones por la pantalla y capturar valores por el teclado. Son estándar de  la propia  librería de C por  lo que no hay necesidad de definirlas de nuevo. 

  • 8/17/2019 20102TTT103IC02T106

    56/170

      Algoritmo y Estructura de Datos I 

    55

    Función printf() Lee datos del programa (variables, resultados de operaciones, frases, mensajes, etc.) y los envía a la pantalla. El formato es el siguiente: 

    printf(“Cadena de control”, variables, operaciones, ...); 

    La cadena de control se usa para escribir mensajes, identificar el tipo de dato que se va a mostrar,  indicar  controles  tales  como:  salto  de  línea,  salto  de  página,  etc.  Los identificadores empleados son los siguientes: 

    Un número colocado entre el % y el orden de formato, actúa como especificador mínimo 

    de 

    ancho 

    de 

    campo. 

    Este 

    especificador 

    completa 

    la 

    salida 

    con 

    blancos 

    ceros 

    para 

    asegurar que al menos es  la  longitud mínima. Si  la cadena o el número a representar es mayor  que  el  campo  mínimo,  el  campo  se  amplía  para  imprimir  la  cadena  o  el  número completo. 

    Ejemplos: 

    %5d  ajuste a la derecha, rellena con espacios %05d   juste a la derecha, rellena con ceros %10.4f   ajuste a la derecha, rellena con espacios y cuatro decimales %‐10.2f   ajuste a la izquierda, rellena con espacios y dos decimales 

    Caracteres de control son: 

    Control  Efecto en pantalla 

    \n  cambia de línea \r  retorno de carro \t  tabulador \b  retroceso del cursor una posición \f   cambio de página 

  • 8/17/2019 20102TTT103IC02T106

    57/170

    Algoritmo y Estructura de Datos I 

    56

    \\  barra atrás (\) \’  apóstrofe (‘) \”  comillas (“) 

    Función scanf() Esta función, lee datos del teclado y los entrega al programa. El formato es el siguiente: 

    scanf(“Cadena de control”, variable, variable, ...); 

    La  cadena  de  control  se  usa  para  identificar  el  tipo  de  dato  que  se  va  a  introducir  o capturar. Los  identificadores empleados son  los mismos que  los empleados en  la función printf(). 

    La  variable  o  variables  que  se  van  a  introducir  tendrán  que  ir  acompañadas  delante  del nombre  por el  signo  (&).  Si  el  dato que  se va a  introducir es  una  tira  de  caracteres  tipo char[ ], no es necesario el signo. 

    Ejemplo: 

    /* Programa de empleo de printf() y scanf() */ main() { int edad; 

    char nombre[20];

     

    printf(“Introduce nombre: \n“); scanf(“%s”, nombre); printf(“Introduce edad: \n”); scanf(“%d”,&edad); printf(“Tu nombre es %s y tienes %d años. \n”, nombre, edad); } 

    Librería conio.h Las funciones de conio (CONsole Input Output) permiten, como las de Ncurses, cambiar el 

    color del

     texto

     y del

     fondo,

     mostrar

     caracteres

     en

     cualquier

     posición

     de

     la

     consola,

     leer

     

    datos  de  entrada  sin  necesidad  de  pulsar  intro,  y  un  montón  de  cosas  más.  Eso  sí,  es bastante más restrictiva que Ncurses en otros aspectos, como la definición y manipulación de ventanas. 

    Conio es una librería no estándar. Estaba disponible en la mayor parte de los compiladores de C para entornos MS‐DOS y Windows 3.x, pero había diferencias sustanciales entre unas implementaciones y otras, precisamente debido a que la librería no es estándar. 

  • 8/17/2019 20102TTT103IC02T106

    58/170

      Algoritmo y Estructura de Datos I 

    57

    En  lenguaje C esta  librería contiene  los prototipos de  las funciones, macros, y constantes para preparar y manipular la consola en modo texto en el entorno de MS‐DOS. 

    Lee un solo carácter directamente desde el teclado, sin mostrar tal carácter en pantalla. 

    La función getch retorna el carácter leído desde el teclado. 

    Ejemplo: