You are on page 1of 77

ANTOLOGIA

ALGORITMOS Y LENGUAJES DE
PROGRAMACIN

LIC. SUSANA HERNANDEZ


RODRIGUEZ
DOCENTE DEL ITSP
ING. INDUSTRAL
2009

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.

Lic. Susana Hernndez Rodrguez

Ing. Industrial

ITSP

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

Lic. Susana Hernndez Rodrguez

Ing. Industrial

ITSP

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

Lic. Susana Hernndez Rodrguez

Ing. Industrial

ITSP

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:

Lic. Susana Hernndez Rodrguez

Ing. Industrial

ITSP

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.

Lic. Susana Hernndez Rodrguez

Ing. Industrial

ITSP

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.
Lic. Susana Hernndez Rodrguez

Ing. Industrial

ITSP

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

Lic. Susana Hernndez Rodrguez

Ing. Industrial

ITSP

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.
Lic. Susana Hernndez Rodrguez

Ing. Industrial

ITSP

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

Lic. Susana Hernndez Rodrguez

Ing. Industrial

ITSP

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:
Lic. Susana Hernndez Rodrguez

Ing. Industrial

ITSP

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

Lic. Susana Hernndez Rodrguez

Ing. Industrial

ITSP

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

Lic. Susana Hernndez Rodrguez

Ing. Industrial

ITSP

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

Lic. Susana Hernndez Rodrguez

Ing. Industrial

ITSP

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.

Lic. Susana Hernndez Rodrguez

Ing. Industrial

ITSP

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.

Lic. Susana Hernndez Rodrguez

Ing. Industrial

ITSP

16

SIMBOLOS PARA EL DISEO DE ALGORITMOS


INICIO / TERMINAL

ENTRADA / LECTURA

PROCESO

DECISIN

DICISIN MULTIPLE
CONECTAR

IMPRESORA

INDICADOR DE
DIRECCION

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

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

Lic. Susana Hernndez Rodrguez

Ing. Industrial

ITSP

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

ZONA

PRECIO

12

AMERICA DEL NORTE

15

AMERICA DEL SUR

18

AMERICA CENTRAL

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

Lic. Susana Hernndez Rodrguez

Ing. Industrial

ITSP

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

Lic. Susana Hernndez Rodrguez

Ing. Industrial

ITSP

19

2.3 Definicin de lenguajes algortmicos


2.3.1 Elementos y reglas de la representacin grfica y manu scrita 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.

Lic. Susana Hernndez Rodrguez

Ing. Industrial

ITSP

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

Lic. Susana Hernndez Rodrguez

Ing. Industrial

ITSP

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:
1234-

abarrotes: 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

Lic. Susana Hernndez Rodrguez

Ing. Industrial

ITSP

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.

Lic. Susana Hernndez Rodrguez

Ing. Industrial

ITSP

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.

Lic. Susana Hernndez Rodrguez

Ing. Industrial

ITSP

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
rpidamente. En poco tiempo, un programador puede utilizar la totalidad del lenguaje.
Lic. Susana Hernndez Rodrguez

Ing. Industrial

ITSP

25

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

Lic. Susana Hernndez Rodrguez

Ing. Industrial

ITSP

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.

Lic. Susana Hernndez Rodrguez

Ing. Industrial

ITSP

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.

Lic. Susana Hernndez Rodrguez

Ing. Industrial

ITSP

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:

Lic. Susana Hernndez Rodrguez

Ing. Industrial

ITSP

29

