You are on page 1of 78

ANTOLOGIA ALGORITMOS Y LENGUAJES DE PROGRAMACIN

LIC. SUSANA HERNANDEZ RODRIGUEZ DOCENTE DEL ITSP ING. INDUSTRAL 2008

PRESENTACIN

En este material contiene los objetivos que se deben lograr al finalizar la unidad, el mtodo de evaluacin del aprendizaje y el contenido. En un mundo cambiante de tecnologa como se tiene el da de hoy se hace necesario evaluar y estudiar parte de esa tecnologa. Las computadoras, el hardware, el software, las grandes mquinas que invaden nuestro mundo requieren de un estudio.

Igualmente contiene los temas relacionados con los lenguajes de programacin. Bsicamente se presenta la estructura para conocer de donde surge la tecnologa que se est usando. La informacin en este tema a cambiando a pasos agigantados aun cuando los lenguajes de programacin son menos cambiantes.

DATOS DE LA MATERIA
Carrera: Ingeniera Industrial Clave de la asignatura: INM-0407 Horas teora-horas prctica-crditos: 3-2-8

OBJETIVOS GENERALES
El alumno: Conocer las tendencias actuales de tecnologa Identificar cada uno de los elementos de un sistema computacional Enlistar las caractersticas de cada familia de sistemas operativos Identificar los diferentes productos de software que existen. Utilizara como herramienta de trabajo alguno de esos recursos

INDICE DE CONTENIDO

I. INTRODUCCIN A LA COMPUTACIN
1.1 Nuevas tecnologas de la informacin 1.1.1 Evolucin de las tecnologas

1.2 Elementos de un sistema computacional 1.2.1 Hardware 1.2.2 Software 1.2.3 Firmware

1.3 Clasificacin de los Sistemas Operativos 1.3.1 Familia Windows 1.3.2 Arquitectura Macintosh 1.3.3 Unix 1.3.4 Linux

1.4 Paquetera de software 1.4.1 Paquetera de Office 1.4.2 Modelos de Base de Datos

1.1 Nuevas Tecnologas de la Informacin


1.1.1 EVOLUCIN DE LAS TECNOLOGAS
Las TI son principalmente la informtica y afines, debido a su facilidad para adoptar soluciones, cuando se implanta el SI, almacn acceso de datos, proceso rpido y con pocos errores, comunicaciones automticas entre procesos, pero muchas veces la implantacin de un SI se realiza de forma deficiente por no entender los usuarios, las posibilidades de las TI, o por haber montado el SI alrededor de una TI previamente incorporada. Las TI hacen que se cambie la manera de realizar las operaciones, respecto a la que se vena haciendo en la empresa, ya que las TI llevan consigo una propia forma de actuar, por ello deberemos adaptar a los usuarios y la organizacin a las nuevas formas de ejecutar las operaciones, incluyendo estos mtodos cuando diseemos el SI. Adems es importante realizar un seguimiento de las TI y mantener una actitud crtica acerca de los cambios que se producen, para encontrar las que mejor se ajusten al SI de la empresa, por ello las TI deben llevarnos a reconsiderar la forma de actuar para que el SI funcione adecuadamente a lo largo del tiempo, intentando que las TI aporten mejores mtodos para realizar las tareas y obtener una mayor productividad de ellas, pues el desconocimiento de las TI nos puede llevar a una situacin improductiva, o forzarnos a realizar las tareas de forma peor, por no ajustarse a nuestro SI. Para evitar estos resultados, es necesario conocer las TI en trminos de lo que nos pueden aportar a nuestro SI, pero siempre dentro de la perspectiva del funcionamiento de la empresa. Si utilizamos las TI para redisear el SI, nos obligamos a replantearnos la forma de realizar ciertas actividades y las consecuencias que podemos obtener sern: la anticipacin puede ser un xito en la implantacin, mejorando el esfuerzo de la empresa, (realizando las aplicaciones de forma paulatina). Si no anticipamos la reaccin de los usuarios, el resultado ser imprevisible y conducir casi seguro al fracaso, por no adaptarse los usuarios a las nuevas tecnologas. Las principales aportaciones de las TI al mundo de la empresa son:

INFORMTICA:

NUEVAS TECNOLOGAS DE LA INFORMACIN

OFIMTICA

El proceso de incorporacin de las TI a los SI, afecta a toda la empresa (organizacin, estructura, control...) y no slo al SI, por eso para que sea un xito la implantacin de los avances tecnolgicos, hay que coordinar estos avances con todas las reas de la empresa, para que el SI resultante sea un conjunto armonioso y que se adapte perfectamente a la estructura de la empresa. Este enfoque de planteamiento global, implica que la implantacin de las TI debe ser compatible con la poltica general de la organizacin, y deber materializarse en un plan estratgico para el sistema informtico que vamos a utilizar, como soporte de las necesidades existentes tanto a corto como a largo plazo, teniendo en consideracin los objetivos generales de la organizacin, y ser una expresin lo ms real posible de la poltica informtica adoptada. Por todo ello, la direccin debe tener una participacin activa en el proceso de planificacin y diseo y la implantacin de las TI dentro del SI, en caso contrario podemos tener problemas en la eleccin de las aplicaciones prioritarias a utilizar, tanto en el diseo de soluciones para secuencias de procesos (decisiones estructuradas y operativas), como en los intervalos de decisin o decisiones no estructuradas que no tienen bien definidas sus necesidades.

Primera Generacin (1951 -1958) Usaban tubos al vaco para procesar informacin. Usaban tarjetas perforadas para entrar los datos y los programas. Usaban cilindros magnticos para almacenar informacin e instrucciones internas. Eran sumamente grandes, utilizaban gran cantidad de electricidad, generaban gran cantidad de calor y eran sumamente lentas. Se comenz a utilizar el sistema binario para representar los datos. Segunda Generacin (1958 - 1964) Usaban transistores para procesar informacin. Los transistores eran ms rpidos, pequeos y ms confiables que los tubos al vaco. 200 transistores podan acomodarse en la misma cantidad de espacio que un tubo al vaco. Usaban pequeos anillos magnticos para almacenar informacin e instrucciones. Se mejoraron los programas de computadoras que fueron desarrollados durante la primera generacin. Se desarrollaron nuevos lenguajes de programacin como COBOL y FORTRAN, los cuales eran comercialmente accesibles. Se usaban en aplicaciones de sistemas de reservaciones de lneas areas, control del trfico areo y simulaciones de propsito general. La marina de los Estados Unidos desarrolla el primer simulador de vuelo, "Whirlwind I". Surgieron las minicomputadoras y los terminales a distancia. Se comenz a disminuir el tamao de las computadoras. Tercera Generacin (1964 - 1971) Se desarrollaron circuitos integrados para procesar informacin. Se desarrollaron los "chips" para almacenar y procesar la informacin. Un "chip" es una pieza de silicio que contiene los componentes electrnicos en miniatura llamados semiconductores. Los circuitos integrados recuerdan los datos, ya que almacenan la informacin como cargas elctricas. Surge la multiprogramacin. Las computadoras pueden llevar a cabo ambas tareas de procesamiento o anlisis matemticos. Emerge la industria del "software". Se desarrollan las minicomputadoras IBM 360 y DEC PDP-1. Otra vez las computadoras se tornan ms pequeas, ms ligeras y ms eficientes. Consuman menos electricidad, por lo tanto, generaban menos calor. Cuarta Generacin (1971 - 1988) Se desarroll el microprocesador. Se colocan ms circuitos dentro de un "chip". "LSI - Large Scale Integration circuit". "VLSI - Very Large Scale Integration circuit". Cada "chip" puede hacer diferentes tareas. Un "chip" sencillo actualmente contiene la unidad de control y la unidad de aritmtica/lgica. El tercer componente, la memoria primaria, es operado por otros "chips".

Se reemplaza la memoria de anillos magnticos por la memoria de "chips" de silicio. Se desarrollan las microcomputadoras, o sea, computadoras personales o PC. Se desarrollan las supercomputadoras.

Quinta Generacin (1983 - al presente) Inteligencia artificial: Es el campo de estudio que trata de aplicar los procesos del pensamiento humano usados en la solucin de problemas a la computadora. La robtica: Es el arte y ciencia de la creacin y empleo de robots. Un robot es un sistema de computacin hbrido independiente que realiza actividades fsicas y de clculo. Estn siendo diseados con inteligencia artificial, para que puedan responder de manera ms efectiva a situaciones no estructuradas. Los sistemas expertos. Son programas de ordenador, destinados a simular el razonamiento humano de expertos en un determinado campo, para resolver problemas concretos, poseen los siguientes componentes: Base de conocimientos con reglas de inferencia y hechos relevantes para los expertos. Memoria de trabajo que recoge la descripcin del problema. Motor de inferencia, interpreta y aplica las reglas, a travs de un programa informtico que recoge el razonamiento de los expertos. Subsistema de explicaciones, permite obtener explicaciones parciales, de cada parte del proyecto que se est analizando. Subsistema de adquisicin de conocimientos, permite aadir modificaciones o nuevas aplicaciones en el sistema. Las funciones que desarrollan los sistemas expertos son: Interpretacin de fenmenos a partir de datos observados. Previsiones o inferencia de consecuencias probables. Diagnstico de problemas segn los datos observados. Configuracin de determinadas especificaciones y restricciones del modelo. Planificacin de la secuencia de acciones a realizar, teniendo en cuenta las restricciones. Control resultados-previsiones. Formacin en la resolucin de problemas en la empresa, por el mtodo de consulta. Toma de decisiones en una secuencia de actividades a partir de la identificacin del problema. Los sistemas de expertos an estn en fase de desarrollo, pero constituyen un aprendizaje organizacional en la forma de tomar decisiones. Para perder la rigidez, tendremos que disear un proceso flexible que nos permita realizar aproximaciones sucesivas a travs de prototipos, as como la participacin de los responsables de tomar decisiones en los SAD y no generar desequilibrios en el crecimiento de las TI en la empresa.

BIBLIOGRAFA http://coqui.lce.org/ialvarez/GENERA.HTM

1.2 Elementos de un sistema computacional


1.2.1 HARDWARE
Se denomina hardware o soporte fsico al conjunto de elementos materiales que componen un ordenador. En dicho conjunto se incluyen los dispositivos electrnicos y electromecnicos, circuitos, cables, tarjetas, armarios o cajas, perifricos de todo tipo y otros elementos fsicos. El hardware se refiere a todos los componentes fsicos (que se pueden tocar) de la computadora: discos, unidades de disco, monitor, teclado, mouse, impresora, placas, chips y dems perifricos. En cambio, el software es intocable, existe como ideas, conceptos, smbolos, pero no tiene sustancia. Una buena metfora sera un libro: las pginas y la tinta son el hardware, mientras que las palabras, oraciones, prrafos y el significado del texto son el software. Una computadora sin software sera tan intil como un libro con pginas en blanco.

1.2.2 SOFTWARE
Software es la expresin de un conjunto de instrucciones mediante palabras, cdigos, planes o en cualquier otra forma que al ser incorporados en un dispositivo de lectura automatizada, es capaz de hacer que un computador ejecute una tarea u obtenga un resultado. La proteccin del programa de ordenador comprende tambin la documentacin tcnica y los manuales de uso. TIPOS DE SOFTWARE Existe variedad de clasificacin de software, pero por cuestiones acadmicas se ha dividido en: Segn la funcin. Segn el grado de estandarizacin o uso.

Segn la funcin.- Esta clasificacin para nuestro tema es solamente ilustrativa, dentro de este bloque encontramos. Software de base.- Son los que controlan el funcionamiento interno del ordenador, perifricos que sirva para el correcto funcionamiento de otros programas dentro de ellos se pueden destacar, software de memoria (Memmaker), sistemas operativos (DOS 6.00) lenguaje de programacin (Basic), son los que estn inmersos en el ordenador. Software aplicativos.- Son programas de montos o funciones especficos, que el usuario, adquiere de acuerdo a sus necesidades; entre las cuales podemos mencionar: - Hojas de clculo (Quattro Pro) - Procesadora de Textos (Word Perfect) - Base de datos (Dbase) - Diseo Grfico (Corel Draw) Segn el uso o estandarizacin.- Existen 3 sub divisiones que son considerados software aplicativos debido a que ellos son requeridas atendiendo la necesidad del usuario, y que a mencionar son: El software aplicativo.- Tambin llamado package, estos programa estn dirigidos al mercado en general, lo cual ha originado el origen de empresas creadoras de software, que estn

pues estas son propia nos bien definidos, bien es hoja calculo, base de datos, o conjuntos de programas en grupo. El software a medida.- Tambin denominada (Custom mode), son los creados por empresas para sus propias actividades, tambin son susceptibles de modificacin El software de acuerdo al cliente.- Se les denomina (customized), son programas estndar, modificado de acuerdo a la necesidad de un usuario en particular. La legislacin no menciona quien es el autorizado de hacer esta modificacin. El software es un componente esencial de toda actividad basado en el uso de la informtica.

1.2.2 FIRMWARE
Firmware o Programacin en Firme, es un bloque de instrucciones de programa para propsitos especficos, grabado en una memoria tipo ROM, que establece la lgica de ms bajo nivel que controla los circuitos electrnicos de un dispositivo de cualquier tipo. Al estar integrado en la electrnica del dispositivo es en parte hardware, pero tambin es software, ya que proporciona lgica y se dispone en algn tipo de lenguaje de programacin. Funcionalmente, el firmware es el intermediario (interfaz) entre las rdenes externas que recibe el dispositivo y su electrnica, ya que es el encargado de controlar a sta ltima para ejecutar correctamente dichas rdenes externas. Encontramos Firmware en memorias ROM de los sistemas de diversos dispositivos perifricos, como en monitores de video, unidades de disco, impresoras, etc., pero tambin en los propios microprocesadores, chips de memoria principal y en general en cualquier circuito integrado. El firmware es una combinacin de software (programa) y hardware (en este caso, chips). En su conjunto son Chips que poseen dentro pequeos programas que son guardados dentro y que se denominan Firmware. Estos chips normalmente son de los siguientes tipos: ROM(s) Read Only Memory (Memoria de solo lectura) PROM(s) Programmable read-only memory (memoria programable de solo lectura) EPROM(s) Erasable programmable read-only memory (memoria programable y con capacidad de ser borrada) El firmware en PROM o EPROM est diseado para ser modificado si es necesario a travs de una actualizacin de software.

BIBLIOGRAFIA http://es.wikipedia.org/wiki/Soporte_f%C3%ADsico www.escomposlinux.org/hardware/ http://es.wikipedia.org/wiki/Firmware

10

1.3 Clasificacin de los sistemas operativos


1.3.1FAMILIA WINDOWS
Microsoft Windows es el nombre de una familia de sistemas operativos no libres desarrollados por la empresa de software Microsoft Corporation. Todos ellos tienen en comn el estar basados en una interfaz grfica de usuario basada en el paradigma de ventanas (de ah su nombre en ingls). Las versiones de Windows que existen hasta el momento se basan en dos lneas separadas de desarrollo que finalmente convergen en una sola con la llegada de Windows XP. Windows 95 (nombre clave: Chicago) es un sistema operativo grfico hbrido entre 16 y 32 bits. Windows 98 (nombre clave: Memphis) es un sistema operativo grfico hbrido entre 16 y 32 bits. Windows 98 fue construido sobre el anterior Windows 95, e inclua mejor soporte para estndares de hardware como USB, MMX y AGP. Otras opciones incluyen el sistema de archivos FAT32, soporte para mltiples monitores, soporte para WebTV y la integracin de Internet Explorer como componente esencial del sistema. Windows Me (Millennium Edition). ste sistema operativo est basado en Windows 95 y Windows 98. Principalmente est compuesto por actualizaciones relativamente pequeas, como Internet Explorer 5.5. Una de los cambios ms significativos fue la introduccin del reproductor de medios Windows Media Player 7, el cual estaba pensado para competir con RealPlayer, el reproductor de medios dominante en aquel momento. Windows XP (cuyo nombre en clave inicial fue Whistler) Microsoft inicialmente sac a la venta dos versiones: Home y Professional. La versin Home est destinada al mercado domstico, mientras que la versin Professional dispone de caractersticas adicionales diseadas para entornos empresariales, como la autenticacin por red y el soporte multiprocesador. Las letras "XP" provienen de la palabra experience. Windows Server 2003 es una versin mejorada del Windows 2000 utilizado en una topologa de red Servidor. Existen varias versiones en el mercado, en funcin del servicio necesitado. Estas versiones son: Estndar Enterprise Datacenter Web

