Apunte Herramientas Informaticas

download Apunte Herramientas Informaticas

of 80

Transcript of Apunte Herramientas Informaticas

UNIVERSIDAD TECNOLGICA NACIONAL FACULTAD REGIONAL CRDOBA

TECNICATURA DE MECATRNICA HERRAMIENTAS INFORMTICAS

Ing. Centeno, Carlos Ing. Avramovich, Javier A.

A la memoria de mi padre; Boris Avramovich, quien fuera mi primer maestro en el mundo de la electrnica.

+

Universidad Tecnolgica Nacional Facultad Regional Crdoba

Tecnicatura de Mecatrnica

TABLA DE CONTENIDO Tabla de Contenido ...................................................................................................................... 3 Informtica. ................................................................................................................................... 7 Computadora ................................................................................................................................ 7 Arquitectura de una computadora............................................................................................. 7 Funcionamiento......................................................................................................................... 8 Flujo de datos............................................................................................................................ 9 Hardware. ................................................................................................................................... 10 Componentes bsicos del Hardware.......................................................................................... 10 Placa principal......................................................................................................................... 10 Microprocesador. .................................................................................................................... 11 El coprocesador aritmtico...................................................................................................... 11 La memoria. ............................................................................................................................ 11 Memoria ROM......................................................................................................................... 11 Memoria RAM. ........................................................................................................................ 11 Fuente de alimentacin........................................................................................................... 12 Dispositivos de crecimiento (Slots). ........................................................................................ 12 Perifricos................................................................................................................................... 12 Tipos de perifricos................................................................................................................. 13 Otros conceptos y curiosidades .............................................................................................. 14 Software...................................................................................................................................... 14 Tipologa del software................................................................................................................. 15 Los sistemas operativos. ............................................................................................................ 15 Lenguajes de Programacin....................................................................................................... 16 Lenguaje de maquina:............................................................................................................. 16 Lenguaje de bajo nivel (ensambladores) ................................................................................ 16 Lenguaje de alto nivel. ............................................................................................................ 17 Caractersticas de los lenguajes de programacin: ................................................................ 17 Formas del software ................................................................................................................... 17 El proceso de creacin de software............................................................................................ 18 Programacin. ............................................................................................................................ 18 Programas y algoritmos. ......................................................................................................... 18 Compilacin. ........................................................................................................................... 18 Programacin e ingeniera del software.................................................................................. 19 Objetivos de la programacin ................................................................................................. 19 Concepto de "programa" ............................................................................................................ 20 Concepto de funcin ................................................................................................................ 21 Nombre, valor de retorno y argumentos de una funcin......................................................... 21 La funcin principal o funcin main() ...................................................................................... 23 Palabras claves del C ............................................................................................................. 23 Elementos................................................................................................................................... 24 Comentarios............................................................................................................................ 24 Identificadores......................................................................................................................... 24 Variables ................................................................................................................................. 24 Constantes .............................................................................................................................. 24 Operadores ............................................................................................................................. 24 Sentencias .............................................................................................................................. 25 Tipos ........................................................................................................................................... 26 Unidades de medida empleadas en informtica......................................................................... 27 Los bytes, Kilobytes, Megabytes............................................................................................. 27 Los bits.................................................................................................................................... 27 Sistemas de numeracin ............................................................................................................ 28

Ing. Prof. Avramovich, Javier A.

3

Universidad Tecnolgica Nacional Facultad Regional Crdoba

Tecnicatura de Mecatrnica

Sistema binario ....................................................................................................................... 28 Sistema Hexadecimal ............................................................................................................. 29 Diagramas de Flujo .................................................................................................................... 31 Programacin Estructurada .................................................................................................... 31 Comando #include...................................................................................................................... 32 Estructuras Secuenciales ........................................................................................................... 33 Funcin printf() .......................................................................................................................... 33 Funcin scanf().......................................................................................................................... 36 Estructuras Selectiva.................................................................................................................. 38 Funcin if ................................................................................................................................... 38 funcion if-else ............................................................................................................................ 39 funcion if-else-if .......................................................................................................................... 41 El operador condicional ? ........................................................................................................... 42 Funcin switch............................................................................................................................ 43 Estructuras repetitivas ................................................................................................................ 46 Sentencia While.......................................................................................................................... 46 Sentencia Do-While.................................................................................................................... 49 Sentencia for .............................................................................................................................. 52 El operador coma (,) .............................................................................................................. 53 Sentencia Break y continue........................................................................................................ 55 Break....................................................................................................................................... 55 Continue.................................................................................................................................. 55 Sentencia goto............................................................................................................................ 57 Tipos de datos estructurados ..................................................................................................... 58 Vector o array ............................................................................................................................. 58 Consulta de un array............................................................................................................... 58 Asignacin de datos a un array .............................................................................................. 59 Matriz o array bidimensional....................................................................................................... 61 Consulta.................................................................................................................................. 62 Asignacin .............................................................................................................................. 62 Arreglos multidimencionales....................................................................................................... 63 Funciones ................................................................................................................................... 63 Definicin de una funcin........................................................................................................ 64 Prototipos de una funcin. ...................................................................................................... 65 Llamada a una funcin............................................................................................................ 65 Ejemplo: .................................................................................................................................. 65 Conexin y programacin del puerto paralelo............................................................................ 67 El puerto paralelo en un PC.................................................................................................... 67 El Registro de Datos. .............................................................................................................. 68 El Registro de Estado. ............................................................................................................ 68 El Registro de Control............................................................................................................. 69 Asignacin de pines en el conector DB25 Hembra del puerto paralelo.................................. 70 Entradas y salidas por el puerto paralelo................................................................................ 71 Caractersticas E/S. ................................................................................................................ 71 Apndice A - Tabla de Caracteres ASCII ................................................................................... 74 Apndice B Mtodos de ordenamiento y bsqueda................................................................ 75 Ordenamiento. ........................................................................................................................ 75 Mtodo de la burbuja .............................................................................................................. 75 Apndice C Interfase para puerto paralelo.............................................................................. 78 Introduccin. ........................................................................................................................... 78 Descripcin. ............................................................................................................................ 78 Lista de materiales:................................................................................................................. 78

4

Ing. Prof. Avramovich, Javier A.

Universidad Tecnolgica Nacional Facultad Regional Crdoba

Tecnicatura de Mecatrnica

Diagrama electrnico: ............................................................................................................. 79 Placa PCB:.............................................................................................................................. 79

Ing. Prof. Avramovich, Javier A.

5

Universidad Tecnolgica Nacional Facultad Regional Crdoba

Tecnicatura de Mecatrnica

6

Ing. Prof. Avramovich, Javier A.

Universidad Tecnolgica Nacional Facultad Regional Crdoba

Tecnicatura de Mecatrnica