#include <stdio.h>
int main()
{
/* 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.
Lic. Susana Hernndez Rodrguez

Ing. Industrial

ITSP

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

Lic. Susana Hernndez Rodrguez

Ing. Industrial

ITSP

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

Lic. Susana Hernndez Rodrguez

Ing. Industrial

ITSP

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.
Pero dnde se declaran las variables?
Tenemos dos posibilidades, una es declararla como global y otra como local. Por ahora vamos a decir
Lic. Susana Hernndez Rodrguez

Ing. Industrial

ITSP

33

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:
int x = 15;
Tambin se pueden inicializar varias variables en una sola lnea:
int x = 15, y = 20;
Lic. Susana Hernndez Rodrguez

Ing. Industrial

ITSP

34

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.

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 );

Lic. Susana Hernndez Rodrguez

Ing. Industrial

ITSP

35

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 );

Que da como resultado:


El valor de num es: 4.06080e003

Lic. Susana Hernndez Rodrguez

Ing. Industrial

ITSP

36

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
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>

Lic. Susana Hernndez Rodrguez

Ing. Industrial

ITSP

37

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;
nmero = 2;
}

Lic. Susana Hernndez Rodrguez

Ing. Industrial

ITSP

38

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.

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.

Lic. Susana Hernndez Rodrguez

Ing. Industrial

ITSP

39

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

Lic. Susana Hernndez Rodrguez

Ing. Industrial

ITSP

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 );

Lic. Susana Hernndez Rodrguez

Ing. Industrial

ITSP

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 )

Lic. Susana Hernndez Rodrguez

Ing. Industrial

ITSP

42

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
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

Lic. Susana Hernndez Rodrguez

Ing. Industrial

ITSP

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:
quitar los comentarios
Lic. Susana Hernndez Rodrguez

Ing. Industrial

ITSP

44

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

Lic. Susana Hernndez Rodrguez

Ing. Industrial

ITSP

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

Lic. Susana Hernndez Rodrguez

Ing. Industrial

ITSP

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;
}
Lic. Susana Hernndez Rodrguez

Ing. Industrial

ITSP

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;
e=7.5;
f=b;
operacin1= suma(c,d);
operacin2= resta(e,d);
Lic. Susana Hernndez Rodrguez

Ing. Industrial

ITSP

48

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 num1, num2;
Printf(deme un numero);
Scantf(% d, & num1),
Suma=num1+5;
Printf(%d,& suma);
Getch();
Return 0;
}
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);
}
Lic. Susana Hernndez Rodrguez

Ing. Industrial

ITSP

49

Int a,b,d,,e multiplicacion1;


{
Float b,c,resta, resta1:
Char letra;
Printf(deme 3 valores enteros,);
Scanf(%d,&a);
Scanf(%d,&d);
Scanf(%d,&e);
Printf(dame valores enteros flotantes);
Scanf(%f,&b);
Scanf(%f,&c);
resta1= 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);
div2= div(num1, num2);
Printf(%,c,div2);
Getch();
Return 0;
}
EXADECIMAL
Puntero: direccin, de la memoria.

Lic. Susana Hernndez Rodrguez

Ing. Industrial

ITSP

50

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;
}
DECLARACIONES DE PUNTEROS
int*A;
int*lugar;
int*A1;
ASIGNACIN A UN PUNTERO
A=&lugar;
S=&A;
T=&A1;

Lic. Susana Hernndez Rodrguez

Ing. Industrial

ITSP

51

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

Lic. Susana Hernndez Rodrguez

Ing. Industrial

ITSP

52

V. ESTRUCTURAS DE SELECTIVAS
5.1 Selectiva simple

5.2 Selectiva doble

5.3 Selectiva anidada

5.4 Selectiva mltiple

Lic. Susana Hernndez Rodrguez

Ing. Industrial

ITSP

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

Lic. Susana Hernndez Rodrguez

Ingls
If <condicin>
then
<accin Si>
endif

Ing. Industrial

ITSP

54

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:
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
Lic. Susana Hernndez Rodrguez

Ingls
If <condicin> then
<accin S1>
else
<accin S2>
End_if
Ing. Industrial

ITSP

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

Lic. Susana Hernndez Rodrguez

Ing. Industrial

ITSP

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
Escribir ("rechazado")
Fin_si
Lic. Susana Hernndez Rodrguez

Ing. Industrial

ITSP

57

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
He= ht - 40
Si he > 8 entonces
Het =he - 8
Lic. Susana Hernndez Rodrguez

Ing. Industrial

ITSP

58

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.

Lic. Susana Hernndez Rodrguez

Ing. Industrial

ITSP

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:

Lic. Susana Hernndez Rodrguez

Ing. Industrial

ITSP

60

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

Lic. Susana Hernndez Rodrguez

Ing. Industrial

ITSP

61

VI. ESTRUCTURAS DE REPETICIN


6.1 Repetir mientras

6.2 Repetir hasta

6.3 Repetir desde

Lic. Susana Hernndez Rodrguez

Ing. Industrial

ITSP

62

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);
}
Lic. Susana Hernndez Rodrguez

Ing. Industrial

ITSP

63

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:
for(inicializacin; condicin; incremento)
Sentencia;
Lic. Susana Hernndez Rodrguez

Ing. Industrial

ITSP

64

(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);
}

Lic. Susana Hernndez Rodrguez

Ing. Industrial

ITSP

65

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

Lic. Susana Hernndez Rodrguez

Ing. Industrial

ITSP

66

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};

unidCompradas se inicializan con 10 datos


enteros

caracter Letras[52]={'A','B','C', .,'Z','a','b',...,'z'}


char Letras[52]={'A','B','C', .,'Z','a','b',...,'z'};

Letras se inicializa con 52 datos de tipo


caracter

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.

A[10] = 45;
talla[2] = 1.56;
nombre[2] = "Fernandez";
vocales[3] = 'E';

C) Entrada/salida
para (i = 1 ; hasta i <= N ; con i=i+1)
{
Leer V [ 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.

para (i = 1 ; hasta i<= 5 ; con i=i+1)


{
Mostrar Peso [ i ]; }

Muestra en pantalla los valores almacenados en


cada elemento del array: Peso[1], Peso[2],
Peso[3], Peso[4] y Peso[5]

Lic. Susana Hernndez Rodrguez

Ing. Industrial

ITSP

67

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

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]

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.

Lic. Susana Hernndez Rodrguez

Ing. Industrial

ITSP

68

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 ]; }
}

Lic. Susana Hernndez Rodrguez

Ing. Industrial

ITSP

69

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

Lic. Susana Hernndez Rodrguez

Ing. Industrial

ITSP

70

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.
Registros FS y GS.
Lic. Susana Hernndez Rodrguez

Ing. Industrial

ITSP

71

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
Los procesadores 80386 y posteriores permiten el uso de todos registros de propsito general, mas
versiones de 32 bits; EAX, EBX y EDCX.
Lic. Susana Hernndez Rodrguez

Ing. Industrial

ITSP

72

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

Bandera
Las banderas ms comunes son las siguientes:
OF (Over flow flag, desbordamiento).
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).
Lic. Susana Hernndez Rodrguez

Ing. Industrial

ITSP

73

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

Registros de
Instrucciones

Apuntador

Registros Apuntadores

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 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.

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.

Lic. Susana Hernndez Rodrguez

Ing. Industrial

ITSP

74

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:
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.

Lic. Susana Hernndez Rodrguez

Ing. Industrial

ITSP

75

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.
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.

Lic. Susana Hernndez Rodrguez

Ing. Industrial

ITSP

76

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).

Lic. Susana Hernndez Rodrguez

Ing. Industrial

ITSP

77

You might also like