1.3.2 ARQUITECTURA MACINTOSH


Mac OS X es la ltima versin de Mac OS, el sistema operativo de la familia de ordenadores Macintosh. Mac OS X fue comercializado por primera vez en el ao 2001 y est basado en BSD y Mach microkernel, y proviene directamente de NextStep. Su ncleo se llama Darwin y cualquier persona puede aportar contribuciones encaminadas a mejorar la plataforma. Por ser de tipo Unix, Mac OS X pertenece a la familia de los sistemas operativos multiusuario, y dispone de una interfaz grfica de usuario GUI denominada Aqua, desarrollada por Apple. Mac OS X Server fue lanzado tambin en el ao 2001 y se diferencia por incorporar diferentes herramientas administrativas para la gestin de redes, y servicios de red como un servidor de correo, Samba server, un servicio de directorio, y un servidor de nombre de dominio. Las versiones que se crearon fueron las siguientes:

11

Mac OS X v.10.0 (Cheetah) Mac OS X v.10.1 (Puma) Mac OS X v.10.2 (Jaguar) Mac OS X v.10.3 (Panther) Mac OS X v.10.4 (Tiger) Mac OS X v.10.5 (Leopard)

1.3.3 UNIX
El inicio del desarrollo de este sistema operativo (que se cree es uno de los ms influyentes en la historia de la computacin) fue muy particular, pues nadie habra predicho el xito de UNIX despus de su primera encarnacin. Las herramientas o comandos ms bsicos de UNIX son: Navegacin/creacin de directorios/archivos: is, cd, pwd, mkdir, rm, rmdir, cp Edicin/visin de archivos: touch, more, ed, vi, emacs. Procesamiento de textos: echo, cat, grep, sort, uniq, sed, awk, tail, head. Comparacin de archivos: comm, cmp, diff, patch Administracin del sistema: chmod, chown, ps, find, xargs, sd, w, who. Comunicacin: mail, telnet, ssh, ftp, finger.

1.3.4

LINUX

El logotipo oficial de Linux es el pingino Tux Linux es un sistema operativo y un ncleo. Es uno de los paradigmas del desarrollo de software libre (y de cdigo abierto), donde el cdigo fuente est disponible pblicamente y cualquier persona puede libremente usarlo, modificarlo y/o redistribuirlo. El trmino "Linux" estrictamente se refiere al ncleo Linux, pero es ms comnmente utilizado para describir al sistema operativo tipo Unix, que utiliza primordialmente filosofa y metodologas libres, tambin conocido como GNU/Linux, que est formado mediante la combinacin del ncleo Linux con las bibliotecas y herramientas del proyecto GNU y de muchos otros proyectos/grupos de software (libre o no). El ncleo no es parte oficial del proyecto GNU (el cual posee su propio ncleo en desarrollo, llamado Hurd), pero es distribuido bajo los trminos de la licencia GPL (GNU General Public License). Una distribucin Linux, o distribucin GNU/Linux (abreviada con frecuencia diestro) es un conjunto de aplicaciones reunidas por un grupo, empresa o persona para permitir instalar fcilmente un sistema Linux (tambin llamado GNU/Linux). Existen numerosas distribuciones Linux. Cada una de ellas puede incluir cualquier nmero de software adicional (libre o no), como algunos que facilitan la instalacin del sistema y una enorme variedad de aplicaciones, entre ellos, entornos grficos, suites ofimticas, servidores WEB, servidores de correo, servidores FTP, etc.

BIBLIOGRAFIA http://es.wikipedia.org/wiki/Sistema_operativo http://encyclopedie-es.snyke.com/articles/sistema_operativo.html

12

1.4 Paquetera de Software


1.4.1PAQUETERA DE OFICCE
Microsoft Word es un procesador de textos muy popular creado por Microsoft, integrado en la suite ofimtica Microsoft Office. Originalmente desarrollado por Richard Brodie para el ordenador de IBM con el sistema operativo DOS en 1983. Se crearon versiones posteriores Apple Macintosh en 1984 y Microsoft Windows en 1989. Microsoft Word utiliza un formato nativo cerrado y muy utilizado, comnmente llamado DOC (utiliza la extensin de archivo.Doc). Por la amplsima difusin del Microsoft Word, este formato se ha convertido en un estndar de facto en el que transferir textos con o sin formato, o hasta imgenes, siendo preferido por muchos usuarios antes que otras opciones como .txt para el texto sin formato o .jpg para grficos. El uso de este formato es muy criticado por la comunidad del software libre por impedir la portabilidad de un documento DOC a otro formato o a otro programa. Desde esta comunidad se proponen alternativas a este editor, quizs una de las ms interesantes sea Writer de la suite libre de OpenOffice.org, con una funcionalidad similar y una compatibilidad muy grande con la mayora de los documentos en formato de Word.

1.4.2 MODELOS DE BASES DE DATOS


Una de las caractersticas fundamentales de los sistemas de bases de datos es que proporcionan cierto nivel de abstraccin de datos, al ocultar las caractersticas sobre el almacenamiento fsico que la mayora de usuarios no necesita conocer. Los modelos de datos son el instrumento principal para ofrecer dicha abstraccin. Un modelo de datos es un conjunto de conceptos que sirven para describir la estructura de una base de datos: los datos, las relaciones entre los datos y las restricciones que deben cumplirse sobre los datos. Los modelos de datos contienen tambin un conjunto de operaciones bsicas para la realizacin de consultas (lecturas) y actualizaciones de datos. Adems, los modelos de datos ms modernos incluyen conceptos para especificar comportamiento, permitiendo especificar un conjunto de operaciones definidas por el usuario. Los modelos de datos se pueden clasificar dependiendo de los tipos de conceptos que ofrecen para describir la estructura de la base de datos. Los modelos de datos de alto nivel, o modelos conceptuales, disponen de conceptos muy cercanos al modo en que la mayora de los usuarios percibe los datos, mientras que los modelos de datos de bajo nivel, o modelos fsicos, proporcionan conceptos que describen los detalles de cmo se almacenan los datos en el ordenador. Los conceptos de los modelos fsicos estn dirigidos al personal informtico, no a los usuarios finales. Entre estos dos extremos se encuentran los modelos lgicos, cuyos conceptos pueden ser entendidos por los usuarios finales, aunque no estn demasiado alejados de la forma en que los datos se organizan fsicamente. Los modelos lgicos ocultan algunos detalles de cmo se almacenan los datos, pero pueden implementarse de manera directa en un ordenador. Los modelos conceptuales utilizan conceptos como entidades, atributos y relaciones. Una entidad representa un objeto o concepto del mundo real como, por ejemplo, un empleado de la empresa inmobiliaria o una oficina. Un atributo representa alguna propiedad de inters de una entidad como, por ejemplo, el nombre o el salario del empleado. Una relacin describe una interaccin entre dos o ms entidades, por ejemplo, la relacin de trabajo entre un empleado y su oficina.
BIBLIOGRAFIA http://www3.uji.es/~mmarques/f47/apun/node32.html http://es.wikipedia.org/wiki/Base_de_datos

13

II. DESARROLLO DE LGICA ALGORTMICA


2.1 Metodologa para la solucin de problemas

2.2 Metodologa para el diseo de software: Top Down, Bottom up, Modular y Programacin estructurada.

2.3 Definicin de lenguajes algortmicos 2.3.1 Elementos y reglas de la representacin grafica y manuscrita de los algoritmos (diagrama de flujo, diagrama N-S, diagrama estructurado y pseudocdigo. 2.3.2 Implementacin de algoritmos secuenciales (utilizando notacin algebraica)

2.4 Pruebas y depuracin

14

PRESENTACIN

En este material contiene los objetivos que se deben lograr al finalizar la unidad, el mtodo de evaluacin del aprendizaje y el contenido. En un mundo cambiante de tecnologa como se tiene el da de hoy se hace necesario evaluar y estudiar parte de esa tecnologa. Las computadoras, el hardware, el software, las grandes mquinas que invaden nuestro mundo requieren de un estudio.

Igualmente contiene los temas relacionados con los lenguajes de programacin. Bsicamente se presenta la estructura para conocer de donde surge la tecnologa que se est usando. La informacin en este tema a cambiando a pasos agigantados aun cuando los lenguajes de programacin son menos cambiantes.

15

2.1 Metodologa para la solucin de problemas


2.1.1 PASOS PARA LA SOLUCIN DE PROBLEMAS
Un algoritmo es el conjunto de operaciones y procedimientos que deben seguirse para resolver un problema. La palabra "algoritmo" deriva del nombre latinizado del gran matemtico rabe Mohamed Ibn Moussa Al Kow Rizmi.

Diferencia entre el lenguaje algortmico y el informtico. El lenguaje algortmico es aquel por medio del cual se realiza un anlisis previo del problema a resolver y encontrar un mtodo que permita resolverlo. El conjunto de todas las operaciones a realizar, y el orden en el que deben efectuarse, se le denominan algoritmo. El lenguaje informtico es aquel por medio del cual dicho algoritmo se codifica a un sistema comprensible por el ordenador o computadora. Este tipo de lenguaje es ms cercano a la mquina que al ser humano y podemos distinguir distintos tipos dependiendo de la proximidad a la maquina. Se denomina lenguaje de alto nivel aquel que es ms cercano a la comprensin humana y lenguaje de bajo nivel a aquellos que son ms comprensibles por la mquina. En concreto, nosotros vamos a estudiar un lenguaje en la frontera de uno de bajo nivel. Es por ello que el 'C' es tan potente y rpido, pues las funciones principales representan las funciones ms bsicas del ordenador. Planteamientos de Problemas. Lo que pretende un algoritmo es sintetizar de alguna forma una tarea, clculo o mecanismo antes de ser transcrito al ordenador. Los pasos que hay que seguir son los siguientes: - Anlisis previo del problema. - Primera visin del mtodo de resolucin. - Descomposicin en mdulos. - (Programacin estructurada). - Bsqueda de soluciones parciales. - Ensamblaje de soluciones finales.

La clasificacin de los lenguajes algortmicos puede anunciarse de la siguiente manera: a) Lenguaje natural: Es aquel que describe los pasos a seguir utilizando un vocabulario cotidiano. b) Lenguaje de diagrama de flujo: Es aquel que se vale de diversos smbolos para representar las ideas o acciones a desarrollar. c) Lenguaje natural de programacin: Son aquellos que estn orientadas a la solucin de problema que se defienden de una manera precisa. d) Lenguaje de programacin de algoritmos: Es aquel que se utiliza para introducir en la computadora un lenguaje especfico.

16

SIMBOLOS PARA EL DISEO DE ALGORITMOS


INICIO / TERMINAL

ENTRADA / LECTURA

PROCESO

DECISIN

DICISIN MULTIPLE CONECTAR

IMPRESORA

INDICADOR DE DIRECCION

= OPERADORES ARITMTICOS (+, -, *, / )