INFORMTICA. La informtica es la disciplina que estudia el tratamiento automtico de la informacin utilizando dispositivos electrnicos y sistemas computacionales. Tambin es definida como el procesamiento de informacin en forma automtica. Para ello los sistemas informticos deben realizar las siguientes tareas bsicas: Entrada: Captacin de informacin. Procesamiento o tratamiento de dicha informacin. Salida: Transmisin de resultados. El vocablo Informtica proveniente del francs informatique, acuado por el ingeniero Philippe Dreyfus en 1962, acrnimo de las palabras information y automatique. En lo que hoy conocemos como informtica confluyen muchas de las tcnicas y de las mquinas que el hombre ha desarrollado a lo largo de la historia para apoyar y potenciar sus capacidades de memoria, de pensamiento y de comunicacin. La informtica se utiliza en diversidad de tareas, por ejemplo: elaboracin de documentos, monitorizacin y control de procesos, robots industriales, telecomunicaciones, desarrollo de juegos, aplicaciones/herramientas multimedia, etc. En la informtica convergen los fundamentos de las ciencias de la computacin (hardware), la programacin y las metodologas para el desarrollo de software, la arquitectura de computadores, las redes de datos como Internet, la inteligencia artificial, as como determinados temas de electrnica. Se puede entender por informtica a la unin sinrgica de todo este conjunto de disciplinas. COMPUTADORA Una computadora (del latn computare -calcular-), tambin denominada como ordenador o computador es un sistema digital con tecnologa microelectrnica, capaz de recibir y procesar datos a partir de un grupo de instrucciones denominadas programas, y finalmente transferir la informacin procesada o guardarla en algn tipo de dispositivo o unidad de almacenamiento. La caracterstica principal que la distingue de otros dispositivos similares, como una calculadora no programable, es que puede realizar tareas muy diversas cargando distintos programas en la memoria para que el procesador los ejecute. Arquitectura de una computadoraMemoriaPrograma001101001110011100001 011111100001010101010 011010001100111101110 001110010101100101011

Bus del sistema

Dispositivos de Entrada/Salida

Area de datos

Area de codigos

100110110110011100001 11110000101010101010 111100001100111101110 00001110101100101011 10101001011 111111110

Registros

ALU

Unidad de Control

Aunque las tecnologas empleadas en las computadoras digitales han cambiado mucho desde que aparecieron los primeros modelos en los aos 40, la mayora todava utiliza la arquitectura

Ing. Prof. Avramovich, Javier A.

7

Universidad Tecnolgica Nacional Facultad Regional Crdoba

Tecnicatura de Mecatrnica

Eckert-Mauchly, publicada a principios de los aos 1940 por John von Neumann pero que fue creada por John Presper Eckert y John William Mauchly. La arquitectura Eckert-Mauchly describe una computadora con 4 secciones principales: la unidad lgica y aritmtica (ALU), la unidad de control, la memoria, y los dispositivos de entrada y salida (E/S). Estas partes estn interconectadas por un conjunto de cables denominados buses: La memoria es una secuencia de celdas de almacenamiento numeradas, donde cada una es un bit o unidad de informacin. La instruccin es la informacin necesaria para realizar lo que se desea con el computador. Las celdas contienen datos que se necesitan para llevar a cabo las instrucciones, con el computador. El nmero de celdas varan mucho de computador a computador, y las tecnologas empleadas para la memoria han cambiado bastante; van desde los rels electromecnicos, tubos llenos de mercurio en los que se formaban los pulsos acsticos, matrices de imanes permanentes, transistores individuales a circuitos integrados con millones de celdas en un solo chip. En general, la memoria puede ser reescrita varios millones de veces (memoria RAM); se parece ms a una pizarra que a una lpida (memoria ROM) que slo puede ser escrita una vez. El procesador (tambin llamado Unidad central de procesamiento o CPU) consta de un tpico smbolo esquemtico para una ALU: A y B son operandos; R es la salida; F es la entrada de la unidad de control; D es un estado de la salida.

La unidad lgica y aritmtica o ALU es el dispositivo diseado y construido para llevar a cabo las operaciones elementales como las operaciones aritmticas (suma, resta), operaciones lgicas (Y, O, NOR), y operaciones de comparacin o relacionales. En esta unidad es en donde se hace todo el trabajo computacional. La unidad de control sigue la direccin de las posiciones en memoria que contiene la instruccin que el computador va a realizar en ese momento; recupera la informacin ponindola en la ALU para la operacin que debe desarrollar. Transfiere luego el resultado a ubicaciones apropiadas en la memoria. Una vez que ocurre lo anterior, la unidad de control va a la siguiente instruccin (normalmente situada en la siguiente posicin, a menos que la instruccin sea una instruccin de salto, informando a la computadora de que la prxima instruccin estar ubicada en otra posicin de la memoria). Los dispositivos E/S sirven a la computadora para obtener informacin del mundo exterior y/o comunicar los resultados generados por el computador al exterior. Hay una gama muy extensa de dispositivos E/S como teclados, monitores, y unidades de disco flexible o cmaras web. Funcionamiento. Las instrucciones que se ejecutan en un computador, no son las ricas instrucciones del ser humano. Una computadora slo se disea con un nmero limitado de instrucciones bien definidas. Los tipos de instrucciones tpicas realizadas por la mayora de las computadoras son como estos ejemplos:

8

Ing. Prof. Avramovich, Javier A.

Universidad Tecnolgica Nacional Facultad Regional Crdoba - Copia los contenidos de la posicin de memoria 123. - Coloca la copia en la posicin 456. - Aade los contenidos de la posicin 666 a la 042. - Coloca el resultado en la posicin 013. - Si los contenidos de la posicin 999 son 0. - Tu prxima instruccin est en la posicin 345.

Tecnicatura de Mecatrnica

Las instrucciones dentro del computador se representan mediante nmeros. Por ejemplo, el cdigo para copiar puede ser 001. El conjunto de instrucciones que puede realizar un computador se conoce como lenguaje de mquina o cdigo mquina. En la prctica, no se escriben las instrucciones para los computadores directamente en lenguaje de mquina, sino que se usa un lenguaje de programacin de alto nivel que se traduce despus al lenguaje de la mquina automticamente, a travs de programas especiales de traduccin (intrpretes y compiladores). Algunos lenguajes de programacin representan de manera muy directa el lenguaje de mquina, como el lenguaje ensamblador (lenguajes de bajo nivel) y, por otra parte, los lenguajes como Java, se basan en principios abstractos muy alejados de los que hace la mquina en concreto (lenguajes de alto nivel). Por lo tanto, el funcionamiento de un computador es en principio bastante sencillo. El computador trae las instrucciones y los datos de la memoria. Se ejecutan las instrucciones, se almacenan los datos y se va a por la siguiente instruccin. Este procedimiento se repite continuamente, hasta que se apaga el computador. Los Programas de ordenador (software) son simplemente largas listas de instrucciones que debe ejecutar el computador, a veces con tablas de datos. Muchos programas de computador contienen millones de instrucciones que se ejecutan a gran velocidad; un computador personal moderno puede ejecutar de 2000 a 3000 millones de instrucciones por segundo. Las capacidades extraordinarias que tienen los computadores no se deben a su habilidad para ejecutar instrucciones complejas. Los computadores ejecutan millones de instrucciones simples diseadas por programadores. Hay programadores que desarrollan grupos de instrucciones para hacer tareas comunes (por ejemplo, dibujar un punto en la pantalla) y luego ponen dichos grupos de instrucciones a disposicin de otros programadores para que estos elaboren funciones o tareas ms complejas. Flujo de datos. El mapa conceptual muestra, en forma bsica, como funciona el flujo de los datos en una computadora, para luego convertirse en informacin til para el usuario. Podemos notar que los datos comnmente fluyen segn esta secuencia:Entrada de datos o informacin

DMA(Acceso Directo a Memoria)

Microprocesador

Memoria RAM

Almacenamiento de la informacin

Salida directa de informacin

Ing. Prof. Avramovich, Javier A.

9

Universidad Tecnolgica Nacional Facultad Regional Crdoba Ejemplos:

Tecnicatura de Mecatrnica