= OPERADORES RELACIONADOS ( >, <, <, >, =, # )

17

EJEMPLOS: 1. El maestro de matemticas desea saber el porcentaje de hombres y mujeres que hay en el grupo de Ingeniera Industrial. INICIO HOMBRES MUJERES

TOTAL = HOMBRES + MUJERES

PM = MUJERES/ TOTAL * 100 PH = HOMBRES / TOTAL * 100 PH, PM

FIN

2. Determinar si un alumno es bueno, regular o malo en base a su promedio el cual se calcula de la calificacin final de tres materias considerando que si el promedio es mayor o igual a 9 el alumno es bueno, si el promedio es menor que 9 y mayor o igual a 7 el alumno es regular y si es menor que 7 el alumno es malo. 3. Determinar el costo de las llamadas telefnicas dependiendo de la zona geogrfica en la que se encuentra el usuario y el nmero de minutos hablados. CLAVE 12 15 18 ZONA AMERICA DEL NORTE AMERICA DEL SUR AMERICA CENTRAL PRECIO 2 3 4

BIBLIOGRAFIA http://www-etsi2.ugr.es/alumnos/mlii/Algoritmo.htm http://es.wikipedia.org/wiki/Algoritmo

18

2.2 Metodologa para el diseo de software


2.2.1 Top Down
El diseo top down consiste en encontrar la solucin de un problema mediante la aplicacin sistemtica de descomposicin en subproblemas cada vez ms simples (aplicando la mxima de dividir para vencer).

2.2.2 Bottom Up
Con el diseo botton-up el sistema es empezar por el final, sabiendo ya como resolver el problema (y que componentes reutilizables tiene ya a su disposicin). Desde all, puede ir trabajando hacia arriba, hasta la solucin del problema principal. Los componentes reutilizables, deben de ser tan "modulares" como sea posible. Un modulo es un componente de un sistema mayor, que interacta con el resto del sistema de una forma simple, perfectamente definida, por medio de mensajes. La idea es que un modulo pueda ser conectado a un sistema. Los detalles de lo que hace internamente el modulo no es importante al conjunto del sistema, mientras que el modulo realice correctamente la labor asignada. Esto es lo que se llama informacin oculta y es uno de los principios ms importantes de la ingeniera de software.

2.2.3 Modular
Uno de los mtodos ms conocidos para resolver un problema es dividirlo en problemas ms pequeos, llamados subproblemas. De esta manera, en lugar de resolver una tarea compleja y tediosa, resolvemos otras ms sencillas y a partir de ellas llegamos a la solucin. Esta tcnica se usa mucho en programacin ya que programar no es ms que resolver problemas, y se le suele llamar diseo descendente, metodologa del divide y vencers o programacin top-down. Es evidente que si esta metodologa nos lleva a tratar con subproblemas, entonces tambin tengamos la necesidad de poder crear y trabajar con subprogramas para resolverlos. A estos subprogramas se les suele llamar mdulos, de ah viene el nombre de programacin modular. En Pascal disponemos de dos tipos de mdulos: los procedimientos y las funciones.

2.2.4 Programacin estructurada


La programacin estructurada est basada en los siguientes puntos: 1. Diseo del programa de lo general a lo particular (top down). 2. Teorema de estructura. Todo programa puede ser diseado utilizando nicamente las estructuras bsicas: Secuencial, Alternativa o Repetitiva. Un programa, por largo y complejo que sea, se puede disear anidando convenientemente en tres estructuras bsicas. Esto ayudara mucho a que los programas sean fcilmente ledos por cualquier persona, a que el nmero de errores en el proceso de programacin sea bajo, a que los programas sean autodocumentados y a que puedan mantenerse fcilmente.

BIBLIOGRAFIA http://www.edu.aytolacoruna.es/aula/programacion/pascal/modular.htm http://www.edu.aytolacoruna.es/aula/programacion/pascal/modular.htm

19

2.3 Definicin de lenguajes algortmicos


2.3.1 Elementos y reglas de la representacin grfica y manuscrita de los algoritmos
Los diagramas de flujo (o flujogramas) son diagramas que emplean smbolos grficos para representar los pasos o etapas de un proceso. Tambin permiten describir la secuencia de los distintos pasos o etapas y su interaccin. Las personas que no estn directamente involucradas en los procesos de realizacin del producto o servicio, tienen imgenes idealizadas de los mismos, que pocas veces coinciden con la realidad. La creacin del diagrama de flujo es una actividad que agrega valor, pues el proceso que representa est ahora disponible para ser analizado, no slo por quienes lo llevan a cabo, sino tambin por todas las partes interesadas que aportarn nuevas ideas para cambiarlo y mejorarlo.

VENTAJAS DE LOS DIAGRAMAS DE FLUJO Favorecen la comprensin del proceso a travs de mostrarlo como un dibujo. El cerebro humano reconoce fcilmente los dibujos. Un buen diagrama de flujo reemplaza varias pginas de texto. Permiten identificar los problemas y las oportunidades de mejora del proceso. Se identifican los pasos redundantes, los flujos de los reprocesos, los conflictos de autoridad, las responsabilidades, los cuellos de botella, y los puntos de decisin. Muestran las interfaces cliente-proveedor y las transacciones que en ellas se realizan, facilitando a los empleados el anlisis de las mismas. Son una excelente herramienta para capacitar a los nuevos empleados y tambin a los que desarrollan la tarea, cuando se realizan mejoras en el proceso. DESARROLLO DEL DIAGRAMA DE FLUJO 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 estn incluidos en el proceso a describir y su orden cronolgico. Si el nivel de destalle definido incluye actividades menores, listarlas tambin. Identificar y listar los puntos de decisin. Construir el diagrama respetando la secuencia cronolgica y asignando los correspondientes smbolos. Asignar un ttulo al diagrama y verificar que est completo y describa con exactitud el proceso elegido.

20

2.3.2 Implementacin de algoritmos secuenciales


ESTRUCTURA SECUENCIAL Cuando se quiere indicar que unas determinadas acciones se deben realizar en secuencia, se escriben unas a continuacin de otras. Por ejemplo: Leer cantidad, precio Importe = cantidad * precio Imprime importe ESTRUCTURA ALTERNATIVA Si utilizamos una alternativa, es para indicar que segn el resultado cierto o falso de una expresin hay que realizar una accin u otra de las dos especificadas. En general, una estructura alternativa se escribe de la siguiente forma: IF expresin THEN Accin del then ELSE Accin del else ENDIF Por ejemplo, para calcular el importe de la venta de un determinado artculo, sabiendo que al comprar entre 1 y 15 unidades del mismo, el descuento es de un 10%, y si la compra es superior a 15 unidades, el descuento ser de un 15%, y escribimos: Leer artculo, cantidad, precio unitario Importe= cantidad* precio unitario IF cantidad>0 AND cantidad<16 THEN Importe= importe*0.9 ELSE Importe=importe*0.85 ENDIF Imprimir cantidad, precio unitario, importe

Si en el caso anterior simplemente nos dijeran: calcular el importe de la venta de un determinado artculo, sabiendo que al comparar ms de 10 unidades del mismo descuento es de un 10%, escrbiramos: Leer artculo,cantidad,precio unitario Importe=cantidad * precio unitario IF cantidad> 10 THEN Importe= importe*o.9 EDNIF Imprimir cantidad, precio unitario, importe

BIBLIOGRAFIA http://www.estrucplan.com.ar/Producciones/Entrega.asp?identrega=526

21

La ejecucin de una sentencia alternativa se realiza de la forma siguiente: 1. Se evala la expresin para ver si es cierta o falsa. 2. Si es cierta, se ejecutan todas las sentencias situadas despus de la palabra reservada THEN, y si es falsa, entonces se ejecutan las sentencias que estn despus de la palabra reservada ELSE, si es que sta existe, continuando la ejecucin en la siguiente sentencia en secuencia. En los ejemplos expuestos, se puede observar que la condicin expresada en la sentencia IF puede ser simple o compuesta. Cuando la condicin es simple, slo hay una expresin, y cuando es compuesta, hay varias expresiones unidas por los operadores lgicos AND (y) y OR (o)

2.4 Pruebas y depuracin


2.4.1Pruebas y depuracin
Una vez que se ha construido o escrito un programa en algn lenguaje de programacin, se requiere desarrollar un procedimiento sistemtico para establecer si se trata de un programa correcto. Los pasos bsicos de tal procedimiento sistemtico son los siguientes: Prueba y depuracin (demostracin). Un buen programador debe pensar en desarrollar un conjunto de casos prueba, junto con su cdigo. Un caso prueba es un conjunto de datos de entrada que junto con el programa produce una salida conocida de antemano, con los cuales se puede evaluar la funcionalidad y correcto del programa. Si el programa pasa todos los casos prueba, entonces podemos considerar que el programa es correcto.

EJERCICIO Determinar el tipo de compra que un cliente realizo, si la opcin es: 1234abarrotes: aplica el 15% de IVA a su compra materiales: aplica el 10 % de IVA a su compra perfumera: aplica el 8% de IVA a su compra farmacia: aplica el 5% de IVA a su compra

Determinar el tipo de compra ( si una cantidad par o impar) mandar a pantalla el sig. texto: subtot-iva a pag- tot comp- tipo com.

BIBLIOGRAFIA http://www.fisica.uson.mx/carlos/Nirvana/CComp/cursos/CC11/lecture7.html

22

III. CONOCIMIENTO DE PROGRAMACIN Y UN


LENGUAJE ESTRUCTURADO
3.1 Introduccin a la programacin 3.1.1 Definicin de programa 3.1.2 Definicin de programacin 3.1.3 Definicin de lenguaje de programacin

3.2 Introduccin y orgenes del lenguaje

3.3 Estructura bsica de un programa

3.4 Datos 3.4.1 Tipos de datos 3.4.2 Identificadores 3.4.3 Almacenamiento, direccionamiento y representacin en memoria. 3.4.4 Proposicin de asignacin.

3.5 Operadores, operandos y expresiones 3.5.1 Prioridad de operadores, evaluacin de expresiones

3.6 Proceso de creacin de un ejecutable.

23

PRESENTACIN

Este material contiene los objetivos que se deben lograr al finalizar la unidad, el mtodo de evaluacin del aprendizaje y el contenido. En un mundo cambiante de tecnologa como se tiene el da de hoy se hace necesario evaluar y estudiar parte de esa tecnologa. Las computadoras, el hardware, el software, las grandes mquinas que invaden nuestro mundo requieren de un estudio.

Igualmente contiene los temas relacionados con los lenguajes de programacin. Bsicamente se presenta la estructura para conocer de donde surge la tecnologa que se est usando. La informacin en este tema a cambiando a pasos agigantados aun cuando los lenguajes de programacin son menos cambiantes.

24

3.1 Introduccin a la programacin


3.1.1Definicin de programa
Un conjunto de rdenes para un ordenador. Un programa puede estar formado por apenas unas pocas rdenes (por ejemplo, uno que sume dos nmeros) o por varios miles de rdenes (como un programa de gestin completo para una empresa). Cuando se trata de un programa ya terminado que se compra, se suele hablar de una Aplicacin Informtica. Los programas se deben escribir en un cierto lenguaje de programacin. Los lenguajes de programacin que se acercan ms al lenguaje humano que al del ordenador reciben el nombre de "lenguajes de alto nivel" (como Pascal); los que se acercan ms al ordenador.

3.1.2 Definicin de programa


Programacin es el acto de crear un programa de computadora, un conjunto concreto de instrucciones que una computadora puede ejecutar. El programa se escribe en un lenguaje de programacin, aunque tambin se pueda escribir directamente en lenguaje de mquina, con cierta dificultad. Un programa se puede dividir en diversas partes, que pueden estar escritas en lenguajes distintos. La programacin estructurada es una teora de programacin que consiste en construir programas de fcil comprensin. La programacin estructurada es especialmente til, cuando se necesitan realizar correcciones o modificaciones despus de haber concluido un programa o aplicacin. Al haberse utilizado la programacin estructurada, es mucho ms sencillo entender la codificacin del programa, que se habr hecho en diferentes secciones. La programacin estructurada se basa en una metodologa de desarrollo de programas llamada refinamiento sucesivo: Se plantea una operacin como un todo y se divide en segmentos ms sencillos o de menor complejidad. Una vez terminado todos los segmentos del programa, se procede a unificar las aplicaciones realizadas por el pool de programadores. Si se ha utilizado adecuadamente la programacin estructurada, esta integracin debe ser sencilla y no presentar problemas al integrar la misma, y de presentar algn problema, ser rpidamente detectable para su correccin. La representacin grafica de la programacin estructurada se realiza a travs de diagramas de flujo o flow chart, el cual representa el programa con sus entradas, procesos y salidas. La programacin estructurada propone segregar los procesos en estructuras lo ms simple posibles, las cuales se conocen como secuencia, seleccin e interaccin. Ellas estn disponibles en todos los lenguajes modernos de programacin imperativa en forma de sentencias. Combinando esquemas sencillos se pueden llegar a construir sistemas amplios y complejos pero de fcil entendimiento.

3.1.3 Definicin de Lenguaje de programacin.


C es un lenguaje de programacin de propsito general que ofrece economa sintctica, control de flujo y estructuras sencillas y un buen conjunto de operadores. No es un lenguaje de muy alto nivel y ms bien un lenguaje pequeo, sencillo y no est especializado en ningn tipo de aplicacin. Esto lo hace un lenguaje potente, con un campo de aplicacin ilimitado y sobre todo, se aprende

25

rpidamente. En poco tiempo, un programador puede utilizar la totalidad del lenguaje. Este lenguaje ha sido estrechamente ligado al sistema operativo UNIX, puesto que fueron desarrollados conjuntamente. Sin embargo, este lenguaje no est ligado a ningn sistema operativo ni a ninguna mquina concreta. Se le suele llamar lenguaje de programacin de sistemas debido a su utilidad para escribir compiladores y sistemas operativos, aunque de igual forma se puede desarrollar cualquier tipo de aplicacin. La base del C proviene del BCPL, escrito por Martin Richards, y del B escrito por Ken Thompson en 1970 para el primer sistema UNIX en un DEC PDP-7. Estos son lenguajes sin tipos, al contrario que el C que proporciona varios tipos de datos. Los tipos que ofrece son caracteres, nmeros enteros y en coma flotante, de varios tamaos. Adems se pueden crear tipos derivados mediante la utilizacin de punteros, vectores, registros y uniones. El primer compilador de C fue escrito por Dennis Ritchie para un DEC PDP-11 y escribi el propio sistema operativo en Introduccin al lenguaje C (2). La base del C proviene del BCPL, escrito por Martin Richards, y del B escrito por Ken Thompson en 1970 para el primer sistema UNIX en un DEC PDP-7. Estos son lenguajes sin tipos, al contrario que el C que proporciona varios tipos de datos. Los tipos que ofrece son caracteres, nmeros enteros y en coma flotante, de varios tamaos. Adems se pueden crear tipos derivados mediante la utilizacin de punteros, vectores, registros y uniones. El primer compilador de C fue escrito por Dennis Ritchie para un DEC PDP-11 y escribi el propio sistema operativo en C. C trabaja con tipos de datos que son directamente tratables por el hardware de la mayora de computadoras actuales, como son los caracteres, nmeros y direcciones. Estos tipos de datos pueden ser manipulados por las operaciones aritmticas que proporcionan las computadoras. No proporciona mecanismos para tratar tipos de datos que no sean los bsicos, debiendo ser el programador el que los desarrolle. Esto permite que el cdigo generado sea muy eficiente y de ah el xito que ha tenido como lenguaje de desarrollo de sistemas. No proporciona otros mecanismos de almacenamiento de datos que no sea el esttico y no proporciona mecanismos de entrada ni salida. Ello permite que el lenguaje sea reducido y los compiladores de fcil implementacin en distintos sistemas. Por contra, estas carencias se compensan mediante la inclusin de funciones de librera para realizar todas estas tareas, que normalmente dependen del sistema operativo. Originariamente, el manual de referencia del lenguaje para el gran pblico fue el libro de Kernighan y Ritchie, escrito en 1977. Es un libro que explica y justifica totalmente el desarrollo de aplicaciones en C, aunque en l se utilizaban construcciones, en la definicin de funciones, que podan provocar confusin y errores de programacin que no eran detectados por el compilador. Como los tiempos cambian y las necesidades tambin, en 1983 ANSI establece el comit X3J11 para que desarrolle una definicin moderna y comprensible del C. El estndar est basado en el manual de referencia original de 1972 y se desarrolla con el mismo espritu de sus creadores originales. La primera versin de estndar se public en 1988 y actualmente todos los compiladores utilizan la nueva definicin. Una aportacin muy importante de ANSI consiste en la definicin de un conjunto de libreras que acompaan al compilador y de las funciones contenidas en ellas. Muchas de las operaciones comunes con el sistema operativo se realizan a travs de estas funciones. Una coleccin de ficheros de encabezamiento, headers, en los que se definen los tipos de datos y funciones incluidas en cada librera. Los programas que utilizan estas bibliotecas para interactuar con el sistema operativo obtendrn un comportamiento equivalente en otro sistema.
BIBLIOGRAFIA www.ctisa.com/diccionario.htm es.wikipedia.org/wiki/Programaci%C3%B3n

26

3.2 Introduccin y orgenes del lenguaje


PROGRAMACIN ORIENTADA A OBJETOS La programacin Orientada a objetos (POO) es una forma especial de programar, ms cercana a como expresaramos las cosas en la vida real que otros tipos de programacin. Con la POO tenemos que aprender a pensar las cosas de una manera distinta, para escribir nuestros programas en trminos de objetos, propiedades, mtodos y otras cosas que veremos rpidamente para aclarar conceptos y dar una pequea base que permita soltarnos un poco con este tipo de programacin. Motivacin Durante aos, los programadores se han dedicado a construir aplicaciones muy parecidas que resolvan una y otra vez los mismos problemas. Para conseguir que los esfuerzos de los programadores puedan ser utilizados por otras personas se cre la POO. Que es una serie de normas de realizar las cosas de manera que otras personas puedan utilizarlas y adelantar su trabajo, de manera que consigamos que el cdigo se pueda reutilizar. La POO no es difcil, pero es una manera especial de pensar, a veces subjetiva de quien la programa, de manera que la forma de hacer las cosas puede ser diferente segn el programador. Aunque podamos hacer los programas de formas distintas, no todas ellas son correctas, lo difcil no es programar orientado a objetos sino programar bien. Programar bien es importante porque as nos podemos aprovechar de todas las ventajas de la POO. Cmo se piensa en objetos Pensar en trminos de objetos es muy parecido a cmo lo haramos en la vida real. Por ejemplo vamos a pensar en un coche para tratar de modelizarlo en un esquema de POO. Diramos que el coche es el elemento principal que tiene una serie de caractersticas, como podran ser el color, el modelo o la marca. Adems tiene una serie de funcionalidades asociadas, como pueden ser ponerse en marcha, parar o aparcar. Pues en un esquema POO el coche sera el objeto, las propiedades seran las caractersticas como el color o el modelo y los mtodos seran las funcionalidades asociadas como ponerse en marcha o parar. Por poner otro ejemplo vamos a ver cmo modelizaramos en un esquema POO una fraccin, es decir, esa estructura matemtica que tiene un numerador y un denominador que divide al numerador, por ejemplo 3/2. La fraccin ser el objeto y tendr dos propiedades, el numerador y el denominador. Luego podra tener varios mtodos como simplificarse, sumarse con otra fraccin o nmero, restarse con otra fraccin, etc. Estos objetos se podrn utilizar en los programas, por ejemplo en un programa de matemticas hars uso de objetos fraccin y en un programa que gestione un taller de coches utilizars objetos coche. Los programas Orientados a objetos utilizan muchos objetos para realizar las acciones que se desean realizar y ellos mismos tambin son objetos. Es decir, el taller de coches ser un objeto que utilizar objetos coche, herramienta, mecnico, recambios, etc.

27

PROGRAMACIN ESTRUCTURADA La programacin estructurada es una teora de programacin que consiste en construir programas de fcil comprensin. La programacin estructurada es especialmente til, cuando se necesitan realizar correcciones o modificaciones despus de haber concluido un programa o aplicacin. Al haberse utilizado la programacin estructurada, es mucho ms sencillo entender la codificacin del programa, que se habr hecho en diferentes secciones. La programacin estructurada se basa en una metodologa de desarrollo de programas llamada refinamiento sucesivo: Se plantea una operacin como un todo y se divide en segmentos ms sencillos o de menor complejidad. Una vez terminado todos los segmentos del programa, se procede a unificar las aplicaciones realizadas por el pool de programadores. Si se ha utilizado adecuadamente la programacin estructurada, esta integracin debe ser sencilla y no presentar problemas al integrar la misma, y de presentar algn problema, ser rpidamente detectable para su correccin. La representacin grafica de la programacin estructurada se realiza a travs de diagramas de flujo o flow chart, el cual representa el programa con sus entradas, procesos y salidas. La programacin estructurada propone segregar los procesos en estructuras lo ms simple posibles, las cuales se conocen como secuencia, seleccin e interaccin. Ellas estn disponibles en todos los lenguajes modernos de programacin imperativa en forma de sentencias. Combinando esquemas sencillos se pueden llegar a construir sistemas amplios y complejos pero de fcil entendimiento. Programacin Lineal En programacin lineal se habla de trminos tales como restricciones, que vienen a ser la manipulacin del tamao de funciones que se encuentran sujetas a ciertas limitaciones. Podemos decir que la programacin lineal es el conjunto de tcnicas matemticas que intentan resolver la maximizacin o minimizacin de una funcin objetivo, funcin lineal de varias variables, sujeta a ciertas restricciones, expresadas por inecuaciones lineales. En problemas de programacin lineal intervienen: La funcin f(x,y) = ax + by + c conocida tambin como funcin objetivo (a la cual deberemos optimizar). Aqu x e y son las variables de decisin, mientras que a, b y c son constantes. Las restricciones que deben ser inecuaciones lineales, donde su nmero depende del problema en que trabajemos. Tambin ver que el carcter de desigualdad viene impuesto por las limitaciones, que son: inferiores a... ( menores: < o ); como mnimo de ... (mayores: > o ) . Maximizando o minimizando, las desigualdades pueden darse en cualquiera de los dos sentidos. Valores de x e y que verifican todas y cada una de las restricciones, lo que se conoce como conjunto o regin factible. La solucin ptima del problema ser un par de valores (x0, y0) del conjunto factible que haga que f(x,y) tome el valor mximo o mnimo. Se utilizan las siglas PPL para indicar problema de programacin lineal.

28

Caractersticas del lenguaje C El lenguaje C es uno de los ms rpidos y potentes que hay hoy en da. Algunos dicen que est desfasado y que el futuro es Java. No s si tendr futuro pero est claro que presente si tiene. No hay ms que decir que el sistema operativo Linux est desarrollado en C en su prctica totalidad. As que creo que no slo no perdemos nada aprendindolo sino que ganamos mucho. Para empezar nos servir como base para aprender C++ e introducirnos en el mundo de la programacin Windows. Si optamos por Linux existe una biblioteca llamada gtk (o librera, como prefieras) que permite desarrollas aplicaciones estilo Windows con C. No debemos confundir C con C++, que no son lo mismo. Se podra decir que C++ es una extensin de C. Para empezar en C++ conviene tener una slida base de C. Existen otros lenguajes como Visual Basic que son muy sencillos de aprender y de utilizar. Nos dan casi todo hecho. Pero cuando queremos hacer algo complicado o que sea rpido debemos recurrir a otros lenguajes (c++, delphi,...). Peculiaridades de C Una de las cosas importantes de C que debes recordar es que es Case Sensitive (sensible a las maysculas o algo as). Es decir que para C no es lo mismo escribir Printf que printf. Conviene indicar tambin que las instrucciones se separan por ";". Compiladores de C Un compilador es un programa que convierte nuestro cdigo fuente en un programa ejecutable (Me imagino que la mayora ya lo sabe, pero ms vale asegurar). El ordenador trabaja con 0 y 1. Si escribiramos un programa en el lenguaje del ordenador nos volveramos locos. Para eso estn lenguajes como el C. Nos permiten escribir un programa de manera que sea fcil entenderlo por una persona. Luego es el compilador el que se encarga de convertirlo al complicado idioma de un ordenador. En la prctica a la hora de crear un programa nosotros escribimos el cdigo fuente, en nuestro caso en C, que normalmente ser un fichero de texto normal y corriente que contiene las instrucciones de nuestro programa. Luego se lo pasamos al compilador y este se encarga de convertirlo en un programa. Siguiendo la filosofa de mi pgina los compiladores que usaremos sern gratuitos. Yo recomiendo usar el DJGPP para MS-Dos y el GNU C para Linux. Ambos son compiladores de lnea de comando as que necesitaremos tambin un editor para crear nuestros programas. La solucin ms simple en MS-Dos puede ser usar el edit, en Windows el notepad. Pero no son ms que editores sin ninguna otra funcionalidad. Otra posibilidad es un entorno de desarrollo llamado RHIDE, un programa muy til que automatiza muchas de las tareas del programador (del estilo del Turbo C y Turbo Pascal). Si queremos una herramienta muy avanzada podemos usar Emacs, que es un editor muy potente, aunque para algunos puede parecer muy complicado (valientes y a por ello). Estos dos programas estn disponibles tanto en Linux como en MS-Dos. El primer programa: Hola Mundo En un alarde de originalidad vamos a hacer nuestro primer programa: hola mundo. Nadie puede llegar muy lejos en el mundo de la programacin sin haber empezado su carrera con este original y funcional programa. All va: #include <stdio.h> int main()

29

{ /* Aqu va el cuerpo del programa */ printf( "Hola mundo\n" ); /* Esto imprime hola mundo en pantalla */ return 0; } Comprobado con DJGPP Qu fcil eh? Este programa lo nico que hace es sacar por pantalla el mensaje: Hola mundo Vamos ahora a comentar el programa lnea por lnea (Esto no va a ser ms que una primera aproximacin). #include <stdio.h> #include es lo que se llama una directiva. Sirve para indicar al compilador que incluya otro archivo. Cuando en compilador se encuentra con esta directiva la sustituye por el archivo indicado. En este caso es el archivo stdio.h que es donde est definida la funcin printf, que veremos luego. int main() Es la funcin principal del programa. Todos los programas de C deben tener una funcin llamada main. Es la que primero se ejecuta. El int (entero) que tiene al principio significa que cuando la funcin main acabe devolver un nmero entero. Este valor se suele usar para saber cmo ha terminado el programa. Normalmente este valor ser 0 si todo ha ido bien, o un valor distinto si se ha producido algn error (pero esto lo decidimos nosotros, ya lo veremos). De esta forma si nuestro programa se ejecuta desde otro el programa 'padre' sabe cmo ha finalizado, si ha habido errores o no. Se puede usar la definicin 'void main()', que no necesita devolver ningn valor, pero se recomienda la forma con 'int' que es ms correcta. A lo largo de este curso vers muchos ejemplos que uso 'void main' y falta el return 0; del final, el cdigo funciona correctamente pero puede dar un 'warning' al compilar. En estos momentos estoy intentando corregir esto, pido perdn por las molestias. { Son las llaves que indican el comienzo de una funcin, en este caso la funcin main. /* Aqu va el cuerpo del programa */ Esto es un comentario, no se ejecuta. Sirve para describir el programa. Conviene acostumbrarse a comentar los programas. Un comentario puede ocupar ms de una lnea. Por ejemplo el comentario: /* Este es un comentario que ocupa dos filas */ es perfectamente vlido. printf( "Hola mundo\n" ); Aqu es donde por fin el programa hace algo que podemos ver al ejecutarlo. La funcin printf muestra un mensaje por la pantalla. Al final del mensaje "Hola mundo" aparece el smbolo '\n'; este hace que despus de imprimir el mensaje se pase a la lnea siguiente. Fjate en el ";" del final. Es la forma que se usa en C para separar una instruccin de otra. Se pueden poner varias en la misma lnea siempre que se separen por el punto y coma. return 0; Como he indicado antes el programa al finalizar develve un valor entero. Como en este programa no se pueden producir errores (nunca digas nunca jams) la salida siempre ser 0. La forma de hacer que el programa devuelva un 0 es usando return. Esta lnea significa 'finaliza la funcin main haz que devuelva un 0. } ...y cerramos llaves con lo que termina el programa. Todos los programas finalizan cuando se llega al final de la funcin main.

30

Cmo se hace? Primero debemos crear el cdigo fuente del programa. Para nuestro primer programa el cdigo fuente es el del listado anterior. Arranca tu compilador de C, sea cual sea. Crea un nuevo fichero y copia el cdigo anterior. Llmalo por ejemplo primero.c. Ahora, tenemos que compilar el programa para crear el ejecutable. Si tu compilador es de windows, o con mens busca una opcin llamada "compile", o make, build o algo as. Si estamos usando DJGPP (ver informacin sobre instalacin y uso de DJGPP): tenemos que llamarlo desde la lnea de comando: gcc -c primero.c -o primero.exe Si usamos Rhide basta con hacer CTRL-F9. Nota adicional sobre los comentarios Los comentarios se pueden poner casi en cualquier parte. Excepto en medio de una instruccin. Por ejemplo lo siguiente no es vlido: pri/* Esto es un comentario */ntf( "Hola mundo" ); GARRAFAL No podemos cortar a printf por en medio, tendramos un error al compilar. Lo siguiente no dara error (al menos usando DJGPP), pero es una fea costumbre: printf( /* Esto es un comentario */ "Hola mundo" ); Y por ltimo tenemos: printf( "Hola/* Esto es un comentario */ mundo" ); Que no dara error, pero al ejecutar tendramos: Hola /* Esto es un comentario */ mundo porque /* Esto es un comentario */ queda dentro de las comillas y C lo interpreta como texto, no como un comentario. Qu sabemos hacer? Pues la verdad es que todava no hemos aprendido mucho. Lo nico que podemos hacer es compilar nuestros programas. Pero paciencia, en seguida avanzaremos. Ejercicios Busca los errores en este programa: int main() { /* Aqu va el cuerpo del programa */ Printf( "Hola mundo\n" ); return 0; } Solucin: Si lo compilamos posiblemente obtendremos un error que nos indicar que no hemos definido la funcin 'Printf'. Esto es porque no hemos includo la dichosa directiva '#include <stdio.h>'. (En algunos compiladores no es necesario incluir esta directiva, pero es una buena costumbre hacerlo). Si lo corregimos y volvemos a compilar obtendremos un nuevo error. Otra vez nos dice que desconoce 'Printf'. Esta vez el problema es el de las maysculas que hemos indicado antes. Lo correcto es poner 'printf' con minsculas. Parece una tontera, pero seguro que nos da ms de un problema.
BIBLIOGRAFIA http://lenguajes-de-programacion.com/programacion-estructurada.shtml

31

3.3 Estructura bsica de un programa


La mejor forma de aprender un lenguaje es programando con l. El programa ms sencillo que se puede escribir en C es el siguiente: main( ) { } Como nos podemos imaginar, este programa no hace nada, pero contiene la parte ms importante de cualquier programa C y adems, es el ms pequeo que se puede escribir y que se compile correctamente. En l se define la funcin main, que es la que ejecuta el sistema operativo al llamar a un programa C. El nombre de una funcin C siempre va seguida de parntesis, tanto si tiene argumentos como si no. La definicin de la funcin est formada por un bloque de sentencias, que est encerrado entre llaves {}. Un programa algo ms complicado es el siguiente: #include <stdio.h> main( ) { printf("Hola amigos!\n"); } Con el visualizamos el mensaje Hola amigos! en el terminal. En la primera lnea indica que se tengan en cuenta las funciones y tipos definidos en la librera stdio (standard input/output). Estas definiciones se encuentran en el fichero header stdio.h. Ahora, en la funcin main se incluye una nica sentencia que llama a la funcin printf. Esta toma como argumento una cadena de caracteres, que se imprimen van encerradas entre dobles comillas " ". El smbolo \n indica un cambio de lnea. Hay un grupo de smbolos, que son tratados como caracteres individuales, que especifican algunos caracteres especiales del cdigo ASCII. Los ms importantes son: \a \b \f \n \r \t \v \\ \' \" \OOO \xHHH Alerta Espacio atrs Salto de pgina Salto de lnea Retorno de carro Tabulacin horizontal Tabulacin vertical Barra invertida Comilla simple Comillas dobles Visualiza un carcter cuyo cdigo ASCII es OOO en octal Visualiza un carcter cuyo cdigo ASCII es HHH en hexadecimal

Un programa C puede estar formado por diferentes mdulos o fuentes. Es conveniente mantener las fuentes de un tamao no muy grande, para que la compilacin sea rpida. Tambin, al dividirse un programa en partes, puede facilitar la legibilidad del programa y su estructuracin. Las diferentes fuentes son compiladas de forma separada, nicamente las fuentes que han sido modificados desde la ltima compilacin, y despus combinados con las libreras necesarias para formar el programa en su versin ejecutable.
BIBLIOGRAFIA http://lenguajes-de-programacion.com/programacion-estructurada.shtml

32

3.4 Datos
3.4.1 Tipos de datos
Cuando usamos un programa es muy importante manejar datos. En C podemos almacenar los datos en variables. El contenido de las variables se puede ver o cambiar en cualquier momento. Estas variables pueden ser de distintos tipos dependiendo del tipo de dato que queramos meter. No es lo mismo guardar un nombre que un nmero. Hay que recordar tambin que la memoria del ordenador es limitada, as que cuando guardamos un dato, debemos usar slo la memoria necesaria. Por ejemplo si queremos almacenar el nmero 400 usaremos una variable tipo int (la estudiamos ms abajo) que ocupa slo 16 bits, y no una de tipo long que ocupa 32 bits. Si tenemos un ordenador con 32Mb de Ram parece una tontera ponernos a ahorrar bits (1Mb=1024Kb, 1Kb=1024bytes, 1byte=8bits), pero si tenemos un programa que maneja muchos datos puede no ser una cantidad despreciable. Adems ahorrar memoria es una buena costumbre. A las variables no se les puede dar cualquier nombre. No se pueden poner ms que letras de la 'a' a la 'z' (la no vale), nmeros y el smbolo '_'. No se pueden poner signos de admiracin, ni de interrogacin... El nombre de una variable puede contener nmeros, pero su primer carcter no puede serlo. Ejemplos de nombres vlidos: camiones numero buffer a1 j10hola29 num_alumnos Ejemplos de nombres no vlidos: 1abc nombre? num/alumnos Tampoco valen como nombres de variable las palabras reservadas que usa el compilador. Por ejemplo: for, main, do, while. Por ltimo es interesante sealar que el C distingue entre maysculas y minsculas. Por lo tanto: Nombre nombre NOMBRE seran tres variables distintas. El tipo Int En una variable de este tipo se almacenan nmeros enteros (sin decimales). El rango de valores que admite es -32767 a 32767. Cuando definimos una variable lo que estamos haciendo es decirle al compilador que nos reserve una zona de la memoria para almacenar datos de tipo int. Para guardarla necesitaremos 16 bits de la memoria del ordenador (216=32767). Para poder usar una variable primero hay que declararla (definirla). Hay que decirle al compilador que queremos crear una variable y hay que indicarle de qu tipo. Por ejemplo: int numero; esto hace que declaremos una variable llamada nmero que va a contener un nmero entero.

33

Pero dnde se declaran las variables? Tenemos dos posibilidades, una es declararla como global y otra como local. Por ahora vamos a decir que global es aquella variable que se declara fuera de la funcin main y local la que se declara dentro: La diferencia prctica es que las variables globales se pueden usar en cualquier procedimiento. Las variables locales slo pueden usarse en el procedimiento en el que se declaran. Como por ahora slo tenemos el procedimiento (o funcin, o rutina, o subrutina, como prefieras) main esto no debe preocuparnos mucho por ahora. Cuando estudiemos cmo hacer un programa con ms funciones aparte de main volveremos sobre el tema. Sin embargo debes saber que es buena costumbre usar variables locales que globales. Ya veremos por qu. Podemos declarar ms de una variable en una sola lnea: int x, y;

Mostrar variables por pantalla Vamos a ir u poco ms all con la funcin printf. Supongamos que queremos mostrar el contenido de la variable x por pantalla: printf( "%i", x ); Suponiendo que x valga 10 (x=10) en la pantalla tendramos: 10 Empieza a complicarse un poco no? Vamos poco a poco. Recuerdas el smbolo "\" que usbamos para sacar ciertos caracteres? Bueno, pues el uso del "%" es parecido. "%i" no se muestra por pantalla, se sustituye por el valor de la variable que va detrs de las comillas. ( %i, de integer=entero en ingls). Para ver el contenido de dos variables, por ejemplo x e y, podemos hacer: printf( "%i ", x ); printf( "%i", y ); resultado (suponiendo x=10, y=20): 10 20 Pero hay otra forma mejor: printf( "%i %i", x, y ); ... y as podemos poner el nmero de variables que queramos. Obtenemos el mismo resultado con menos trabajo. No olvidemos que por cada variable hay que poner un %i dentro de las comillas. Tambin podemos mezclar texto con enteros: printf( "El valor de x es %i, qu bien!\n", x ); Que quedar como: El valor de x es 10, qu bien! Como vemos %i al imprimir se sustituye por el valor de la variable. Asignar valores a variables de tipo int La asignacin de valores es tan sencilla como: x = 10; Tambin se puede dar un valor inicial a la variable cuando se define:

34

int x = 15; Tambin se pueden inicializar varias variables en una sola lnea: int x = 15, y = 20; Hay que tener cuidado con lo siguiente: int x, y = 20; Podramos pensar que x e y son igual a 20, pero no es as. La variable x est sin valor inicial y la variable 'y' tiene el valor 20. Veamos un ejemplo para resumir todo: #include <stdio.h> void main() { int x = 10; prinft( "El valor inicial de x es %i\n", x ); x = 50; printf( "Ahora el valor es %i\n", x ); } Cuya salida ser: El valor inicial de x es 10 Ahora el valor es 50 Importante! Si imprimimos una variable a la que no hemos dado ningn valor no obtendremos ningn error al compilar pero la variable tendr un valor cualquiera. Prueba el ejemplo anterior quitando int x = 10; El tipo Char Las variables de tipo char sirven para almacenar caracteres. Los caracteres se almacenan en realidad como nmeros del 0 al 255. Los 128 primeros (0 a 127) son el ASCII estndar. El resto es el ASCII extendido y depende del idioma y del ordenador. Consulta la tabla ASCII en el anexo. Para declarar una variable de tipo char hacemos: char letra; En una variable char slo podemos almacenar solo una letra, no podemos almacenar ni frases ni palabras. Eso lo veremos ms adelante (strings, cadenas). Para almacenar un dato en una variable char tenemos dos posibilidades: letra = 'A'; o letra = 65; En ambos casos se almacena la letra 'A' en la variable. Esto es as porque el cdigo ASCII de la letra 'A' es el 65. Para imprimir un char usamos el smbolo %c (c de character=caracter en ingls): letra = 'A'; printf( "La letra es: %c.", letra ); Resultado: La letra es A.

35

Tambin podemos imprimir el valor ASCII de la variable usando %i en vez de %c: letra = 'A'; printf( "El nmero ASCII de la letra %c es: %i.", letra, letra ); Resultado: El cdigo ASCII de la letra A es 65. Como vemos la nica diferencia para obtener uno u otro es el modificador (%c %i) que usemos. Las variables tipo char se pueden usar (y de hecho se usan mucho) para almacenar enteros. Si necesitamos un nmero pequeo (entre -127 y 127) podemos usar una variable char (8bits) en vez de una int (16bits), con el consiguiente ahorro de memoria. Todo lo dems dicho para los datos de tipo int se aplica tambin a los de tipo char . Una curiosidad: letra = 'A'; printf( "La letra es: %c y su valor ASCII es: %i\n", letra, letra ); letra = letra + 1; printf( "Ahora es: %c y su valor ASCII es: %i\n", letra, letra ); En este ejemplo letra comienza con el valor 'A', que es el cdigo ASCII 65. Al sumarle 1 pasa a tener el valor 66, que equivale a la letra 'B' (cdigo ASCII 66). La salida de este ejemplo sera: La letra es A y su valor ASCII es 65 Ahora es B y su valor ASCII es 66 El modificador Unsigned Este modificador (que significa sin signo) modifica el rango de valores que puede contener una variable. Slo admite valores positivos. Si hacemos: unsigned char variable; Esta variable en vez de tener un rango de -128 a 128 pasa a tener un rango de 0 a 255. El tipo Float En este tipo de variable podemos almacenar nmeros decimales, no slo enteros como en los anteriores. El rango de posibles valores es del 3,4E-38 al 3,4E38. Declaracin de una variable de tipo float: float numero; Para imprimir valores tipo float Usamos %f. float num=4060.80; printf( "El valor de num es : %f", num ); Resultado: El valor de num es: 4060.80 Si queremos escribirlo en notacin exponencial usamos %e: float num = 4060.80; printf( "El valor de num es: %e", num );

36

Que da como resultado: El valor de num es: 4.06080e003 El tipo Double En las variables tipo double se almacenan nmeros reales del 1,7E-307 al 1,7E308. Se declaran como double: double numero; Para imprimir se usan los mismos modificadores que en float. Cmo calcular el mximo valor que admite un tipo de datos Lo primero que tenemos que conocer es el tamao en bytes de ese tipo de dato. Vamos a ver un ejemplo con el tipo INT. Hagamos el siguiente programa: #include <stdio.h> void main() { int num1; printf( "El tipo int ocupa %i bytes\n", sizeof(int) ); } Comprobado con DJGPP En mi ordenador el resultado es: El tipo int ocupa 4 bytes. Como sabemos 1byte = 8bits. Por lo tanto el tipo int ocupa 4*8=32 bits. Ahora para calcular el mximo nmero debemos elevar 2 al nmero de bits obtenido. En nuestro ejemplo: 2^32=4.294.967.296. Es decir en un int se podra almacenar un nmero entre 0 y 4.294.967.296. Sin embargo esto slo es cierto si usamos un tipo unsigned (sin signo, se hace aadiendo la palabra unsigned antes de int). Para los tipos normales tenemos que almacenar nmeros positivos y negativos. As que de los 4.294.967.296 posibles nmeros la mitad sern positivos y la mitad negativos. Por lo tanto tenemos que dividir el nmero anterior entre 2 = 2.147.483.648. Como el 0 se considera positivo el rango de nmeros posibles que se pueden almacenar en un int sera: 2.147.483.648 a 2.147.483.647. Resumen: 1) Obtenemos el nmero de bytes. 2) Multiplicamos por ocho (ya lo tenemos en bits). 3) Elevamos 2 al nmero de bits. 4) Dividimos entre 2. Overflow: Qu pasa cuando nos saltamos el rango El overflow es lo que se produce cuando intentamos almacenar en una variable un nmero mayor del mximo permitido. El comportamiento es distinto para variables de nmeros enteros y para variables de nmeros en coma flotante. Con nmeros enteros En mi ordenador y usando DJGPP bajo Dos el tamao del tipo int es de 4bytes(4*8=32bits). El nmero mximo que se puede almacenar en una variable tipo int es por tanto 2.147.483.647 (ver

37

apartado anterior). Si nos pasamos de este nmero el que se guardar ser el siguiente pero empezando desde el otro extremo, es decir, el -2.147.483.648. El compilador seguramente nos dar un aviso (warning) de que nos hemos pasado. #include <stdio.h> void main() { int num1; num1 = 2147483648; printf( "El valor de num1 es: %i\n", num1 ); } Comprobado con DJGPP El resultado que obtenemos es: El valor de num1 es: -2147483648 Comprueba si quieres que con el nmero anterior (2.147.483.647) no pasa nada. Con nmeros en coma flotante El comportamiento con nmeros en coma flotante es distinto. Dependiendo del ordenador si nos pasamos del rango al ejecutar un programa se puede producir un error y detenerse la ejecucin. Con estos nmeros tambin existe otro error que es el underflow. Este error se produce cuando almacenamos un nmero demasiado pequeo (3,4E-38 en float). Resumen de los tipos de datos en C Esto es algo orientativo, depende del sistema. Tipo Datos almacenados N de Bits Valores posibles (Rango) unsigned char Caracteres 8 -128 a 128 int enteros 16 -32.767 a 32.767 long enteros largos 32 -2.147.483.647 a 2.147.483.647 float Nums. reales (coma flotante) 32 3,4E-38 a 3,4E38 double Nums. reales (coma flotante doble) 64 1,7E-307 a 1,7E308