Entrada de datos o informacin: Teclado, Mouse, micrfono, escner. Almacenamiento de informacin: Disco rgido, CD, DVD, USB Drive. Salida directa de informacin: Monitor, parlantes, impresora. Existe tambin la entrada de datos directamente a la RAM, sin la intervencin previa del microprocesador; este modo de acceso se denomina Acceso Directo a Memoria. La memoria RAM est en constante comunicacin con el microprocesador (en el diagrama, procesamiento), de forma mucho ms rpida que cualquier otro dispositivo de almacenamiento. Finalmente la informacin (los datos procesados) es almacenada en algn disco, o bien, sale directamente de forma analgica o digital de la computadora, ya sea hacia el monitor, los altavoces la impresora o cualquier otro dispositivo que reciba y proyecte la informacin. HARDWARE. Hardware es un neologismo proveniente del ingls definido como el conjunto de elementos materiales que conforman una computadora, sin embargo, es usual que sea utilizado en una forma ms amplia, generalmente para describir componentes fsicos de una tecnologa, as el hardware puede ser de un equipo militar importante, un equipo electrnico, un equipo informtico o un robot. En informtica tambin se aplica a los perifricos de una computadora tales como el disco duro, CD-ROM, disquetera (floppy), etc... En dicho conjunto se incluyen los dispositivos electrnicos y electromecnicos, circuitos, cables, armarios o cajas, perifricos de todo tipo y cualquier otro elemento fsico involucrado. El hardware se refiere a todos los componentes fsicos (que se pueden tocar), en el caso de una computadora personal seran los discos, unidades de disco, monitor, teclado, la placa base, el microprocesador, etc. En cambio, el software es intangible, existe como informacin, ideas, conceptos, smbolos, pero no ocupa un espacio fsico, se podra decir que 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 (informacin) son el software. Una computadora sin software sera tan intil como un libro con pginas en blanco. COMPONENTES BSICOS DEL HARDWARE. Placa principal. Tambin llamada Tarjeta Madre o Motherboard es donde se encuentran las conexiones bsicas para todos los componentes de la computadora, los cuales giran en torno al microprocesador. Es bsicamente la que permite o no el futuro crecimiento de las habilidades de cualquier computadora, una tarjeta con una arquitectura muy cerrada terminar con la vida de todo el equipo en el momento que sta requiera una reparacin o mejora, ste fue el caso de la mayora de las computadoras que existieron en el pasado, como por mencionar algunas, podemos citar a la Comodore 64, Tandy 1000 e incluso todas las XTs y algunas 286 de IBM. Estas se pueden clasificar en la actualidad en: Arquitectura de 8 bits: Primeras XT. Arquitectura ISA 8 -16 bits. La mayora de las actuales clones. Arquitectura EISA o MCA de 32 bits. La mayora de las de IBM o compatibles de marca de calidad que se venden actualmente. En ella podemos encontrar los siguientes componentes:

10

Ing. Prof. Avramovich, Javier A.

Universidad Tecnolgica Nacional Facultad Regional Crdoba Microprocesador.

Tecnicatura de Mecatrnica

Es en s el cerebro, el cual se compone a su vez de Unidad Aritmtica, lgica y de control. Esta unidad trabaja en base a un reloj (clock) maestro que coordina la ejecucin de todas las operaciones que realiza el microprocesador. La unidad fundamental de trabajo de este reloj es la cantidad de instrucciones que el microprocesador puede ejecutar en un segundo. As, un clock de 12 MHz limita al microprocesador a realizar 12 millones de instrucciones por segundo. La rapidez y poder de ejecucin de tareas esta determinado completamente por el microprocesador el cual subdivide a las computadoras en diferentes tipos, entre ellos algunas ya obsoletas como son : las llamadas 8086 XT (80286, 80386, 80486) y Pentium (80586), bautizadas as por la compaa fabricante INTEL la cual ha provedo desde las primeras PCs y hasta hoy a la mayora de las computadoras con sus modelos de cerebro. Sin embargo Intel no es ya el nico fabricante de microprocesadores para las computadoras personales, compiten tambin en el mercado compaas como Cyrix, AMD, Power Pc, Digital Equipment, etc. Sin embargo, aunque en competencia, la mayora de esas compaas ofrecen microprocesadores equivalentes a los estndares ofrecidos serie a serie por Intel Corporation. El modelo de un microprocesador nos indica sobre todo el poder o sea el potencial de tareas que un microprocesador puede ejecutar a la vez y su reloj nos indica su velocidad de sincronizacin con la cual stas son realizadas. As entre una computadora 286 y una 486 hay una notable diferencia de poder y velocidad incomparables ya que a la primera no podremos agregarle u ordenarle tantas cosas como a la segunda; y por otro lado entre una 486 de 25 Mhz y una 486 de 50 Mhz estamos hablando que las dos tienen el mismo poder, pero la segunda dobla la velocidad a la primera. El coprocesador aritmtico. Es un microprocesador de instalacin opcional, tambin denominado unidad de punto flotante que auxilia al microprocesador en el uso eficiente de programas de graficacin, clculos matemticos complejos y diseo entre tantos, lo cual al especializarse en dichas funciones acelera la velocidad con que una computadora puede responder a necesidades tan sofisticadas. En la actualidad ya vienen incluidos en todas las computadoras nuevas, ya que el poder que exigen no puede descartar la falta de ste coprocesador. La memoria. Es la capacidad de almacenar informacin, su unidad de almacenamiento es el BYTE que es la capacidad de almacenar un carcter, una letra, nmero o cualquier smbolo como #,$,&, etc. Se clasifican en memoria ROM y RAM. Memoria ROM. Esta memoria es slo de lectura (Read Only Memory), y sirve para almacenar el programa bsico de iniciacin, instalado desde fbrica. Este programa entra en funcin en cuanto es encendida la computadora y su primer funcin es la de reconocer los dispositivos. Memoria RAM. Esta es la denominada memoria de acceso aleatorio (Random Access Memory) o sea, como puede leerse tambin puede escribirse en ella, tiene la caracterstica de ser voltil, esto es, que slo opera mientras est encendida la computadora. En ella son almacenadas tanto las

Ing. Prof. Avramovich, Javier A.

11

Universidad Tecnolgica Nacional Facultad Regional Crdoba

Tecnicatura de Mecatrnica

instrucciones que necesita ejecutar el microprocesador como los datos que introducimos y deseamos procesar, y los resultados obtenidos de esto. Como puede usted ver, si al momento de apagar nuestra computadora se volatilizan nuestro datos almacenados en la memoria RAM, requerimos por lo tanto, de medios que almacenamiento por tiempo indefinido que nos garanticen la seguridad y confiabilidad de nuestros datos, o sea, otro tipo de memorias, que definiremos como memorias auxiliares, entre ella ubicamos al disco duro, los disquete, los CD/DVD, los pen drive, etc. Fuente de alimentacin. Tanto el microprocesador como todos los circuitos que forman los dispositivos se alimentan de cantidades de energa bien definidas y precisas, o sea necesitan de una fuente que les suministre y regule la cantidad necesaria ya que cualquier variacin en el voltaje podra ser suficiente para quemar dichos circuitos. Dispositivos de crecimiento (Slots). Son las puertas que estn listas para recibir la conexin de cualquier otro aparato o tarjeta que permita ampliar las capacidades de trabajo de una computadora, y son el punto ms importante para asegurarnos haber hecho una buena inversin. Estos son las ranuras de expansin y los puertos. Los puertos son los puntos de conexin que ya vienen con la computadora y que permiten la instalacin rpida de los dispositivos ms comunes, como lo son el teclado, la impresora, el monitor, etc. PERIFRICOS. Se denominan perifricos tanto a las unidades o dispositivos a travs de los cuales la computadora se comunica con el mundo exterior, como a los sistemas que almacenan o archivan la informacin, sirviendo de memoria auxiliar de la memoria principal. Se entender por perifrico a todo conjunto de dispositivos que, sin pertenecer al ncleo fundamental de la computadora, formado por la CPU y la memoria central, permitan realizar operaciones de entrada/salida (E/S) complementarias al proceso de datos que realiza la CPU. Estas tres unidades bsicas en un computador, CPU, memoria central y el subsistema de E/S, estn comunicadas entre s por tres buses o canales de comunicacin: el bus de direcciones, para seleccionar la direccin del dato o del perifrico al que se quiere acceder, el bus de control, bsicamente para seleccionar la operacin a realizar sobre el dato (principalmente lectura, escritura o modificacin) y el bus de datos, por donde circulan los datos. A pesar de que el trmino perifrico implica a menudo el concepto de adicional pero no esencial, muchos de ellos son elementos fundamentales para un sistema informtico. El teclado y el monitor, imprescindibles en cualquier computadora personal de hoy en da (no lo fueron en los primeros computadores), son posiblemente los perifricos ms comunes, y es posible que mucha gente no los considere como tal debido a que generalmente se toman como parte necesaria de una computadora. El mouse es posiblemente el ejemplo ms claro de este aspecto. Hace menos de 20 aos no todos las computadora personales incluan este dispositivo. El sistema operativo MS-DOS, el ms comn en esa poca, tena una interfaz de lnea de comandos para la que no era necesario el empleo de un mouse, todo se haca mediante comandos de texto. Fue con la popularizacin de Finder, sistema operativo de la Macintosh de Apple y la posterior aparicin de Windows cuando el mouse comenz a ser un elemento imprescindible en cualquier hogar dotado de una computadora personal. Actualmente existen sistemas operativos con interfaz de texto que tampoco hacen uso del mouse como, por ejemplo, algunos sistemas bsicos de UNIX y Linux.

12

Ing. Prof. Avramovich, Javier A.

Universidad Tecnolgica Nacional Facultad Regional Crdoba Tipos de perifricos Los perifricos pueden clasificarse en 4 categoras principales:

Tecnicatura de Mecatrnica

Perifricos de entrada: Captan y envan los datos al dispositivo que los procesar. Son los que introducen datos externos a la computadora para su posterior tratamiento por parte de la CPU. Estos datos pueden provenir de distintas fuentes, siendo la principal un ser humano. Los perifricos de entrada ms habituales son: Teclado Mouse Cmara web Escner Micrfono Conversor Analgico digital Escner de cdigo de barras Joystick Tableta digitalizadora Pantalla tctil Perifricos de salida: Son dispositivos que muestran o proyectan informacin hacia el exterior del ordenador. La mayora son para informar, alertar, comunicar, proyectar o dar al usuario cierta informacin, de la misma forma se encargan de convertir los impulsos elctricos en informacin legible para el usuario. Sin embargo, no todos este tipo de perifricos es informacin para el usuario. Cabe aclarar tambin que ciertos perifricos de salida pueden ser duales, o sea, de entrada y salida. Los perifricos de salida ms habituales son: Monitor Impresoras Altavoces Auriculares Fax Perifricos de almacenamiento: Son los dispositivos que almacenan datos e informacin por bastante tiempo. La memoria RAM no puede ser considerada un perifrico de almacenamiento, ya que su memoria es voltil y temporal. En otras palabras, se encargan de guardar o salvar datos para que la CPU pueda hacer uso de ellos una vez que han sido eliminados de la memoria principal, ya que sta se borra cada vez que se apaga la computadora. Pueden ser internos, como un disco duro, o extrables, como un CD. Los perifricos de almacenamiento ms habituales son: Disco duro Grabadora y/o lector de CD Grabadora y/o lector de DVD Memoria Flash (usualmente las de las cmaras fotogrficas). Cintas magnticas Memoria porttil (pendrive) Disquete Perifricos de comunicacin: Son los perifricos que se encargan de comunicarse con otras mquinas o computadoras, ya sea para trabajar en conjunto, o para enviar y recibir informacin. Su funcin es permitir o facilitar la interaccin entre dos o ms computadoras, o entre una computadora y otro perifrico externo a la computadora.

Ing. Prof. Avramovich, Javier A.

13

Universidad Tecnolgica Nacional Facultad Regional Crdoba Los perifricos de comunicacin ms habituales son: Fax-Mdem. Tarjeta de red. Tarjeta Wireless tipo infrarrojo. Tarjeta Bluetooth. Controladores de puertos (serie, paralelo, infrarrojo, etc.) USB Otros conceptos y curiosidades

Tecnicatura de Mecatrnica

Algunos computadores ms grandes se diferencian del modelo anterior, en un aspecto importante, porque tienen varias CPU y unidades de control que trabajan al mismo tiempo. Adems, algunos computadores, usados principalmente para investigacin, son muy diferentes del modelo anterior, pero no tienen muchas aplicaciones comerciales. En la actualidad, podemos tener la impresin de que los computadores estn ejecutando varios programas al mismo tiempo. Esto se conoce como multitarea, siendo ms usado el segundo trmino. En realidad, la CPU ejecuta instrucciones de un programa y despus tras un breve periodo de tiempo, cambian a un segundo programa y ejecuta algunas de sus instrucciones. Esto crea la ilusin de que se estn ejecutando varios programas simultneamente, repartiendo el tiempo de la CPU entre los programas. Esto es similar a la pelcula que est formada por una sucesin rpida de fotogramas. El sistema operativo es el programa que generalmente controla el reparto del tiempo. El sistema operativo sirve para decidir, por ejemplo, qu programas se ejecutan, y cundo, y qu fuentes (memoria o dispositivos E/S) se utilizan. El sistema operativo tiene otras funciones que ofrecer a otros programas, como los cdigos que sirven a los programadores, escribir programas para una mquina sin necesidad de conocer los detalles internos de todos los dispositivos electrnicos conectados. En la actualidad se estn empezando a incluir dentro del sistema operativo algunos programas muy usados debido a que es una manera econmica de distribuirlos. No es extrao que un sistema operativo incluya navegadores de Internet, procesadores de texto, programas de correo electrnico, interfaces de red, reproductores de pelculas y otros programas que antes se tenan que conseguir e instalar separadamente. SOFTWARE Se denomina software (palabra de origen anglosajn, pronunciada "sft-uer"), programa, equipamiento lgico o soporte lgico a todos los componentes intangibles de una computadora, es decir, al conjunto de programas y procedimientos necesarios para hacer posible la realizacin de una tarea especfica, en contraposicin a los componentes fsicos del sistema (hardware). Esto incluye aplicaciones informticas tales como un procesador de textos, que permite al usuario realizar una tarea, y software de sistema como un sistema operativo, que permite al resto de programas funcionar adecuadamente, facilitando la interaccin con los componentes fsicos y el resto de aplicaciones. Probablemente la definicin ms formal de software es la atribuida a la IEEE en su estndar 729: la suma total de los programas de cmputo, procedimientos, reglas documentacin y datos asociados que forman parte de las operaciones de un sistema de cmputo. Bajo esta definicin, el concepto de software va ms all de los programas de cmputo en sus distintas formas: cdigo fuente, binario o ejecutable, adems de su documentacin: es decir, todo lo intangible. El trmino software fue usado por primera vez en este sentido por John W. Tukey en 1957. En las ciencias de la computacin y la ingeniera de software, el software es toda la informacin

14

Ing. Prof. Avramovich, Javier A.

Universidad Tecnolgica Nacional Facultad Regional Crdoba

Tecnicatura de Mecatrnica