Rango usando 0 a 255 0 a 65.535 0 a 4.294.967.295

Esto no siempre es cierto, depende del ordenador y del compilador. Para saber en nuestro caso qu tamao tienen nuestros tipos de datos debemos hacer lo siguiente. Ejemplo para int: #include <stdio.h> void main() { printf( "Tamao (en bits) de int = %i\n", sizeof( int )*8 ); } Ya veremos ms tarde lo que significa sizeof. Por ahora basta con saber que nos dice cual es el tamao de una variable o un tipo de dato. Ejercicios Ejercicio 1. Busque los errores: #include <stdio.h> void main() { int nmero;

38

nmero = 2; } Solucin: Los nombres de variables no pueden llevar acentos, luego al compilar nmero dar error. #include <stdio.h> void main() { int numero; numero = 2; printf( "El valor es %i" Numero ); }

3.4.2 Identificadores
Son los nombres elegidos para las variables, constantes, funciones, clases y similares. El primer carcter debe ser una letra o un subrayado. El resto del nombre puede contener dgitos. Los identificadores que comienzan con dos subrayados estn reservados para uso interno del compilador C++.

3.4.3 Almacenamiento, direccionamiento y representacin en memoria.


La configuracin de los platos de discos, cabezales y brazos de acceso hace posible posicionar el cabezal sobre cualquier parte de cualquier superficie de cualquier plato en el dispositivo de almacenamiento. Sin embargo, esto no es suficiente; para utilizar esta capacidad de almacenamiento, debemos tener algn mtodo de dar direcciones a partes uniformes del almacenamiento disponible. Hay un aspecto final requerido de este proceso. Considere todas las pistas en los muchos cilindros presentes en un dispositivo tpico de almacenamiento masivo. Puesto que las pistas tienen dimetros variados, sus circunferencias tambin varan. Por lo tanto, si el almacenamiento fue resuelto solamente a nivel de pistas, cada pista tendr diferentes cantidades de datos - pista #0 (estando cerca del centro del plato) puede almacenar 10,827 bytes, mientras que la pista #1,258 (cerca del borde externo del plato) puede almacenar 15,382 bytes. La solucin es dividir cada pista en mltiples sectores o bloques segmentos de un tamao consistente (a menudo 512 bytes) de almacenamiento. El resultado es que cada pista contiene un nmero fijo de sectores. Un efecto secundario es que cada sector contiene espacio inutilizado - el espacio entre sectores. A pesar del nmero constante de sectores en cada pista, la cantidad de espacio inutilizado vara relativamente poco espacio inutilizado en las pistas internas y una cantidad mucho mayor de espacio en las pistas ms externas. En cualquier caso, este espacio inutilizado se desperdicia, pues all no se puede almacenar datos. Sin embargo, la ventaja que supera este espacio desperdiciado es que ahora es posible direccionar efectivamente el almacenamiento en un dispositivo de almacenamiento masivo. De hecho, hay dos mtodos de direccionamiento - el direccionamiento basado en la geometra y el direccionamiento basado en bloques.

39

3.4.4 Proposicin de asignacin


Lo mismo que en otros lenguajes de programacin, en C se tienen los operadores aritmticos ms usuales (+ suma, - resta, * multiplicacin, / divisin y % mdulo). El operador de asignacin es =, por ejemplo: i=4; ch='y'; Incremento ++ y decremento -- unario. Los cuales son ms eficientes que las respectivas asignaciones. Por ejemplo: x++ es ms rpido que x=x+1. Los operadores ++ y -- pueden ser prefijos o postfijos. Cuando son prefijos, el valor es calculado antes de que la expresin sea evaluada, y cuando es postfijo el valor es calculado despus que la expresin es evaluada. En el siguiente ejemplo, ++z es prefijo y -- es postfijo: int x,y,z; main() { x=( ( ++z ) - ( y-- ) ) % 100; } Que es equivalente a: int x,y,z; main() { z++; x = ( z-y ) % 100; y--; } El operador % (mdulo o residuo) solamente trabaja con enteros, aunque existe una funcin para flotantes (15.1 fmod() ) de la biblioteca matemtica. El operador divisin / es para divisin entera y flotantes. Por lo tanto hay que tener cuidado. El resultado de x = 3 / 2; es uno, an si x es declarado como float. La regla es: si ambos argumentos en una divisin son enteros, entonces el resultado es entero. Si se desea obtener la divisin con la fraccin, entonces escribirlo como: x = 3.0 / 2; o x = 3 / 2.0 y an mejor x = 3.0 / 2.0. Por otra parte, existe una forma ms corta para expresar clculos en C. Por ejemplo, si se tienen expresiones como: i = i + 3; o x = x * (y + 2); Por lo que podemos reescribir las expresiones anteriores como: i += 3; y x *= y + 2; respectivamente. Operadores de Comparacin El operador para probar la igualdad es ==, por lo que se deber tener cuidado de no escribir accidentalmente slo =, ya que: if ( i = j ) ... Es una sentencia legal de C (sintcticamente hablando aunque el compilador avisa cuando se emplea), la cual copia el valor de ``j'' en ``i'', lo cual ser interpretado como VERDADERO, si j es diferente de cero. Diferente es !=, otros operadores son: < menor que, > mayor que, <= menor que o igual a y >= (mayor que o igual a). Operadores lgicos Los operadores lgicos son usualmente usados con sentencias condicionales o relacionales, los operadores bsicos lgicos son: && Y lgico, || O lgico y ! negacin.

BIBLIOGRAFIA http://dac.escet.urjc.es/docencia/ETC-Superior/teoria-cuat1/HojaEj5.pdf

40

3.5 Operadores, operandos y expresiones


3.5.1 Prioridad de operaciones, evaluacin de expresiones
Es necesario ser cuidadosos con el significado de expresiones tales como a + b * c, dependiendo de lo que se desee hacer (a + b) * c o a + (b * c) Todos los operadores tienen una prioridad, los operadores de mayor prioridad son evaluados antes que los que tienen menor prioridad. Los operadores que tienen la misma prioridad son evaluados de izquierda a derecha, por lo que: a-b-c es evaluado como (a - b) - c Prioridad Operador(es) Ms alta ( ) [ ] -> ! ~ ++ -- - (tipo) * & sizeof */% +<< >> < <= > >= == != & ^ | && || ? = += -= *= /= Ms baja ,

De acuerdo a lo anterior, la siguiente expresin: a < 10 && 2 * b < c Es interpretada como: (a < 10) && ( (2 * b) < c ) y a= b= 10 / 5 + 2; como a= (b= ( 10 / 5 ) + 2 );

41

EVALUACIN DE EXPRESIONES X=A/B-C+D*E-A*C EXPRESIN Operandos Operadores Delimitadores 5 operandos A,B,C,D,E Pueden ser cualquier variable o constante vlida del lenguaje Los valores de las variables deben ser coherentes con las operaciones que se realicen con ellas 6 operadores /,-,+,*,-,* Describen las operaciones que se realizan entre las variables Pueden ser aritmticos, lgicos, relacionales EVALUACIN DE EXPRESION X=A/B-C+D*E-A*C Orden en el que se deben realizar las operaciones Cada lenguaje debe definir exactamente dicho orden Si A = 4, B = C = 2, D = E = 3 => X=((4/2)-2)+(3*3)-(4*2) =0+9-8 =1 X = ( 4 / (2 - 2 + 3 ) ) * ( 3 - 4 ) * 2 = ( 4 / 3 ) * ( -1 ) * 2 = -2.66666666 El orden en el que se deben realizar las operaciones se especifica mediante: prioridades o parntesis El lenguaje define prioridades para los operadores El programador puede cambiar las prioridades mediante ( ) A igual prioridad, evaluacin de izquierda a derecha Ejemplo: A/B*C (A/B)*C (1) A/(B*C) (2) Prioridad de / == prioridad de * Si A = B = C = 2 (1) = 2 (2) = 0.5 En C++ se evala segn (1) Ejemplo X = A / B - C + D * E - A * C se evaluar en C++ X = ( ( (A / B) - C ) + ( D * E ) ) - ( A * C ) Utilizada para que los compiladores puedan traducir expresiones. Si e es una expresin con operadores y operandos, la forma habitual de escritura se conoce como infix porque los