procesada por los sistemas informticos: programas y datos. El concepto de leer diferentes secuencias de instrucciones de la memoria de un dispositivo para controlar clculos fue inventado por Charles Babbage como parte de su mquina diferencial. La teora que forma la base de la mayor parte del software moderno fue propuesta por vez primera por Alan Turing en su ensayo de 1936, Los nmeros computables, con una aplicacin al problema de decisin. TIPOLOGA DEL SOFTWARE Si bien esta distincin es, en cierto modo, arbitraria, y, a veces, difusa y confusa, se puede distinguir al software de la siguiente forma: Software de sistema. Es la parte que permite funcionar al hardware. Su objetivo es aislar tanto como sea posible al programador de aplicaciones de los detalles del computador particular que se use, especialmente de las caractersticas fsicas de la memoria, dispositivos de comunicaciones, impresoras, pantallas, teclados, etctera. Incluye entre otros: Sistemas operativos Controladores de dispositivo Herramientas de diagnstico Servidores Sistemas de ventanas Utilidades Software de programacin. Que proporciona herramientas para ayudar al programador a escribir programas informticos y a usar diferentes lenguajes de programacin de forma prctica. Incluye entre otros: Editores de texto Compiladores Intrpretes Enlazadores Depuradores Software de aplicacin. Que permite a los usuarios llevar a cabo una o varias tareas ms especficas, en cualquier campo de actividad susceptible de ser automatizado o asistido, con especial nfasis en los negocios. Incluye entre otros: Aplicaciones de automatizacin industrial Software educativo Software mdico Bases de datos Videojuegos Archivos de datos LOS SISTEMAS OPERATIVOS. Para que una maquina basada completamente en electrnica y un ser humano con miles de aos de evolucin se entiendan no ha sido fcil la comunicacin entre ambos. Desde sus orgenes los primeros diseadores y creadores de stas se dieron cuenta que necesitaban algo ms que permitiera la fcil interpretacin de las instrucciones as como de los resultados obtenidos, para lo cul crearon un programa bsico que toda computadora debe cargar primero en su memoria para poderse comunicar y comprender con un ser humano. As naci el Sistema Operativo, programa bsico que se carga al momento de encender la mquina y sirve de intrprete entre el fro lenguaje de la maquina electrnica y el complejo idioma humano, el Sistema operativo es pues, el gobierno interno de la mquina.

Ing. Prof. Avramovich, Javier A.

15

Universidad Tecnolgica Nacional Facultad Regional Crdoba

Tecnicatura de Mecatrnica