42

operadores van entre (in) los operandos (los operadores unarios preceden sus operandos). La forma postfix consiste en colocar cada operador inmediatamente despus de los operandos Ventajas: No son necesarios los parntesis La prioridad de los operadores no es relevante La expresin se puede evaluar realizando un recorrido de izquierda a derecha, apilando los operandos y evaluando los operadores utilizando los operandos adecuados extrados de la pila y apilando el resultado intermedio para repetir el proceso. Este mtodo es ms simple que los necesarios cuando se trabaja con la notacin infix

BIBLIOGRAFIA http://dac.escet.urjc.es/docencia/ETC-Superior/teoria-cuat1/HojaEj5.pdf

43

3.6 Proceso de creacin de un ejecutable


Se puede crear un archivo que contenga el programa completo, como en los ejemplos que se tienen ms adelante. Se puede usar cualquier editor de textos ordinario con el que se est familiarizado. Un editor disponible en la mayora de los sistemas UNIX es vi, y en Linux se puede usar pico. Por convencin el nombre del archivo debe terminar con ``.c'' por ejemplo: miprograma.c progprueba.c. El contenido del archivo deber obedecer la sintaxis de C. Compilacin Existen muchos compiladores de C. El cc es el compilador estndar de Sun. El compilador GNU de C es gcc, el cual es bastante popular y est disponible en varias plataformas. Existen tambin compiladores equivalentes de C++ los cuales usualmente son nombrados como CC. Por ejemplo, Sun provee CC y GNU GCC. El compilador de GNU es tambin denotado como g++. Existen otros compiladores menos comunes de C y C++. En general todos los compiladores mencionados operan esencialmente de la misma forma y comparten muchas opciones comunes en la lnea de opciones. Ms adelante se listan y se dan ejemplos de opciones comunes de los compiladores. Sin embargo, la mejor referencia de cada compilador es a travs de las pginas en lnea, del manual del sistema. Por ejemplo: man gcc. Para compilar el programa usaremos el comando gcc. El comando deber ser seguido por el nombre del programa en C que se quiere compilar. Un determinado nmero de opciones del compilador pueden ser indicadas tambin. Por el momento no haremos uso de estas opciones todava, se irn comentando algunas ms esenciales. Por lo tanto, el comando bsico de compilacin es: gcc programa.c donde programa.c es el nombre del archivo. Si hay errores obvios en el programa (tales como palabras mal escritas, caracteres no tecleados u omisiones de punto y coma), el compilador se detendr y los reportar. Podra haber desde luego errores lgicos que el compilador no podr detectar. En el caso que esta fuera la situacin se le estar indicando a la computadora que haga las operaciones incorrectas. Cuando el compilador ha terminado con xito, la versin compilada, o el ejecutable, es dejado en un archivo llamado a.out, o si la opcin -o es usada con el compilador, el nombre despus de -o es el nombre del programa compilado. Se recomienda y es ms conveniente usar la opcin -o con el nombre del archivo ejecutable como se muestra a continuacin: gcc -o programa programa.c el cual pone el programa compilado en el archivo del programa sealado, en ste caso en programa, en vez del archivo a.out. Ejecucin del programa El siguiente estado es correr el programa ejecutable. Para correr un ejecutable en UNIX, simplemente se escribe el nombre del archivo que lo contiene, en este caso programa (o a.out). Con lo anterior, se ejecuta el programa, mostrando algn resultado en la pantalla. En ste estado, podra haber errores en tiempo de ejecucin (run-time errors), tales como divisin por cero, o bien, podran hacerse evidentes al ver que el programa no produce la salida correcta. Si lo anterior sucede, entonces se debe regresar a editar el archivo del programa, recompilarlo, y ejecutarlo nuevamente. Esta parte del proceso de compilacin ser cubierta con ms detalle en el captulo 12 referente al preprocesador. Sin embargo, se da alguna informacin bsica para algunos programas de C. El preprocesador acepta el cdigo fuente como entrada y es responsable de:

44

quitar los comentarios interpretar las directivas del preprocesador las cuales inician con #. Por ejemplo: #include -- incluye el contenido del archivo nombrado. Estos son usualmente llamados archivos de cabecera (header). Por ejemplo: #include <math.h> -- Archivo de la biblioteca estndar de matemticas. #include <stdio.h> -- Archivo de la biblioteca estndar de Entrada/Salida. #define -- define un nombre simblico o constante. Sustitucin de macros. #define TAM_MAX_ARREGLO 100 Compilador de C El compilador de C traduce el cdigo fuente en cdigo de ensamblador. El cdigo fuente es recibido del preprocesador. Ensamblador El ensamblador crea el cdigo fuente o los archivos objeto. En los sistemas con UNIX se podrn ver los archivos con el sufijo .o. Ligador Si algn archivo fuente hace referencia a funciones de una biblioteca o de funciones que estn definidas en otros archivos fuentes, el ligador combina estas funciones (con main()) para crear un archivo ejecutable. Las referencias a variables externas en esta etapa son resueltas.

BIBLIOGRAFIA http://dac.escet.urjc.es/docencia/ETC-Superior/teoria-cuat1/HojaEj5.pdf

45

IV. FUNCIONES
4.1 Funciones 4.1.1 Definicin de funciones 4.1.2 Funciones estndar

4.2 Entrada y salida de datos

4.3 Funciones definidas por el usuario 4.3.1 Pase por valor 4.3.2 Pase por referencia

4.4 Punteros 4.4.1 Definicin de punteros 4.4.2 Paso de variable

46

4.1 Funciones
4.1.1 Definicin de funciones
Las funciones son porciones de cdigo que devuelven un valor. Permiten descomponer el programa en mdulos que se llaman entre ellos. En C no existe diferencia entre funciones y procedimientos: a todas las subrutinas se las llama funciones. La definicin de una funcin especfica lo siguiente: nombre de la funcin nmero de argumentos que lleva y tipo de cada uno de ellos tipo de datos que devuelve Cuerpo de la funcin (el cdigo que ejecuta) Sintaxis: tipo nombre ( arg1, arg2, ... ) { ... cuerpo ... } Cada argumento se especifica como en una declaracin de variable. El cuerpo de la funcin debera contener una sentencia donde se devuelve el resultado de la funcin, que se hace de esta forma: return expresin; La funcin devolver el resultado de la expresin.

4.1.2 Funcin estndar


El estndar: es muy tolerante y permite los implementadores es decir cuenta con ciertas cuestiones de detalle. Los bloques o zonas de programas englobados se identifican atreves de la las llaves los cuales pueden ser anillados (bloques dentro de otros bloques) sin embargo tambin se pueden establecer un lmite mximo de anidamiento. Por ejemplo. #include(conio.h) # include(studio.h) Int multiplicacion(inta,int,b); { return(a*b); } Main() Inti,j,resuitado; I=5; J=2; Resultado=multiplicacin(I,j); Printf(^el resultado de % y % es: %d^,i,j,resultado); Getch(); return0;

47

} Estructura de una funcin. Tipo _ retorno Nb_funciones. { Cuerpo de la funcin (parmetros); Valor de retorno } Retorno: Tipo de dato del valor que devuelve la funcin. Nb- funcin: Nombre de k la funcin la cual se crea respetando las reglas de creacin de los identificadores. Parmetros: Lista de variables tipificadas y separadas por coma que permita la comunicacin. Cuerpo de la funcin: Declaraciones e instrucciones que realiza la tarea encomendada a la funcin. Valor de retorno: Valor que devuelve la funcin la cual puede ser que no devuelva ningn valor y solo realiza algunas indicaciones. Llamada a una funcin. Es la forma en la que se emboca a una funcin. La llamada a la funcin supone la ejecucin de su cdigo y la terminacin del proceso que debe realizar la funcin. Una vez concluida se devuelve el control a la funcin desde la cual fue llamada. #include(conio.h) # include(studio.h) Int suma(int a, int b) { Suma= a+b; return=(suma); } Float resta (float x, int b); } Char letra (char z); { Letra=z; Return= (letra); Main(); { Int c,d,opercion1; Float c, operacion2; Char f,h; c=3; d=5;

48

e=7.5; f=^b^; operacin 1= suma(c,d); operacin 2= resta(e,d); h= letra(f); getch(); return0; }

4.2 Entrada y salida de datos


La salida de datos es la manera en que la computadora muestra los resultados que produce utilizando los dispositivos de salida. Entrada de datos. Es cualquier cosa que ayuda a introducir informacin en el sistema ayudado de dispositivos para dicha funcin. Ejemplo. Enterada de datos en C. Scanf (tipo de datos nombre de la variable); Tipos de datos % d enteros % f flotante % c carcter

#include(conio.h) # include(studio.h) Main() { Int num.1, num 2; Printf(deme un numero); Scantf(% d, & num^), Suma=num1+5; Printf(%d,& suma); Getch(); Return 0; }

49

Funciones #include(conio.h) # include(studio.h) Float resta(a-b); } Int multiplicacion(float c, int c) } Char letra(int c); { If e>5 then (^s^); } Int a,bd,,e multiplicacion 1; { Float b.c, reta, 1: Char letra; Printf(^deme 3 valores enteros,^); Scanf(^%^,& a); Scanf(^%,^& d); Scanf(%,^& e); Printf(^dame valores enteros flotantes^); Scanf(^%,^f,& b); Scanf(^%^,& c); Reta 1= resta(a-b); Multiplicacion1=multiplicacion(c,d); Letra=^N^); Getch(); Return0; } Hacer una funcin que realiza una divisin de un numero entero con un numero flotante y que devuelva la letra S si el resultado de esa divisin es mayor que 2 si no que devuelva la letra N. para los valores que entran a la divisin se har la captura a travs del teclado. #include(conio.h) # include(studio.h) Float resta(a-b); } Char divicion(int num1, float num 2,) } Divicion=njm1/num2; If (div>2) then return(^S^); else return(^N^); } Main() { Int num 1: Flota num 2; Printf(^deme 1 numero enteros y un numero flotante ,^); Scanf(^%d^,& num1); Scanf(^%,d^& num2);

50

Div 2= div (num1, num2); Printf(^%,c^;div2^); Getch(); Return0; } EXADECIMAL Puntero: direccin, de la memoria.

4.3 Funciones definidas por el usuario


4.3.1 Pases por valor
En C todos los argumentos de una funcin se pasan por valor. El paso de parmetros por valor tambin llamado paso por copia significa que la funcin realiza las siguientes instrucciones: 1.- recibe una copia de los valores de cada uno de los parmetros. 2.- los parmetros actuales podrn ser constantes expresiones, variables o funciones. 3.- la funcin no puede modificar el valor del parmetro.

4.3.2 Pases por referencia


Se refiere a que si quisiramos modificar el valor de los argumentos sera necesario pasar como argumento su direccin en memoria.

4.4 Punteros
4.4.1 Definicin de punteros
Es una variable que representa la posicin (en vez del valor) de otro dato tal como una variable o un elemento de una formacin.

4.4.2 Paso de variable


Significa que el parmetro recibe la direccin del parmetro actual pasado. Cualquier modificacin del parmetro afecta tanto en el interior del puntero como en el exterior. PUNTEROS #include<stdio.h> #include<conio.h> main() { int almacen*puntero; almancen=45; puntero=&almacen; printf(el contenido de la variable llamado almacn y que est ubicada en %xh es de %d,puntero,*puntero); getch(); return0; }

51

DECLARACIONES DE PUNTEROS int*A; int*lugar; int*A1; ASIGNACIN A UN PUNTERO A=&lugar; S=&A; T=&A1; MOSTRAR EN PANTALLA contenido printf(%d,*A); printi(%f,*lugar); printf(%d,*A1); ubicacion printf(%xh,A); printf(%xh,lugar); printf(%xh,A1); Realizar una funcin que devuelva un nmero flotante bajo las siguientes condiciones. Realizar una multiplicacin de dos nmeros enteros si un carcter es A en cualquier otro caso realizar una divisin, mostrar en pantalla el valor del carcter entre las 2 variables de tipo entero y el resultado de la funcin. #include(conio.h) # include(studio.h) Float multiplicacion (int num1, int num2, char letra) { If (letra==A) then return(num1*num2); else return(num1/num2); } Main() { Int num 1,num2; Float multiplicacion; char letra; Printf(dame 2 enteros); Scanf(%d,& num1); Scanf(%,d& num2); Printf(dame un caracter); Scanf(^%c^,& letra); multiplicacion1=multiplicacion(num1,num2,letra); Printf(^%d,%d^,num1,num2); printf(%c,letra); printf(%f,multiplicacion1); Getch(); Return0; }
BIBLIOGRAFIA http://dac.escet.urjc.es/docencia/ETC-Superior/teoria-cuat1/HojaEj5.pdf

52

V. ESTRUCTURAS DE SELECTIVAS
5.1 Selectiva simple

5.2 Selectiva doble

5.3 Selectiva anidada

5.4 Selectiva mltiple

53

5.1 Selectiva simple


La especificacin formal de algoritmos tiene realmente utilidad cuando el algoritmo requiere una descripcin ms complicada que una lista sencilla de instrucciones. Este es el caso cuando existen un nmero de posibles alternativas resultantes de la evaluacin de una determinada condicin. Estas estructuras se identifican porque en la fase de solucin del problema existe algn punto en el cual es necesario establecer una pregunta, para decidir si ciertas acciones deben realizarse o no. Las condiciones se especifican usando expresiones lgicas. La representacin de una estructura selectiva se hace con palabras en pseudocdigo (if - then - else o en espaol si - entonces - sino) y en flujograma con una figura geomtrica en forma de rombo. Se identifican porque estn compuestos nicamente de una condicin. La estructura si - entonces evala la condicin y en tal caso: Si la condicin es verdadera, entonces ejecuta la accin Si (o acciones si son varias). Si la condicin es falsa, entonces no se hace nada. Espaol Si <condicin> Entonces <accin Si> fin_si Ingls If <condicin> then <accin Si> endif

Ejemplo 1. Construir un algoritmo tal, que dado como dato la calificacin de un alumno en un examen, escriba "Aprobado" en caso que esa calificacin fuese mayor que 8. Salidas: mensaje de aprobado si se cumple la condicin. Entradas: calificacin Datos adicionales: un alumno aprueba si la calificacin es mayor que 8 Variables:

54

Cal = calificacin Algoritmo: Inicio Leer (cal) Si cal > 8 entonces Escribir ("aprobado") Fin_si Fin

5.2 Selectiva doble


Son estructuras lgicas que permiten controlar la ejecucin de varias acciones y se utilizan cuando se tienen dos opciones de accin, por la naturaleza de estas se debe ejecutar una o la otra, pero no ambas a la vez, es decir, son mutuamente excluyentes. Representacin pseudocodificada. Espaol Si <condicin> entonces <accin S1> sino <accin S2> Fin_Si Ingls If <condicin> then <accin S1> else <accin S2> End_if

55

Entonces, si una condicin C es verdadera, se ejecuta la accin S1 y si es falsa, se ejecuta la accin S2.

Ejemplo 1 Dado como dato la calificacin de un alumno en un examen, escriba "aprobado" si su calificacin es mayor que 8 y "Reprobado" en caso contrario. Algoritmo: Inicio Leer (cal) Si cal > 8 entonces Escribir ("aprobado") Sino Escribir ("reprobado") Fin_si Fin

56

Ejemplo 2. Dado como dato el sueldo de un trabajador, aplicar un aumento del 15% si su sueldo es inferior a $1000 y 12% en caso contrario, luego imprimir el nuevo sueldo del trabajador.