LENGUAJES DE PROGRAMACIN Los lenguajes utilizados para escribir programas de computadoras que puedan ser entendidos por ellas se denominan lenguajes de programacin. Los lenguajes de programacin se clasifican en tres grandes categoras: de maquinas, de bajo nivel y de alto nivel. Lenguaje de maquina: El lenguaje de maquina es aquel cuyas instrucciones son directamente entendibles por la computadora y no necesitan traduccin posterior para que el P pueda comprender y ejecutar el programa. Las instrucciones en lenguaje maquina se expresan en trminos de la unidad de memoria ms pequea (bit) = digito binario 0 1, en esencia una secuencia de bits que especifican la operacin y las celdas de memoria implicadas en una operacin Ejemplo de instrucciones en lenguaje de maquina: 0010, 0000, 1001, 1001, 10001, 1110. Como se observa estas instrucciones son fciles de leer por una computadora y difciles para un programador. Por esta razn se hace difcil escribir programas en cdigo o lenguaje de maquina. Y se requiere otro lenguaje para comunicarse con la computadora que se hace ms fcil de escribir y de leer por el programador. Para evitar la tediosa tarea de escribir programas en este lenguaje se han diseado otros programas de programacin que facilitan la escritura y posterior ejecucin de los programas, estos son lenguajes de bajo y alto nivel. Lenguaje de bajo nivel (ensambladores) La programacin en lenguaje de maquina es difcil, por ello se necesitan lenguajes que permitan simplificar este proceso los lenguajes de bajo nivel han sido diseados para ese fin. Estos lenguajes dependen de la maquina o sea del conjunto de instrucciones especificas de la computadora, por ejemplo el lenguaje ensamblador, en el cual las instrucciones se escriben en cdigos alfabticos conocidos como nemotcnicos (abreviaturas de palabras inglesas o espaolas, ejemplo sumar en ingles ADD = suma SUB= resta MPY = multiplicar DIV=dividir LDA= cargar acumulador STO= almacenar Las palabras nemotcnicas son mas fciles de recordar que las secuencias de dgitos de 0 a 1. Una instruccin tpica en ensamblador puede ser ADD X, Y, Z. Esta instruccin significa que se deben sumar los nmeros almacenados en las direcciones X,Y y luego almacenar el resultado en la direccin Z, el lenguaje ensamblador traducir la instruccin a cdigo de maquina, por ejemplo. ADD = 1110 X=1001 Y=1010 Z=1011 La instruccin traducida ser 1110 1001 1000 1011 Despus que un programa ha sido escrito en lenguaje ensamblador se necesita un programa llamado ensamblador, que lo traduzca a cdigo de maquina.

16

Ing. Prof. Avramovich, Javier A.

Universidad Tecnolgica Nacional Facultad Regional Crdoba

Tecnicatura de Mecatrnica

Programa fuente en lenguaje EnsambladorLenguaje de alto nivel.

Ensamblador (Assembler)

Programa en lenguanje de maquina

Los lenguajes de programacin de alto nivel (BASIC, PASCAL, FORTRAN, C, C++, COBOL) son aquellos en los cuales las instrucciones o sentencias a la computadora se escriben con palabras similares a los lenguajes humanos. En general en lenguaje ingles como es el caso de C o C++, lo cual facilita la escritura y la comprensin por parte del programador. Caractersticas de los lenguajes de programacin: Transportabilidad: un programa escrito en un lenguaje de alto nivel se puede escribir con poca o ninguna modificacin en distintos tipos de computadora. Independencia: Los lenguajes deben ser independientes de la mquina o sea una sentencia no depende del diseo de hardware de una computadora en particular. Los programas escritos en lenguaje de alto nivel no son entendibles directamente por la maquina. Necesitan ser traducidos a instrucciones en lenguaje de maquina que lo entienda la computadora. Los programas que realizan esta traduccin se llaman programas compiladores. Los programas escritos en lenguaje de alto nivel se llaman programas fuentes El compilador traduce el programa fuente en un programa objeto, el cual se utiliza en la fase de ejecucin del programa. Algunas computadoras o microcomputadoras utilizan unos programas similares llamados programas interpretes que traducen los programas. El proceso de traduccin de un programa fuente se denomina interpretacin o compilacin, segn sea el programa. Un intrprete traduce y ejecuta una traduccin (sentencia) en cdigo fuente cada vez. Los programas interpretados generalmente se ejecutan mucho ms lentamente que los programas compilados; sin embargo los intrpretes son ms fciles de utilizar y la depuracin (correccin) de errores es mucho ms cmoda. Basic, Basica (Basic Avanced), GW-Basic, son interpretes y Quick Basic es un compilador. Fortran, Pascal , C, son programas compiladores. Los lenguajes de programacin C, Turbo C, C++ , son programas orientados a objeto. Windows fue desarrollado en C. Visual Basic es un lenguaje orientado a eventos. FORMAS DEL SOFTWARE El software adopta varias formas en distintos momentos de su ciclo de vida: Cdigo fuente: escrito por programadores. Contiene el conjunto de instrucciones destinadas a la computadora.

Ing. Prof. Avramovich, Javier A.

17

Universidad Tecnolgica Nacional Facultad Regional Crdoba

Tecnicatura de Mecatrnica

Cdigo objeto: resultado del uso de un compilador sobre el cdigo fuente. Consiste en una traduccin de ste ltimo. El cdigo objeto no es directamente inteligible por el ser humano, pero tampoco es directamente entendible por la computadora. Se trata de una representacin intermedia del cdigo fuente. Cdigo ejecutable: resultado de enlazar uno o varios fragmentos de cdigo objeto. Constituye un archivo binario con un formato tal que el sistema operativo es capaz de cargarlo en la memoria de una computadora, y proceder a su ejecucin.Cdigo o Programa fuente en lenguaje de alto nivelCompilado

Cdigo o Programa objeto en lenguaje de bajo nivel

Linkeado

Cdigo o Programa ejecutable en lenguaje de maquina

EL PROCESO DE CREACIN DE SOFTWARE El proceso de creacin de software es materia de la ingeniera del software, una de las ramas propias de la Ingeniera Informtica. Es un proceso complejo que involucra diversas tareas de gestin y desarrollo. Como resumen de las etapas para la creacin de un software, se pueden mencionar: Anlisis Desarrollo Construccin Pruebas (unitarias e integradas) Produccin PROGRAMACIN. Se conoce como programacin de computadoras a la implementacin de un algoritmo en un determinado lenguaje de programacin, conformando un programa. Mientras que un algoritmo se ejecuta en una mquina abstracta que no tiene limitaciones de memoria o tiempo, un programa se ejecuta en una mquina real, que s tiene esas limitaciones. El lenguaje de programacin puede ser de alto nivel o bajo nivel, en funcin del grado de abstraccin. Programas y algoritmos. Un algoritmo es una secuencia no ambigua, finita y ordenada de instrucciones que han de seguirse para resolver un problema. Un programa normalmente implementa (traduce a un lenguaje de programacin concreto) un algoritmo. Ntese que es la secuencia de instrucciones en s la que debe ser finita, no el nmero de pasos realizados como la ejecucin de ellas. Los programas suelen subdividirse en partes menores (mdulos), de modo que la complejidad algortmica de cada una de las partes sea menor que la del programa completo, lo cual ayuda al desarrollo del programa. Segn Niklaus Wirth un programa est formado por algoritmos y estructura de datos. Se han propuesto diversas tcnicas de programacin, cuyo objetivo es mejorar tanto el proceso de creacin de software como su mantenimiento. Entre ellas se pueden mencionar las programaciones lineal, estructurada, modular y orientada a objetos. Compilacin. El programa escrito en un lenguaje de programacin (comprensible por el ser humano, aunque se suelen corresponder con lenguajes formales descritos por gramticas independientes del

18

Ing. Prof. Avramovich, Javier A.

Universidad Tecnolgica Nacional Facultad Regional Crdoba

Tecnicatura de Mecatrnica

contexto) no es inmediatamente ejecutado en una computadora. La opcin ms comn es compilar el programa, aunque tambin puede ser ejecutado mediante un intrprete informtico. El cdigo fuente del programa se debe someter a un proceso de transformacin para convertirse en lenguaje mquina, interpretable por el procesador. A este proceso se le llama compilacin. Normalmente la creacin de un programa ejecutable (un tpico .exe para Microsoft Windows) conlleva dos pasos. El primer paso se llama compilacin (propiamente dicho) y traduce el cdigo fuente escrito en un lenguaje de programacin almacenado en un archivo a cdigo en bajo nivel, (normalmente en cdigo objeto no directamente al lenguaje mquina). El segundo paso se llama enlazado (del ingls link o linker) se junta el cdigo de bajo nivel generado de todos los ficheros que se han mandado compilar y se aade el cdigo de las funciones que hay el las bibliotecas del compilador para que el ejecutable pueda comunicarse con el sistemas operativo y traduce el cdigo objeto a cdigo mquina. Estos dos pasos se pueden mandar hacer por separado, almacenando el resultado de la fase de compilacin en archivos objetos (un tpico .obj para Microsoft Windows, .o para Unix), para enlazarlos posteriormente, o crear directamente el ejecutable con lo que la fase de compilacin se almacena slo temporalmente. Un programa podra tener partes escritas en varios lenguajes (generalmente C, C++ y Asm), que se podran compilar de forma independiente y enlazar juntas para formar un nico ejecutable. Programacin e ingeniera del software Existe una tendencia a identificar el proceso de creacin de un programa informtico con la programacin, que es cierta cuando se trata de programas pequeos para uso personal, y que dista de la realidad cuando se trata de grandes proyectos. El proceso de creacin de software desde el punto de vista de la Ingeniera tiene los siguientes pasos: Reconocer la necesidad de un programa para solucionar un problema identificar la posibilidad de automatizacin de una tarea. Recoger los requisitos del programa. Debe quedar claro qu es lo que debe hacer el programa y para qu se necesita. Realizar el anlisis de los requisitos del programa. Debe quedar claro cmo debe realizar el programa las cosas que debe hacer. Las pruebas que comprueben la validez del programa se pueden especificar en esta fase. Disear la arquitectura del programa. Se debe descomponer el programa en partes de complejidad abordable. Implementar el programa. Consiste en realizar un diseo detallado, especificando completamente todo el funcionamiento del programa, tras lo cual la codificacin debera resultar inmediata. Implantar (instalar) el programa. Consiste en poner el programa en funcionamiento junto con los componentes que pueda necesitar (bases de datos, redes de comunicaciones, etc.) La Ingeniera del Software se centra en los pasos de planificacin y diseo del programa, mientras que antiguamente (programacin artesanal) la realizacin de un programa consista nicamente en escribir el cdigo. Objetivos de la programacin La programacin de ordenadores debe perseguir tres objetivos fundamentales:

Ing. Prof. Avramovich, Javier A.

19

Universidad Tecnolgica Nacional Facultad Regional Crdoba

Tecnicatura de Mecatrnica

Correccin: un programa es correcto si hace lo que debe hacer. Para determinar si un programa hace lo que debe es muy importante especificar claramente qu debe hacer el programa antes de desarrollarlo y una vez acabado compararlo con lo que realmente hace. Claridad: es muy importante que el programa sea lo ms claro y legible posible para mejorar el mantenimiento del software. Cuando se acaba de escribir el cdigo del programa, se deben buscar errores y corregirlos. Ms concretamente, cuando el programa est concluido, es necesario hacerle ampliaciones o modificaciones, segn la demanda de los usuarios, esta labor puede ser llevada acabo por el mismo programador que implement el programa o por otros. Eficiencia: debe consumir la menor cantidad de recursos posible. Normalmente al hablar de eficiencia se suele hacer referencia al consumo de tiempo y/o memoria. La eficiencia y la claridad de un programa pueden ser objetivos contrapuestos: se puede conseguir mayor claridad sacrificando parte de la eficiencia o viceversa. Pero hay que tener en cuenta que el tiempo del programador es caro, y que hoy en da el precio de los ordenadores es razonable y cada vez son ms baratos. CONCEPTO DE "PROGRAMA" Un programa en sentido informtico est constituido por un conjunto de instrucciones que se ejecutan ordinariamente de modo secuencial, es decir, cada una a continuacin de la anterior. Recientemente, con objeto de disminuir los tiempos de ejecucin de programas crticos por su tamao o complejidad, se est haciendo un gran esfuerzo en desarrollar programas paralelos, esto es, programas que se pueden ejecutar simultneamente en varios procesadores. La programacin paralela es mucho ms complicada que la secuencial y no se har referencia a ella en este curso. Anlogamente a los datos que maneja, las instrucciones que un procesador digital es capaz de entender estn constituidas por conjuntos de unos y ceros. A esto se llama lenguaje de mquina o binario, y es muy difcil de manejar. Por ello, desde casi los primeros aos de los ordenadores, se comenzaron a desarrollar los llamados lenguajes de alto nivel (tales como el Fortran, el Cobol, etc.), que estn mucho ms cerca del lenguaje natural. Estos lenguajes estn basados en el uso de identificadores, tanto para los datos como para las componentes elementales del programa, que en algunos lenguajes se llaman rutinas o procedimientos, y que en C se denominan funciones. Adems, cada lenguaje dispone de una sintaxis o conjunto de reglas con las que se indica de modo inequvoco las operaciones que se quiere realizar. Los lenguajes de alto nivel son ms o menos comprensibles para el usuario, pero no para el procesador. Para que ste pueda ejecutarlos es necesario traducirlos a su propio lenguaje de mquina. Esta es una tarea que realiza un programa especial llamado compilador, que traduce el programa a lenguaje de mquina. Esta tarea se suele descomponer en dos etapas, que se pueden realizar juntas o por separado. El programa de alto nivel se suele almacenar en uno o ms ficheros llamados ficheros fuente, que en casi todos los sistemas operativos se caracterizan por una terminacin tambin llamada extensin especial. As, todos los ficheros fuente de C deben terminar por (.c o .cpp); ejemplos de nombres de estos ficheros son calculos.c, derivada.c, etc. La primera tarea del compilador es realizar una traduccin directa del programa a un lenguaje ms prximo al del computador (llamado ensamblador), produciendo un fichero objeto con el mismo nombre que el fichero original, pero con la extensin (.obj u simplemente .o). En una segunda etapa se realiza el proceso de montaje (linkage) del programa, consistente en producir un programa ejecutable en lenguaje de mquina, en el que estn ya incorporados todos los otros mdulos que aporta el sistema sin intervencin explcita del programador (funciones de librera, recursos del sistema operativo, etc.). En un PC con sistema operativo Windows el programa ejecutable se guarda en un fichero con extensin (*.exe). Este fichero es cargado por el sistema operativo en la memoria RAM cuando el programa va a ser ejecutado.

20

Ing. Prof. Avramovich, Javier A.

Universidad Tecnolgica Nacional Facultad Regional Crdoba

Tecnicatura de Mecatrnica

Una de las ventajas ms importantes de los lenguajes de alto nivel es la portabilidad de los ficheros fuente resultantes. Quiere esto decir que un programa desarrollado en un PC podr ser ejecutado en un Macintosh o en una mquina UNIX, con mnimas modificaciones y una simple recopilacin. El lenguaje C, originalmente desarrollado por D. Ritchie en los laboratorios Bell de la AT&T, fue posteriormente estandarizado por un comit del ANSI (American National Standard Institute) con objeto de garantizar su portabilidad entre distintos computadores, dando lugar al ANSI C, que es la variante que actualmente se utiliza casi universalmente. CONCEPTO DE FUNCIN Las aplicaciones informticas que habitualmente se utilizan, incluso a nivel de informtica personal, suelen contener decenas y an cientos de miles de lneas de cdigo fuente. A medida que los programas se van desarrollando y aumentan de tamao, se convertiran rpidamente en sistemas poco manejables si no fuera por la modularizacin, que es el proceso consistente en dividir un programa muy grande en una serie de mdulos mucho ms pequeos y manejables. A estos mdulos se les suele denominar de distintas formas (subprogramas, subrutinas, procedimientos, funciones, etc.) segn los distintos lenguajes. El lenguaje C hace uso del concepto de funcin (function). Sea cual sea la nomenclatura, la idea es sin embargo siempre la misma: dividir un programa grande en un conjunto de subprogramas o funciones ms pequeas que son llamadas por el programa principal; stas a su vez llaman a otras funciones ms especficas y as sucesivamente. La divisin de un programa en unidades ms pequeas o funciones presenta entre otras las ventajas siguientes: Modularizacin. Cada funcin tiene una misin muy concreta, de modo que nunca tiene un nmero de lneas excesivo y siempre se mantiene dentro de un tamao manejable. Adems, una misma funcin (por ejemplo, un producto de matrices, una resolucin de un sistema de ecuaciones lineales) puede ser llamada muchas veces en un mismo programa, e incluso puede ser reutilizada por otros programas. Cada funcin puede ser desarrollada y comprobada por separado. Ahorro de memoria y tiempo de desarrollo. En la medida en que una misma funcin es utilizada muchas veces, el nmero total de lneas de cdigo del programa disminuye, y tambin lo hace la probabilidad de introducir errores en el programa. Independencia de datos y ocultamiento de informacin. Una de las fuentes ms comunes de errores en los programas de computador son los efectos colaterales o perturbaciones que se pueden producir entre distintas partes del programa. Es muy frecuente que al hacer una modificacin para aadir una funcionalidad o corregir un error, se introduzcan nuevos errores en partes del programa que antes funcionaban correctamente. Una funcin es capaz de mantener una gran independencia con el resto del programa, manteniendo sus propios datos y definiendo muy claramente la interfaz o comunicacin con la funcin que la ha llamado y con las funciones a las que llama, y no teniendo ninguna posibilidad de acceso a la informacin que no le compete. Las funciones de C estn implementadas con un particular cuidado y riqueza, constituyendo uno de los aspectos ms potentes del lenguaje. Es muy importante entender bien su funcionamiento y sus posibilidades. Nombre, valor de retorno y argumentos de una funcin Una funcin de C es una porcin de cdigo o programa que realiza una determinada tarea. Una funcin est asociada con un identificador o nombre, que se utiliza para referirse a ella desde el resto del programa. En toda funcin utilizada en C hay que distinguir entre su definicin, su declaracin y su llamada. Para explicar estos conceptos hay que introducir los conceptos de valor de retorno y de argumentos.

Ing. Prof. Avramovich, Javier A.

21

Universidad Tecnolgica Nacional Facultad Regional Crdoba

Tecnicatura de Mecatrnica

Quizs lo mejor sea empezar por el concepto ms prximo al usuario, que es el concepto de llamada. Las funciones en C se llaman incluyendo su nombre, seguido de los argumentos, en una sentencia del programa principal o de otra funcin de rango superior. Los argumentos son datos que se envan a la funcin incluyndolos entre parntesis a continuacin del nombre, separados por comas. Por ejemplo, supngase una funcin llamada power que calcula x elevado a y. Una forma de llamar a esta funcin es escribir la siguiente sentencia (las sentencias de C terminan con punto y coma): power(x,y); En este ejemplo power es el nombre de la funcin, y x e y son los argumentos, que en este caso constituyen los datos necesarios para calcular el resultado deseado. Qu pasa con el resultado? Dnde aparece? Pues en el ejemplo anterior el resultado es el valor de retorno de la funcin, que est disponible pero no se utiliza. En efecto, el resultado de la llamada a power est disponible, pues aparece sustituyendo al nombre de la funcin en el mismo lugar donde se ha hecho la llamada; en el ejemplo anterior, el resultado aparece, pero no se hace nada con l. A este mecanismo de sustitucin de la llamada por el resultado es a lo que se llama valor de retorno. Otra forma de llamar a esta funcin utilizando el resultado podra ser la siguiente: distancia = power(x+3, y)*escala; En este caso el primer argumento (x+3) es elevado al segundo argumento y, el resultado de la potencia el valor de retorno es multiplicado por escala, y este nuevo resultado se almacena en la posicin de memoria asociada con el identificador distancia. Este ejemplo resulta tpico de lo que es una instruccin o sentencia que incluye una llamada a una funcin en el lenguaje C. Para poder llamar a una funcin es necesario que en algn otro lado, en el mismo o en algn otro fichero fuente, aparezca la definicin de dicha funcin, que en el ejemplo anterior es la funcin power. La definicin de una funcin es ni ms ni menos que el conjunto de sentencias o instrucciones necesarias para que la funcin pueda realizar su tarea cuando sea llamada. En otras palabras, la definicin es el cdigo correspondiente a la funcin. Adems del cdigo, la definicin de la funcin incluye la definicin del tipo del valor de retorno y de cada uno de los argumentos. A continuacin se presenta un ejemplo incompleto de cmo podra ser la definicin de la funcin power utilizada en el ejemplo anterior. double power(double base, double exponente) { double resultado; ... resultado = ... ; return resultado; } La primera lnea de la definicin es particularmente importante. La primera palabra double indica el tipo del valor de retorno. Esto quiere decir que el resultado de la funcin ser un nmero de punto flotante con unas 16 cifras de precisin (as es el tipo double, como se ver ms adelante). Despus viene el nombre de la funcin seguido de entre parntesis la definicin de los argumentos y de sus tipos respectivos. En este caso hay dos argumentos, base y exponente, que son ambos de tipo double. A continuacin se abren las llaves que contienen el cdigo de la funcin. La primera sentencia declara la variable resultado, que es tambin de tipo double. Despus vendran las sentencias necesarias para calcular resultado como base elevado a exponente. Finalmente, con la sentencia return se devuelve resultado al programa o funcin que ha llamado a power. Conviene notar que las variables base y exponente han sido declaradas en la cabecera primera lnea de la definicin, y por tanto ya no hace falta declararlas despus, como se ha

22

Ing. Prof. Avramovich, Javier A.

Universidad Tecnolgica Nacional Facultad Regional Crdoba

Tecnicatura de Mecatrnica

hecho con resultado. Cuando la funcin es llamada, las variables base y exponente reciben sendas copias de los valores del primer y segundo argumento que siguen al nombre de la funcin en la llamada. Una funcin debe ser tambin declarada antes de ser llamada. Adems de la llamada y la definicin, est tambin la declaracin de la funcin. Ya se ver ms adelante dnde se puede realizar esta declaracin. La declaracin de una funcin se puede realizar por medio de la primera lnea de la definicin, de la que pueden suprimirse los nombres de los argumentos, pero no sus tipos; al final debe incluirse el punto y coma (;). Por ejemplo, la funcin power se puede declarar en otra funcin que la va a llamar incluyendo la lnea siguiente: double power(double, double); La declaracin de una funcin permite que el compilador chequee el nmero y tipo de los argumentos, as como el tipo del valor de retorno. La declaracin de la funcin se conoce tambin con el nombre de prototipo de la funcin. La funcin principal o funcin main() Todo programa C, desde el ms pequeo hasta el ms complejo, tiene un programa principal que es con el que se comienza la ejecucin del programa. Este programa principal es tambin una funcin, pero una funcin que est por encima de todas las dems. Esta funcin se llama main() y tiene la forma siguiente (la palabra void es opcional en este caso): void main(void) { sentencia_1 sentencia_2 ... } Las llaves {...} constituyen el modo utilizado por el lenguaje C para agrupar varias sentencias de modo que se comporten como una sentencia nica (sentencia compuesta o bloque). Todo el cuerpo de la funcin debe ir comprendido entre las llaves de apertura y cierre. Palabras claves del C En C, como en cualquier otro lenguaje, existen una serie de palabras clave (keywords) que el usuario no puede utilizar como identificadores (nombres de variables y/o de funciones). Estas palabras sirven para indicar al computador que realice una tarea muy determinada (desde evaluar una comparacin, hasta definir el tipo de una variable) y tienen un especial significado para el compilador. El C es un lenguaje muy conciso, con muchas menos palabras clave que otros lenguajes. A continuacin se presenta la lista de las 32 palabras clave del ANSI C, para las que ms adelante se dar detalle de su significado (algunos compiladores aaden otras palabras clave, propias de cada uno de ellos. Es importante evitarlas como identificadores): Auto Break Case Char Const Continue Default Do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef union unsigned void volatile while

Ing. Prof. Avramovich, Javier A.

23

Universidad Tecnolgica Nacional Facultad Regional Crdoba

Tecnicatura de Mecatrnica

ELEMENTOS Comentarios Los comentarios son textos que no son procesados por el compilador. Sirven como informacin al programador. Para que un texto sea comentario debe estar entre los smbolos /* (marca el comienzo) y */ (marca el final de comentario). Identificadores Se usan para referenciar las variables, las funciones, las etiquetas y otros objetos definidos por el usuario. La longitud del identificador puede variar entre uno o varios caracteres (se recomienda no ms de 31. El primer carcter debe ser una letra o un smbolo subrayado y los caracteres siguientes pueden ser letras, nmeros o smbolos de subrayado. Las minsculas y las maysculas se tratan como distintas. Un identificador no puede ser igual a una palabra clave de C y no debe tener el mismo nombre que una funcin ya escrita o que se encuentre en la biblioteca de C. Variables Una variable es una posicin de memoria con nombre que se usa para mantener un valor que puede ser modificado en el programa. Todas las variables deben ser declaradas antes de poder usarlas. Constantes Las variables pueden cambiar de valor a lo largo de la ejecucin de un programa, o bien en ejecuciones distintas de un mismo programa. Adems de variables, un programa utiliza tambin constantes, es decir, valores que siempre son los mismos. Un ejemplo tpico es el nmero pi que vale 3.141592654. Este valor, con ms o menos cifras significativas, puede aparecer muchas veces en las sentencias de un programa. En C existen distintos tipos de constantes: Constantes numricas. Son valores numricos, enteros o de punto flotante. Se permiten tambin constantes octales (nmeros enteros en base 8) y hexadecimales (base 16). Constantes carcter. Cualquier carcter individual encerrado entre apstrofos (tal como 'a', 'Y', ')', '+', etc.) es considerado por C como una constante carcter. Cadenas de caracteres. Un conjunto de caracteres alfanumricos encerrados entre comillas es tambin un tipo de constante del lenguaje C, como por ejemplo: "espacio", "Esto es una cadena de caracteres", etc. Una variable puede ser fijada a una constante con la sintaxis const tipo identificador = valor (por ejemplo const int a=10). Operadores Los operadores son palabras o smbolos que hacen que un programa acte sobre las variables. En C existen cinco tipos de operadores:

24

Ing. Prof. Avramovich, Javier A.

Universidad Tecnolgica Nacional Facultad Regional Crdoba Aritmticos: + Suma - Resta * Producto / Cociente de una divisin % Resto de una divisin Lgico: ! Not (inversor lgico) && And (Y lgico) || Or (O lgico) Relacionales: = = Igual a != No igual a > Mayor que < Menor que >= Mayor o igual que b) max = a; else max = b; printf( "\nEl mximo es: %d\n", max ); system("PAUSE"); return 0; }

Resultado:2 4 El mximo es: 4 Presione una tecla para continuar . . .

40

Ing. Prof. Avramovich, Javier A.

Universidad Tecnolgica Nacional Facultad Regional Crdoba

Tecnicatura de Mecatrnica

FUNCION IF-ELSE-IF Existe finalmente otra construccin alternativa muy comn, conocida como if-else-if o simplemente else-if. Su construccin se muestra a continuacin:if (condicion 1) { grupo de sentencias 1; } else if (condicion 2) { grupo de sentencias 2; } else if (condicion 3) { grupo de sentencias 3; } else if (condicion n) { grupo de sentencias n; } else { grupo de sentencias por defecto; }

Las condiciones se evalan secuencialmente de arriba hacia abajo hasta encontrar una que d como resultado verdadero. En ese punto, se ejecuta el grupo de sentencias correspondiente a dicha condicin. El resto de condiciones y sentencias asociadas se ignoran. En caso de que ninguna de las condiciones se evale verdadera, se ejecutara el grupo de sentencias por defecto. Como en todos los casos anteriores, el ltimo else es opcional. A continuacin se muestra un ejemplo del uso de esta construccin:int hora; scanf("%d", &hora ); if((hora>=0)&&(hora