EXPRESIONES LGICAS Sirven para plantear condiciones o comparaciones y dan como resultado un valor booleano verdadero o falso, es decir, se cumple o no se cumple la condicin. Se pueden clasificar en simples y complejas. Las simples son las que usan operadores relacionales y las complejas las que usan operadores lgicos. Ejemplos: Un ejemplo en el cual usamos el operador lgico AND sera: Una escuela aplica dos exmenes a sus aspirantes, por lo que cada uno de ellos obtiene dos calificaciones denotadas como C1 y C2. El aspirante que obtenga calificaciones mayores que 80 en ambos exmenes es aceptado; en caso contrario es rechazado. En este ejemplo se dan las condiciones siguientes: Si (C1 >= 80) y (C2 >= 80) entonces Escribir ("aceptado") Sino Escribir ("rechazado") Fin_si Note que tambin usa operadores relacionales. Por lo general cuando hay operadores lgicos, stos van acompaados de operadores relacionales. Un ejemplo usando el operador lgico OR sera: Una escuela aplica dos exmenes a sus aspirantes, por lo que cada uno de ellos obtiene dos calificaciones denotadas como C1 y C2. El aspirante que obtenga una calificacin mayor que 90 en cualquiera de los exmenes es aceptado; en caso contrario es rechazado. En este caso se dan las condiciones siguientes: Si (C1 >=90) or (C2 >=90) entonces Escribir ("aceptado") Sino

57

Escribir ("rechazado") Fin_si La instruccin equivale a OR ya que nos dice que puede ser en cualquiera de los exmenes no necesariamente en los dos. En el ejemplo 1 la palabra ambos equivala a seleccionar la instruccin AND. Si la instruccin nos dijera que obtenga una nota en cualquiera de los exmenes pero no en ambos, nos estara indicando una instruccin XOR que es un tipo de OR pero exclusivo. Es decir, no puede considerarse el caso en que tenga la misma nota en los dos exmenes, solo en uno de los dos.

5.3 Selectiva anidada


En la solucin de problemas encontramos numerosos casos en los que luego de tomar una decisin y marcar el camino correspondiente a seguir, es necesario tomar otra decisin. Dicho proceso puede repetirse numerosas veces. En aquellos problemas en donde un bloque condicional incluye otro bloque condicional se dice que un bloque est anidado dentro del otro. Ejemplo 1. Determinar la cantidad de dinero que recibir un trabajador por concepto de las horas extras trabajadas en una empresa, sabiendo que cuando las horas de trabajo exceden de 40, el resto se consideran horas extras y que stas se pagan al doble de una hora normal cuando no exceden de 8; si las horas extras exceden de 8 se pagan las primeras 8 al doble de lo que se paga por una hora normal y el resto al triple. Solucin. Lo primero que hay que determinar es si el trabajador trabaj horas extras o no. Encontrar las horas extras de la siguiente forma: Horas extras = horas trabajadas - 40 En caso que s trabaj horas extras: Si horas extras > 8 entonces a horas extras excedentes de 8 = horas extras -8 y pago por horas extras = pago por hora normal * 2 * 8 + pago por hora normal * 3 * horas extras excedentes de 8 De otra forma (solo horas al doble) pago por horas extras = pago por hora normal * 2 * horas extras. Finalmente, pago total que recibir el trabajador ser: Pago = pago * hora normal * 40 + pago por horas extras. Si no trabaj horas extras tendremos: Pago = pago por hora normal * horas trabajadas. Datos de salida: Pago. Datos de entrada: nmero de horas trabajadas y pago por hora normal. Definicin de variables: ht = horas trabajadas het = horas extras que exceden de 8 ph = pago por hora normal phe = pago por horas extras he = horas extras pt = pago que recibe el trabajador Algoritmo: Inicio Leer (ht, ph) Si ht >40 entonces

58

He= ht - 40 Si he > 8 entonces Het =he - 8 Phe =ph * 2 * 8 + ph * 3 * het Sino Phe = ph * 2 * he Fin_si Pt =ph * 40 + phe Sino Pt = ph * ht Fin_si Escribir (pt) Fin Ejemplo 2. Dados los datos A, B y C que representan nmeros enteros diferentes, construir un algoritmo para escribir estos nmeros en forma descendente. Este es un ejemplo de los algoritmos conocidos como de Lgica Pura, ya que poseen muchas decisiones y muchas bifurcaciones. Salida: A, B y C ordenados descendentemente. Entradas: A, B y C. La dinmica del problema es comparar dos nmeros a la vez para conocer cul es el mayor.

59

5.4 Selectiva mltiple


Con frecuencia es necesario que existan ms de dos elecciones posibles. Este problema se podra resolver por estructuras selectivas simples o dobles, anidadas o en cascada, pero si el nmero de alternativas es grande puede plantear serios problemas de escritura y de legibilidad. Usando la estructura de decisin mltiple se evaluar una expresin que podr tomar n valores distintos, 1, 2 , 3, ....,n y segn que elija uno de estos valores en la condicin, se realizar una de las n acciones o lo que es igual, el flujo del algoritmo seguir slo un determinado camino entre los n posibles. Esta estructura se representa por un selector el cual si toma el valor 1 ejecutar la accin 1, si toma el valor 2 ejecutar la accin 2, si toma el valor N realizar la accin N.

Ejemplo 1: Disear un algoritmo tal que dados como datos dos variables de tipo entero, obtenga el resultado de la siguiente funcin:

60

61

Ejemplo 2. Dados como datos la categora y el sueldo de un trabajador, calcule el aumento correspondiente teniendo en cuenta la siguiente tabla. Imprimir la categora del trabajador y el nuevo sueldo.

Definicin de variables: Cate = categora Sue = sueldo Nsue = nuevo sueldo ALGORITMO Inicio Leer (cate, sue) En caso que cate sea 1: hacer nsue <-- sue * 1.15 2: hacer nsue <-- sue * 1.10 3: hacer nsue <-- sue * 1.08 4: hacer nsue <-- sue * 1.07 Fin_caso_que Escribir (cate, nsue) Fin

BIBLIOGRAFIA http://www.mailxmail.com/curso/informatica/programacionestructurada/capitulo13.htm

62

VI. ESTRUCTURAS DE REPETICIN


6.1 Repetir mientras

6.2 Repetir hasta

6.3 Repetir desde

63

6.1 Repetir mientras


Llamado bucle "mientras", ejecuta una sentencia mientras cierta condicin sea verdadera, su forma es la siguiente: while(condicin) sentencia;

Condicin

NO

SI

Grupo de Instrucciones

Donde sentencia es una sentencia vlida o un bloque de sentencias. La condicin puede ser cualquier expresin y cualquier valor distinto de 0 es cierto.

#include "stdio.h" main() { int i; float x, suma, promedio; /* lee nmeros desde el teclado para calcular su promedio, termina Cuando se introduce -1 */ x = suma = 0; i = 1; while (x != -1) { printf("\nIntroduzca el valor %d:", i); scanf("%f", &x); suma += x; } promedio := suma/i; printf("\nEl promedio es: %f / %d = %f", suma, i, promedio); }

64

6.2 Repetir hasta


El Bucle do-while A diferencia de los bucles anteriores, que analizan la condicin al principio de los mismos, el bucle do-while lo hace al final, esto significa que se ejecuta siempre al menos una vez. Su forma general es:

do{ sentencia; }while(condicin);

Grupos de Instrucciones

SI

Condicin

NO

Fin

Las llaves no son necesarias en el caso de una sentencia simple, pero se recomienda colocarlas por razones de legibilidad, este bucle iterar hasta que la condicin sea falsa. Ejemplo: El siguiente bucle lee nmeros desde el teclado hasta que encuentra un nmero negativo:

do{ scanf("%d", &num); }while(num = 0);

6.3 Repetir desde


El bucle for en C cumple la misma funcin que en el resto de los lenguajes de programacin procedimentales pero adems se le aade una potencia y flexibilidad nicas, lo cual lo convierte en una herramienta poderosa. Su forma es la siguiente:

65

for(inicializacin; condicin; incremento) Sentencia;

(Variable) (Exp1) hasta (Exp2) paso (Exp3)

Grupo de Instrucciones

Donde inicializacin es una sentencia de asignacin para inicializar la variable de control del bucle, condicin es una expresin relacional que determina el final del bucle e incremento define cmo cambia la variable de control cada vez que se ejecute una iteracin del bucle. Ejemplo: #include "stdio.h" /* imprime los numeros del 1 al 100 */ main() { int x; for (x=1; x<=100; x++) printf("%d ", x); } En este ejemplo, x se inicializa a 1 y se compara con 100, ya que la condicin es cierta, se ejecuta la funcin printf() y x se incrementa en 1, este bucle se repite hasta que x es mayor que 100. A continuacin, un ejemplo del bucle for con varias sentencias:

#include "stdio.h" /* imprime el cuadrado de los numeros del 10 al 1 */ main() { int i, x; for (i=10; x0; x--){ x := i*i; printf("%d al cuadrado es: %d\n", i, x); }

66

VII. ARREGLOS
7.1 Arreglo unidimensional 7.1.1 Conceptos bsicos 7.1.2 Operaciones aplicaciones.

7.2 Arreglo bidimensional

7.3 Conceptos bsicos

7.4 Operaciones

7.5 Aplicaciones

7.6 Registros

7.7 Archivos

67

7.1 Arreglo unidimensional


7.1.1 Conceptos bsicos
Conjunto ordenado de variables (arrays).Los arreglos conjuntos de datos ordenados (arrays) recolectan variables del MISMO tipo, guardndolas en forma secuencial en la memoria. La cantidad mxima de variables que pueden albergar est slo limitada por la cantidad de memoria disponible. El tipo de las variables involucradas puede ser cualquiera de los ya vistos, con la nica restriccin de que todos los componentes de un array deben ser del mismo tipo.

7.1.2 Operaciones aplicaciones


La declaracin de un array se realiza segn la siguiente sintaxis: Tipo de las variables nombre [cantidad de elementos]; Por ejemplo: int var1[10] ; char nombre[50] ; float numeros[200] ; long double cantidades[25] ; B) Inicializacin de vectores entero unidCompradas[10] = {12. 24, 36, ...,100} int unidCompradas[10] = {12. 24, 36, ...,100}; caracter Letras[52]={'A','B','C', .,'Z','a','b',...,'z'} char Letras[52]={'A','B','C', .,'Z','a','b',...,'z'}; C) Asignacin int A[15]; char* nombre[5]; double talla[10]; char vocales[5]; Asigna el valor 45 al elemento de ndice 10 del arreglo A. Asigna 1.56 al elemento de ndice 2 del arreglo talla. Asigna Fernndez al elemento de ndice 2 del arreglo nombre. Asigna E al elemento de ndice 3 del arreglo vocales. C) Entrada/salida para (i = 1 ; hasta i <= N ; con i=i+1) { Leer V [ i ]; } para (i = 1 ; hasta i<= 5 ; con i=i+1) { Mostrar Peso [ i ]; } Lee los elementos del vector V cuyo ndice i vara desde 1 hasta N (i varia de 1 en 1). Nota: N debe ser conocido. Muestra en pantalla los valores almacenados en cada elemento del array: Peso[1], Peso[2], Peso[3], Peso[4] y Peso[5] A[10] = 45; talla[2] = 1.56; nombre[2] = "Fernandez"; vocales[3] = 'E';

unidCompradas se inicializan con 10 datos enteros Letras se inicializa con 52 datos de tipo caracter

68

PRACTICA: #include<stdio.h> /*librera para funciones entrada/salida*/ #include<conio.h> /*librera conio.h*/ int a,x[4],y[4],z[4]; /* declaracin de variables enteras*/ main() /*funcin principal*/ { /*inicio del programa*/ clrscr(); /*limpia pantalla*/ printf("escribe una matriz x"); /* imprime un comentario en la pantalla*/ for(a=0;a<4;a++) /*ciclo de repeticin cuando a = 0, a menor a 4 e incremento de a*/ { /*inicio del for*/ gotoxy((a+1)*3,3);scanf("%d",&x[a]); /*coordenadas de posicin y introduccin de valores a las variables*/ } printf("Introduce los valores de la matriz y:"); /*imprime un mensaje en pantalla*/ for(a=0;a<4;a++){ /*ciclo de repeticin cuando a = 0, a menor a 4 e incremento de a*/ gotoxy((a+1)*3,6);/*coordenadas de posicin*/ scanf("%d",&y[a]); /* lee la variable*/ } for(a=0;a<4;a++) z[a]=x[a]+y[a]; /* operacin matemtica*/ for(a=0;a<4;a++){ /*ciclo de repeticion cuando a = 0, a menor a 4 e incremento de a*/ gotoxy((a+1)*3,10);printf("%d",z[a]); /*coordenadas de posicin e imprime los valores de las variables*/ } getch(); /* pausa*/ }/* fin del programa*/

7.2 Arreglo Bidimensional


1 2 3 4 5 [1,1][1,2][1,3][1,4][1,5] [2,1][2,2][2,3][2,4][2,5] [3,1][3,2][3,3][3,4][3,5] [4,1][4,2][4,3][4,4][4,5]

1 2 3 4

7.3 Conceptos bsicos


Un arreglo bidimensional tiene dos dimensiones y es un caso particular de los arreglos multidimensionales. En C, las dimensiones se manejan por medio de un par de corchetes, dentro de los que se escriben, separados por comas, los valores de las dos dimensiones.

69

7.4 Operaciones
Declaracin: double nota[25][4]; int DocCasacas[3][30]; char Rpta[45][10];

A) Inicializacin de Matrices Peso declara e inicializa los pesos promedios de 30 deportistas en cada uno de los 12 meses del 2001. (Total 240 pesos agrupados de 12 en 12). Total 240 datos reales int DocCasacas[3][4]={{20,40,35,80}, {25,70,50,36}, {48,36,64,24}}; int DocCasacas[3][4]={20,40,35,80, 25,70,50,36, 48,36,64,24}; int DocCasacas[ ][4]={{20,40,35,80}, {25,70,50,36}, {48,36,64,24}}; Declara e inicializa DocCasacas, las docenas de casacas de 3 tallas ('S', 'M','L') confeccionadas en cada una de los 4 semanas del mes de Junio-2002 char Rpta[5][4]= { {'a','e','c','d'}, {'e','c','d','a'}, {'c','c','d','c'} }; char Rpta[5][4]={'a','e','c','d','e','c','d','a', 'c','c','d','c' }; char Rpta[ ][4]={'a','e','c','d', 'e','c','d','a', 'c','c','d','c' };

B) Asignacin A[10] [20] = 45 A[10] [20] = 45; Asigna el valor 45 al elemento de la fila 10 y columna 20 del arreglo bidimensional A. Rpta [2][5] = 'c' Rpta [2][5] = 'c'; Asigna 'c' al elemento de la fila 2 y columna 5 del arreglo Rpta

C) Operaciones de Entrada/Salida para (i = 0 ; i< 5 ; i = i+1) { para ( j = 0 ; j< 3 ; j = j+1) { Leer V [ i ][ j ]; } }

para (i = 1 ; Hasta i<= 5 ; con i=i+1) { para (j = 1;hasta j<= 3 ; con j=j+1) { Mostrar Peso [ i ][ j ]; } }

70

7.5 Aplicaciones
Elaborar un algoritmo que lea los datos numricos de tipo entero para una matriz de 10 renglones con 15 columnas y mandar a desplegar en contenido de la misma. Algoritmo de PRODUCCIN 1. definir variables NUMEROS: arreglo [10,15] entero REN,COL: entero 2. FOR REN=1,10 a.FOR COL=1,15 1. solicitar elemento REN,COL 2. leer NUMEROS[REN,COL] b. END FOR 3. END FOR 4. FOR REN=1,10 a= FOR COL=1,15 1. Imprimir NUMERO [REN, COL] b. END FOR 5. END FOR 6. FIN Cdigo #include<conio.h> #include<stdio.h> main() { int NUMEROS[10][15]; int REN,COL; for(REN=1;REN<=10;REN++) { for(COL=1;COL<=15;COL++) { Printf (cual es el valor); Scanf (%d,&NUMEROS[REN][COL]); } } for (REN=1;REN<=10;REN++) { for(COL=1;COL<=15;COL++) { printf(%d,NUMEROS[REN][COL]); } } getch(); return 0

71

7.6 Registros
Los registros del procesador se emplean para controlar instrucciones en ejecucin, manejar direccionamiento de memoria y proporcionar capacidad aritmtica. Los registros son espacios fsicos dentro del microprocesador con capacidad de 4 bits hasta 64 bits dependiendo del microprocesador que se emplee. Los registros son direccionables por medio de una vieta, que es una direccin de memoria. Los bits, por conveniencia, se numeran de derecha a izquierda (15, 14,13. 3, 2, 1,0), los registros estn divididos en seis grupos los cuales tienen un fin especfico. Los registros se dividen en:

Registros de segmento Registros de apuntadores de instrucciones Registros apuntadores Registros de propsitos generales Registro ndice Registro de bandera.

Registros de segmento. Un registro de segmento se utiliza para alinear en un lmite de prrafo o dicho de otra forma codifica la direccin de inicio de cada segmento y su direccin en un registro de segmento supone cuatro bits 0 a su derecha. Un registro de segmento tiene 16 bits de longitud y facilita un rea de memoria para direccionamientos conocidos como el segmento actual. Los registros de segmento son:

Registro CS Registro DS Registro SS Registro ES Registro FS y GS

Registro CS. El DOS almacena la direccin inicial del segmento de cdigo de un programa en el registro CS. Esta direccin de segmento, ms un valor de desplazamiento en el registro de apuntado de instruccin (IP), indica la direccin de una instruccin que es buscada para s ejecucin. Para propsito de programacin normal, no necesita referenciar el registro CS. Registro DS. La direccin inicial de un segmento de datos de programa es almacenada en el registro DS. En trminos sencillos, esta direccin, ms un valor de desplazamiento en una instruccin, genera una referencia a la localidad de un bytes especifico en el segmento de datos. Registro SS. El registro SS permite la colocacin en memoria de una pila, para almacenamiento temporal de direcciones y datos. El DOS almacena la direccin de inicio del segmento de pila de un programa en el registro SS. Esta direccin de segmento, ms un valor de desplazamiento en el registro del apuntador de la pila (SP), indica la palabra actual en la pila que est siendo direccionada. Para propsitos de programacin normal, no se necesita referenciar el registro SS. Registro ES Algunas operaciones con cadenas de caracteres (datos de caracteres) utilizan el registro esta de segmento para manejar el direccionamiento de memoria. En este contexto, el registro ES esta asociado con el registro DI (ndice). Un programa que requiere el uso del registro ES puede inicializarlo con una direccin apropiada.

72

Registros FS y GS. Son registros extra de segmento en los procesadores 80386y posteriores a estos procesadores. Registro Apuntador de instrucciones. (IP) El registro apuntador de instrucciones (IP) de 16 bits contiene el desplazamiento de direccin de la siguiente instruccin que se ejecuta. El registro IP est asociado con el registro CS en el sentido de que el IP indica la instruccin actual dentro del segmento de cdigo que se est ejecutando actualmente. En el ejemplo siguiente, el registro CS contiene 25A4[0]H y el IP contiene 412H. Para encontrar la siguiente instruccin que ser ejecutada el procesados combina las direcciones en el CS y el IP as: Segmento de direccin en el registro CS: 25A40H Desplazamiento de direccin en el registro IP: + 412H Direccin de la siguiente instruccin: 25E52H Registros apuntadores. Los registros apuntadores estn asociados con el registro SS y permiten al procesador accesar datos en el segmento de pila los registros apuntadores son dos:

El registro SP El registro BP

Registro SP. El apuntador de pila IP de 16 bits est asociado con el registro SS y proporciona un valor de desplazamiento que se refiere a la palabra actual que est siendo procesada en la pila. El ejemplo siguiente el registro SS contiene la direccin de segmento 27B3[0]H y el SP el desplazamiento 312H Para encontrar la palabra actual que est siendo procesada en la pila el microprocesador combina las direcciones en el SS y el PP: Direccin de segmento en el registro SS: 27B30H Desplazamiento en el registro SP: + 312H Direccin en la Pila: 27E42H . 27B3[0]H 312H Direccin del segmento SS Desplazamiento del SP Registro BP. El registro BP de 16 bits facilita la referencia de parmetros, los cuales son datos y direcciones transmitidos va lapida. Registros de propsitos generales. Los registros de propsitos generales AX, BX, CX y DX son los caballos de batalla o las herramientas del sistema. Son los nicos en el sentido de que se puede direccionarlos como una palabra o como una parte de un byte. El ltimo byte de la izquierda es la parte "alta", y el ltimo byte de la derecha es la parte "baja" por ejemplo, el registro CX consta de una parte CH (alta) y una parte CL (baja), y usted puede referirse a cualquier parte por si nombre. Las instrucciones siguientes mueven ceros a los registros CX, CH y CL respectivamente. Mov CX, 00 Mov CH, 00 Mov CL, 00

73

Los procesadores 80386 y posteriores permiten el uso de todos registros de propsito general, mas versiones de 32 bits; EAX, EBX y EDCX. Registros AX. El registro AX, el acumulador principal, es utilizado para operaciones que implican entrada/salida y la mayor parte de la aritmtica. Por ejemplo, las instrucciones para multiplicar, dividir y traducir suponen el uso del AX. Tambin, algunas operaciones generan cdigo ms eficientes si se refiere al AX en lugar de los otros registros. Registro BX. El BX es conocido como el registro base ya que es el nico registro de propsitos generales que pueden ser unos ndices para direccionamiento indexado. Tambin es comn emplear al BX para clculos. Registro CX. El CX es conocido como el registro contador. Puede contener un valor para controlar el nmero de veces que un ciclo se repite o un valor para corrimiento de bits, hacia la derecha o hacia la izquierda. El CX tambin es usado para muchos clculos. Registro DX. El DX es conocido como el registro de datos. Algunas operaciones de entrada/salida requieren su uso, y las operaciones de multiplicacin y divisin con cifras grandes suponen al DX y al AX trabajando juntos. Puede usar los registros de propsitos para suma y resta de cifras de 8, 16, 32 bits. Registro ndice. Los registros SI y DI estn disponibles para direccionamientos indexados y para sumas y restas. Que son las operaciones de punta. Registro SI. El registro ndice de 16 bits es requerido por algunas operaciones con cadenas (de caracteres). En este contexto, el SI est asociado con el registro DS. Los procesadores 80386 y posteriores permiten el uso de un registro ampliado a 32 bits, el ESI. Registro DI. El registro ndice destino tambin es requerido por algunas operaciones con cadenas de caracteres. En este contexto, el Di est asociado con el registro ES. Los procesadores 80386 y posteriores permiten el uso de un registro ampliado a 32 bits, el EDI. Registro de bandera. Los registros de banderas sirven parar indicar el estado actual de la maquina y el resultado del procesamiento, Cuando algunas instrucciones piden comparaciones o clculos aritmticos cambian el estado de las banderas. Las banderas estn en el registro de banderas en las siguientes posiciones: bits 15 14 13 12 11 10 9 8 7 6 5 4321 O D I T S Z A P C

Bandera Las banderas ms comunes son las siguientes: OF (Over flow flag, desbordamiento).

74

Indica el desbordamiento de un bit de orden alto (mas a la izquierda) despus de una operacin aritmtica. DF (Direction flag, Direccin). Designa la direccin hacia la izquierda o hacia la derecha para mover o comparar cadenas de caracteres. IF (Interruption flag, Interrupcin). Indica que una interrupcin externa, como la entrada desde el teclado sea procesada o ignorada. TF (Trap flag, Trampa). Examina el efecto de una instruccin sobre los registros y la memoria. Los programas depuradores como DEBUG, activan esta bandera de manera que pueda avanzar en la ejecucin de una sola interrupcin a un tiempo. SF (Sign flag, Signo). Contiene el signo resultante de una operacin aritmtica (0=positivo y 1= negativo). ZF (Zero flag, Zero). Indica el resultado de una operacin aritmtica o de comparacin (0= resultado diferente de cero y 1=resultado igual a cero). AF (Auxiliary carry flag, Acarreo auxiliar). Contiene un acarreo externo del bit 3 en un dato de 8 bits, para aritmtica especializada PF (Parity flag, Paridad). Indica paridad par o impar de una operacin en datos de ocho bits de bajo orden (mas a la derecha). CF (Carry flag, Acarreo). Contiene el acarreo de orden ms alto (mas a la izquierda) despus de una operacin aritmtica; tambin lleva el contenido del ltimo bit en una operacin de corrimiento o rotacin. Cuadro Comparativo TIPOS DE REGISTROS Registros de Segmento FUNCION Un registro de segmento tiene 16 bits de longitud y facilita un rea de memoria para el direccionamiento conocida como el segmento actual de Este registro est compuesto por 16 bits y contiene el desplazamiento de la siguiente instruccin que se va a ejecutar. Los procesadores 80386 y posteriores tienen un IP ampliado de 32 bits llamado EIP. Permiten al sistema acceso de datos al segmento de la pila. Los procesadores 80386 tienen un apuntador de pila de 32 bits llamado ESP. El sistema maneja de manera automtica estos registros.

Registros de Instrucciones

Apuntador

Registros Apuntadores

Registros de Propsito General Son los caballos de batalla del sistema y pueden ser direccionados como una palabra o como una parte de un bytes. Los procesadores 80386 y posteriores permiten el uso de todos los registros de propsitos general ms sus versiones ampliadas de 32 bits llamados EAX, EBX, ECX y EDX. Registros ndices Sirven para el direccionamiento de indexado y para las operaciones de sumas y restas.

75

Registros de Banderas

Sirven para indicar el estado actual de la maquina y el resultado del procesamiento. De los 16 bits de registro de bandera 9 son comunes a toda la familia de los procesadores 8086.

7.6 Archivos
Los archivos tambin denominados ficheros (file); es una coleccin de informacin (datos relacionados entre s), localizada o almacenada como una unidad en alguna parte de la computadora. Los archivos son el conjunto organizado de informaciones del mismo tipo, que pueden utilizarse en un mismo tratamiento; como soporte material de estas informaciones. Los archivos como coleccin de datos sirven para la entrada y salida a la computadora y son manejados con programas. Los archivos pueden ser contrastados con Arrays y registros; Lo que resulta dinmico y por esto en un registro se deben especificar los campos, l nmero de elementos de un arrays (o arreglo), el nmero de caracteres en una cadena; por esto se denotan como "Estructuras Estticas". En los archivos no se requiere de un tamao predeterminado; esto significa que se pueden hacer archivos de datos ms grandes o pequeos, segn se necesiten. Cada archivo es referenciado por su identificador (su nombre.). CARACTERSTICAS DE LOS ARCHIVOS Las principales caractersticas de esta estructura son: Independencia de las informaciones respecto de los programas La informacin almacenada es permanente Un archivo puede ser accedido por distintos programas en distintos momentos Gran capacidad de almacenamiento. CLASIFICACION DE LOS ARCHIVOS Los archivos se clasifican segn su uso en tres grupos: Permanentes o Maestros: Estos contienen informacin que varia poco. En algunos casos es preciso actualizarlos peridicamente. De Movimientos Se cercan para actualizar los archivos maestros. Sus registros son de tres tipos: alta, bajas y modificaciones. De Maniobra o Trabajo. Tienen una vida limitada, normalmente menor que la duracin de la ejecucin de un programa. Su utilizan como auxiliares de los anteriores. TIPOS DE ARCHIVOS Los elementos de un archivo pueden ser de cualquier tipo, simples o estructurados o segn su funcin. SEGN SU FUNCION. Se define por: a.- Archivos Permanentes: Son aquellos cuyos registros sufren pocas o ninguna variacin a lo largo del tiempo, se dividen en:

76

Constantes: Estn formados por registros que contienen campos fijos y campos de baja frecuencia de variacin en el tiempo. De Situacin: Son los que en cada momento contienen informacin actualizada. Histricos: Contienen informacin acumulada a lo largo del tiempo de archivos que han sufridos procesos de actualizacin o bien acumulan datos de variacin peridica en el tiempo. b.- Archivos de Movimiento Son aquellos que se utilizan conjuntamente con los maestros (constantes), y contienen algn campo comn en sus registros con aquellos, para el procesamiento de las modificaciones experimentado por los mismos. c.- Archivo de Maniobra o Transitorio Son los archivos creados auxiliares creados durante la ejecucin del programa y borrados habitualmente al terminar el mismo. SEGN SUS ELEMENTOS. Los principales archivos de este tipo son: Archivo de Entrada: Una coleccin de datos localizados en un dispositivo de entrada. Archivo de Salida: Una coleccin de informacin visualizada por la computadora. Constantes: estn formados por registros que contienen campos fijos y campos de baja frecuencia de variacin en el tiempo. De Situacin: son los que en cada momento contienen informacin actualizada. Histricos: Contienen informacin acumulada a lo largo del tiempo de archivos que han sufrido procesos de actualizacin, o bien acumulan datos de variacin peridica en el tiempo. Archivos de Movimiento o Transacciones: Son aquellos que se utilizan conjuntamente con los maestros (constantes), y contienen algn campo comn en sus registros con aquellos, para el procesamiento de las modificaciones experimentados por los mismos. Archivos de Maniobra o Transitorios: Son los archivos auxiliares creados durante la ejecucin del programa y borrados habitualmente al terminar el mismo.

SEGN SUS ELEMENTOS Los principales archivos de este tipo son: Archivo de Entrada, una coleccin de datos localizada en un dispositivo de entrada. Archivo de Salida, una coleccin de informacin visualizada por la computadora. Archivo de Programa, un programa codificado en un lenguaje especfico y localizado o almacenado en un dispositivo de almacenamiento. Archivo de Texto, una coleccin de caracteres almacenados como una unidad en un dispositivo de almacenamiento. ACCESO A LOS ARCHIVOS Se refiere al mtodo utilizado para acceder a los registros de un archivo prescindiendo de su organizacin. Existen distintas formas de acceder a los datos: Secuenciales; los registros se leen desde el principio hasta el final del archivo, de tal forma que para leer un registro se leen todos los que preceden. Directo; cada registro puede leerse / escribirse de forma directa solo con expresar su direccin en el fichero por l numero relativo del registro o por transformaciones de la clave de registro en l numero relativo del registro a acceder. Por ndice; se accede indirectamente a los registros por su clave, mediante consulta secuenciales a una tabla que contiene la clave y la direccin relativa de cada registro, y posterior acceso directo al registro.

77

Dinmico; es cuando se accede a los archivos en cualquier de los modos anteriormente citados. La eleccin del mtodo est directamente relacionada con la estructura de los registros del archivo y del soporte utilizado.

TIPOS DE ACCESOS Acceso Secuencial. Exige el tratamiento de elemento, para esto es necesario una exploracin secuencial comenzando desde el primer momento (Pascal permite este acceso) Secuenciales: archivo de texto que debe ser ledo del principio hasta el final. Acceso Directo. Permite procesar o acceder a un elemento determinado y referencia directamente por su posicin en el soporte de almacenamiento (Turbo Pascal permite este acceso. Aleatorios: es un archivo con registros de un mismo largo. Un programa puede accesar directamente cualquier registro sin tener que leer los registros previos. Binarios: es un archivo que lee byte por byte sin asumir ninguna estructura. Los archivos Binarios no son un nuevo tipo de archivo, pero si una nueva forma de manipular cualquier tipo de archivo. Las tcnicas de archivo binarios permiten leer o cambiar cualquier byte de un archivo. Son herramientas extremadamente potentes, pero como toda herramienta potente debe manejarse con cuidado

BIBLIOGRAFIA Estructura de Datos en Pascal, Autor Aarn M. Tenenbaum, Moshe J. Augentein. Primera edicin. Diseo y Administracin de Base de Datos Gary W. Hansen, James V. Hansen, Segunda Edicin. Gua de Estructura y Procesamiento de Datos Profesor David Lpez, Segundo semestre U.N.I.R. (Maracaibo).

78

You might also like