Sunteți pe pagina 1din 127

2013

MDULO DE FUNDAMENTOS DE
PROGRAMACIN

ING. JUAN F. PACHECO TORRES


UNIVERSIDAD CSAR VALLEJO
12/03/2013

FACULTAD DE INGENIERA
ESCUELA DE INGENIERA DE SISTEMAS

MDULO
NOMBRE DE LA ASIGNATURA
FUNDAMENTOS DE PROGRAMACIN
CDIGO
HEAF102
HORAS TERICAS-HORAS PRCTICAS-CRDITOS
32 4

PERIODO DE ELABORACIN
2012

ELABORO
ING. JUAN FRANCISCO PACHECO TORRES

NDICE
NDICE ............................................................................................................................. ii
INTRODUCCIN ........................................................................................................... iv
I UNIDAD ........................................................................................................................ 5
I.

EL COMPUTADOR ............................................................................................ 6
1.1. DEFINICIN ................................................................................................. 6
1.2. TIPOS ............................................................................................................. 6
1.3. GENERACIN .............................................................................................. 8
1.4. COMPONENTES DEL COMPUTADOR: ................................................. 11

II.

TIPOS DE DATOS............................................................................................. 26
2.1. DATOS DE TIPO ENTERO........................................................................ 27
2.2. DATOS DE TIPO REAL ............................................................................. 28
2.3. DATOS DE TIPO LGICO ........................................................................ 28
2.4. DATOS DE TIPO CARCTER .................................................................. 29
2.5. DATOS DE TIPO CADENA ....................................................................... 29

III.

VARIABLES, CONSTANTES E IDENTIFICADORES .............................. 29


3.1. IDENTIFICADORES .................................................................................. 29
3.2. VARIABLES ............................................................................................... 31
3.3. CONSTANTES ............................................................................................ 32

IV.

EXPRESIONES Y OPERADORES .............................................................. 38


4.1. EXPRESIONES ARITMTICAS ............................................................... 39
4.2. EXPRESIONES LGICAS ......................................................................... 43
4.3. EXPRESIONES DE CARCTER .............................................................. 47
4.4. EXPRESIONES DE CADENA ................................................................... 47

V. DEFINICIN Y CARACTERSTICAS DE UN ALGORITMO ...................... 50


5.1. QU ES ALGORITMO? ........................................................................... 50
5.2. CARACTERSTICAS DE UN ALGORITMO. .......................................... 52
5.3. PARTES DE UN ALGORITMO ................................................................. 53
VI.

RESOLUCIN DE PROBLEMAS UTILIZANDO LA COMPUTADORA 53

VII.

LENGUAJES ALGORTMICOS .................................................................. 56

VIII.

DIAGRAMA DE FLUJO O FLUJOGRAMA ............................................... 57

8.1. DEFINICIN ............................................................................................... 57


8.2. CARACTERSTICAS ................................................................................. 57
8.3. SMBOLOS UTILIZADOS ......................................................................... 57
IX.

PSEUDOCDIGO ......................................................................................... 58

ii

II UNIDAD .............................................................................................................. 62
X. ESTRUCTURAS ALGORTMICAS ................................................................. 63
10.1

ESTRUCTURAS SECUENCIALES ................................................... 63

10.2

ESTRUCTURAS DE CONDICIONALES .......................................... 68

10.3

ESTRUCTURAS REPETITIVAS O CCLICAS ................................. 85

III UNIDAD .......................................................................................................... 106


XI.

FUNCIONES Y PROCEDIMIENTOS ........................................................ 107


11.1.

FUNCIONES ...................................................................................... 107

11.2.

FUNCIONES RECURSIVAS ............................................................ 109

11.3.

PROCEDIMIENTOS.......................................................................... 111

11.4.

ARGUMENTOS POR VALOR Y POR REFERENCIA ................... 112

11.5.

VARIABLES LOCALES Y GLOBALES ......................................... 114

XII.

ARREGLOS O VECTORES UNIDIMENSIONALES ............................... 115

XIII.

ORDENAMIENTO ...................................................................................... 120

REFERENCIAS BIBLIOGRFICAS ......................................................................... 126

iii

INTRODUCCIN
El Curso de Fundamentos de Programacin, est constituido por cuatro crditos
acadmicos y est dirigido inicialmente a alumnos del primer ciclo de estudios, sin que
esto implique que lo puedan tomar participantes deseosos de adquirir conocimientos en
el arte de la programacin de computadoras. Para este curso no requiere que el
participante posea conocimientos iniciales para el desarrollo de los temas planteados; el
temario pretende que los participantes adquieran y apliquen conocimientos bsicos
necesarios para la construccin de soluciones informticas, utilizando para ello diversas
estrategias de aprendizaje permitiendo activar las habilidades cognitivas y meta
cognitivas en el estudiante.
El presente mdulo no pretende ser un libro especializado en la construccin de
algoritmos; es un material de consulta que pretende llevar al estudiante al aprendizaje de
los conocimientos bsicos necesarios para adquirir conocimientos previos en la
programacin de computadoras, los cuales ayudarn a enfrentarse a la solucin de
problemas reales en su entorno.
Toma la premisa de Luis Joyanes Aguilar1, pues construye y recopila una cantidad de
ejercicios prcticos que brindan la posibilidad de adquirir destreza y habilidad en el
anlisis y resolucin de los mismos
Est dividido en tres Unidades Didcticas, que van desde la adquisicin de
conocimientos previos en el diseo de algoritmos, hasta la solucin de los mismos
usando el lenguaje de programacin C++.
La Primera Unidad comprende una Introduccin a Hardware, Software, tcnicas de
Programacin, Lenguajes de Programacin, Tipos de Datos, Operadores, Variables,
Constantes, Expresiones (aritmticas, lgicas, carcter y cadena); una definicin de
algoritmos, resolucin de problemas por computadora, conceptualizacin de los
diagramas de flujo, simbologa y utilidad, luego se toca las estructuras algortmicas, en
donde se desarrollan ejercicios prcticos de las estructuras secuenciales y condicionales.
La Segundad Unidad contempla conocer y trabajar con las estructuras repetitivas
hacer mientras, mientras hacer y para hacer, as mismo se trabaja con
contadores y acumuladores.
Finalizamos en la Tercera Unidad con un vistazo a los subprogramas o funciones,
Vectores o Arreglos Unidimensionales y los algoritmos de ordenamiento.

Madrid, 1996 "Todos los cursos de programacin deben apoyarse en la resolucin de gran
nmero de problemas que permitan al alumno adquirir prctica que le facilite el aprendizaje."

iv

I UNIDAD

MDULO

I.

FUNDAMENTOS DE PROGRAMACIN

EL COMPUTADOR
1.1. DEFINICIN
Una computadora (tambin llamada ordenador o computador) es un
sistema digital con tecnologa microelectrnica, capaz de recibir y procesar
datos a partir de un grupo de instrucciones denominadas programas, y
finalmente transferir la informacin procesada o guardarla en algn tipo de
dispositivo o unidad de almacenamiento.
La caracterstica principal que la distingue de otros dispositivos similares,
como una calculadora no programable, es que puede realizar tareas muy
diversas cargando distintos programas en la memoria para que el procesador
los ejecute.
1.2. TIPOS
A. SUPERCOMPUTADORAS
Una supercomputadora es el tipo de computadora
ms potente y ms rpida que existe en un momento
dado. Estas mquinas estn diseadas para procesar
enormes cantidades de informacin en poco tiempo
y son dedicadas a una tarea especfica.
As mismo son las ms caras, sus precios alcanzan los 30 MILLONES de
dlares y ms; y cuentan con un control de temperatura especial, esto
para disipar el calor que algunos componentes alcanzan a tener.
Ejemplos de tareas a las que son expuestas las supercomputadoras son
los siguientes:
- Bsqueda y estudio de la energa y armas nucleares.
- Bsqueda de yacimientos petrolferos con grandes bases de datos
ssmicos.
- El estudio y prediccin de tornados.
- El estudio y prediccin del clima de cualquier parte del mundo.
- La elaboracin de maquetas y proyectos de la creacin de aviones,
simuladores de vuelo.
Debido a su precio, son muy pocas las supercomputadoras que se
construyen en un ao.
B. MACROCOMPUTADORAS O MAINFRAMES
Las macrocomputadoras son tambin conocidas
como Mainframes. Los mainframes son grandes,
rpidos y caros sistemas que son capaces de
controlar cientos de usuarios simultneamente, as
como cientos de dispositivos de entrada y salida.

Ing. Juan Francisco Pacheco Torres

MDULO

FUNDAMENTOS DE PROGRAMACIN

Los mainframes tienen un costo que va desde 350,000 dlares hasta


varios millones de dlares. De alguna forma los mainframes son ms
poderosos que las supercomputadoras porque soportan ms programas
simultneamente. PERO las supercomputadoras pueden ejecutar un slo
programa ms rpido que un mainframe.
En el pasado, los Mainframes ocupaban cuartos completos o hasta pisos
enteros de algn edificio, hoy en da, un Mainframe es parecido a una
hilera de archiveros en algn cuarto con piso falso, esto para ocultar los
cientos de cables de los perifricos, y su temperatura tiene que estar
controlada.
C. MINICOMPUTADORAS
En 1960 surgi la minicomputadora, una versin ms
pequea de la Macrocomputadora. Al ser orientada a
tareas especficas, no necesitaba de todos los
perifricos que necesita un Mainframe, y esto ayudo a
reducir el precio y costos de mantenimiento.
Las minicomputadoras, en tamao y poder de procesamiento, se
encuentran entre los mainframes y las estaciones de trabajo. En general,
una minicomputadora, es un sistema multiproceso (varios procesos en
paralelo) capaz de soportar de 10 hasta 200 usuarios simultneamente.
Actualmente se usan para almacenar grandes bases de datos,
automatizacin industrial y aplicaciones multiusuario.
D. MICROCOMPUTADORAS O PCS
Las microcomputadoras o Computadoras Personales
(PCs) tuvieron su origen con la creacin de los
microprocesadores. Un microprocesador es "una
computadora en un chip", o sea un circuito integrado
independiente. Las PCs son computadoras para uso
personal y relativamente son baratas y actualmente
se encuentran en las oficinas, escuelas y hogares.
El trmino PC se deriva de que para el ao de 1981, IBM, sac a la
venta su modelo "IBM PC", la cual se convirti en un tipo de
computadora ideal para uso "personal", de ah que el trmino "PC" se
estandariz y los clones que sacaron posteriormente otras empresas
fueron llamados "PC y compatibles", usando procesadores del mismo
tipo que las IBM, pero a un costo menor y pudiendo ejecutar el mismo
tipo de programas.
Existen otros tipos de microcomputadoras, como la Macintosh, que no
son compatibles con la IBM, pero que en muchos de los casos se les
llaman tambin "PCs", por ser de uso personal.

Ing. Juan Francisco Pacheco Torres

MDULO

FUNDAMENTOS DE PROGRAMACIN

En la actualidad existen variados tipos en el diseo de PCs:


- Computadoras personales, con el gabinete tipo mini torre, separado
del monitor.
- Computadoras personales porttiles "Laptop" o "Notebook".
- Computadoras personales ms comunes, con el gabinete horizontal,
separado del monitor.
- Computadoras personales que estn en una sola unidad compacta el
monitor y el CPU.
- Las computadoras "laptops" son aquellas computadoras que estn
diseadas para poder ser transportadas de un lugar a otro. Se
alimentan por medio de bateras recargables, pesan entre 2 y 5 kilos y
la mayora trae integrado una pantalla de LCD (Liquid Crys tal
Display).
- Estaciones de trabajo o Workstations. Las estaciones de trabajo se
encuentran entre las minicomputadoras y las macrocomputadoras
(por el procesamiento). Las estaciones de trabajo son un tipo de
computadoras que se utilizan para aplicaciones que requieran de
poder de procesamiento moderado y relativamente capacidades de
grficos de alta calidad. Son usadas para: Aplicaciones de ingeniera,
CAD (Diseo asistido por computadora), CAM (manufactura asistida
por computadora), Publicidad, Creacin de Software.
1.3. GENERACIN
A. PRIMERA GENERACIN (1951 - 1958)
En esta generacin haba un gran desconocimiento de las
capacidades de las computadoras, puesto que se realiz un
estudio en esta poca que determin que con veinte
computadoras se saturara el mercado de los Estados Unidos
en el campo de procesamiento de datos. Esta generacin
abarco la dcada de los cincuenta. Y se conoce como la
primera generacin.
Estas mquinas tenan las siguientes caractersticas:
- 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.
En esta generacin las mquinas son grandes y costosas (de un costo
aproximado de 10,000 dlares).
La computadora ms exitosa de la primera generacin fue la IBM 650,
de la cual se produjeron varios cientos. Esta computadora que usaba un

Ing. Juan Francisco Pacheco Torres

MDULO

FUNDAMENTOS DE PROGRAMACIN

esquema de memoria secundaria llamado tambor magntico, que es el


antecesor de los discos actuales.
B. SEGUNDA GENERACIN (1959 - 1964)
En esta generacin las computadoras se reducen
de tamao y son de menor costo. Aparecen
muchas compaas y las computadoras eran
bastante avanzadas para su poca como la serie
5000 de Burroughs y la ATLAS de la Universidad
de Manchester. Algunas computadoras se programaban con cintas
perforadas y otras por medio de cableado en un tablero.
Caractersticas de esta generacin:
- 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; cantidad de calor y eran sumamente lentas.
- 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.
C. TERCERA GENERACIN (1964 - 1971)
La tercera generacin de computadoras emergi con
el desarrollo de circuitos integrados (pastillas de
silicio) en las que se colocan miles de componentes
electrnicos en una integracin en miniatura. Las
computadoras nuevamente se hicieron ms
pequeas, ms rpidas, desprendan menos calor y
eran energticamente ms eficientes. El ordenador
IBM-360 domin las ventas de la tercera generacin de ordenadores
desde su presentacin en 1965. El PDP-8 de la Digital Equipment
Corporation fue el primer miniordenador.
Caractersticas de esta generacin:
- 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.
Ing. Juan Francisco Pacheco Torres

MDULO

FUNDAMENTOS DE PROGRAMACIN

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.

D. CUARTA GENERACIN (1971 - 1988)


Aparecen los microprocesadores que es un gran
adelanto de la microelectrnica, son circuitos
integrados de alta densidad y con una velocidad
impresionante. Las microcomputadoras con base en
estos circuitos son extremadamente pequeas y
baratas, por lo que su uso se extiende al mercado industrial. Aqu nacen
las computadoras personales que han adquirido proporciones enormes y
que han influido en la sociedad en general sobre la llamada "revolucin
informtica".
Caractersticas de esta generacin:
- 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.
E. QUINTA GENERACIN (1983 A LA FECHA)
En vista de la acelerada marcha de la microelectrnica, la sociedad
industrial se ha dado a la tarea de poner tambin a esa altura el desarrollo
del software y los sistemas con que se manejan las computadoras. Surge
la competencia internacional por el dominio del mercado de la
computacin, en la que se perfilan dos lderes que, sin embargo, no han
podido alcanzar el nivel que se desea: la capacidad de comunicarse con
la computadora en un lenguaje ms cotidiano y no a travs de cdigos o
lenguajes de control especializados.
Japn lanz en 1983 el llamado "programa de la quinta generacin de
computadoras", con los objetivos explcitos de producir mquinas con
Ing. Juan Francisco Pacheco Torres

10

MDULO

FUNDAMENTOS DE PROGRAMACIN

innovaciones reales en los criterios mencionados. Y en los Estados


Unidos ya est en actividad un programa en desarrollo que persigue
objetivos semejantes, que pueden resumirse de la siguiente manera:
- Se desarrollan las microcomputadoras, o sea, computadoras
personales o PC.
- Se desarrollan las supercomputadoras.
1.4. COMPONENTES DEL COMPUTADOR:
Grfico 01

Grfico 02

Grfico 03

Ing. Juan Francisco Pacheco Torres

11

MDULO

FUNDAMENTOS DE PROGRAMACIN

A. HARDWARE
a) UNIDAD DE ENTRADA DE DATOS
Las unidades de entrada toman datos del exterior o aceptan
informacin que introduce el usuario (por teclado, o incluso desde
otra mquina o modem).
Segn qu datos pueden ocurrir dos cosas:
- Que sean almacenados en memoria para una posterior consulta
o tratamiento o
- Que pasen a la unidad de control para ser procesadas
inmediatamente.
Aqu hay que considerar que lo que para el computador es secuencial
al humano le puede parecer simultneo, debido a la velocidad del
primero.
Entre este tipo de dispositivos tenemos:
- TECLADO: Dispositivo que permite introducir
informacin a la computadora mediante la
pulsacin de teclas.
-

MOUSE: Dispositivo que permite ingresar


rdenes a la computadora por medio de la
sealizacin, estas rdenes se ejecutan haciendo
clic al botn del Mouse.

SCANNER:
Dispositivo
para
capturar
imgenes mediante rastreo. Es muy utilizado en
diseos grficos.

LECTORES DE CDIGO DE BARRA:


Dispositivo con mecanismo de funcionamiento
similar al Scanner, pero el tipo de informacin
que analizan es de contraste (solo blanco y
negro) utilizado para identificacin de tems,
comnmente inventarios.

MULTIMEDIA: como dispositivos


contiene: micrfono, cmara digital, etc.

WEBCAM: Es una cmara de pequeas


dimensiones. Slo es la cmara, no tiene
LCD. Tiene que estar conectada al PC para
poder funcionar, y esta transmite las imgenes
al ordenador. Su uso es generalmente para
videoconferencias por internet, pero mediante
el software adecuado, se pueden grabar videos
como una cmara normal y tomar fotos estticas.

Ing. Juan Francisco Pacheco Torres

de

entrada

12

MDULO

FUNDAMENTOS DE PROGRAMACIN

b) UNIDAD DE MEMORIA
En estas unidades sern donde se almacenan tanto los datos con los
programas (todo en cdigo binario). Se pueden distinguir
(fsicamente) dos tipos de dispositivos de memoria:
-

MEMORIA PRIMARIA:
Constituida por componentes microelectrnicos, es la unidad de
memoria de acceso ms rpida de un computador. Para que un
computador funcione, todos los datos y programas necesarios
deben estar almacenados ('cargados') en la Memoria Principal.
Por otro lado, es la memoria de ms alto costo, por lo que es
limitada en tamao. Existen dos tipos de memoria principal:
RAM y ROM
Almacenamiento primario:
o RAM: (Random Access Memory o Memoria de Acceso
Aleatorio): En esta memoria son almacenados los datos que
estn siendo ejecutados por el CPU, y el acceso es realizado
directamente en cualquier lugar de la memoria. En esta
memoria se almacenan los procesos que estn siendo
ejecutados, acaban de ser ejecutados o sern ejecutados. Es de
carcter temporal y vital para el sistema de la computadora,
entre cuyas caractersticas estn ser de lectura y escritura,
pudindose acceder a la informacin aqu almacenada, con el
objeto de modificarla. Se le considera reutilizable. Es voltil,
reteniendo la informacin basndose en energa elctrica. Al
apagarse el computador, todo lo contenido se pierde.

o ROM: (Read Only Memory o Memoria de Slo Lectura):


Es grabada por el fabricante de hardware, y no puede ser
modificada. Esta memoria es de una velocidad superior a la
RAM. En esta memoria se almacenan los valores
correspondientes a las rutinas de inicio del sistema de
computacin y a su configuracin. Es creada en el momento
de la fabricacin del equipo y se almacena en chips que
permiten que este tipo de memoria sea permanente, ya que lo
que permanece en la ROM no se pierde aunque el
computador se apague. Su funcin principal es guardar
informacin inicial que el computador necesita para colocarse
en marcha una vez que se enciende. Solo sirve para leer. Se
puede leer la informacin desde esta memoria y no recibir
informacin.

Ing. Juan Francisco Pacheco Torres

13

MDULO

FUNDAMENTOS DE PROGRAMACIN

o CACH: Son memorias auxiliares de alta velocidad, donde


se almacenan los datos e instrucciones mayormente utilizados
por el CPU. Se usan con la finalidad de reducir el tiempo de
acceso global, y su operacin dentro del proceso de acceso de
datos es el siguiente: cuando el CPU requiere datos o
instrucciones para su operacin, lo busca primero en la
memoria cach, de no encontrarlo all, accesa la memoria
RAM, y si no estn disponibles en RAM, deben ser trados de
algn dispositivo de almacenamiento secundario a la memoria
principal.

MEMORIA SECUNDARIA:
Tambin llamadas de almacenamiento masivo o permanente,
formadas por componentes magnticos. es una memoria de
acceso mucho ms lento que la Memoria Principal, es de costo
inferior y el almacenamiento de informacin es permanente e
ilimitado. Existe una variedad de dispositivos que cumplen la
funcin de Memoria Secundaria.
Los ms importantes son: Disquetes y Discos Duros. Tambin
existen los discos pticos y los Compac Disc. En este ltimo
tiempo ha aparecido el DVD, de quien se dice vendr a
reemplazar al CD.
Almacenamiento secundario:
o Disco rgido o Disco Duro: El
disco duro es el sistema (o
dispositivo)
de
almacenamiento masivo de
datos ms difundido. Los
primeros computadores no
incorporaban estos discos,
porque manejaban un volumen
de datos pequeos, y les
bastaba utilizar los disquetes
de pocos KB.
Este se encuentra en el interior del gabinete y consta,
generalmente, de varios discos metlicos que giran a alta
velocidad, cuya superficie e magnetizable a la cual se acede
para leer o escribir de ambos lados, con cabezas magnticas
que se posan sobre los discos. El disco duro tiene una gran
capacidad de almacenamiento que vara a medida que pasa el
tiempo, en la actualidad existen de 80, 250, 500 GB
(Gigabytes), etc.

Ing. Juan Francisco Pacheco Torres

14

MDULO

FUNDAMENTOS DE PROGRAMACIN

o Disket: Es un disco flexible de plstico


recubierto por una superficie magntica, que
se introduce en las disqueteras que son los
dispositivos que leen y graban datos.
Almacenan 1.44 megabytes.
o Zip: Es un disco reutilizable parecido al Disquete pero de
mayor tamao. Almacenan entre 100 y 750 Megabytes.

o CD: Llamado disco compacto, segn su tipo se puede leer o


escribir, lo cual se hace por medio de un rayo de luz que
impacta sobre l. Su capacidad es de 720 Megabytes.
Disco ptico circular para el almacenamiento de informacin
de forma binaria. Generalmente de 12 cm. de dimetro y que
pesa unos pocos gramos. La informacin se almacena de
forma digital, o sea, unos y ceros. La informacin en un CD
es leda por una lser desde una lectora de CDs, al usar luz,
no hay contacto fsico con la superficie, por lo tanto, no hay
deterioro de los datos.
Hay tres tipos:
El CD-RW
Es el CD regrabable.
El CD-ROM
Solo se puede leer
EL CD-R Se puede grabar un solo vez
o DVD: Digital Video Disk. Nuevo
estndar
en
dispositivos
de
almacenamiento masivo con formato de
CD pero que llega a 17 GB de
capacidad. Digital Verstil Disc (o
Digital Video Disc), sistema basado en
CD con capacidad para almacenar
sonido y video.
o Memorias USB: Las Memorias USB son
dispositivos de almacenamiento digital que
permiten transportar gran cantidad de
informacin en el bolsillo.
Las Memorias USB han venido a ser el
sustituto natural del disquete ya que son
soportes de reducido tamao y que permiten
intercambiar informacin entre diferentes
ordenadores con suma facilidad.

Ing. Juan Francisco Pacheco Torres

15

MDULO

FUNDAMENTOS DE PROGRAMACIN

La Memoria USB tiene una capacidad de entre los 128 Mb y


los 4 Gb y permiten ser personalizadas mediante serigrafa, o
tampografa en el caso de superficies curvas o mediante
grabacin por lser. La velocidad de lectura o transmisin de
datos depende del chip y actualmente existen 2 velocidades,
la 1.1 y la 2.0.
Diferencias entre discos rgidos y flexibles
La gran diferencia entre estas unidades es que en el caso del disco
el medio magntico es fijo, mientras que en los disquetes y el Zip
son removibles. Un medio removible nos permite llevar
informacin de una PC a otra, mientras que un medio de
almacenamiento fijo es interno y propio de la PC.
Esta propiedad de removibles hace de los disquetes y Zips
medios sumamente seguros para guardar informacin importante.
No hay ningn modo en que se pueda alterar o destruir la
informacin del Disquetes que est debidamente guardado.
Aunque lo que grabamos en el disco es tambin permanente, por
el hecho de no ser esta una unidad removible, la informacin est
expuesta a determinados riesgos.
REPRESENTACIN BINARIA
La unidad mnima de representacin que acepta el computador es la
BINARIA, bit de 0 1, esto significa que un carcter (a,b,c,d,...,
1,2,3,... +,-,*,...) est compuesto de 8 bit, por ejemplo, la letra "a"
est representada por 00110110
0
0
bit: 0 1
Byte: 8 bit

1024 Byte --------- 1 Kilobyte:


1024 Kbyte --------- 1 Megabyte:
1024 Mbyte --------- 1GByte:
1024 GBytes --------- 1TerraByte:

c) UNIDAD CENTRAL DE PROCESOS DE DATOS


Es el cerebro del computador. Se encarga de controlar el flujo de la
informacin entre todos los componentes y de procesar las
instrucciones de los distintos programas en uso, en un determinado
momento.
-

UNIDAD ARITMTICA LGICA: Realiza las operaciones


aritmticas como adicin, sustraccin, divisin, multiplicacin y
las lgicas como mayor que, menor que, mayor o igual, menor o
igual.

Ing. Juan Francisco Pacheco Torres

16

MDULO

FUNDAMENTOS DE PROGRAMACIN

UNIDAD DE CONTROL: Coordina las acciones que se llevan


a cabo en la CPU, como decodificar e interpretar informacin
desde un componente a otro, entre otras tareas.

Es importante sealar que el CPU es un micro chip, que controla los


recursos de la computadora, es l quien le da la velocidad a la
computadora, en la actualidad se encuentran en el mercado
procesadores como:
- Pentium D 955 Extreme Edition de 3.6 Ghz Bus 1066 Mhz
- Intel Core Duo de 2.50 Ghz Bus Frontal de 667 Mhz
- Intel Core 2 Duos de 3.00 Ghz Bus 1333 Mhz
Mientras mayor sea el nmero en Ghz, mayor ser la velocidad de
procesamiento de la computadora.

Procesador
d) UNIDAD DE SALIDA
Estos dispositivos son los encargados de transferir datos o
informacin al exterior. Tal informacin se puede grabar en un
medio magntico, transmitida a otros computadores, mostrarse en
pantalla o plasmarse en papel.
Entre este tipo de dispositivos tenemos:
-

IMPRESORAS: Dispositivo que


sirve para captar la informacin que
le enva la CPU y imprimirla en
papel, plstico, etc. Hay varios tipos:
Matricial, Inyeccin de Tinta, Lser,
Trmicas.

MONITORES: Es un perifrico de
salida y en su superficie luminiscente
es en la que se reproducen las
imgenes. El monitor es el que
mantiene informado al usuario de lo
que est haciendo el computador en
cada momento.
Las caractersticas de un monitor
dependen de la calidad de la imagen y
esta del nmero de pxeles que

Ing. Juan Francisco Pacheco Torres

17

MDULO

FUNDAMENTOS DE PROGRAMACIN

dispone y del nmero de colores que pueda mostrar. Un monitor


VGA muestra apenas 16 colores y una resolucin de 640 x 480
(baja resolucin). Un monitor SVGA llega hasta 16 millones de
colores con resolucin de 1280 x 1024 (altsima resolucin).
-

ALTAVOCES: Dispositivos por los


cuales se emiten sonidos procedentes de la
tarjeta de sonido. Actualmente existen
bastantes ejemplares que cubren la oferta
ms comn que existe en el mercado. Se
trata de modelos que van desde lo ms
sencillo (una pareja de altavoces estreo),
hasta el ms complicado sistema de Dolby
Digital, con nada menos que seis altavoces, pasando por
productos intermedios de 4 o 5 altavoces. Sin duda alguna, se
nota perfectamente el esfuerzo que todos los fabricantes han
realizado para ponerse al da en esta tecnologa, ya que en poco
tiempo han incorporado a su tecnologa desarrollos basados en
Dolby Surround o Dolby Digital.

PLOTTER: Es una unidad de salida de informacin que permite


obtener documentos en forma de dibujo.
Existen plotters para diferentes tamaos mximos de hojas (A0,
A1, A2, A3 y A4); para diferentes calidades de hojas de salida
(bond, calco, acetato); para distintos espesores de lnea de dibujo
(diferentes espesores de rapidgrafos), y para distintos colores de
dibujo.

DATA SHOW O CAONES: Es una unidad de salida de


informacin. Es bsicamente una pantalla plana de cristal lquido,
transparente e independiente. Acoplado a un retroproyector
permite la proyeccin amplificada de la informacin existente en
la pantalla del operador.
Existe una variante tecnolgica del data
show, conocida como el can de
proyeccin, que puede ser catalogada
como un sistema independiente de
proyeccin mediante lentes, muy similar a
un proyector de video. Los modelos ms
recientes de caones utilizan LCDs.

Ing. Juan Francisco Pacheco Torres

18

MDULO

FUNDAMENTOS DE PROGRAMACIN

Cabe mencionar que hay componentes adicionales de una computadora


que se encuentran dentro de la torre cajn como son:
TARJETA MADRE: En ella se insertan otra serie de tarjetas que
dan funcionamiento al computador. Tambin se coloca en ella el
CPU y la memoria, y por medio de la controladora se hace interface
con los dispositivos de almacenamiento. La Tarjeta Madre puede ser
un Pentium IV, Pentium D, etc.

Ing. Juan Francisco Pacheco Torres

19

MDULO

FUNDAMENTOS DE PROGRAMACIN

TARJETA DE SONIDO: Es la que permite hacer la interface de


sonido en una computadora.

TARJETA DE VDEO: Es la que hace la interface de vdeo,


permitiendo as que visualicemos la informacin por el monitor.

TARJETA FAX/MDEM: Es la que permite enviar y recibir faxes


y conectarnos con otras computadoras va mdem, por medio de sta
se hace la conexin a Internet y ella acta como interface entre la
computadora y la lnea telefnica.

TARJETA DE RED: Tambin conocida como NIC (Network


Interface Card), es el elemento que conectamos al PC para
proporcionar el soporte de red. Suele venir en formato ISA o PCI;
para el Ethernet estndar resulta ms que suficiente el ancho de
banda de ISA, pero para Fast Ethernet merece la pena utilizar PCI.

Ing. Juan Francisco Pacheco Torres

20

MDULO

FUNDAMENTOS DE PROGRAMACIN

FUENTE DE PODER: Es la que le suministra


corriente a la computadora.

Partes Principales de una Computadora

B. SOFTWARE
a) QU ES EL SOFTWARE? DEFINICIN Y CONCEPTO DEL
SOFTWARE
El software es un conjunto de programas elaborados por el hombre,
que controlan la actuacin del computador, haciendo que ste siga en
sus acciones una serie de esquemas lgicos predeterminados.
El software es el nexo de unin entre el hardware y el hombre. El
computador, por s solo, no puede comunicarse con el hombre y
viceversa, ya que lo separa la barrer del lenguaje. El software trata de
acortar esa barrera, estableciendo procedimientos de comunicacin
entre el hombre y la mquina; es decir, el software obra como un
intermediario entre el hardware y el hombre.
Tal y como he definido el software, ste es un conjunto de programas.
La pregunta ahora es: qu es un programa? Un programa es una
secuencia de instrucciones que pueden ser interpretadas por un
computador, obteniendo como fruto de esa interpretacin un
determinado resultado que ha sido predeterminadamente establecido
por el ser humano. Los programas estn divididos en rutinas. Una
rutina es un subconjunto del conjunto de instrucciones que conforman

Ing. Juan Francisco Pacheco Torres

21

MDULO

FUNDAMENTOS DE PROGRAMACIN

el programa. Cada una de las rutinas de un programa realiza una


determinada funcin dentro del mismo.
Funciones del software:
- Administrar los recursos de cmputo
- Proporcionar las herramientas para optimizar estos recursos.
- Actuar como intermediario entre el usuario y la informacin
almacenada
b) GENERACIN DEL SOFTWARE
-

DURANTE LOS PRIMEROS AOS DE LA ERA DE LA


COMPUTADORA, el software se contemplaba como un aadido.
La programacin de computadoras era un "arte de andar por casa"
para el que existan pocos mtodos sistemticos. El desarrollo del
software se realizaba virtualmente sin ninguna planificacin, hasta
que los planes comenzaron a descalabrarse y los costes a correr.
Los programadores trataban de hacer las cosas bien, y con un
esfuerzo heroico, a menudo salan con xito. El software se
diseaba a medida para cada aplicacin y tena una distribucin
relativamente pequea.
La mayora del software se desarrollaba y era utilizado por la
misma persona u organizacin. La misma persona lo escriba, lo
ejecutaba y, si fallaba, lo depuraba. Debido a este entorno
personalizado del software, el diseo era un proceso implcito,
realizado en la mente de alguien y, la documentacin normalmente
no exista.

LA SEGUNDA ERA EN LA EVOLUCIN DE LOS


SISTEMAS: de computadora se extienden desde la mitad de la
dcada de los sesenta hasta finales de los setenta. La
multiprogramacin y los sistemas multiusuario introdujeron nuevos
conceptos de interaccin hombre - mquina. Las tcnicas
interactivas abrieron un nuevo mundo de aplicaciones y nuevos
niveles de sofisticacin del hardware y del software. Los sistemas
de tiempo real podan recoger, analizar y transformar datos de
mltiples fuentes, controlando as los procesos y produciendo
salidas en milisegundos en lugar de minutos. Los avances en los
dispositivos de almacenamiento en lnea condujeron a la primera
generacin de sistemas de gestin de bases de datos.
La segunda era se caracterizo tambin por el establecimiento del
software como producto y la llegada de las "casas del software".
Los patronos de la industria, del gobierno y de la universidad se
aprestaban a "desarrollar el mejor paquete de software" y ganar as
mucho dinero. Conforme creca el nmero de sistemas
informticos, comenzaron a extenderse las bibliotecas de software
de computadora. Las casas desarrollaban proyectos en los que se
producan programas de decenas de miles de sentencia fuente.
Todos esos programas, todas esas sentencias fuente tenan que ser

Ing. Juan Francisco Pacheco Torres

22

MDULO

FUNDAMENTOS DE PROGRAMACIN

corregidos cuando se detectaban fallos, modificados cuando


cambiaban los requisitos de los usuarios o adaptados a nuevos
dispositivos hardware que se hubieran adquirido. Estas actividades
se llamaron colectivamente mantenimiento del software.
-

LA TERCERA ERA EN LA EVOLUCIN DE LOS


SISTEMAS: de computadora comenz a mediados de los aos
setenta y continu ms all de una dcada. El sistema distribuido,
mltiples computadoras, cada una ejecutando funciones
concurrentes y comunicndose con alguna otra, increment
notablemente la complejidad de los sistemas informticos. Las
redes de rea local y de rea global, las comunicaciones digitales de
alto ancho de banda y la creciente demanda de acceso "instantneo"
a los datos, supusieron una fuerte presin sobre los desarrolladores
del software.
La conclusin de la tercera era se caracterizo por la llegada y
amplio uso de los microprocesadores. El microprocesador ha
producido un extenso grupo de productos inteligentes, desde
automviles hasta hornos microondas, desde robots industriales a
equipos de diagnsticos de suero sanguneo.

LA CUARTA ERA DE LA EVOLUCIN DE LOS


SISTEMAS: informticos se aleja de las computadoras
individuales y de los programas de computadoras, dirigindose al
impacto colectivo de las computadoras y del software. Potentes
maquinas personales controladas por sistemas operativos
sofisticados, en redes globales y locales, acompaadas por
aplicaciones de software avanzadas se han convertido en la norma.
La industria del software ya es la cuna de la economa del mundo.
Las tcnicas de la cuarta generacin para el desarrollo del software
estn cambiando en la forma en que la comunidad del software
construye programas informticos. Las tecnologas orientadas a
objetos estn desplazando rpidamente los enfoques de desarrollo
de software ms convencionales en muchas reas de aplicaciones.
Sin embargo, un conjunto de problemas relacionados con el
software ha persistido a travs de la evolucin de los sistemas
basados en computadora, y estos problemas continan aumentando.
o Los avances del software continan dejando atrs nuestra
habilidad de construir software para alcanzar el potencial del
hardware.
o Nuestra habilidad de construir nuevos programas no pueden ir
al mismo ritmo de la demanda de nuevos programas, ni
podemos construir programas lo suficientemente rpido como
para cumplir las necesidades del mercado y de los negocios.
o El uso extenso de computadoras ha hecho de la sociedad cada
vez ms dependiente de la operacin fiable del software.

Ing. Juan Francisco Pacheco Torres

23

MDULO

FUNDAMENTOS DE PROGRAMACIN

Cuando el software falla, pueden ocurrir daos econmicos


enormes y ocasionar sufrimiento humano.
o Luchamos por construir software informtico que tengan
fiabilidad y alta calidad.
o Nuestra habilidad de soportar y mejorar los programas
existentes se ve amenazada por diseos pobres y recursos
inadecuados.
En respuesta a estos problemas, las prcticas de la Ingeniera del
Software se estn adoptando en toda la industria.
c) CLASIFICACIN DEL SOFTWARE
-

SOFTWARE DE SISTEMA: es el software bsico o sistema


operativo. Es un conjunto de programas cuyo objeto es facilitar el
uso del computador (asla de la complejidad de cada dispositivo, y
presenta al exterior un modelo comn de sistema de manejo para
todos los dispositivos) y conseguir que se use eficientemente
(ejemplo: realizar operaciones mientras se ejecuta un programa).
Administra y asigna los recursos del sistema (hardware).
El software de sistemas puede agruparse entre categoras
funcionales principales:
o Los programas de control del sistema controlan el uso del
hardware, el software y los recursos de datos de un sistema de
computadora durante la ejecucin de una tarea de
procesamiento de informacin del usuario.
o Los programas de apoyo al sistema sustentan las operaciones, la
administracin y a los usuarios de un sistema de computadora,
proporcionando una diversidad de servicios.
o Los programas de desarrollo de sistemas ayudan a los usuarios
a desarrollar programas y procedimientos de informacin y a
preparar las aplicaciones de usuario.

SOFWARE DE APLICACIN: son los programas que controlan


y optimizacin la operacin de la mquina, establecen una relacin
bsica y fundamental entre el usuario y el computador, hacen que el
usuario pueda usar en forma cmoda y amigable complejos
sistemas hardware, realizan funciones que para el usuario seran
engorrosas o incluso imposibles, y actan como intermediario entre
el usuario y el hardware.
Son escritos / modificados por programadores de sistemas que han
de tener profundos conocimientos acerca de cmo trabaja
realmente la mquina. Se proporciona normalmente como parte
integrante de la mquina por el proveedor.
Existe un gran nmero de programas de aplicacin diseados para
fines especficos, Ej.: Aplicaciones ofimticas, Software educativo,
Software mdico, Bases de datos, Videojuegos, etc.

Ing. Juan Francisco Pacheco Torres

24

MDULO

Ing. Juan Francisco Pacheco Torres

FUNDAMENTOS DE PROGRAMACIN

25

MDULO

II.

FUNDAMENTOS DE PROGRAMACIN

TIPOS DE DATOS
Todos los datos tienen un tipo asociado con ellos. Un dato puede ser un simple
carcter, tal como b, un valor entero tal como 35. El tipo de dato determina la
naturaleza del conjunto de valores que puede tomar una variable.

Numricos
Lgicos
Alfanumricos (string)

Simples
Tipos de
datos
Estructurados
(Def. por el
usuario)

Arreglos (Vectores, Matrices)


Registros
Archivos
Apuntadores

Tipos de Datos Simples


Datos Numricos: Permiten representar valores escalares de forma
numrica, esto incluye a los nmeros enteros y los reales. Este tipo de datos
permiten realizar operaciones aritmticas comunes.
Datos Lgicos: Son aquellos que solo pueden tener dos valores (cierto o
falso) ya que representan el resultado de una comparacin entre otros datos
(numricos o alfanumricos).
Datos Alfanumricos (String): Es una secuencia de caracteres
alfanumricos que permiten representar valores identificables de forma
descriptiva, esto incluye nombres de personas, direcciones, etc. Es posible
representar nmeros como alfanumricos, pero estos pierden su propiedad
matemtica, es decir no es posible hacer operaciones con ellos. Este tipo de
datos se representan encerrados entre comillas.
Ejemplo:
Instituto Tecnolgico de Tuxtepec
1997
Los datos que utilizan los programas se pueden clasificar en base a diferentes
criterios. Uno de los ms significativos es aquel que dice que todos los datos que
utilizan los programas son simples o compuestos.
Un dato simple es indivisible (atmico), es decir, no se puede descomponer.
Ejemplo 1: Un ao es un dato simple.
Ao...: 2006
Un ao se expresa con un nmero entero, el cual no se puede descomponer. Sin
embargo, un dato compuesto est formado por otros datos.
Ing. Juan Francisco Pacheco Torres

26

MDULO

FUNDAMENTOS DE PROGRAMACIN

Ejemplo 2: Una fecha es un dato compuesto por tres datos simples (da, mes,
ao).
Fecha:
Da...: 30
Mes...: 11
Ao...: 2006
Ejemplo 3: Otro ejemplo de dato simple es una letra.
Letra...: t
Una letra se representa con un carcter del alfabeto. Pero, cuando varias letras se
agrupan, entonces se obtiene un dato compuesto por varios caracteres.

Ejemplo 4: Para formar un nombre de persona se utilizan varios caracteres.


Nombre...: Ana (dato compuesto por tres caracteres)
En este apartado se van a estudiar cinco tipos de datos:
Entero
Real
Lgico
Carcter
Cadena
De ellos, tan solo el tipo cadena es compuesto. Los dems son los tipos de datos
simples considerados estndares. Esto quiere decir que la mayora de los
lenguajes de programacin permiten trabajar con ellos. Por ejemplo, en lenguaje
C es posible utilizar datos de tipo entero, real y carcter, sin embargo, los datos de
tipo lgico no se pueden utilizar, ya que, no existen en este lenguaje.
Existen otros tipos de datos, simples y compuestos, que se estudiarn ms
adelante.
A los tipos de datos simples estndares tambin se les conoce como tipos de datos
primitivos, bsicos o fundamentales.
2.1.

DATOS DE TIPO ENTERO


Un dato de tipo entero es aquel que puede tomar por valor un nmero
perteneciente al conjunto de los nmeros enteros (Z), el cual est formado por
los nmeros naturales, supuestos (nmeros negativos) y el cero.
Z = { ..., -3, -2, -1, 0, 1, 2, 3, ... }

Ing. Juan Francisco Pacheco Torres

27

MDULO

FUNDAMENTOS DE PROGRAMACIN

Ejemplo: La edad de una persona y el ao en que naci, son dos datos de tipo
entero:
Edad...: 29
Ao....: 1976
Z es un conjunto infinito de nmeros enteros, y como el ordenador no puede
representarlos todos, un dato de tipo entero slo puede tomar por valor un
nmero perteneciente a un subconjunto de Z. Los valores mximo y mnimo
de dicho subconjunto varan segn las caractersticas de cada ordenador y del
compilador que se utilice.
2.2.

DATOS DE TIPO REAL


Un dato de tipo real es aquel que puede tomar por valor un nmero
perteneciente al conjunto de los nmeros reales (R), el cual est formado por
los nmeros racionales e irracionales.
Ejemplo: El peso de una persona (en kilogramos) y su altura (en
centmetros), son datos que pueden considerarse de tipo real.
Peso.....: 75,3
Altura...: 172,7
R es un conjunto infinito de nmeros reales, y como el ordenador no puede
representarlos todos, un dato de tipo real slo puede tomar por valor un
nmero perteneciente a un subconjunto de R. Los valores de dicho
subconjunto varan segn las caractersticas de cada ordenador y del
compilador que se utilice.

2.3.

DATOS DE TIPO LGICO


En programacin, un dato de tipo lgico es aquel que puede tomar por valor
slo uno de los dos siguientes:
{ verdadero, falso }
Los valores verdadero y falso son contrapuestos, de manera que, un dato de
tipo lgico siempre est asociado a que algo se cumpla o no se cumpla.
Ejemplo: El estado de una barrera de paso de trenes es un dato que puede
considerarse de tipo lgico, por ejemplo, asociando verdadero a que est
subida y falso a que est bajada.
Estado...: falso (indica que la barrera est bajada)

Ing. Juan Francisco Pacheco Torres

28

MDULO

2.4.

FUNDAMENTOS DE PROGRAMACIN

DATOS DE TIPO CARCTER


Un dato de tipo carcter es aquel que puede tomar por valor un carcter
perteneciente al conjunto de los caracteres que puede representar el
ordenador.
Ejemplo: En un examen con preguntas en las que hay que seleccionar la
respuesta correcta entre varias opciones dadas (a, b, c, d, e), la respuesta
correcta de cada una de las preguntas es un dato de tipo carcter.
Respuesta correcta a la pregunta 3...: 'c'

2.5.

DATOS DE TIPO CADENA


Un dato de tipo cadena es aquel que puede tomar por valor una secuencia de
caracteres.
Ejemplo: El ttulo de un libro y el nombre de su autor, son datos de tipo
cadena.
Ttulo...: "La Odisea" (cadena de 9 caracteres)
Autor....: "Homero" (cadena de 6 caracteres)
Obsrvese que, en la cadena "La Odisea", el carcter espacio en blanco
tambin se cuenta.

III. VARIABLES, CONSTANTES E IDENTIFICADORES


3.1. IDENTIFICADORES
La mayora de los elementos de un algoritmo escrito en pseudocdigo se
diferencian entre s por su nombre. Por ejemplo, los tipos de datos bsicos se
nombran como: entero, real, logico y caracter
Cada uno de ellos es un identificador. Un identificador es el nombre que se le
da a un elemento de un algoritmo (o programa). Por ejemplo, el tipo de dato
entero hace referencia a un tipo de dato que es distinto a todos los dems
tipos de datos, es decir, los valores que puede tomar un dato de tipo entero, no
son los mismos que los que puede tomar un dato de otro tipo.
Los identificadores entero, real, logico y caracter estn predefinidos, forman
parte del lenguaje algortmico. No obstante, en un algoritmo tambin pueden
existir identificadores definidos por el programador. Por ejemplo, un
algoritmo puede utilizar variables y constantes definidas por el programador.
Adems, los algoritmos tambin se deben nombrar mediante un identificador.

Ing. Juan Francisco Pacheco Torres

29

MDULO

FUNDAMENTOS DE PROGRAMACIN

En pseudocdigo, a la hora de asignar un nombre a un elemento de un


algoritmo, se debe de tener en cuenta que todo identificador debe cumplir
unas reglas de sintaxis. Para ello, en nuestro pseudocdigo CEE (C en
Espaol), vamos a seguir las mismas reglas de sintaxis que existen en
lenguaje C:
1. Consta de uno o ms caracteres.
2. El primer carcter debe ser una letra o el carcter subrayado (_), mientras
que, todos los dems pueden ser letras, dgitos o el carcter subrayado (_).
Las letras pueden ser minsculas o maysculas del alfabeto ingls. As
pues, no est permitido el uso de las letras '' y ''.
3. No pueden existir dos identificadores iguales, es decir, dos elementos de
un algoritmo no pueden nombrarse de la misma forma. Lo cual no quiere
decir que un identificador no pueda aparecer ms de una vez en un
algoritmo.
De la segunda regla se deduce que un identificador no puede contener
caracteres especiales, salvo el carcter subrayado (_). Es importante resaltar
que las vocales no pueden llevar tilde ni diresis.
Ejemplo 1: Algunos identificadores vlidos que pueden ser definidos por el
programador son:
numero
dia_del_mes
PINGUINO1
_ciudad
Z
Ejemplo 2: Los siguientes identificadores no son vlidos por incumplir la
segunda regla:
123
_DA
numero*
lugar de nacimiento
ao
Ejemplo 3: Los siguientes identificadores no pueden ser definidos por el
programador:
entero
caracter
entero y caracter son identificadores predefinidos (ya existen), por tanto, no
pueden ser definidos por el programador, en cumplimiento de la tercera regla.
Los identificadores son sensibles a minsculas y maysculas.

Ing. Juan Francisco Pacheco Torres

30

MDULO

FUNDAMENTOS DE PROGRAMACIN

Ejemplo 4: Mes y mes son considerados identificadores distintos.


Por ltimo, hay que decir que, es aconsejable que los identificadores tengan
un significado afn a lo que representan.
Palabras reservadas
Las palabras reservadas son identificadores predefinidos (tienen un significado
especial). En todos los lenguajes de programacin existe un conjunto de palabras
reservadas. Por el momento, en pseudocdigo, se han estudiado las siguientes:
cadena, caracter, entero, falso, logico, real y verdadero
Existen "palabras reservadas" que no se pueden utilizar como identificadores.
(Dependen de cada lenguaje)
auto, break, case, char, const, continue, default, do, double, else, enum, extern,
float, for, goto, if, int, long, register, return, short, signed, sizeof, static, struct,
switch, typedef, union, unsigned, void, volatile, while, asm, bool, catch, class,
const_cast, delete, dynamic_c, ast, explicit, false, friend, inline, mutable,
namespace, new, operator, private, protected, public, reinterpret_cast, static_cast,
template, this, throw, true, try, typeid, typename, Using, virtual, wchar_t
3.2. VARIABLES
En programacin, una variable representa a un espacio de memoria en el
cual se puede almacenar un dato. Grficamente, se puede representar como:

El programador, cuando desarrolla un programa (o disea un algoritmo),


debe decidir:
1. Cuantas son las variables que el programa necesita para realizar las tareas
que se le han encomendado.
2. El tipo de dato que puede almacenar cada una de ellas.
Durante la ejecucin de un programa, el valor que tome el dato almacenado
en una variable puede cambiar tantas veces como sea necesario, pero,
siempre, tomando valores pertenecientes al tipo de dato que el programador
ha decidido que puede almacenar dicha variable, ya que, el tipo de dato de
una variable no puede ser cambiado durante la ejecucin de un programa.

Ing. Juan Francisco Pacheco Torres

31

MDULO

FUNDAMENTOS DE PROGRAMACIN

Clasificacin de las Variables

Por su Contenido

Numricas
Lgicas
Alfanumricas (String)

Por su Uso

De Trabajo
Contadores
Acumuladores

Variables

Por su Contenido
Variable Numricas: Son aquellas en las cuales se almacenan valores
numricos, positivos o negativos, es decir almacenan nmeros del 0 al 9, signos
(+ y -) y el punto decimal. Ejemplo:
iva=0.15
pi=3.1416
costo=2500
Variables Lgicas: Son aquellas que solo pueden tener dos valores (cierto o
falso) estos representan el resultado de una comparacin entre otros datos.
Variables Alfanumricas: Esta formada por caracteres alfanumricos (letras,
nmeros y caracteres especiales). Ejemplo:
letra=a

apellido=lopez

direccion=Av. Libertad #190

Por su Uso
Variables de Trabajo: Variables que reciben el resultado de una operacin
matemtica completa y que se usan normalmente dentro de un programa.
Ejemplo:
Suma=a+b/c
Contadores: Se utilizan para llevar el control del nmero de ocasiones en
que se realiza una operacin o se cumple una condicin. Con los incrementos
generalmente de uno en uno.
Acumuladores: Forma que toma una variable y que sirve para llevar la suma
acumulativa de una serie de valores que se van leyendo o calculando
progresivamente.
3.3. CONSTANTES
Una constante representa a un valor (dato almacenado en memoria) que no
puede cambiar durante la ejecucin de un programa.
Se pueden expresar de dos formas diferentes:
1. Por su valor.
2. Con un nombre (identificador).
Ing. Juan Francisco Pacheco Torres

32

MDULO

FUNDAMENTOS DE PROGRAMACIN

Ejemplo 1: Las siguientes constantes de tipo entero estn expresadas por su


valor:
-5
10
Para expresar una constante con un nombre, la constante debe ser declarada
previamente. Todas las constantes que se declaran en un programa son
definidas de la misma forma, indicando de cada una de ellas:
1. Su nombre (mediante un identificador).
2. El valor que simboliza (mediante una expresin).
En pseudocdigo, para declarar una constante, vamos a utilizar la sintaxis:
<nombre_de_la_constante> = <expresin>
Y para declarar ms de una constante en una misma lnea, las separaremos
por medio de comas (,).
Ejemplo 2: De modo que, si se quieren declarar las constantes de tipo entero
del ejemplo 1, asignndoles un identificador, se puede escribir, por ejemplo:
TEMPERATURA = -5
MES = 10
O tambin:
TEMPERATURA = -5, MES = 10

En programacin es una buena prctica escribir los identificadores de las


constantes en maysculas, de esta forma es ms fcil localizarlos en el cdigo
de un programa (o algoritmo). Durante la ejecucin de un programa, por
medio del identificador de una constante, se puede hacer referencia al valor
(dato) que simboliza, tantas veces como sea necesario.
3.1.1 Constantes de tipo entero
Una constante de tipo entero es aquella que representa a un valor
(dato) perteneciente al subconjunto de Z representable por el
ordenador.

Ing. Juan Francisco Pacheco Torres

33

MDULO

FUNDAMENTOS DE PROGRAMACIN

Ejemplo 1: Suponiendo que el ordenador (utilizando diecisis bits)


pueda representar, en Complemento a 2, el siguiente conjunto de
valores enteros:
{ -32768, -32767, ..., 1, 0, -1, ..., 32766, 32767 }
Algunos ejemplos de constantes de tipo entero son:
-32000
0
000077 (Los ceros a la izquierda no son significativos)
+1111
Obsrvese que, adems de los caracteres numricos, dgitos del (0) al
(9), tambin se puede hacer uso de los caracteres especiales (+) y (-)
para indicar el signo de un nmero entero, el cual es positivo por
omisin. Sin embargo, en C, es incorrecto usar los caracteres coma (,)
y/o punto (.) para expresar constantes de tipo entero.
Ejemplo 2: Por tanto, es incorrecto escribir:
-32.000
0,0
+1,111.00
Ejemplo 3: Otros ejemplos incorrectos de constantes de tipo entero
son:
++111 (No se puede duplicar el signo)
38000 (No pertenece al subconjunto de Z representable por el
ordenador)
3.1.2 Constantes de tipo real
Una constante de tipo real es aquella que representa a un valor (dato)
perteneciente al subconjunto de R representable por el ordenador.
Ejemplo 1: Algunos ejemplos son:
8.12
000.333 (Los ceros a la izquierda no son significativos)
+1111.809
-3200. (Tambin se puede escribir -3200.0)
.56 (Tambin se puede escribir 0.56)

Ing. Juan Francisco Pacheco Torres

34

MDULO

FUNDAMENTOS DE PROGRAMACIN

Obsrvese que, adems de los caracteres numricos, dgitos del (0) al


(9), tambin se puede hacer uso de los caracteres especiales (+) y (-)
para indicar el signo de un nmero real. Los signos del exponente y
del nmero en s, por omisin, son positivos.
Ejemplo 2: Las siguientes constantes de tipo real estn expresadas
correctamente:
-77e-3
+1111e+2
2000E+2
3040e2
Una constante de tipo real tambin se puede expresar con el carcter
punto (.) y el exponente al mismo tiempo.
Ejemplo 3: Algunos ejemplos son:
-50.50e-4
400.e-3
+65.65E+2
.7e2
El exponente tiene la funcin de desplazar la posicin del punto
decimal hacia la derecha si es positivo o, hacia la izquierda si es
negativo.
Ejemplo 4: As pues, las siguientes constantes de tipo real representan
al mismo valor:
0.004E+3
4.
.4e1
+400.00e-2
4000E-3
Ejemplo 5: Algunos ejemplos de constantes de tipo real incorrectas
son:
-200 (No aparece el punto ni el exponente)
-20,0 (No puede aparecer la coma)
--111. (No se puede duplicar el signo)
-111.. (No se puede duplicar el punto)
-111.11. (No puede aparecer ms de un punto)
+22e (Despus del carcter (e) o (E) se debe escribir el exponente)
+22ee6 (No se puede duplicar el carcter (e) o (E))
+22e 6 (No se puede escribir el carcter espacio en blanco)
38E-2.2 (El exponente debe ser una cantidad entera)

Ing. Juan Francisco Pacheco Torres

35

MDULO

FUNDAMENTOS DE PROGRAMACIN

3.1.3 Constantes de tipo lgico


Una constante de tipo lgico es aquella que representa a un valor
(dato) perteneciente al conjunto:
{ verdadero, falso }
Verdadero y falso son palabras reservadas (identificadores) que, en s
mismas, representan a constantes de tipo lgico. En consecuencia,
aunque se pueden definir constantes de tipo lgico, no suele ser
habitual declarar constantes de este tipo de dato:
Ejemplo:
ESTADO = verdadero
INTERRUPTOR = falso

3.1.4 Constantes de tipo carcter


Una constante de tipo carcter es aquella que representa a un valor
(dato) perteneciente al conjunto de caracteres que puede representar el
ordenador.
Ejemplo 1: Las siguientes constantes de tipo carcter estn
expresadas por su valor:
'a'
'T'
'5'
'+'
'.'
Ejemplo 2: Algunos ejemplos de declaracin de constantes de tipo
carcter son:
LETRA = 's'
NUMERO = '9'
SIGNO = '-'
ESPACIO_EN_BLANCO = ' '

Ing. Juan Francisco Pacheco Torres

36

MDULO

FUNDAMENTOS DE PROGRAMACIN

Ejemplo 3: En C, para representar el carcter comilla simple ('), se


debe anteponer el carcter barra invertida (\).
COMILLA_SIMPLE = '\''
3.1.5 Constantes de tipo cadena
Una constante de tipo cadena es aquella que representa a un valor
(dato) de tipo cadena, es decir, representa a una secuencia de
caracteres.
Ejemplo 1: Las siguientes constantes de tipo cadena estn expresadas
por su valor:
"Alejandro"
"Lucerna"
"Barcelona 2000"
Ejemplo 2: Algunos ejemplos de declaracin de constantes de tipo
cadena son:
NOMBRE = "Alejandro"
CIUDAD = "Lucerna"
OLIMPIADAS = "Barcelona 2000"

Ejemplo 3: En C, para representar el carcter comilla doble (") dentro


de una cadena, se debe anteponer el carcter barra invertida (\).
CIUDAD = "7 de julio \"San Fermn\""

Ing. Juan Francisco Pacheco Torres

37

MDULO

FUNDAMENTOS DE PROGRAMACIN

IV. EXPRESIONES Y OPERADORES


En un programa, el tipo de un dato determina las operaciones que se pueden
realizar con l. Por ejemplo, con los datos de tipo entero se pueden realizar
operaciones aritmticas, tales como la suma, la resta o la multiplicacin.
Ejemplo 1: Algunos ejemplos son:
111 + 6 (operacin suma)
19 - 72 (operacin resta)
24 * 3 (operacin multiplicacin)
Todas las operaciones del ejemplo constan de dos operandos (constantes enteras)
y un operador. La mayora de las veces es as, pero, tambin es posible realizar
operaciones con distinto nmero de operadores y/u operandos.
Ejemplo 2: Por ejemplo:
111 + 6 - 8 (tres operandos y dos operadores)
-( ( +19 ) + 72 ) (dos operandos y tres operadores)
-( -72 ) (un operando y dos operadores)
En las operaciones del ejemplo se puede observar que los caracteres ms (+) y
menos (-) tienen dos usos:
1. Operadores suma y resta.
2. Signos de un nmero (tambin son operadores).
Los operadores de signo ms (+) y menos (-) son operadores monarios, tambin
llamados unarios, ya que, actan, solamente, sobre un operando.
Los caracteres abrir parntesis "(" y cerrar parntesis ")" se utilizan para establecer
la prioridad de los operadores, es decir, para establecer el orden en el que los
operadores actan sobre los operandos.
Un operador indica el tipo de operacin a realizar sobre los operandos (datos) que
acta. Los operandos pueden ser:

Constantes (expresadas por su valor o con un nombre (identificador)).


Variables.
Llamadas a funciones.
Elementos de formaciones (arrays).

Ing. Juan Francisco Pacheco Torres

38

MDULO

FUNDAMENTOS DE PROGRAMACIN

Cuando se combinan uno o ms operadores con uno o ms operandos se obtiene


una expresin. De modo que, una expresin es una secuencia de operandos y
operadores escrita bajo unas reglas de sintaxis.
Ejemplo 3: Dadas las siguientes declaraciones de constantes y variables:
PI = 3.141592
entero numero = 2
real radio_circulo = 3.2
Algunos ejemplos de expresiones son:
2 * PI * radio_circulo
( PI * PI )
numero * 5
De sus evaluaciones se obtienen los valores:
20.106189 (valor real) ( 2 * 3.141592 * 3.2 )
9.869600 (valor real) ( 3.141592 * 3.141592 )
10 (valor entero) ( 2 * 5 )
Un operador siempre forma parte de una expresin, en la cual, el operador siempre
acta sobre al menos un operando. Por el contrario, un operando s puede aparecer
solo en una expresin.
En programacin, de la evaluacin de una expresin siempre se obtiene un valor.
Dicho valor puede ser de tipo: entero, real, lgico, carcter o cadena. Por
consiguiente, una expresin puede ser:

Aritmtica (devuelve un nmero entero o real).


Lgica (devuelve un valor lgico: verdadero o falso)
De carcter (devuelve un carcter representable por el ordenador).
De cadena (devuelve una cadena).
Dependiendo del tipo de expresin, pueden participar unos operadores u otros

4.1. EXPRESIONES ARITMTICAS


De la evaluacin de una expresin aritmtica siempre se obtiene un valor de
tipo entero o real. En las expresiones aritmticas se pueden utilizar los
siguientes operadores aritmticos:

Ing. Juan Francisco Pacheco Torres

39

MDULO

FUNDAMENTOS DE PROGRAMACIN

Figura. Clasificacin de los operadores aritmticos en pseudocdigo.


Ejemplo 1: El operador multiplicacin (*) realiza la multiplicacin de dos
operandos numricos.
5*2
3.1 * 2.5
Los resultados son:
10 (valor entero)
7.75 (valor real)
Ejemplo 2: El operador potencia (**) eleva el operando de la izquierda
(nmero base) al operando de la derecha (potencia o exponente).
5 ** 2
3.1 ** 2.5
De estas expresiones, se obtienen los valores:
25 (valor entero)
16.920151 (valor real)
Ejemplo 3: El operador divisin real (/) realiza la divisin real entre dos
operandos numricos.
5/2
3.1 / 2.5
Sus resultados son:
2.5 (valor real)
1.24 (valor real)
Ing. Juan Francisco Pacheco Torres

40

MDULO

FUNDAMENTOS DE PROGRAMACIN

Ejemplo 4: El operador divisin entera (div) realiza la divisin entera entre


dos operandos numricos enteros.
5 div 2
3.1 div 2.5
El operador divisin entera (div) no puede operar con operandos numricos
reales. Por tanto, al evaluar las expresiones de este ejemplo se obtienen los
valores:
2 (valor entero)
ERROR (no se puede evaluar; ambos operandos deben ser valores enteros)
Ejemplo 5: El operador mdulo (mod) realiza la divisin entera entre dos
operandos numricos enteros, devolviendo el resto de la misma.
5 mod 2
3.1 mod 2.5
Al igual que el operador divisin entera (div), el operador mdulo (mod)
tampoco puede operar con operandos numricos reales. De modo que, en este
caso, los resultados son:
1 (valor entero)
ERROR (no se puede evaluar; ambos operandos deben ser valores enteros)
Ejemplo 6: El operador signo menos (-) cambia el signo de un operando
numrico. As, de las expresiones
-11
-(3.1)
-( -2.5 )
se obtienen los valores:
-11 (valor entero)
-3.1 (valor real)
2.5 (valor real)

Prioridad de los operadores aritmticos


La prioridad de los operadores puede variar de unos lenguajes a otros, pero,
en pseudocdigo, en este curso, vamos a establecer una prioridad de
operadores muy similar a la que se aplica en lenguaje C. La prioridad no
puede ser exactamente la misma, ya que, en C existen algunos operadores que
no existen en pseudocdigo, y al revs.

Ing. Juan Francisco Pacheco Torres

41

MDULO

FUNDAMENTOS DE PROGRAMACIN

Ejemplo 1: En una expresin aritmtica puede aparecer ms de un operador


aritmtico.
11 + 3 div 3 (dos operadores)
-3 * 6 mod 4 (tres operadores)
-3.1 + 5 * 0.5 (tres operadores)
3 ** 3 - 1 (dos operadores)
+3 * -8 (tres operadores)
Para poder evaluar correctamente las expresiones aritmticas del ejemplo, es
necesario seguir un criterio de prioridad de operadores. La prioridad de los
operadores aritmticos es:

Figura. Prioridad de los operadores aritmticos en pseudocdigo.


A excepcin de los operadores de signo, que se evalan de derecha a
izquierda en una expresin, todos los dems operadores aritmticos con la
misma prioridad, por ejemplo, el operador multiplicacin (*) y el operador
mdulo (mod), se evalan de izquierda a derecha. En consecuencia, los
valores que proporcionan las expresiones del ejemplo 1 son:
12 (actan en orden los operadores: (div) y suma (+))
-2 (actan en orden los operadores: signo menos (-), (*) y (mod))
-0.6 (actan en orden los operadores: signo menos (-), (*) y suma (+))
26 (actan en orden los operadores: (**) y resta (-))
-24 (actan en orden los operadores: signo menos (-), signo ms (+) y (*))
Para modificar la prioridad de los operadores en las expresiones, se debe
hacer uso de los caracteres abrir parntesis "(" y cerrar parntesis ")".
En las expresiones aritmticas hay que tener la precaucin de no dividir entre
cero (0).
Ejemplo 2: Por tanto, las siguientes expresiones son incorrectas:
11 / 0
5 div 0
-3 mod 0
De la evaluacin de cada una de estas expresiones se obtiene:
ERROR (no se puede evaluar; no se puede dividir entre cero)
Ing. Juan Francisco Pacheco Torres

42

MDULO

Ejemplos:
4 + 2 * 5 = 14
23 * 2 / 5 = 9.2
3 + 5 * (10 - (2 + 4)) = 23
3.5 + 5.09 - 14.0 / 40 = 5.09
2.1 * (1.5 + 3.0 * 4.1) = 28.98

FUNDAMENTOS DE PROGRAMACIN

46 / 5 = 9.2
3 + 5 * (10 - 6) = 3 + 5 * 4 = 3 + 20 = 23
3.5 + 5.09 - 3.5 = 8.59 - 3.5 = 5.09
2.1 * (1.5 + 12.3) = 2.1 * 13.8 = 28.98

4.2. EXPRESIONES LGICAS


De la evaluacin de una expresin lgica siempre se obtiene un valor de tipo
lgico (verdadero o falso). En las expresiones lgicas se pueden utilizar dos
tipos de operadores:
Relacionales
Lgicos
Un operador relacional se utiliza para comparar los valores de dos
expresiones. stas deben ser del mismo tipo (aritmticas, lgicas, de carcter
o de cadena).
Ejemplo 1: Algunos ejemplos son:
22 > 13 (comparacin de dos expresiones aritmticas)
22.5 < 3.44 (comparacin de dos expresiones aritmticas)
verdadero = falso (comparacin de dos expresiones lgicas)
'c' > 'f' (comparacin de dos expresiones de carcter)
"coche" = "Coche" (comparacin de dos expresiones de cadena)
Proporcionan los valores:
verdadero (22 es mayor que 13)
falso (22.5 no es menor que 3.44)
falso (verdadero no es igual que falso)
falso ('c' no es mayor que 'f')
falso ("coche" no es igual que "Coche")
Las comparaciones entre los valores de tipo numrico son obvias. En cuanto a
los valores de tipo lgico (verdadero y falso) se considera que falso es menor
que verdadero. En lo que respecta a los valores de tipo carcter, su orden
viene dado por el ASCII extendido utilizado por el ordenador para
representarlos. Y en el caso de los valores de tipo cadena, tambin se tiene en
cuenta dicho cdigo.
Los operadores relacionales son:

Ing. Juan Francisco Pacheco Torres

43

MDULO

FUNDAMENTOS DE PROGRAMACIN

Figura. Clasificacin de los operadores relacionales en pseudocdigo.


Para escribir una expresin relacional (lgica) se utiliza la sintaxis:
<expresin_1> <operador_de_relacin> <expresin_2>
Siendo <expresin_1> y <expresin_2> del mismo tipo (aritmtica, lgica, de
carcter o de cadena).
Por otra parte, un operador lgico acta, exclusivamente, sobre valores de
expresiones lgicas. Los operadores lgicos son:

Figura. Clasificacin de los operadores lgicos en pseudocdigo.


El operador conjuncin (y) y el operador disyuncin (o) siempre actan sobre
dos operandos, mientras que, el operador negacin (no) slo acta sobre un
operando, o dicho de otra forma, es un operador monario.
El modo en que actan los operadores lgicos se resume en las llamadas
tablas de verdad, definidas por el matemtico George Boole.
La tabla de verdad del operador conjuncin (y) es:

Se supone que <expresin_1> y <expresin_2> son expresiones lgicas. De


la tabla de verdad se deduce que <expresin_1> y <expresin_2> se evala a
verdadero slo en el caso de que tanto <expresin_1> como <expresin_2>
se evalen tambin como verdaderas, en cualquier otro caso el resultado ser
Ing. Juan Francisco Pacheco Torres

44

MDULO

FUNDAMENTOS DE PROGRAMACIN

falso. Dicho de otro modo, si al menos una de las dos expresiones es falsa, el
resultado ser falso.
Ejemplo 2: Algunos ejemplos son:
9>3y8>6
9>3y8>9
9 = 3 y 8 >= 6
9 = 3 y 8 >= 9
Las expresiones anteriores se evalan a:
verdadero (9 > 3 es verdadero y 8 > 6 es verdadero)
falso (9 > 3 es verdadero y 8 > 9 es falso)
falso (9 = 3 es falso y 8 >= 6 es verdadero)
falso (9 = 3 es falso y 8 >= 9 es falso)
Ejemplos:
Si a = 10

b = 20

a+b>c
a-b<c
a-b=c
a*b<>c

c = 30
Falso
Verdadero
Falso
Verdadero

Ejemplos no lgicos:
a<b<c
10 < 20 < 30
T < 30
(no es lgico porque tiene diferentes operandos)
La tabla de verdad del operador disyuncin (o) es:

De la tabla de verdad se deduce que si al menos una de las dos expresiones es


verdadera, el resultado ser verdadero.
La tabla de verdad del operador negacin (no) es:

El valor de no <expresin> es el contrario al valor obtenido de <expresin>.

Ing. Juan Francisco Pacheco Torres

45

MDULO

FUNDAMENTOS DE PROGRAMACIN

Ejemplo 3: De las expresiones


no ( 9 > 3 )
no ( 8 > 9 )
los resultados de evaluarlas son:
falso (9 > 3 es verdadero)
verdadero (8 > 9 es falso)
Prioridad de los operadores relacionales y lgicos:
En una expresin lgica puede aparecer uno o ms operadores relacionales
y/o lgicos.
Ejemplo: Algunos ejemplos son:
3 > 1 o 4 < 1 y 4 <= 2
no falso y falso
verdadero >= verdadero = falso
falso = verdadero <= verdadero
Para poder evaluar correctamente las expresiones lgicas del ejemplo, es
necesario seguir un criterio de prioridad de operadores. La prioridad entre los
operadores relacionales y lgicos es:

Figura. Prioridad de los operadores relacionales y lgicos en pseudocdigo.


A excepcin del operador negacin (no), que se evala de derecha a izquierda
en una expresin, todos los dems operadores con la misma prioridad, por
ejemplo, el operador menor que (<) y el operador mayor que (>), se evalan
de izquierda a derecha. As que, los valores que proporcionan las expresiones
del ejemplo 15 son:
verdadero (actan en orden los operadores: (>), (<), (<=), (y) y (o))
falso (actan en orden los operadores: (no) e (y))
falso (actan en orden los operadores: (>=) y (=))
falso (actan en orden los operadores: (<=) y (=))

Ing. Juan Francisco Pacheco Torres

46

MDULO

FUNDAMENTOS DE PROGRAMACIN

4.3. EXPRESIONES DE CARCTER


Aunque no existe ningn operador de caracteres, s que existen expresiones
de carcter. De la evaluacin de una expresin de carcter siempre se obtiene
un valor de tipo carcter.
Ejemplo: Dadas las siguientes declaraciones de constantes y variables en
pseudocdigo:
CONSONANTE = 'S'
caracter letra = 'X'
caracter opcion = '3'
Algunas expresiones de carcter son:
opcion
letra
CONSONANTE
'a'
Los resultados de evaluarlas son:
'3'
'X'
'S'
'a'
4.4. EXPRESIONES DE CADENA
De la evaluacin de una expresin de cadena siempre se obtiene un valor de
tipo cadena. Slo existe un operador de cadena:

Figura. Clasificacin de los operadores de cadena en pseudocdigo.

El operador concatenacin (+) realiza la concatenacin de dos operandos de


tipo cadena, es decir, los encadena.
Ejemplo: Dadas las siguientes declaraciones de constantes y variables en
pseudocdigo:
OLIMPIADA = "Atenas 2004"
PUNTO = "."
cadena nombre = "Pedro", apellido = "Cosn", rio = "Tajo"
Ing. Juan Francisco Pacheco Torres

47

MDULO

FUNDAMENTOS DE PROGRAMACIN

Algunas expresiones de cadena son:


OLIMPIADA + PUNTO
nombre + " " + apellido
"Buenos das" + PUNTO
rio
nombre + " fue a las Olimpiadas de " + OLIMPIADA + PUNTO
Los resultados de evaluarlas son:
"Atenas 2004."
"Pedro Cosn"
"Buenos das."
"Tajo"
"Pedro fue a las Olimpiadas de Atenas 2004."

PRIORIDAD
DE
LOS
OPERADORES
RELACIONALES, LGICOS Y DE CADENA

ARITMTICOS,

En una expresin puede aparecer uno o ms operadores aritmticos,


relacionales, lgicos y/o de cadena.
Ejemplo 1: Algunos ejemplos son:
5 * 4 > 5 + 4 o falso y "ab" < "aa"
( 5 * 4 > 5 + 4 o falso ) y 'f' < 'b'
no verdadero < falso
no ( verdadero < falso )
Para poder evaluar correctamente las expresiones anteriores, es necesario
seguir un criterio de prioridad de operadores. La prioridad entre los
operadores aritmticos, relacionales, lgicos y de cadena es:

Ing. Juan Francisco Pacheco Torres

48

MDULO

FUNDAMENTOS DE PROGRAMACIN

Figura. Prioridad de los operadores aritmticos, relacionales, lgicos y de


cadena en pseudocdigo.
Por tanto, los valores que proporcionan las expresiones del ejemplo 1 son:
verdadero (actan en orden los operadores: (*), suma (+), (>), (<), (y) y (o))
falso (actan en orden los operadores: (*), suma (+), (>), (o), (<) e (y))
falso (actan en orden los operadores: (no) y (<))
verdadero (actan en orden los operadores: (<) y (no))
Obsrvese que, los parntesis "()" son capaces de cambiar el orden de
actuacin de los operadores de cualquier expresin. Adems, los parntesis se
pueden anidar, es decir, se pueden escribir unos dentro de otros, priorizndose
del ms interno al ms externo y, despus, de izquierda a derecha.
Ejemplo 2: De la expresin
42 mod ( ( 4 - 5 ) * ( 8 + 2 ) )
se obtiene el valor:
2 (actan en orden los operadores: (-), (+), (*) y (mod).

Ing. Juan Francisco Pacheco Torres

49

MDULO

FUNDAMENTOS DE PROGRAMACIN

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

V.

1)

((a > b)or(a < c)) and ((a = c) or (a > = b))


F
T
F
F
T
F
F

2)

((a > = b) or (a < d)) and (( a > = d) and (c > d))


F
F
T
T
F
T
F

3)

not (a = c) and (c > b)


F
T
T
T

DEFINICIN Y CARACTERSTICAS DE UN ALGORITMO


5.1. QU ES ALGORITMO?
La palabra algoritmo se deriva de la traduccin al latn
de la palabra rabe Al-khowarizmi(hay muchas
variantes para el nombre al usar el alfabeto latin, tales
como Al-Khorezmi, Al-Khwarizmi, Al-Khawarizmi,
Al-Khawaritzmi o Al-Khowarizmi 780-850), nombre de
un matemtico y astrnomo rabe que escribi un
tratado sobre manipulacin de nmeros y ecuaciones en
el siglo IX.
Su trabajo consisti en preservar y difundir el
conocimiento de la antigua Grecia y de la India. Sus
libros eran de fcil comprensin, de ah que su principal
valor no fuera el de crear nuevos teoremas o nuevas corrientes de pensamiento,
sino el de simplificar las matemticas a un nivel lo suficientemente bajo para
que pudiera ser comprendido por un amplio pblico. Cabe destacar cmo
seal las virtudes del sistema decimal indio (en contra de los sistemas
tradicionales rabes) y cmo explic que, mediante una especificacin clara y
concisa de cmo calcular sistemticamente, se podran definir algoritmos que
fueran usados en dispositivos mecnicos similares a un baco en vez de las
manos. Tambin estudi la manera de reducir el nmero de operaciones
necesarias que formaban el clculo.
Por esta razn, aunque no haya sido l el inventor del primer algoritmo, merece
que este concepto est asociado a su nombre. Al-khowarizmi fue sin duda el
primer pensador algortmico.

Ing. Juan Francisco Pacheco Torres

50

MDULO

FUNDAMENTOS DE PROGRAMACIN

Un algoritmo es un conjunto finito de pasos definidos, estructurados en el


tiempo y formulados con base a un conjunto finito de reglas no ambiguas,
que proveen un procedimiento para dar la solucin o indicar la falta de esta
a un problema en un tiempo determinado.

Un ALGORITMO es una secuencia finita bien definida de tareas, cada


una de las cuales se puede realizar con una cantidad de recursos finitos.
Se dice que una tarea esta bien definida, si se sabe de manera precisa las
acciones requeridas para su realizacin. Aunque los recursos que debe
utilizar cada tarea deben ser finitos estos no estn limitados, es decir, si una
tarea bien definida requiere una cantidad inmensa (pero finita) de algn
recurso para su realizacin, dicha tarea puede formar parte de un algoritmo.
Adems, se dice que una secuencia de tareas esta bien definida si se sabe
el orden exacto de ejecucin de cada una de las mismas.

Es un sistema por el cual se llega a una solucin, teniendo en cuenta que


debe de ser definido, finito y preciso.

Conjunto de sentencias e instrucciones en lenguaje nativo, los cuales


expresan la lgica de un programa.
Descripcin exacta de la secuencia en que se ha de realizar un conjunto de
actividades tendientes a resolver un determinado tipo de problema o
procedimiento.

Conjunto ordenado y finito de pasos que permite hallar la solucin de un


problema.

Conjunto de reglas que permiten obtener un resultado determinado a partir


de ciertas reglas definidas.

Descripcin precisa de una sucesin de instrucciones que permite llevar a


cabo un trabajo en un nmero finito de pasos.

Toda receta, proceso, rutina, mtodo, procedimiento, tcnica, formula que


resuelven un determinado problema.

Conjunto de instrucciones concretas y detalladas mediante el cual se


consigue una accin determinada.

Un conjunto de smbolos y procedimientos usados en la realizacin de un


clculo.

Una secuencia de pasos que conducen a la realizacin de una tarea.

Ing. Juan Francisco Pacheco Torres

51

MDULO

FUNDAMENTOS DE PROGRAMACIN

5.2. CARACTERSTICAS DE UN ALGORITMO.


Las caractersticas que debe poseer una secuencia de tareas para considerarse
algoritmo son:
Preciso: El algoritmo debe indicar el orden exacto de ejecucin de cada
tarea.

Ser definido: Sin ambigedad, cada paso del algoritmo debe indicar la
accin a realizar sin criterios de interpretacin.

Ser finito: Un nmero especfico y numerable de pasos debe componer al


algoritmo, el cual deber finalizar al completarlos.

Tener cero o ms entradas: Datos son proporcionados a un algoritmo


como insumo (o estos son generados de alguna forma) para llevar a cabo
las operaciones que comprende.

Tener una o ms salidas: Debe siempre devolver un resultado; de nada


sirve un algoritmo que hace algo y nunca sabemos que fue. El devolver un
resultado no debe ser considerado como nicamente verlos en forma
impresa o en pantalla, como ocurre con las computadoras. Existen muchos
otros mecanismos susceptibles de programacin que no cuentan con una
salida de resultados de esta forma. Por salida de resultados debe
entenderse todo medio o canal por el cual es posible apreciar los efectos de
las acciones del algoritmo.
Efectividad: El tiempo y esfuerzo por cada paso realizado debe ser
preciso, no usando nada ms ni nada menos que aquello que se requiera
para y en su ejecucin.

Ejemplos de algoritmos son:


1. Ver una pelcula
2. Buscar el videocasete de la pelcula
3. SI el televisor y la video se encuentran apagados, encenderlos
4. Sacar el video del estuche
5. Introducirlo en la videocasetera
6. Tomar el control del televisor y la video
7. Dirigirme a el sof
8. Ponerme cmodo
9. Disfrutar la pelcula
Fjate como he descrito en estos pasos el algoritmo para poder ver una pelcula
en la video, este pequeo algoritmo cumple con los requisitos descritos arriba,
ya que cada paso precisa un orden y tiene un orden de pasos finitos. En este
algoritmo aparece la palabra SI remarcada en maysculas, el uso de esta
palabra la veremos ms adelante, cuando discutamos sobre el control del flujo
del programa o estructuras de control.
Los algoritmos se pueden expresar por frmulas, diagramas de flujo, y
pseudocdigos conocidos como herramientas de programacin. Est ltima
representacin es la ms utilizada por su sencillez y parecido a el lenguaje
humano.

Ing. Juan Francisco Pacheco Torres

52

MDULO

FUNDAMENTOS DE PROGRAMACIN

Como ejercicio te recomendara que escribieras algunos algoritmos de sucesos


en tu vida cotidiana, como por ejemplo: encender el auto, ir al cine, etc.
5.3. PARTES DE UN ALGORITMO
Todo algoritmo debe obedecer a la estructura bsica de un sistema, es decir:
entrada, proceso y salida.
ENTRADA

PROCESO

SALIDA
A

Donde:
ENTRADA: Corresponde al insumo, a los datos necesarios que requiere el
proceso para ofrecer los resultados esperados.
PROCESO: Pasos necesarios para obtener la solucin del problema o la
situacin planteada.
SALIDA: Resultados arrojados por el proceso como solucin.
VI. RESOLUCIN DE PROBLEMAS UTILIZANDO LA COMPUTADORA
Pasos para la solucin de problemas
El proceso de resolucin de un problema con una computadora conduce a la
escritura de un programa y a su ejecucin en la misma. Aunque el proceso de
disear programas es esencialmente un proceso creativo, se pueden considerar
tambin como una serie de fases o pasos comunes que generalmente deben seguir
todos los programadores.
Las siguientes son las etapas que se deben cumplir para resolver con xito un
problema de programacin:
1.
2.
3.
4.
5.
6.
7.
8.

Definicin del problema.


Anlisis del problema.
Diseo del algoritmo.
Resolucin del algoritmo en la computadora o Codificacin.
Compilacin.
Pruebas.
Documentacin.
Mantenimiento.

1. Definicin del Problema


Esta fase est dada por el enunciado del problema, el cual requiere una
definicin clara y precisa. Es importante que se conozca lo que se desea que
realice el computador; mientras esto no se conozca del todo no tiene mucho
caso no tiene caso pasar a la siguiente paso o etapa.

Ing. Juan Francisco Pacheco Torres

53

MDULO

FUNDAMENTOS DE PROGRAMACIN

2. Anlisis del Problema


Entendido el problema (que se desea obtener de la computadora), para
resolverlo es preciso analizar:
Los datos o resultados que se esperan.
Los datos de entrada que se deben suministrar.
Cul es la salida deseada? La informacin que se desea producir (salida)
El proceso al que se requiere someter dichos datos a fin de obtener los
resultados esperados.
Frmulas, ecuaciones y otros recursos necesarios.
Una recomendacin muy prctica es el que nos pongamos en el lugar de la
computadora, y analizar que es necesario que me ordenen y en que secuencia
para poder producir los resultados esperados.
3. Diseo del Algoritmo
Este paso consiste en utilizar un lenguaje algortmico que permita representar
la solucin pensada (Pseudocdigo, Diagrama de flujo, Diagrama N-S).
4. Codificacin
Esto es, colocamos cada paso del diagrama en una instruccin o sentencia
utilizando un lenguaje que la computadora reconoce. Este programa es el que
se conoce como Cdigo Fuente (Source Code).
La codificacin es la operacin de escribir la solucin del problema (de
acuerdo a la lgica del diagrama de flujo o pseudo-lenguaje), en una serie de
instrucciones detalladas, en un cdigo reconocible por el computador, la serie
de instrucciones detalladas se le conoce como cdigo fuente (Source Code), el
cual se escribe en un lenguaje de programacin o lenguaje de alto nivel.
5. Compilacin
Utilizamos ahora un programa Compilador, el cual analiza todo el programa
fuente y detecta errores de sintaxis ocasionados por fallas en la codificacin.
Las fallas de lgica que pueda tener nuestro programa fuente no son detectadas
por el compilador. Cuando no hay errores graves en la compilacin, el
compilador traduce cada instruccin del cdigo fuente a instrucciones propias
de la mquina (Lenguaje de Maquina), creando el Programa Objeto. Cuando
hay errores, stos se deben corregir sobre el mismo programa fuente. El paso
de compilacin se repite hasta eliminar todos los errores y obtener el programa
ejecutable.
6. Pruebas
Los errores humanos dentro de la programacin de computadores son muchos
y aumentan considerablemente con la complejidad del problema.
Cuando tenemos el programa ejecutable (en lenguaje de maquina) ordenamos
al computador que lo ejecute, para lo cual suministramos datos de prueba. Los
resultados obtenidos se analizan para identificar cualquiera de las siguientes
situaciones:
La lgica del programa est bien, pero hay errores sencillos, los cuales se
corrigen modificando algunas instrucciones o incluyendo unas nuevas; el
proceso debemos repetirlo desde el paso 5.

Ing. Juan Francisco Pacheco Torres

54

MDULO

FUNDAMENTOS DE PROGRAMACIN

Hay errores muy graves ocasionados por fallas en la lgica, y lo ms


aconsejable es que regresemos al paso 2 para analizar nuevamente el
problema y repetir todo el proceso.
No hay errores y los resultados son los esperados. En este caso, el
programa lo podemos guardar permanentemente para usarlo cuando
necesitemos ejecutarlo nuevamente.

7. Documentacin
Es la gua o comunicacin escrita es sus variadas formas, ya sea en enunciados,
procedimientos, dibujos o diagramas. A menudo un programa escrito por una
persona, es usado por otra. Por ello la documentacin sirve para ayudar a
comprender o usar un programa o para facilitar futuras modificaciones
(mantenimiento).
La documentacin se divide en tres partes:
- Documentacin Interna.
- Documentacin Externa.
- Manual del Usuario
Documentacin Interna: Son los comentarios o mensaje que se aaden al
cdigo fuente para hacer ms claro el entendimiento de un proceso.
Documentacin Externa: Se define en un documento escrito los siguientes
puntos:
- Descripcin del Problema
- Nombre del Autor.
- Algoritmo (diagrama de flujo o pseudocdigo).
- Diccionario de Datos.
- Cdigo Fuente (programa).
Manual del Usuario: Describe paso a paso la manera cmo funciona el
programa, con el fin de que el usuario obtenga el resultado deseado.
8. Mantenimiento.
Se lleva a cabo despus de terminado el programa, cuando se detecta que es
necesario hacer algn cambio, ajuste o complementacin al programa para que
siga trabajando de manera correcta. Para poder realizar este trabajo se requiere
que el programa este correctamente documentado.

Ing. Juan Francisco Pacheco Torres

55

MDULO

FUNDAMENTOS DE PROGRAMACIN

VII. LENGUAJES ALGORTMICOS


Es una serie de smbolos y reglas que se utilizan para describir de manera
explcita un proceso.
Tipos de Lenguajes Algortmicos
Grficos: Es la representacin grfica de las operaciones que realiza un algoritmo
(diagrama de flujo).
Ejemplo

No Grficos: Representa en forma descriptiva las operaciones que debe realizar un


algoritmo (pseudolenguaje).
Inicio
1. Solicitar los datos del
empleado
2. Almacenar los datos
3. Si el nmero de horas es
mayor a cuarenta entonces
3.1 Hallar el valor del sueldo teniendo
en cuenta que el valor de la
hora adicional ser ms el
1.5%
3.2 Si no paso 3 entonces hallar el
valor del sueldo
normalmente.
4. Generar el nombre del empleado y
su sueldo.
Fin
Ing. Juan Francisco Pacheco Torres

Inicio
Haga nombre=, val_hora=0, Horas=0,
Sueldo=0
Mostrar Digite datos del empleado
Capture nombre, val_hora, Horas
Si (Horas <=40)entonces
Haga sueldo=Horas * val_hora;
si no
Haga sueldo=(Horas * val_hora)+
((Horas-40)*(1.5*val_hora));
Fin si
Mostrar El sueldo de :, nombre, es: ,
sueldo
Fin
56

MDULO

FUNDAMENTOS DE PROGRAMACIN

VIII. DIAGRAMA DE FLUJO O FLUJOGRAMA


8.1. DEFINICIN
Es un esquema para representar grficamente un algoritmo. Se basan en la
utilizacin de diversos smbolos para representar operaciones especficas. Se
les llama diagramas de flujo porque los smbolos utilizados se conectan por
medio de flechas para indicar la secuencia de la operacin.
8.2. CARACTERSTICAS
En los diagramas de flujo se presuponen los siguientes aspectos:
Debe de indicar claramente dnde inicia y dnde termina el diagrama.
Cualquier camino del diagrama debe de llevarte siempre a la terminal de fin.
Existe un nico punto de fin para el proceso de flujo (salvo del rombo que
indica una comparacin con dos caminos posibles).
Organizar los smbolos de tal forma que siga visualmente el flujo de arriba
hacia abajo y de izquierda a derecha.
No usar lenguaje de programacin dentro de los smbolos.
Centrar el diagrama en la pgina.
Las lneas deben ser verticales u horizontales, nunca diagonales.
8.3. SMBOLOS UTILIZADOS
Los Diagramas de flujo se dibujan generalmente usando algunos smbolos
estndares; sin embargo, algunos smbolos especiales pueden tambin ser
desarrollados cuando sean requeridos.
Inicio o fin del programa

Pasos, procesos o lneas de instruccin de programa de


computo

Operaciones de entrada y salida


Toma de decisiones y Ramificacin

NO
SI

Conector para unir el flujo a otra parte del diagrama

Disco magntico

Conector de pagina

Lneas de flujo

Ing. Juan Francisco Pacheco Torres

57

MDULO

Leer

Proceso

FUNDAMENTOS DE PROGRAMACIN

Lectura de datos.

Proceso / Clculo de Datos.

Escribir

Muestra el resultado.

Fin

Salida del programa.

Recomendaciones para el diseo de Diagramas de Flujo


1.
2.
3.
4.
5.

Se deben se usar solamente lneas de flujo horizontal y/o vertical.


Se debe evitar el cruce de lneas utilizando los conectores.
Se deben usar conectores solo cuando sea necesario.
No deben quedar lneas de flujo sin conectar.
Se deben trazar los smbolos de manera que se puedan leer de arriba hacia abajo
y de izquierda a derecha.
6. Todo texto escrito dentro de un smbolo deber ser escrito claramente, evitando
el uso de muchas palabras.
Los smbolos utilizados han sido normalizados por el instituto norteamericano de normalizacin
(ANSI).

IX. PSEUDOCDIGO
Es la representacin narrativa de los pasos que debe seguir un algoritmo para dar solucin a un
problema.
Es un Lenguaje comn de especificacin del algoritmo que facilita la escritura como la lectura de
un programa
Algoritmo Nombre

Nombre del Algoritmo

Variables:
Var_ 01: Tipo
Var_02: Tipo
.
Var_ n: Tipo

Declaracin de Variables

Tipo Var_01, Var_02


Tipo Var_03
Inicio
Accin 01
Accin 02
.
Accin n
Fin

Ing. Juan Francisco Pacheco Torres

Acciones / Procedimientos del algoritmo

58

MDULO

INICIO / FIN
LEER / ESCRIBIR

FUNDAMENTOS DE PROGRAMACIN

----> Indica el inicio y fin del Algoritmo.


----> Nos permite leer (ingresar) datos desde el teclado
y escribir (mostrar) en pantalla.

HACER MIENTRAS
MIENTRASHACER
PARA..HACER

----> Estructura Repetitiva (Bucles)

Si.entoncessino

----> Estructura Condicional.

Segn sea el caso

----> Estructura de seleccin mltiple.

EJEMPLOS:
1.- Si el costo de un automvil nuevo para un comprador es la suma total del costo del
vehculo, del porcentaje de la ganancia del vendedor y de los impuestos locales o
estatales aplicables (sobre el precio de venta). Suponer una ganancia del vendedor del
12% en todas las unidades y un impuesto del 6%. Elaborar un algoritmo que permita
calcular el costo para el consumidor o comprador.
ANLISIS MATEMTICO
Frmula:
ganancia = costo _ total * 0.12
impuestos = costo _ total * 0.06
costo _ comprador = costo _ total + ganancia + impuestos
PSEUDOCDIGO
Algoritmo Costo_Auto
Variables:
costo _ total, costo _ comprador, ganancia, impuestos : real
real costo _ total, costo _ comprador, ganancia, impuestos
Inicio
Escribir (Ingrese el costo total del Vehculo:)
Leer (costo _ total)
ganancia
costo _ total * 0.12
impuestos
costo _ total * 0.06
costo _ comprador
costo _ total + ganancia + impuestos
Escribir (costo _ comprador)
Fin

Ing. Juan Francisco Pacheco Torres

59

MDULO

FUNDAMENTOS DE PROGRAMACIN

DIAGRAMA DE FLUJO

Inicio

leer (costo_total)

ganancia = costo_total * 0.12


impuestos = costo_total * 0.06
costo_comprador = costo_total + ganancia + impuestos

Escribir (costo_comprador)

Fin

PRUEBA DE ESCRITORIO
Costo_ total
1500

costo _ comprador
ganancia = 1500 * 0.12 = 180
impuestos = 1500 * 0.06 = 90
Costo_ comprador = 1500 + 180 + 90 = 1770

2.- Elabore un Algoritmo que dado los tres lados de un tringulo cualquiera este nos
evale su rea.

ANLISIS MATEMTICO
[Resutado]

Frmula: donde a, b, c son lados de un tringulo cualquiera


Sp = (a + b + c) / 2

[Semipermetro de un tringulo]

Area = raizcuadrada (Sp (Sp a) (Sp b) (Sp c))

Ing. Juan Francisco Pacheco Torres

60

MDULO

FUNDAMENTOS DE PROGRAMACIN

PSEUDOCDIGO
Algoritmo Area_del_ Triangulo_Cualquiera
Variables:
a, b, c, Sp, Area : enteros
enteros a, b, c, Sp, Area
Inicio
Escribir (Ingrese los lados del Tringulo)
Leer (a, b, c)
Sp
Area

(a + b + c) / 2
raizcuadrada (Sp (Sp a) (Sp b) (Sp c))

Escribir (Area)
Fin

DIAGRAMA DE FLUJO
Inicio

leer (a, b, c)

Sp = (a + b + c ) / 2
Area = raizcuadrada ( Sp (Sp-a) (Sp-b) (Sp-c))

Escribir (Area)

Fin

PRUEBA DE ESCRITORIO
a

b c

Sp

4 5 Sp = (3+4+5)/2 = 6

3 8 Sp = (6+3+8)/2 = 8.5 Area = (8.5 (8.5-6) (8.5-3) (8.5-8)) ^1/2= 8

Ing. Juan Francisco Pacheco Torres

[Resutado]

Area
Area = (6 (6-3) (6-4) (6-5)) ^ 1/2 = 6

61

II UNIDAD

MDULO

X.

FUNDAMENTOS DE PROGRAMACIN

ESTRUCTURAS ALGORTMICAS
Las estructuras de operacin de programas son un grupo de formas de trabajo, que
permiten, mediante la manipulacin de variables, realizar ciertos procesos especficos
que nos lleven a la solucin de problemas. Estas estructuras se clasifican de acuerdo
con su complejidad en:

Secuenciales

Estructuras Condicionales
Algortmicas

Cclicas

- Asignacin
- Entrada
- Salida
- Simples
- Compuestas
- Mltiples
- Mientras Hacer
- Hacer .. Mientras
- Para hacer

10.1 ESTRUCTURAS SECUENCIALES


La estructura secuencial es aquella en la que una accin (instruccin) sigue a
otra en secuencia. Las tareas se suceden de tal modo que la salida de una es la
entrada de la siguiente y as sucesivamente hasta el fin del proceso. Una
estructura secuencial se representa de la siguiente forma:
Pseudocdigo
Algoritmo Nombre

Diagrama de Flujo
Inicio

Inicio
Accion1

Accion2

Accion2
...
AccionN

AccionN

Fin
Fin

63
Ing. Juan F. Pacheco Torres

MDULO

FUNDAMENTOS DE PROGRAMACIN

- Asignacin: La asignacin consiste, en el paso de valores o resultados a una


zona de la memoria. Dicha zona ser reconocida con el nombre de la variable
que recibe el valor. La asignacin se puede clasificar de la siguiente forma:
Simples: Consiste en pasar un valor constate a una variable (a=15)
Contador: Consiste en usarla como un verificador del nmero de veces que se
realiza un proceso (a=a+1)
Acumulador: Consiste en usarla como un sumador en un proceso (a=a+b)
De trabajo: Donde puede recibir el resultado de una operacin matemtica que
involucre muchas variables (a=c+b*2/4).
- Lectura: La lectura consiste en recibir desde un dispositivo de entrada (p.ej. el
teclado) un valor. Esta operacin se representa en un pseudocdigo como sigue:
Leer (a, b)
Donde a y b son las variables que recibirn los valores
Escritura: Consiste en mandar por un dispositivo de salida (p.ej. monitor o
impresora) un resultado o mensaje. Este proceso se representa en un
pseudocdigo como sigue:
Escribe (El resultado es:, R)
Donde El resultado es: es un mensaje que se desea aparezca y R es una
variable que contiene un valor.
Problemas Secuenciales
1) Hacer un programa para calcular el rea de un triangulo dada la base y la altura
Algoritmo Triangulo
Variables:
base, altura, area :real
Inicio
Escribir (Ingrese el valor de la base : )
Leer (base)
Escribir (Ingrese el valor de la altura : )
Leer (altura)
area (base*altura)/2
Escribir (el rea es : ,area)
Fin
2) Calcular el permetro, el rea y la diagonal de un rectngulo si se ingresan los lados
Algoritmo Rectangulo
Variables:
real lado1,lado2,perimetro,area,diagonal
64
Ing. Juan F. Pacheco Torres

MDULO

FUNDAMENTOS DE PROGRAMACIN

Inicio
Escribir (Ingrese el valor del lado 1:)
Leer (lado1)
Escribir (Ingrese el valor del lado 2:)
Leer (lado2)
Permetro2*(lado1+lado2)
Area lado1*lado2
Diagonal RaizCuadrada(lado1**2 + lado2**2)
Escribir (El permetro es:, permetro)
Escribir (El area es:,area)
Escribir (La diagonal es:, diagonal)
Fin
3) Calcular el salario neto de un trabajador. Se debe leer el nombre, horas trabajadas,
precio de la hora y sabiendo que los impuestos aplicados son el 10 por ciento sobre el
salario bruto.
Algoritmo Trabajador
Variables:
Nombre: cadena
sb, sn, ph, ht : real
Inicio
Escribir (Ingrese nombre :)
Leer (nombre)
Escribir (Ingrese cantidad de horas trabajadas:)
Leer (ht)
Escribir (Ingre precio de la hora: )
Leer (ph)
sb ph*ht
sn sb 0.10*sb
Escribir (El salario del trabajador,nombre, es :,sn)
Fin
4) Hacer un programa para convertir metros a pies y pulgadas
1 metro = 39.37 pulgadas 1 metro = 3.2 pies
Algoritmo Conversion
Variables:
metros,pies,pulgadas: real
Inicio
Escribir (Ingrese valor en metros : )
Leer (metros)
Pies metros*3.2
Pulgadas metros*39.37
Escribir (El valor en pies es : ,pies)
Escribir(El valor en pugadas es:,pulgadas)
Fin
65
Ing. Juan F. Pacheco Torres

MDULO

FUNDAMENTOS DE PROGRAMACIN

5) Suponga que un individuo desea invertir su capital en un banco y desea saber cunto
dinero ganara despus de un mes si el banco paga a razn de 2% mensual.
Inicio
Leer (cap_inv)
gan cap_inv * 0.02
Imprimir gan
Fin
6) Un vendedor recibe un sueldo base ms un 10% extra por comisin de sus ventas, el
vendedor desea saber cunto dinero obtendr por concepto de comisiones por las tres
ventas que realiza en el mes y el total que recibir en el mes tomando en cuenta su
sueldo base y comisiones.
Inicio
Leer (sb, v1, v2, v3)
tot_vta v1 + v2 + v3
com tot_vta * 0.10
tpag sb + com
Imprimir (tpag, com)
Fin
7) Una tienda ofrece un descuento del 15% sobre el total de la compra y un cliente desea
saber cunto deber pagar finalmente por su compra.
Inicio
Leer (tc)
d tc * 0.15
tp tc - d
Imprimir tp
Fin
8) Un alumno desea saber cul ser su calificacin final en la materia de Algoritmos.
Dicha calificacin se compone de los siguientes porcentajes:
55% del promedio de sus tres calificaciones parciales.
30% de la calificacin del examen final.
15% de la calificacin de un trabajo final.
Inicio
Leer (c1, c2, c3, ef, tf)
prom (c1 + c2 + c3)/3
ppar prom * 0.55
pef ef * 0.30
ptf tf * 0.15
cf ppar + pef + ptf
Imprimir cf
Fin

66
Ing. Juan F. Pacheco Torres

MDULO

9)

FUNDAMENTOS DE PROGRAMACIN

Un maestro desea saber qu porcentaje de hombres y que porcentaje de mujeres hay


en un grupo de estudiantes.
Inicio
Leer (nh, nm)
ta nh + nm
ph nh * 100 / ta
pm nm * 100 / ta
Imprimir ph, pm
Fin
Problemas Propuestos

1.
2.

3.
4.
5.
6.

7.

8.

9.
10.
11.
12.

Realizar un algoritmo que permita convertir temperaturas dadas en Grados Fahrenheit a


Grados Celsius: C= (F-32)/1.8.
Escribir un algoritmo que calcule la desviacin estndar de 4 nmeros reales
_
1 n
desviacin estndar
( xi x ) 2
(n: total de nmeros)

n 1 i 1
Dado un valor en pulgadas, haga un algoritmo para transformarlo en centmetros (1
pulgada. = 2.54 cm).
Disee un algoritmo que permita ingresar dos nmeros y luego intercambie sus valores.
Disee un algoritmo que permita ingresar dos nmeros reales y luego calcule su suma,
su resta, su producto y su divisin.
La presin, el volumen y la temperatura de una masa de aire se relacionan por la
frmula:
masa = (presin * volumen)/(0.37 * (temperatura + 460))
Calcular la masa de un cuerpo en funcin de la presin, volumen y temperatura.
Determinar el rea y volumen de un cilindro cuyas dimensiones radio y altura se lean
desde teclado.
V .R 2 .H
H = altura.
S 2. .R.H
R = Radio.
Calcular el permetro y la superficie de un rectngulo dado la base y la altura del
mismo.
S = Base. Altura
P = 2 (Base + Altura)
Haga un algoritmo para que calcule la superficie de un crculo.
S .R 2
Determinar la hipotenusa de un tringulo rectngulo conocidas las longitudes de los
catetos.
Calcular el nuevo salario de un obrero si obtuvo un incremento del 19% sobre su salario
anterior.
Calcular los valores x e y en un sistema de ecuaciones lineales, teniendo como datos de
entrada los dos conjuntos de coeficientes (a, b, c, d, e, f).
ce bf
af cd
x
y
ae bd
ae bd
67

Ing. Juan F. Pacheco Torres

MDULO

13.

FUNDAMENTOS DE PROGRAMACIN

En una clnica existen tres reas: Ginecologa, Radiologa y Ciruga. El presupuesto


anual de la clnica se reparte conforme a la siguiente tabla:
rea
Porcentaje del Presupuesto
Ciruga
35%
Radiologa
45%
Ginecologa
20%

Obtener la cantidad de dinero que recibir cada rea, para cualquier monto presupuestal.
14.
15.
16.
17.
18.

19.

20.
21.
22.
23.
24.

25.

Calcular y mostrar los cuadrados y cubos de tres nmeros enteros ingresados


El dueo de una tienda compra un artculo a un precio determinado. Obtener el precio
en que lo debe vender para obtener una ganancia del 18.5%.
Calcular el producto, suma y media aritmtica de 5 nmeros reales ingresados desde
teclado.
Escribir un algoritmo que lea un valor entero, lo doble, se multiplique por 15 y se
visualice el resultado.
Todos los martes, jueves y sbados una persona corre la misma ruta y cronometra los
tiempos obtenidos. Determinar el tiempo promedio que la persona tarda en recorrer la
ruta en una semana cualquiera.
Tres personas deciden invertir su dinero para fundar una empresa. Cada una de ellas
invierte una cantidad distinta. Obtener el porcentaje que cada quien invierte con
respecto a la cantidad total invertida.
Calcular el rea de un tringulo en funcin del semipermetro, conociendo los tres lados
del tringulo.
Sabiendo que una milla equivale a 1609 kilmetros. Calcular el valor en kilmetros,
ingresando una cantidad en millas.
Escriba un algoritmo para transformar una cantidad en metros a pies y pulgadas. (1 M =
39.27 pulgadas; 1 pie = 12 pulgadas).
Un maestro desea saber qu porcentaje de hombres y que porcentaje de mujeres hay en
un grupo de estudiantes.
Un vendedor recibe su sueldo base ms 14% extra por comisin de sus ventas; el
vendedor desea saber cunto dinero recibir por concepto de comisiones por las tres
ventas que realiza en el mes y el total que recibir en el mes tomando en cuenta sueldo
base y comisiones.
Una tienda ofrece un descuento del 22.7% sobre el total de la compra y un cliente desea
saber cunto deber pagar finalmente por su compra.

10.2 ESTRUCTURAS DE CONDICIONALES


Las estructuras condicionales comparan una variable contra otro(s) valor(es),
para que en base al resultado de esta comparacin, se siga un curso de accin
dentro del programa. Cabe mencionar que la comparacin se puede hacer contra
otra variable o contra una constante, segn se necesite. Existen dos tipos bsicos,
las simples y las mltiples.

68
Ing. Juan F. Pacheco Torres

MDULO

FUNDAMENTOS DE PROGRAMACIN

Simples if : Las estructuras condicionales simples se les conoce como


Tomas de decisin. Estas tomas de decisin tienen la siguiente forma:
Si <condicin> entonces
Accin(es)
Fin-si

Sintaxis en C++ Builder


.
.
if (expresin_lgica)
{
accin;
}
.
.

Si la expresin lgica es verdadera (o 1) la accin se ejecuta, si es falsa se ignora la accin y


se continua con la instruccin siguiente a la estructura condicional. Si se quiere ejecutar una
sola accin el uso de las llaves es opcional.

69
Ing. Juan F. Pacheco Torres

MDULO

FUNDAMENTOS DE PROGRAMACIN

Doblesif else: Las estructuras condicionales dobles permiten elegir entre dos
opciones o alternativas posibles en funcin del cumplimiento o no de una determinada
condicin. Se representa de la siguiente forma:

Donde:
Si
Condicin
Entonces..
Accin(es)
Si no
condicin

Indica el comando de comparacin


Indica la condicin a evaluar
Precede a las acciones a realizar cuando se cumple la condicin
Son las acciones a realizar cuando se cumple o no la condicin
Precede a las acciones a realizar cuando no se cumple la
Sintaxis en C++
if (expresin_lgica)
{
Accin 01;
}
Else
{
Accin 02;
}

70
Ing. Juan F. Pacheco Torres

MDULO

FUNDAMENTOS DE PROGRAMACIN

Dependiendo de si la comparacin es cierta o falsa, se pueden realizar una o ms


acciones.

Mltiples: La estructura de comparacin mltiple, son tomas de decisin especializada


que permiten comparar las variables contra distintos posibles resultados, ejecutando
para cada caso una serie de instrucciones especficas. La forma comn es la siguiente:
Si <condicin> entonces
Accin(es)
si no
Si <condicin> entonces
Accin(es)
si no
.
.
Varias condiciones
.

Forma General
Casos Variable
Op1: Accin(es)
Op2: Accin(es)
.
.
OpN: accin
Fin-casos
Pseudocdigo
Inicio
Si <condicin> entonces
Accin(es)
Si no
Si <condicin> entonces
Accin(es)
Si no
Si <condicin> entonces
Accin(es)
Si no
...
Fin si
Fin si
Fin si
Fin

71
Ing. Juan F. Pacheco Torres

MDULO

FUNDAMENTOS DE PROGRAMACIN

La instruccin casos o switch se podra considerar como una extensin de la instruccin if.
Permitiendo ejecutar mltiples acciones evaluando una sola variable de control a la cual
llamaremos opcin, que de acuerdo a su valor en el instante que se evala corresponder la
accin a ejecutar. Su sintaxis es:

Inicio
Segn el caso (opcin) Caso
Valor_1:
Accin(es)
Caso Valor_2:
Accin(es)
Caso Valor_N:
... por
defecto
Accin(es)
Fin caso
Fin

Diagrama de Flujo

Inicio

Condicin
Si

No

Condicin

No

Accion(es)
Si

Condicin

No

Accion(es)
Si
Accion(es)

Accion(es)

72
Ing. Juan F. Pacheco Torres

MDULO

FUNDAMENTOS DE PROGRAMACIN

Sintaxis en C++ E.C. Mltiple If anidada


If <condicin>
{
Instruccin(es);
}
else
{
If <condicin>
{
Instruccin(es);
}
else
{
If <condicin>
{
Instruccin(es);
}
else
{
Instruccin(es);
}
}
}

Sintaxis en C++ E.C. Mltiple switch


switch (opcion)
{
case valor_1:
{accion_1;
break;}
case valor_2:
{accion_2;
break;}
...
case valor_n:
{accion_n;
break;}
default:
{accion_por_defecto;}
}

73
Ing. Juan F. Pacheco Torres

MDULO

FUNDAMENTOS DE PROGRAMACIN

Problemas Condicionales
a) Problemas Selectivos Simples
1) Un hombre desea saber cunto dinero se genera por concepto de intereses sobre
la cantidad que tiene en inversin en el banco. El decidir reinvertir los intereses
siempre y cuando estos excedan a $7000, y en ese caso desea saber cunto
dinero tendr finalmente en su cuenta.
Algoritmo Inversion
Variables:
Real p_int, cap, int
Inicio
Leer (p_int, cap)
int cap * p_int
si (int > 7000) entonces
capf cap + int
fin-si
Escribir (capf)
fin
2) Determinar si un alumno aprueba a reprueba un curso, sabiendo que aprobara si
su promedio de tres calificaciones es mayor o igual a 12; reprueba en caso
contrario.
Algoritmo Promedio
Variables:
Real calif1, calif2, calif3, prom
Inicio
Leer (calif1, calif2, calif3)
prom (calif1 + calif2 + calif3)/3
Si (prom >= 12) entonces
Escribir( alumno aprobado)
sino
Escribir(Imprimir alumno reprobado)
Fin-si
Fin
3) En un almacn se hace un 20% de descuento a los clientes cuya compra supere
los $1000 Cul ser la cantidad que pagara una persona por su compra?
Algoritmo Almacen
Variables:
Real compra,desc
Inicio
Leer (compra)
Si (compra > 1000) entonces
desc compra * 0.20
sino

Ing. Juan Francisco Pacheco Torres

74

MDULO

FUNDAMENTOS DE PROGRAMACIN

desc 0
fin-si
tot_pag compra - desc
Escribir (tot_pag)
fin.
4) Un obrero necesita calcular su salario semanal, el cual se obtiene de la sig.
manera: Si trabaja 40 horas o menos se le paga $16 por hora
Si trabaja ms de 40 horas se le paga $16 por cada una de las primeras 40 horas
y $20 por cada hora extra.
Algoritmo Salario
Variables:
Entero hr,he
Real ss
Inicio
Leer (ht)
Si (ht > 40) entonces
he ht - 40
ss he * 20 + 40 * 16
sino
ss ht * 16
Fin-si
Escribir (ss)
Fin
5) Programa para ingresar un nmero real y reporte su valor absoluto.
Algoritmo valor_absoluto
Variables
x,va:real
Inicio
escribir(Ingrese numero : )
leer(x)
si (x>=0) entonces
vax
sino
va -x
fin_si
escribir(El valor absoluto es:,va)
fin
6) Programa para ingresar un ao y reporte si es bisiesto o no. Un ao es bisiesto si
es mltiplo de 4 pero no de 100 o es mltiplo de 400.
Algoritmo Bisiesto
Variables:
Entero a
Inicio
Escribir (Ingrese valor del ao :)
Leer(a)

Ing. Juan Francisco Pacheco Torres

75

MDULO

FUNDAMENTOS DE PROGRAMACIN

Si ( a mod 4=0 y a mod 100<>0) o a mod 400 =0 entonces


Escribir (el ao es bisiesto)
Sino
Escribir (El ao no es bisiesto)
Fin_si
Fin
b) Problemas Selectivos Compuestos
1) Hacer un programa para ingresar un nmero y se reporte si es positivo, negativo
o cero.
Algoritmo Positivo_Negativo_Cero
Variables:
n: real
Inicio
Escribir(Ingrese un numero : )
Leer(n)
Si (n>0) entonces
Escribir(es positivo)
Sino
Si (n<0) entonces
Escribir(es negativo)
Sino
Escribir(es cero)
Fin_si
Fin_si
Fin

2) Leer 2 nmeros; si son iguales que los multiplique, si el primero es mayor que el
segundo que los reste y si no que los sume.
Algoritmo Numeros
Variables:
Real num1, num2, resul
Inicio
Leer num1, num2
si (num1 num2) entonces
resul num1 * num2
sino
si (num1 > num2) entonces
resul num1 - num2
sino
resul num1 + num2
fin-si
fin-si
fin

Ing. Juan Francisco Pacheco Torres

76

MDULO

FUNDAMENTOS DE PROGRAMACIN

3) Hacer un programa para ingresar el valor de 3 ngulos en grados sexagesimales,


y reportar si son los ngulos del triangulo, adems decir si es rectngulo,
obtusngulo o acutngulo.
Algoritmo Angulos
Variables
a,b,c: real
Inicio
Escribir(Ingrese el valor de 3 angulos : )
Leer(a,b,c)
Si (a+b+c=180) entonces
Escribir(es un triangulo)
Si a (90 o b90 o c90) entonces
Escribir(rectngulo)
Sino
Si (a>90 o b>90 o c>90) entonces
Escribir(obtusngulo)
Sino
Escribir(acutngulo)
Fin_si
Fin_si
Sino
Escribir(No pertenece a un triangulo)
Fin_si
Fin
4) Leer tres nmeros diferentes e imprimir el nmero mayor de los tres.
Algoritmo Numero_Mayor_de_tres
Variables:
Real num1, num2, num3, mayor
Inicio
Leer num1, num2, num3
Si (num1 > num2) and (num1 > num3) entonces
mayor num1
si no
Si (num2 > num1) and (num2 > num3) entonces
mayor num2
si no
mayor num3
fin-si
fin-si
Imprimir mayor
Fin

Ing. Juan Francisco Pacheco Torres

77

MDULO

FUNDAMENTOS DE PROGRAMACIN

5) Determinar el precio que debe pagarse por la compra de una cantidad de camisas
del mismo tipo, si el precio de las camisas talla S es de 85, de talla M es de 95, y
la talla L es de 100. Se debe ingresar la cantidad de camisas a comprar y la talla
Algoritmo Compra_camisas
Variables
Talla: caracter
cantidad: entero
Total: real
Inicio
Escribir (talla de las camisas S, M, L : )
Leer (talla)
Escribir (Cantidad de camisas a comprar : )
Leer (cantidad)
Si (talla=S o talla=s) entonces
Totalcantidad*85
Escribir (Total a pagar es : ,total)
Sino
Si (talla=M o talla=m) entonces
Totalcantidad*95
Escribir (Total a pagar es : ,total)
Sino
Si (talla=L o talla =l) entonces
Totalcantidad*100
Sino
Escribir (talla ingresada es incorrecta)
Fin_si
Fin_si
Fin_si
Fin
6) 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 estas 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 pagan las horas normales y el resto al
triple.
Algoritmo Horas_Extras
Variables:
Entero ht, he
Real pph, tp
Inicio
Leer ht, pph
Si ( ht < = 40) entonces
tp ht * pph
sino
he ht - 40
Si (he < = 8) entonces
pe he * pph * 2
sino

Ing. Juan Francisco Pacheco Torres

78

MDULO

FUNDAMENTOS DE PROGRAMACIN

pd 8 * pph * 2
pt (he - 8) * pph * 3
pe pd + pt
fin-si
tp 40 * pph + pe
fin-si
Escribir (El total a Pagar es:tp)
Fin
7) Calcular la utilidad que un trabajador recibe en el reparto anual de utilidades si
este se le asigna como un porcentaje de su salario mensual que depende de su
antigedad en la empresa de acuerdo con la sig. tabla:
Tiempo
Utilidad
Menos de 1 ao
5 % del salario
1 ao o ms y menos de 2 aos
7% del salario
2 aos o ms y menos de 5 aos
10% del salario
5 aos o ms y menos de 10 aos
15% del salario
10 aos o ms
20% del salario
Algoritmo Utilidad
Variables:
real sm,util
entero antig
Inicio
Leer (sm, antig)
Si (antig < 1) entonces
util sm * 0.05
sino
Si (antig > = 1) and (antig < 2) entonces
util sm * 0.07
sino
Si (antig > = 2) and (antig < 5) entonces
util sm * 0.10
sino
Si (antig > = 5) and (antig < 10) entonces
util sm * 0.15
sino
util sm * 0.20
fin-si
fin-si
fin-si
fin-si
Escribir(La Utilidad a pagar es:,util
Fin

Ing. Juan Francisco Pacheco Torres

79

MDULO

FUNDAMENTOS DE PROGRAMACIN

c) Problemas Selectivos Mltiples


1) Ingresar un nmero entre 1 y 12 y reportar el mes que le corresponde.
Algoritmo Nombre_Mes
Variable:
Num:entero
Inicio
Escribir (Ingrese numero entre 1 y 12 : )
Leer (num)
Segun sea ( num)
Caso 1:
Escribir (Enero)
Caso 2:
Escribir (Febrero)
Caso 3:
Escribir (Marzo)
Caso 4:
Escribir (Abril)
Caso 5:
Escribir (Mayo)
Caso 6:
Escribir (Junio)
Caso 7:
Escribir (Julio)
Caso 8:
Escribir (Agosto)
Caso 9:
Escribir (Setiembre)
Caso 10:
Escribir (Octubre)
Caso 11:
Escribir (Noviembre)
Caso 12:
Escribir (Diciembre)
Otro caso:
Escribir (Numero fuera de rango)
Fin_segun
Fin
2) Ingresar un nmero entero, y si este termina en 2,5 u 8 reportar el cuadrado del
nmero, si este termina en 4,7 o 9 reportar el nmero multiplicado por 5 y
reportar el mismo nmero en otro caso.
Algoritmo Multiplo_02
Variables:
num: entero
Inicio
Escribir (Ingrese un numero:)
Leer (num)

Ing. Juan Francisco Pacheco Torres

80

MDULO

FUNDAMENTOS DE PROGRAMACIN

Seleccin (num mod 10)


Case 2,5,8:
Escribir (El cuadrado del numero es : ,num*num)
Case 4,7,9:
Escribir (El numero multiplicado por 5 es : ,num*5)
Otro caso:
Escribir (El numero ingresado es: ,num)
Fin_seleccion
Fin
3) Ingresar una letra entre a y e y reportar el mensaje de acuerdo a:
a) excelente c) regular e) psimo
b) bueno
d) malo
Algoritmo Calificacion
Variables:
Letra:carcter
Inicio
Escribir(Ingrese letra a,b,c,d,e : )
Leer(letra)
Segn sea ( letra)
Caso a,A:
Escribir(Excelente)
Caso b,B:
Escribir(Bueno)
Caso c,C:
Escribir(Regular)
Caso d,D:
Escribir(Malo)
Caso e,E:
Escribir(Pesimo)
Otro caso:
Escribir(Letra fuera de rango)
Fin_seleccion
Fin
4) Ingresar 2 nmeros y luego escoger la operacin que se quiere hacer con ellos y
reportar el resultado.
Algoritmo Operaciones
Variables
Num1, num2, res:real
Op: entero
Inicio
Escribir (Ingrese primer nmero:)
Leer (num1)
Escribir (Ingrese segundo numero:)
Leer (num2)
Escribir (Operacin que desea realizar)
Escribir ([1] Suma)

Ing. Juan Francisco Pacheco Torres

81

MDULO

FUNDAMENTOS DE PROGRAMACIN

Escribir ([2] Resta)


Escribir ([3] Multiplicacin)
Escribir ([4] Divisin )
Escribir (Ingrese opcin (1-4):
Leer (op)
Segn sea ( op )
Caso 1:
res num1 + num2
Escribir (La suma es : ,res)
Caso 2:
res num1 - num2
Escribir (La resta es : ,res)
Caso 3:
res num1 * num2
Escribir (La multiplicacin es : ,res)
Caso 4
si (num2<>0) entonces
res num1 / num2
Escribir(La suma es : ,res)
Sino
Escribir(No se puede dividir entre cero)
Fin_si
Fin_segun
Fin
Problemas Propuestos
1. Se desea ingresar un nmero por teclado y determinar si es par o impar.
2. Escribir un algoritmo para resolver una ecuacin de segundo grado de la forma:
Ax + Bx + C = 0
3. Escribir algoritmo que simule una calculadora con cuatro operaciones bsicas
(suma +, resta -, multiplicacin * y divisin /. El usuario ingresar un nmero,
el operador y el segundo nmero y a continuacin se visualizar el resultado.
4. En una fbrica de computadoras se planea ofrecer a los clientes un descuento
que depender del nmero de computadoras que compre. Si las computadoras
son menos de cinco se les dar un 10% de descuento sobre el total de la compra;
si el nmero de computadoras es mayor o igual a cinco pero menos de diez se le
otorga un 20% de descuento; y si son 10 o ms se les da un 40% de descuento.
El precio de cada computadora es de $11,000.
5. Una tienda ha puesto en oferta la venta al por mayor de cierto producto,
ofreciendo un descuento del 15% por la compra de ms de 3 docenas y 10% en
caso contrario. Adems por la compra de ms de 3 docenas se obsequia una
unidad del producto por cada docena en exceso sobre 3. Disee un algoritmo
que determine el monto de la compra, el monto del descuento, el monto a pagar
y el nmero de unidades de obsequio por la compra de cierta cantidad de
docenas del producto.
6. Considere una expresin cuadrtica como: x - 4x 12
Para describir dnde es positiva esta expresin (es decir, mayor que cero), hay
que describir un conjunto de nmeros que sean menores que la raz ms pequea
(que es 6), o bien, mayores que la raz ms grande (que es +2). Escriba un

Ing. Juan Francisco Pacheco Torres

82

MDULO

FUNDAMENTOS DE PROGRAMACIN

algoritmo que se muestre el mensaje Positivo cuando esta frmula tenga


valores positivos.
7. Considere una expresin cuadrtica como: x - 3x +2
Para describir dnde es negativa esta expresin, hay que describir un conjunto
de nmeros que sean simultneamente mayores que la raz ms pequea (+1) y
menores que la raz ms grande (+3). Escriba un algoritmo que sea muestre el
mensaje Negativo cuando est formula tenga valores negativos.
8. En una llantera se ha establecido una promocin de las llantas marca
Ponchadas, dicha promocin consiste en lo siguiente:
Si se compran menos de cinco llantas el precio es de $300 cada una, de $250 si
se compran de cinco a 10 y de $200 si se compran ms de 10.
Obtener la cantidad de dinero que una persona tiene que pagar por cada una de
las llantas que compra y la que tiene que pagar por el total de la compra.
9. En un juego de preguntas a las que se responde Si o No gana quien responda
correctamente las tres preguntas. Si se responde mal a cualquiera de ellas ya no
se pregunta la siguiente y termina el juego. Las preguntas son:
1. Colon descubri Amrica?
2. La independencia de Mxico fue en el ao 1810?
3. The Doors fue un grupo de rock Americano?
10. Un proveedor de estreos ofrece un descuento del 10% sobre el precio sin IGV,
de algn aparato si este cuesta $2000 o ms. Adems, independientemente de
esto, ofrece un 5% de descuento si la marca es NOSY. Determinar cunto
pagara, con IGV incluido, un cliente cualquiera por la compra de su aparato.
11. Una frutera ofrece las manzanas con descuento segn la siguiente tabla:
NUM. DE KILOS COMPRADOS
% DESCUENTO
0
- 2
0%
2.01 - 5
10%
5.01 - 10
15%
10.01 en adelante
20%
Determinar cunto pagar una persona que compre manzanas es esa frutera.
12. El dueo de una empresa desea planificar las decisiones financieras que tomara
en el siguiente ao. La manera de planificarlas depende de lo siguiente:
Si actualmente su capital se encuentra con saldo negativo, pedir un prstamo
bancario para que su nuevo saldo sea de $10 000. Si su capital tiene actualmente
un saldo positivo pedir un prstamo bancario para tener un nuevo saldo de $20
000, pero si su capital tiene actualmente un saldo superior a los $20 000 no
pedir ningn prstamo.
Posteriormente repartir su presupuesto de la siguiente manera.
$5 000 para equipo de computo
$2 000 para mobiliario
y el resto la mitad ser para la compra de insumos y la otra para otorgar
incentivos al personal.

Ing. Juan Francisco Pacheco Torres

83

MDULO

FUNDAMENTOS DE PROGRAMACIN

Desplegar que cantidades se destinaran para la compra de insumos e incentivos


al personal y, en caso de que fuera necesario, a cunto ascendera la cantidad que
se pedira al banco.
13. Tomando como base los resultados obtenidos en un laboratorio de anlisis
clnicos, un medico determina si una persona tiene anemia o no, lo cual depende
de su nivel de hemoglobina en la sangre, de su edad y de su sexo. Si el nivel de
hemoglobina que tiene una persona es menor que el rango que le corresponde, se
determina su resultado como positivo y en caso contrario como negativo. La
tabla en la que el mdico se basa para obtener el resultado es la siguiente:
EDAD
NIVEL HEMOGLOBINA
0 - 1 mes
13 - 26 g%
> 1 y < = 6 meses
10 - 18 g%
> 6 y < = 12 meses
11 - 15 g%
> 1 y < = 5 aos
11.5 - 15 g%
> 5 y < = 10 aos
12.6 - 15.5 g%
> 10 y < = 15 aos
13 - 15.5 g%
mujeres > 15 aos
12 - 16 g%
hombres > 15 aos
14 - 18 g%
14. Una institucin educativa estableci un programa para estimular a los alumnos
con buen rendimiento acadmico y que consiste en lo siguiente:
Si el promedio es de 9.5 o ms y el alumno es de preparatoria, entonces este
podr cursar 55 unidades y se le har un 25% de descuento.
Si el promedio es mayor o igual a 9 pero menor que 9.5 y el alumno es de
preparatoria, entonces este podr cursar 50 unidades y se le har un 10% de
descuento.
Si el promedio es mayor que 7 y menor que 9 y el alumno es de preparatoria,
este podr cursar 50 unidades y no tendr ningn descuento.
Si el promedio es de 7 o menor, el numero de materias reprobadas es de 0 a 3 y
el alumno es de preparatoria, entonces podr cursar 45 unidades y no tendr
descuento.
Si el promedio es de 7 o menor, el numero de materias reprobadas es de 4 o ms
y el alumno es de preparatoria, entonces podr cursar 40 unidades y no tendr
ningn descuento.
Si el promedio es mayor o igual a 9.5 y el alumno es de profesional, entonces
podr cursar 55 unidades y se le har un 20% de descuento.
Si el promedio es menor de 9.5 y el alumno es de profesional, entonces podr
cursar 55 unidades y no tendr descuento.
Obtener el total que tendr que pagar un alumno si la colegiatura para alumnos
de profesional es de $300 por cada cinco unidades y para alumnos de
preparatoria es de $180 por cada cinco unidades.
15. Que lea tres nmeros diferentes y determine el numero medio del conjunto de
los tres nmeros (el nmero medio es aquel numero que no es ni mayor, ni
menor).

Ing. Juan Francisco Pacheco Torres

84

MDULO

FUNDAMENTOS DE PROGRAMACIN

10.3 ESTRUCTURAS REPETITIVAS O CCLICAS


Normalmente dentro de un programa, es necesario realizar acciones de
forma repetida, por ejemplo, imaginemos que queremos ejecutar 100 veces
una accin, podramos escribir 100 veces la misma lnea o bien indicar que
ejecute 100 veces la misma lnea.
Estas estructuras permiten ejecutar un mismo conjunto de
instrucciones una cantidad especfica de veces. Este conjunto de
instrucciones se denomina Bucle (loop lazo - ciclo), y el nmero de
veces que se repiten puede ser fija (previamente determinada por el
programador) o puede ser variable (est en funcin de algn dato
dentro del programa).
10.3.1 ESTRUCTURA REPETITIVA MIENTRAS HACER WHILE
Estructura de control en que el numero de iteraciones no se conoce
con exactitud, ya que est dado en funcin de una condicin o dato
dentro del programa.
Esta es una estructura que repetir un proceso durante N veces,
donde N puede ser fijo o variable. Para esto, la instruccin se
vale de una condicin (expresin lgica) que debe cumplirse
(verdadera) para que se siga ejecutando. Cuando la condicin ya
no se cumple (falsa), entonces ya no se ejecuta el proceso.
El ciclo while ("mientras") difiere del ciclo for en que slo contiene
una condicin de prueba, que se verifica al principio de cada
iteracin. Mientras la condicin sea true el ciclo contina
funcionando. La sintaxis correspondiente es:
Pseudocdigo
Algoritmo IdentificadorAlgoritmo
Inicio
Mientras <condicin>hacer
Accion1
Accion2
.... AccionN
Fin_mientras
Fin

___________________________________
Inicio
mientras ( <expresin_lgica> )
<bloque_de_instrucciones>
fin_mientras
Fin

Ing. Juan Francisco Pacheco Torres

85

MDULO

FUNDAMENTOS DE PROGRAMACIN

Sintaxis en C++ Builder


While (expresin_lgica)
{
accin_1;
accin_2;
.
.
accin_n
;
}
Igual que en las instrucciones Condicionales doble y simple, a la
<expresin_lgica> de una instruccin repetitiva mientras, tambin
se le llama condicin. Para que se ejecute el
<bloque_de_instrucciones>, la condicin tiene que ser verdadera.
Por
el
contrario,
si
la
condicin
es
falsa,
el
<bloque_de_instrucciones> no se ejecuta. Por tanto, cuando el flujo
de un algoritmo llega a un bucle mientras, existen dos
posibilidades:
1.

2.

Si la condicin se evala a falsa, el bloque de instrucciones no


se ejecuta, y el bucle mientras finaliza sin realizar ninguna
iteracin.
Si la condicin se evala a verdadera, el bloque de
instrucciones s que se ejecuta y, despus, se vuelve a evaluar
la condicin, para decidir, de nuevo, si el bloque de
instrucciones se vuelve a ejecutar o no. Y as sucesivamente,
hasta que, la condicin sea falsa.

Ing. Juan Francisco Pacheco Torres

86

MDULO

FUNDAMENTOS DE PROGRAMACIN

El <bloque_de_instrucciones> de un bucle mientras puede


ejecutarse cero o ms veces (iteraciones). Si el
<bloque_de_instrucciones> se ejecuta al menos una vez, seguir
ejecutndose repetidamente, mientras que, la condicin sea
verdadera. Pero, hay que tener cuidado de que el bucle no sea
infinito. Cuando la condicin de un bucle mientras se evala
siempre a verdadera, se dice que se ha producido un bucle infinito,
ya que, el algoritmo nunca termina. Un bucle infinito es un
error_lgico.
Es importante hacer hincapi en el hecho de que, en un bucle
mientras, primero se evala la condicin y, en el caso de que sta
sea verdadera, entonces se ejecuta el bloque de instrucciones.
Veremos que, en el bucle hacer...mientras, el procedimiento es al
revs. En l, primero se ejecuta el bloque de instrucciones y,
despus, se evala la condicin.
Para que un bucle mientras no sea infinito, en el bloque de
instrucciones debe ocurrir algo para que la condicin deje de ser
verdadera. En la mayora de los casos, la condicin se hace falsa al
cambiar el valor de una variable.
En resumen, una instruccin repetitiva mientras permite ejecutar,
repetidamente, (cero o ms veces) un bloque de instrucciones,
mientras que, una determinada condicin sea verdadera.
Ejemplo 1: Se quiere disear el algoritmo de un programa que
muestre por pantalla los primeros diez nmeros naturales:
1

10

El problema se puede resolver con el algoritmo:


Algoritmo Numeros_del_1_al_10
variables:
entero contador
inicio
contador 1 /* Inicializacin del contador */
mientras ( contador <= 10 ) /* Condicin */
escribir( contador )
/* Salida */
contador contador + 1
/* Incremento */
fin_mientras
fin
Ejemplo 2: Se quiere disear el algoritmo de un programa que
muestre por pantalla los primeros diez nmeros naturales, pero a la
inversa, es decir, del 10 al 1:
10

Ing. Juan Francisco Pacheco Torres

87

MDULO

FUNDAMENTOS DE PROGRAMACIN

Algoritmo Numeros_del_1_al_10
variables:
entero contador
inicio
contador 10 /* Inicializacin del contador */
mientras ( contador >= 1 ) /* Condicin */
escribir( contador )
/* Salida */
contador contador - 1
/* Incremento */
fin_mientras
fin
Qu errores pueden producirse en un bucle mientras?
En este apartado vamos a ver varios ejemplos de posibles errores
que se pueden cometer al escribir un bucle mientras, tomando
como referencia el ejemplo del apartado anterior, "Cambios en un
Bucle Mientras".
Ejemplo 3: Un pequeo descuido, como por ejemplo, no escribir
de forma correcta la condicin del bucle, puede producir un bucle
infinito:
Algoritmo Numeros_del_10_al_1
variables:
entero contador
inicio
contador 10
/* Cambio 1 */
mientras ( contador <= 10 ) /* Descuido */
escribir( contador )
contador contador - 1 /* Cambio 3 */
fin_mientras
fin
Por pantalla se mostrar:

Ejemplo 4: Otro error muy frecuente es inicializar mal la variable


que participa en la condicin del bucle:
Algoritmo Numeros_del_10_al_1
Variables:
entero contador
inicio
contador 1
/* Descuido */
mientras ( contador >= 1 ) /* Cambio 2 */
escribir( contador )
contador contador - 1 /* Cambio 3 */
fin_mientras
fin

Ing. Juan Francisco Pacheco Torres

88

MDULO

FUNDAMENTOS DE PROGRAMACIN

Por pantalla slo se mostrar el nmero 1:

Ejemplo 5: Tambin es un error muy tpico olvidarse de escribir


alguna instruccin, como por ejemplo, la instruccin de asignacin
contador contador - 1
del bloque de instrucciones del bucle:
Algoritmo Numeros_del_10_al_1
variables
entero contador
inicio
contador 10
/* Cambio 1 */
mientras ( contador >= 1 ) /* Cambio 2 */
escribir( contador )
/* Descuido */
fin_mientras
fin
De nuevo, por pantalla, se obtiene la salida de un bucle infinito:

Ejemplo 6: Como ya se ha dicho, un bucle mientras puede iterar


cero o ms veces. As, por ejemplo, en el algoritmo siguiente existe
un error lgico que provoca que el bucle no itere ninguna vez.
algoritmo Numeros_del_10_al_1
variables:
entero contador
inicio
contador 0
/* Descuido */
mientras ( contador >= 1 ) /* Cambio 2 */
escribir( contador )
contador contador - 1 /* Cambio 3 */
fin_mientras
fin
Por pantalla no se mostrar nada:

En este caso, se ha producido un error lgico, ya que, para que el


bucle iterase diez veces, se debera haber asignado a la variable
contador el valor 10, en vez del 0. No obstante, bajo determinadas
circunstancias, s puede tener sentido hacer uso de un bucle
mientras, el cual pueda no iterar ninguna vez.

Ing. Juan Francisco Pacheco Torres

89

MDULO

FUNDAMENTOS DE PROGRAMACIN

Ejemplo 7: rea de una esfera


Disee el algoritmo (en pseudocdigo) de un programa que:
1) Pida por teclado el radio (dato real) de una esfera.
2) En el caso de que el radio sea menor o igual que 0, muestre por
pantalla el mensaje:
"ERROR: El radio debe ser mayor que cero.".
3) Repita los pasos 1 y 2, mientras que, el radio introducido sea
incorrecto.
4) Muestre por pantalla:"El rea de una esfera de radio <radio> es:
<rea>".
Nota 1: rea de una esfera = 4 * pi * radio2
Nota 2: Utilice un bucle mientras.
En pantalla:
Introduzca radio: 3.6
El rea de la esfera de radio 3.6 es: 162.860129

Introduzca radio: -2.4


ERROR: El radio debe ser mayor que cero.
Introduzca radio: 2.4
El rea de la esfera de radio 2.4 es: 72.382279

algoritmo Area_de_una_esfera
variables
real radio
inicio
escribir( "Introduzca radio: " )
leer( radio )
/* Filtramos el radio */
mientras ( radio <= 0 )
escribir( "ERROR: El radio debe ser mayor que cero." )
escribir( "Introduzca radio: " )
leer( radio )
fin_mientras
escribir( "El rea de la esfera de radio", radio,
" es: ", 4 * 3.141592 * radio ** 2 )
fin

Ing. Juan Francisco Pacheco Torres

90

MDULO

FUNDAMENTOS DE PROGRAMACIN

10.3.2 ESTRUCTURA REPETITIVA HACER MIENTRAS


DO.WHILE
Esta es una estructura similar en algunas caractersticas, a la
anterior. Repite un proceso una cantidad de veces, pero a diferencia
del Mientras Hacer, el Hacer Mientras lo hace hasta que la
condicin se cumple y no mientras, como en el Mientras Hacer.
De igual manera, la diferencia entre los dos es importante, ya que
el ciclo while evala la expresin condicional al principio del
ciclo; en el caso de do-while ("hacer mientras"), la expresin se
evala al final del propio ciclo.
Por otra parte, esta estructura permite realizar el proceso cuando
menos una vez, ya que la condicin se evala al final del proceso,
mientras que en el Mientras Hacer puede ser que nunca llegue a
entrar si la condicin no se cumple desde un principio. La forma de
esta estructura es la siguiente:

Ing. Juan Francisco Pacheco Torres

91

MDULO

FUNDAMENTOS DE PROGRAMACIN

Como se puede apreciar, la instruccin repetitiva hacer...mientras,


tambin hace uso de una condicin. En un bucle hacer...mientras,
primero se ejecuta el bloque de instrucciones y, despus, se evala
la condicin. En el caso de que sta sea verdadera, se vuelve a
ejecutar el bloque de instrucciones. Y as sucesivamente, hasta que,
la condicin sea falsa.
Por consiguiente, cuando el flujo de un algoritmo llega a un bucle
hacer...mientras, existen dos posibilidades:
1. Se ejecuta el bloque de instrucciones y, despus, si la
condicin se evala a falsa, el bloque de instrucciones no se
vuelve a ejecutar, de manera que, el bucle hacer...mientras
finaliza, habiendo realizado una sola iteracin.
2. Se ejecuta el bloque de instrucciones y, a continuacin, si la
condicin se evala a verdadera, el bloque de instrucciones se
vuelve a ejecutar. Y as sucesivamente, hasta que la condicin
sea falsa.
El <bloque_de_instrucciones> de un bucle hacer...mientras puede
ejecutarse una o ms veces (iteraciones). Tambin hay que prevenir que
el bucle no sea infinito.

En resumen, una instruccin repetitiva hacer...mientras permite


ejecutar repetidamente (una o ms veces) un bloque de
Ing. Juan Francisco Pacheco Torres

92

MDULO

FUNDAMENTOS DE PROGRAMACIN

instrucciones, mientras que, una determinada condicin sea


verdadera.
Ejemplo 1: De modo que, utilizando un bucle hacer...mientras, el
problema del ejemplo del apartado Contador, se puede resolver
con el cdigo:
Algoritmo Numeros_del_1_al_10
variables:
entero contador
inicio
contador 1 /* Inicializacin del contador */
hacer
escribir( contador )
/* Salida */
contador contador + 1 /* Incremento */
mientras ( contador <= 10 ) /* Condicin */
fin
Qu es una Variable Acumulador?
Como ya se ha dicho en el apartado anterior "Repetitiva
Hacer...mientras en Pseudocdigo", el bucle hacer...mientras puede
iterar una o ms veces, por tanto, cuando un bloque de
instrucciones debe iterar al menos una vez, generalmente, es mejor
utilizar un bucle hacer...mientras que un bucle mientras, como por
ejemplo, en el siguiente problema (en el cual, al mismo tiempo,
vamos a ver un ejemplo de variable acumulador).
Ejemplo 2: Se quiere disear el algoritmo de un programa que:
1) Pida por teclado un nmero (dato entero).
2) Pregunte al usuario si desea introducir otro o no.
3) Repita los pasos 1 y 2, mientras que, el usuario no responda 'n' de
(no).
4) Muestre por pantalla la suma de los nmeros introducidos por el
usuario.
En pantalla:

Ing. Juan Francisco Pacheco Torres

93

MDULO

FUNDAMENTOS DE PROGRAMACIN

Solucin:

Algoritmo Suma_de_numeros_introducidos_por_el_usuario
variables
caracter seguir
entero acumulador, numero
inicio
/* En acumulador se va a guardar la suma
de los nmeros introducidos por el usuario. */
acumulador 0
hacer
escribir( "Introduzca un nmero entero: " )
leer( numero )
acumulador acumulador + numero
escribir( "Desea introducir otro nmero (s/n)?: " )
leer( seguir )
mientras ( seguir <> 'n' )
/* Mientras que el usuario desee introducir
ms nmeros, el bucle iterar. */
escribir( "La suma de los nmeros introducidos es: ", acumulador )
fin
Ejemplo 3: Media aritmtica de nmeros introducidos.
Disee el algoritmo (en pseudocdigo) de un programa que:
1) Pida por teclado un nmero (dato entero).
2) Muestre por pantalla los mensajes:
- Ha introducido <cantidad_de_nmeros> nmero(s)
- La suma es <suma>
3) Pregunte al usuario si desea introducir otro o no.
4) Repita los pasos 1, 2 y 3, mientras que, el usuario no responda 'n'
de (no).
5) Muestre por pantalla la media aritmtica (dato real) de los nmeros
introducidos.
Nota: Utilice un bucle hacer...mientras.
En pantalla:
Introduzca un nmero entero: 3
Ha introducido 1 nmero(s)
La suma es 3
Desea introducir otro (s/n)?: s
Introduzca un nmero entero: 7
Ha introducido 2 nmero(s)
La suma es 10
Desea introducir otro (s/n)?: s

Ing. Juan Francisco Pacheco Torres

94

MDULO

FUNDAMENTOS DE PROGRAMACIN

Introduzca un nmero entero: 6


Ha introducido 3 nmero(s)
La suma es 16
Desea introducir otro (s/n)?: s
Introduzca un nmero entero: 13
Ha introducido 4 nmero(s)
La suma es 29
Desea introducir otro (s/n)?: n
La media aritmtica es 7.25

Introduzca un nmero entero: 8


Ha introducido 1 nmero(s)
La suma es 8
Desea introducir otro (s/n)?: n
La media aritmtica es 8.000000

Solucin:
Algoritmo Media_aritmetica_de_numeros_introducidos
Variables:
caracter seguir
entero acumulador, contador, numero
Inicio
acumulador 0
contador 0
hacer
escribir( "Introduzca un nmero entero: " )
leer( numero )
acumulador acumulador + numero
contador contador + 1
escribir( "Ha introducido ", contador,
" nmero(s)" )
escribir( "La suma es ", acumulador )
escribir( "Desea introducir otro nmero (s/n)?: " )
leer( seguir )
mientras ( seguir <> 'n' )
escribir( "La media aritmtica es ",
acumulador / contador )
fin

Ing. Juan Francisco Pacheco Torres

95

MDULO

Ing. Juan Francisco Pacheco Torres

FUNDAMENTOS DE PROGRAMACIN

96

MDULO

FUNDAMENTOS DE PROGRAMACIN

10.3.3 ESTRUCTURA REPETITIVA PARA .HACER FOR


En pseudocdigo, para escribir una instruccin repetitiva para se
utiliza la sintaxis:
para <variable> <valor_inicial> hasta <valor_final>
[ incremento <valor_incremento> ] hacer
<bloque_de_instrucciones>
fin_para
En una instruccin repetitiva para, siempre se utiliza una
<variable> a la que se debe asignar un <valor_inicial>. En cada
iteracin del bucle, al valor de la <variable> se le suma el
<valor_incremento> y, cuando la <variable> supera el
<valor_final>, el bucle finaliza.

Donde:
V.C
L.I
L.S
INC

Variable de control del ciclo


Limite inferior o valor inicial
Lmite superior o final
Incremento / Decremento

En este ciclo la variable de control toma el valor inicial del ciclo y


el ciclo se repite hasta que la variable de control llegue al lmite
superior.

Ing. Juan Francisco Pacheco Torres

97

MDULO

FUNDAMENTOS DE PROGRAMACIN

En consecuencia, cuando el flujo de un algoritmo llega a un bucle


para, en primer lugar, se asigna el <valor_inicial> a la <variable>
y, a partir de ese instante, existen dos posibilidades:

Si el valor de la <variable> es mayor que el <valor_final>,


entonces no se ejecuta el bloque de instrucciones, y el bucle para
finaliza sin realizar ninguna iteracin.
Si el valor de la <variable> es menor o igual que el <valor_final>,
entonces, se ejecuta el bloque de instrucciones y, despus, se le
suma el <valor_incremento> a la <variable>, volvindose, de
nuevo, a comparar el valor de la <variable> con el <valor_final>. Y
as sucesivamente, hasta que, el valor de la <variable> sea mayor
que el <valor_final>.
En resumen, una instruccin repetitiva para permite ejecutar,
repetidamente, un bloque de instrucciones, en base a un valor
inicial y a un valor final.
El bucle para es ideal usarlo cuando, de antemano, ya se sabe el
nmero de veces (iteraciones) que tiene que ejecutarse un
determinado bloque de instrucciones.
El bucle para es una variante del bucle mientras y, al igual que ste,
puede iterar cero o ms veces. Sin embargo, el bucle para slo se
suele usar cuando se conoce el nmero exacto de veces que tiene

Ing. Juan Francisco Pacheco Torres

98

MDULO

FUNDAMENTOS DE PROGRAMACIN

que iterar el bucle. ste es el caso del problema planteado en el


ejemplo del apartado "Variable Contador", en el cual, se sabe de
antemano que el bucle tiene que iterar, exactamente, diez veces.
Ejemplo 1: Por tanto, dicho problema, se puede resolver con una
instruccin repetitiva para de la siguiente forma:
Algoritmo Numeros_del_1_al_10
variables:
entero contador
inicio
para contador 1 hasta 10 incremento 1 hacer
escribir (contador)
fin_para
fin
Ejemplo 2: Cuando el incremento es 1, se puede omitir la palabra
reservada incremento, y su valor.
Algoritmo Numeros_del_1_al_10
variables
entero contador
inicio
/* Al no aparecer el valor del incremento,
se entiende que es 1. */
para contador 1 hasta 10 hacer
escribir( contador )
fin_para
fin
Cmo decidir qu instruccin repetitiva utilizar?
A la hora de elegir un bucle u otro, debemos hacernos la siguiente
pregunta:
Se conoce, de antemano, el nmero de veces (iteraciones) que
tiene que ejecutarse un determinado bloque de instrucciones?
Si la respuesta es afirmativa, habitualmente se usa un bucle para.
En caso contrario, nos plantearemos la siguiente pregunta:
El bloque de instrucciones debe ejecutarse al menos una vez?
En este caso, si la respuesta es afirmativa, generalmente haremos
uso de un bucle hacer...mientras, y si la respuesta es negativa,
usaremos un bucle mientras.

Ing. Juan Francisco Pacheco Torres

99

MDULO

FUNDAMENTOS DE PROGRAMACIN

Ejemplo 3 - Cubos de nmeros pares


Disee el algoritmo (en pseudocdigo) de un programa que
muestre por pantalla los cinco primeros nmeros naturales pares
elevados al cubo.
Nota 1: Cubo de un nmero = nmero3
Nota 2: Utilice un bucle para.
En pantalla:
8 64 216 512 1000

Algoritmo Cubos_de_numeros_pares
variables
entero numero
inicio
para numero 2 hasta 10 incremento 2 hacer
escribir (numero ** 3)
fin_para
fin

Cmo se anidan las instrucciones repetitivas y alternativas?


Al igual que las instrucciones alternativas, las instrucciones
repetitivas tambin se pueden anidar, permitiendo las siguientes
combinaciones de anidamiento:
-

mientras en mientras
mientras en hacer...mientras
mientras en para
hacer...mientras en hacer...mientras
hacer...mientras en para
hacer...mientras en mientras
para en para
para en mientras
para en hacer...mientras

Por otro lado, las instrucciones alternativas o condicionales y


repetitivas tambin se pueden anidar entre s, permitiendo realizar
18 combinaciones ms de anidamiento:
Ing. Juan Francisco Pacheco Torres

100

MDULO

mientras en doble
mientras en simple
mientras en mltiple
hacer...mientras en doble
hacer...mientras en simple
hacer...mientras en mltiple
para en doble
para en simple
para en mltiple
Doble en mientras

FUNDAMENTOS DE PROGRAMACIN

Doble en hacer...mientras
Doble en para
Simple en mientras
Simple en hacer...mientras
Simple en para
Mltiple en mientras
Mltiple en hacer
mientras
Mltiple en para...mientras

Cmo se anida un bucle para en otro bucle hacer...mientras?


En pseudocdigo, para anidar un bucle para en un bucle
hacer...mientras, se utiliza la sintaxis:
Hacer
/* Inicio del anidamiento */
para <variable> <valor_inicial> hasta <valor_final>
[incremento <valor_incremento> |
decremento <valor_decremento> ] hacer
<bloque_de_instrucciones>
fin_para
/* Fin del anidamiento */
mientras ( <expresin_lgica> )
Ejemplo 4: Se quiere disear el algoritmo de un programa que
muestre por pantalla la tabla de multiplicar de un nmero entero
introducido por el usuario. El proceso debe repetirse mientras que
el usuario lo desee:

Ing. Juan Francisco Pacheco Torres

101

MDULO

FUNDAMENTOS DE PROGRAMACIN

Algoritmo propuesto:
algoritmo Tabla_de_multiplicar_de_un_numero
variables
caracter seguir
entero i, numero
inicio
hacer
escribir( "Introduzca un nmero entero: " )
leer( numero )
escribir( "La tabla de multiplicar del ",
numero, " es: " )
/* Inicio del anidamiento */
para i 1 hasta 10 hacer
escribir( numero, " * ", i, " = ",
i * numero )
fin_para
/* Fin del anidamiento */
escribir( "Desea ver otra tabla (s/n)?: " )
leer( seguir )
mientras ( seguir <> 'n' )
fin
Ejemplo 5: Se desea calcular independientemente la suma
de los pares e impares
comprendidos entre 1 y 50.
Algoritmo suma_pares_impares
Variables:
i,sp,si:entero
Inicio
sp 0
si 0
Para i 1 hasta 50 hacer
Si ( i mod 2 = 0) entonces
Sp sp + i
Sino
Si si + i
Fin_si
Fin_para
Escribir (La suma de pares es : ,sp)
Escribir (La suma de impares es : ,si)
Fin

Ing. Juan Francisco Pacheco Torres

102

MDULO

FUNDAMENTOS DE PROGRAMACIN

Usando el proceso repetitivo mientras


Algoritmo suma_pares_impares
Variables:
i,sp,si:entero
Inicio
sp 0
si 0
i 0
Mientras ( i < 50 ) hacer
ii+1
Si ( i mod 2 = 0) entonces
Sp sp + i
Sino
Si si + i
Fin_si
Fin_Mientras
Escribir (La suma de pares es : ,sp)
Escribir (La suma de impares es : ,si)
Fin
Usando el proceso repetitivo Hacer mientras
Algoritmo suma_pares_impares
Variables
i,sp,si:entero
Inicio
sp 0
si 0
i 0
Hacer
ii+1
Si ( i mod 2 = 0) entonces
Sp sp + i
Sino
Si si + i
Fin_si
Mientras ( i < 50)
Escribir (La suma de pares es : ,sp)
Escribir (La suma de impares es : ,si)
Fin

Ing. Juan Francisco Pacheco Torres

103

MDULO

FUNDAMENTOS DE PROGRAMACIN

EJERCICIOS PROPUESTOS
A continuacin usted encontrar 20 ejercicios que deber resolver a travs de un
algoritmo y la respectiva codificacin.
1. Clculo de reas
Ingrese el valor de radio y calcule el rea del crculo y el volumen de la esfera
correspondiente.
2. Conversin de Grados (C , R, K, F)
Ingrese un valor en grados C, dado como C y convierta a su correspondiente F,
R y K.
3. Serie de Fibonacci
Generar los N primeros trminos de la serie de Fibonacci. El valor de N (entero
y positivo) deber ser ledo por teclado. En esta serie los dos primeros nmeros
son 1, y el resto se obtiene sumando los dos anteriores: 1,1,2,3,5,8,13,21,...
4. Nmeros Primos
Leer por teclado un numero entero N. Escribir los nmeros primos
comprendidos entre 1 y N. Disear una funcin que permita averiguar si un
nmero es o no primo.
5. Producto de Dgitos
Elabore un algoritmo que permita el ingreso de un nmero positivo y calcular el
Producto de sus dgitos.
6. Dgitos Iguales
Ingresar un nmero entero positivo y determinar a travs de un mensaje si dicho
nmero est formado por el mismo dgito.
7. Suma de Dgitos Pares
Ingrese un nmero entero positivo y calcule la suma de sus dgitos pares.
8. Dgitos en Escalera ASC
Elabore el algoritmo que permita averiguar si un nmero entero positivo
ingresado por teclado est formado por dgitos en escalera ascendente; por
ejemplo: 123.
9. Buscar Dgitos
Ingrese un nmero entero positivo y un valor (entre 0 y 9 ) y determine, a travs
de un mensaje, si dicho valor se encuentra en el nmero ingresado.
10. Nmero Perfecto
Ingresar un nmero entero positivo y averiguar si es Perfecto. Un nmero es
perfecto cuando es igual a la suma de sus divisores excepto l mismo. Por
ejemplo: 6 = 1+2+3; 28 = 1+2+4+7+14

Ing. Juan Francisco Pacheco Torres

104

MDULO

FUNDAMENTOS DE PROGRAMACIN

11. Cubo Perfecto


Un nmero es Cubo Perfecto cuando es igual a la suma del cubo de sus dgitos.
Ingrese un nmero entero positivo y a travs de un mensaje indique si es un
Cubo Perfecto. Por ejemplo: 153 = 13 + 53 + 33; 370 = 33 + 73 + 03
12. Lista de Cubos Perfectos
Imprima la relacin de nmeros enteros positivos que son cubos perfectos
menores que 1000.
13. Divisin por restas
Ingrese un valor a, dado como dividendo y otro valor b, dado como divisor
y calcule a travs de restas sucesivas, el cociente que se obtiene al dividir a entre
b.
14. Residuo por Restas
Ingrese un valor a, dado como dividendo y otro valor b, dado como divisor
y calcule a travs de restas sucesivas, el residuo que se obtiene al dividir a entre
b.
15. Mltiplos de 9
Ingresar un nmero entero positivo y averiguar si es o no un mltiplo de 9. Un
nmero es mltiplo de 9 si la suma de sus cifras es 9 o mltiplo de 9. Por
ejemplo: 81 8+1 = 9; es mltiplo de 9. 99 9+9=18 1+8=9; es mltiplo
de 9.
16. Nmero Capica
Un nmero es Capica si se lee igual de derecha a izquierda. Ingrese un nmero
entero positivo y determine a travs de un mensaje si es un nmero capica.
17. Cambio de Base (N(10 Valor(base )
Ingrese un nmero entero positivo y un valor dado como base (entre 2 y 9);
luego convierta dicho nmero a la base respectiva. Por ejemplo; ingresemos:
num=17 y base=2; entonces; 17 = 10001(2
18. Cambio de Base (Valor(base N(10 )
Ingrese un valor escrito en una base determinada (entre 2 y 9) y convierta al
sistema decimal respectivo. Ejemplo: Ingresemos: valor=10001 y base=2;
entonces: 10001(2 = 17.
19. Mximo Comn Divisor
Ingrese dos nmeros enteros positivos a y b y luego calcule el Mximo Comn
Divisor de dichos nmeros.
20. Mnimo Comn Mltiplo
Ingrese dos nmeros enteros positivos a y b y luego calcule el Mnimo Comn
Mltiplo de dichos nmeros.

Ing. Juan Francisco Pacheco Torres

105

III UNIDAD

MDULO

FUNDAMENTOS DE PROGRAMACIN

XI. FUNCIONES Y PROCEDIMIENTOS


11.1. FUNCIONES
Una funcin, desde el punto de vista de la programacin, se define como
un proceso que recibe valores de entrada (llamados argumentos) y el cual
retorna un valor resultado. Adicionalmente, las funciones son subprogramas dentro de un programa que se pueden invocar (ejecutar), desde
cualquier parte del programa, es decir, desde otra funcin, desde la misma
funcin o desde el programa principal, cuantas veces sea necesario.
Las funciones se usan cuando existen dos o ms porciones de algoritmo
dentro de un programa que son iguales o muy similares, por ejemplo, en
un algoritmo se puede emplear varias veces una porcin de algoritmo
que eleva a una potencia dada un nmero real. De esta manera se define
una funcin que al ser invocada ejecute dicho cdigo, y en el lugar donde
estaba la porcin de algoritmo original, se hace un llamado (ejecucin)
de la funcin creada.
Una funcin se declara de la siguiente manera:
funcion nombre( arg1 : tipo1 , ..., argn : tipon ) : tipo
variables
<declaraciones>
inicio
<instrucciones>
retornar <valor>
fin_funcion
donde,
nombre: es el nombre de la funcin
argi: es nombre del argumento i-esimo de la funcin.
tipoi: es el tipo del i-esimo argumento de la funcin.
tipo: es el tipo de dato que retorna la funcin.
<declaraciones>: es el conjunto de variables definidas para la funcin
(diferentes a los argumentos).
<instrucciones>:es el conjunto de instrucciones que realiza la funcin.
<valor>:es el valor que retorna la funcin, puede ser una variable del tipo
que retorna la funcin o una expresin que de cmo resultado un dato del
tipo de retorno.

Ing. Juan Francisco Pacheco Torres

107

MDULO

FUNDAMENTOS DE PROGRAMACIN

EJEMPLOS
Ejemplo 1. h: Reales x Reales
(a , b)

Reales
a2+2*b

funcion h ( a : real, b : real): real


variables
inicio
retornar a*a + 2*b
fin_funcion
Ejemplo 2. minimo: Reales x Reales x Reales
Reales
(a

, c )

a si a

bya

b si b
c si c

ayb
ayc

c
b

funcion minimo( a : real, b : real , c : real ):real


variables
m:
real
inicio
si (a <=b & a <=c) entonces
m a
sino
si (b <=a & b<=c)entonces
mb
sino
m c
fin_si
fin_si
retornar m
fin_funcion

Ing. Juan Francisco Pacheco Torres

108

MDULO

FUNDAMENTOS DE PROGRAMACIN

11.2. FUNCIONES RECURSIVAS


Una funcin recursiva es una funcin que se define en trminos de si
misma, es decir, que el resultado de la funcin depende de resultados de
la misma funcin en otros valores.
Se debe tener mucho cuidado en la definicin de funciones recursivas,
pues si no se hace bien, la funcin podra requerir de un clculo infinito o
no ser calculable. Observe las siguientes definiciones, una correcta y la
otra incorrecta:
Definicin Recursiva correcta

Esta bien definida la Funcin, porque se puede calcular el valor de la


funcin para cualquier valor que tome x. Por ejemplo si x = 3.5 se tiene
que f(3.5) = 13.125 ya que:
f(3.5) = f(3.5-1.0)* 3.5 = f(2.5) * 3.5
f(2.5) = f(2.5-1.0)*2.5 = f(1.5) * 2.5
f(1.5) = f(1.5-1.0)*1.5 = f(0.5) * 1.5
f(0.5) = 1.0 (pues 0.5 <= 1.0) y de esta manera, el clculo de la funcin se
devuelve.
f(1.5) = f(0.5)*1.5 = 1.0 * 1.5 = 1.5 f(2.5) = f(1.5)*2.5 = 1.5 * 2.5 =
3.75 f(3.5) = f(2.5)* 3.5 = 3.75 * 3.5 = 13.125
Definicin Recursiva Incorrecta

Est mal definida LA FUNCIN porque no se puede calcular el valor de


la funcin para cualquier valor que tome x. Por ejemplo, si x = 3.5 se tiene
que f(3.5) no se puede calcular ya que:
f(3.5) = f(3.5+1.0)* 3.5 = f(4.5) * 3.5
f(4.5) = f(4.5+1.0)*4.5 = f(5.5) * 4.5
f(5.5) = f(5.5+1.0)*5.5 = f(6.5) * 5.5
f(6.5) = y nunca se termina este proceso
Una funcin recursiva es aquella que para calcular su valor en un dato
dado, generalmente necesita ser calculada en uno u otros valores. Un
punto de ruptura de la recursin es un valor del argumento para el cual
la funcin no tiene que ser calculada de nuevo en otros valores.

Ing. Juan Francisco Pacheco Torres

109

MDULO

FUNDAMENTOS DE PROGRAMACIN

EJEMPLOS
Ejemplo 1. factorial :
Entero
Entero n 1 si n

n * factorial(n-1) en otro caso


Punto de ruptura: cuando n es igual a uno (1)
Algoritmo:
funcion factorial ( n : entero ) : entero variables
m : entero
inicio
si (n <=1) entonces
m 1
sino
m factorial(n-1) * n
fin_si
retornar m
fin_funcion

Ejemplo 2. Fibonacci :
Entero
Entero n 1 si n

fibonacci(n-1)+fibonacci(n-2) otro caso


Punto de ruptura: cuando n es menor o igual a uno (1)
Algoritmo:
funcion fibonacci( n : entero ) :
entero variables
m : entero
inicio
si (n <=1 entonces)
m 1
sino
m
fibonacci(n-1) + fibonacci(n-2)
fin_si
retornar m
fin_funcion

Ing. Juan Francisco Pacheco Torres

110

MDULO

FUNDAMENTOS DE PROGRAMACIN

Ejemplo 3. suma_rara : Entero x Entero


( n,m )

n si n > 0 y m
0
m si n 0 y 0 m
suma_rara (n-2,m-3)+ suma_rara (m-2,n-3)+ m + n

Puntos de ruptura: cuando m es menor o igual a cero (0), y cuando n


es menor o igual a cero (0).

Algoritmo:
funcion suma_rara( n : entero, m : entero ): entero
variables
s : entero
inicio
si (n > 0 &m <=0) entonces
s n
si_no
si (n <=0 & 0 <=m) entonces
sm
si_no
s suma_rara(n-2,m-3)+ suma_rara(m-2,n-3)+ m + n
fin_si
fin_si
retornar s
fin_funcion

11.3. PROCEDIMIENTOS
En muchos casos existen porciones de cdigo similares que no calculan
un valor si no que por ejemplo, presentan informacin al usuario, leen
una coleccin de datos o calculan ms de un valor. Como una funcin
debe retornar un nico valor este tipo de porciones de cdigo no se
podran codificar como funciones. Para superar este inconveniente se cre
el concepto de procedimiento. Un procedimiento se puede asimilar a una
funcin que no retorna un resultado, y que puede retornar ms de un valor
mediante el uso de parmetros o argumentos por referencia.
Los procedimientos son muy utilizados en los efectos laterales que se
pueden llevar a cabo: imprimir en pantalla, modificar variables, leer datos,
etc.
Un procedimiento se define de la siguiente manera
Ing. Juan Francisco Pacheco Torres

111

MDULO

FUNDAMENTOS DE PROGRAMACIN

procedimiento nombre (arg1: tipo1, ...)


<declaraciones variables>
inicio
<instrucciones>
fin_procedimiento

11.4. ARGUMENTOS POR VALOR Y POR REFERENCIA


A)

Argumentos por valor


Los argumentos convencionales son por valor, es decir a la funcin o
procedimiento se le enva un valor que almacena en la variable
correspondiente al argumento, la cual es local, de manera que su
modificacin no tiene efecto en el resto del programa.

B)

Argumentos por referencia


S un procedimiento tiene un argumento por referencia, este no
recibe un valor, sino una referencia a una variable, es decir la misma
variable (posicin en memoria y valor) que enva el algoritmo que
hace el llamado al procedimiento con un alias (el nombre de la
variable del argumento que se recibe por referencia), por lo tanto
cualquier modificacin del argumento tiene efectos en el algoritmo
que realiz el llamado del procedimiento.
Cuando se ejecuta un procedimiento con uno o varios argumentos
por referencia, ni un literal ni una constante se pueden poner en la
posicin de alguno de estos argumentos, es decir, ni las constantes ni
los literales pueden ser pasados a un procedimiento por referencia.
Un argumento por referencia se especifica anteponiendo la palabra
ref a su definicin.
En el siguiente ejemplo el argumento A es pasado por referencia y el
argumento B es pasado por valor:
procedimiento Proc ( ref A: entero, B: entero)
.
inicio
.
fin_procedimiento

Al realizar un llamado al procedimiento Proc, como el siguiente Proc(suma, dato), si


el procedimiento modifica el argumento A que recibe por referencia, tambin se est
Ing. Juan Francisco Pacheco Torres

112

MDULO

FUNDAMENTOS DE PROGRAMACIN

modificando el contenido de la variable suma, pues suma y A en este momento son


la misma variable pero con dos nombres. Mientras que si el procedimiento modifica
el argumento que recibe por valor B, no est modificando la variable dato, ya que al
realizar el llamado, el procedimiento crea una variable nueva para el argumento B,
distinta de dato, con diferente posicin de memoria, pero copiando el contenido de la
variable dato en el argumento B.
EJEMPLOS.
Ejemplo 1. Desarrollar un procedimiento que intercambie los valores de dos
variables enteras, es decir, que implemente el intercambio para variables enteras.
procedimiento intercambio (ref x : entero, ref y : entero)
variables
/* variable auxiliar para realizar el intercambio */
aux : entero
inicio
/* se almacena el valor de x en la variable aux */
auxx
/* se almacena el valor de y en la variable x */
xy
/* se almacena el valor original de x en la variable y */
y aux
fin_procedimiento

Ejemplo 2. Desarrollar un procedimiento que lea una coleccin de hasta cien (100)
nmeros reales.
procedimiento leer_arreglo (ref n : entero, ref A : arreglo[100] de real)
variables
i : entero
inicio
/*las siguientes cuatro lneas son para obtener el numero de datos a
leer. Se controla que no sea un numero invalido*/
Hacer
escribir (Ingrese el numero de reales a operar)
leer (n)
Mientras (0 < n I n <=100)
/* las siguientes seis lineas leen los n datos a procesar */
para ( i 0 hasta n 1) hacer
escribir (Ingrese el dato )
escribir (i)
escribir (-esimo)
leer (A[i])
fin_para fin_procedimiento
Ing. Juan Francisco Pacheco Torres

113

MDULO

FUNDAMENTOS DE PROGRAMACIN

Adicionalmente se pueden disear algoritmos que combinen la estructura de un


programa con funciones y/o procedimientos:

<declaracin de funciones y/o procedimientos>


procedimiento principal()
variables
<declaracin de variables programa>
inicio
<instrucciones>
Fin_procedimiento

Donde:
<declaracin de funciones y/o procedimientos>: Es el conjunto de funciones y
procedimientos declarados que se usarn en el programa. Cada funcin y
procedimiento se definen como se mencion en las anteriores secciones.
<declaracin de variables programa>: Es el conjunto de variables que son
usadas nicamente por el programa principal, es decir, por el programa que
hace llamados a las funciones y/o procedimientos.
11.5. VARIABLES LOCALES Y GLOBALES
A) Variables Globales
Variables definidas al comienzo del programa (antes de cualquier
funcin), que se pueden usar a lo largo de todo el programa, es decir,
dentro del algoritmo principal y en cada funcin definida en el
programa.
B) Variables Locales
Variables que son definidas dentro de cada funcin y/o
procedimiento, y que solo se pueden usar en la funcin y/o
procedimientos en la que son declaradas.
Una buena tcnica de programacin es no usar, o usar la menor cantidad de
variables globales, de tal forma que las funciones y/o procedimientos que se
creen no dependan de elementos externos, en este caso las variables globales,
para realizar su proceso. El no usar variables globales dentro de una funcin
y/o procedimiento garantiza su fcil depuracin y seguimiento.

Ing. Juan Francisco Pacheco Torres

114

MDULO

FUNDAMENTOS DE PROGRAMACIN

<definicin de variables globales>


<declaracin de funciones y/o procedimientos>
procedimiento principal()
variables
<declaracin de variables programa>
inicio
<instrucciones>
fin_procedimiento

XII. ARREGLOS O VECTORES UNIDIMENSIONALES


Un array o arreglo (matriz o vector) es un conjunto finito y ordenado de elementos
homogneos. La propiedad ordenado significa que el elemento primero,
segundo, tercero,..., ensimo de un array puede ser identificado.
Los elementos de un array son homogneos, es decir, del mismo tipo de datos. Un
array puede ser compuesto de todos sus elemento de tipo entero, etc. los arrays se
conocen tambin como matrices en matemtica y tablas en clculos
financieros.
El tipo ms simple de array es el array unidimensional o vector (matriz de
dimensin). Un vector de una dimensin denominado NOTAS que consta de n
elementos se puede representar por la Tabla 1.
Tabla 1.
NOTAS (1)

NOTAS (2)

Vector

.............

NOTAS (I)

............

NOTAS (N)

El subndice o ndice de un elemento (0, 1, 2, ..., i, n) designa su posicin en la


ordenacin del vector. Otras posibles notaciones del vector son:
a0,a1, a2,......ai,.......an
A(0), A(1) , A(2), ., A(i), A(n)
Obsrvese que solo el vector global tiene nombre (NOTAS). Los elementos del
vector se referencian por su subndice o ndice (subscript), es decir, posicin
relativa en el vector.
Caractersticas:
Almacenan los elementos en posiciones contiguas de memoria.
Tienen un mismo nombre de variable que representa a todos los elementos.
Para hacer referencia a esos elementos es necesario utilizar un ndice que
especifica el lugar que ocupa cada elemento dentro del archivo.
Es un arreglo de N elementos organizados en una dimensin donde N
recibe el nombre de longitud o tamao del vector.
Ing. Juan Francisco Pacheco Torres

115

MDULO

FUNDAMENTOS DE PROGRAMACIN

Para hacer referencia a un elemento del vector se usa el nombre del mismo,
seguido del ndice (entre corchetes), el cual indica una posicin en particular
del vector.
Ejemplos.
[3, -6, 1, 24, 8] es un arreglo de tamao cinco y tipo entero.
[4.2, 0.0, -33.76, 19.7e-2] es un arreglo de tamao cuatro y de tipo real.
[a, z, @] es un arreglo de tamao tres de tipo carcter.
[5] es un arreglo de tamao uno de tipo entero.
[2.7, 0.6] es un arreglo de tamao dos de reales
Para referirse a cada elemento de un arreglo se utiliza su ndice. El ndice es
asignado generalmente por la posicin que ocupa el elemento en el arreglo. En
este curso se asignarn los ndices a los elementos de un arreglo partiendo de
cero y llegando hasta el ndice n-1, donde n es el tamao del arreglo.
Ejemplos.
El elemento uno (1) del arreglo [3, -6, 1, 24, 8] es 6.
El elemento cero (0) del arreglo [4.2, 0.0, -33.76, 19.7e-2] es 4.2. El
elemento dos (2) del arreglo [a, z, @] es @.
El elemento cero (0) del arreglo [5] es 5.
El elemento uno (1) del arreglo [2.7, 0.6] es 0.6.
Los vectores, como ya se ha comentado, pueden contener datos no
numricos, es decir, tipo carcter. Por ejemplo, un vector que
representa las frutas que se venden en un supermercado:
FRUTAS[1]
FRUTAS[2]

uvas

FRUTA
S[I]

FRUTAS[
N]

manzanas

papayas

melocotones

Los vectores se almacenan en memoria central del computador en un


orden adyacente. As, un vector de cincuenta nmeros denominado
Ing. Juan Francisco Pacheco Torres

116

MDULO

FUNDAMENTOS DE PROGRAMACIN

NUMEROS se representa grficamente por cincuenta posiciones de


memoria sucesivas:
Memoria
NUMEROS (1)
NUMEROS (2)
NUMEROS (3)

DIRECCIN X
DIRECCIN X + 1
DIRECCIN X + 2

NUMEROS (50)

DIRECCIN X + 49

Cada elemento de un vector se puede procesar como si fuese una variable


simple al ocupar una posicin de memoria. As,
NUMEROS [25] = 72, ac se almacena el valor entero real 72 el la posicin
25 del vector NUMEROS y la instruccin de salida
escribir (NUMERO [25] )

Visualiza el valor almacenado en la posicin 25 , en este caso 72.


Esta propiedad significa que cada elemento de un vector y
posteriormente una tabla o matriz es accesible directamente. sta ser
una de las ventajas ms importantes de usar un vector: almacenar un
conjunto de datos.
Consideremos un vector x de ocho elementos:
x (0)

x (1)

x (2)

x (3)

x (4)

x (5)

x (6)

x (7)

14.0

12.0

8.0

7.0

6.41

5.23

6.15

7.25

Elemento
1

Elemento
2

Elemento
8

Algunas instrucciones que manipulan este vector s4e representa en la siguiente tabla
Tabla 2. Operaciones bsicas con vectores
Acciones

Resultados

(X [1] )
Visualiza el valor de X [1] o12.0
escribir
X(4) = 45 Almacena el valor 45 en X [4]
SUMA = X [1] + [3] Almacena la suma de X [1] y X [3];o bien 19.0 en la variable SUMA
SUMA = SUMA + X [4] Aade en la variable Suma el valor de X [4], es decir Suma = 64.0
X (5) = X [5] + 3.5 Suma 3.5 a X [5]; EL NUEVO VALOR De X [5] ser 8.73
X (6) =X [1] + X [2] Almacena la suma de X[1] y X[2] en X[6] el nuevo valor de X[6] ser 26

La siguiente es la forma como se declaran variables del tipo arreglo en el


seudocdigo usado en este curso:
Tipo_de_dato Nombre_variable [N]

Ing. Juan Francisco Pacheco Torres

117

MDULO

FUNDAMENTOS DE PROGRAMACIN

Donde, <nombre_variable> es el nombre de la variable, <tipo_de_dato> es el tipo


de datos del arreglo y N es el tamao del arreglo (debe ser un literal entero o una
constante entera).
Ejemplos.
real Punto_2D [2]
real Velocidades [100]
Texto [MAX_TEXTO] : caracter
Edades [MAX_PERSONAS] : entero
Banderas [10] : booleano.
real VECTOR[20];
entero X [40];
real NOTAS[50];
Vector de N elementos :

ndices
(Posiciones)

Vector_Notas [N]

12.6

10.4

15.0

3
...

11.8
...

N-2

15.6

N-1

16.0

Elementos

Se invocara de la siguiente manera:


Elemento 1: Vector_Notas[0] = 12.6
Elemento 2: Vector_Notas[1] = 10.4
Elemento 3: Vector_Notas[2] = 15.0
Elemento N: Vector_Notas[N-1] = 16.0
Se refiere al nombre con el cual se identificaran todos los datos que pertenezcan al
arreglo y estn almacenados en memoria. Recuerde que el arreglo almacena
desde la posicin 0. Por tanto, en un arreglo de N elementos, stas estn
numeradas del 0 hasta N-1.
Las operaciones que se pueden realizar con vectores son: asignacin, lectura,
escritura, recorrido, actualizacin (aadir, borrar, insertar), ordenacin y bsqueda
A.

Lectura:
leer (<nombre del array>[subindice])
leer (numero[4])
leer (numero[x])
leer (numero[a+b])

Ing. Juan Francisco Pacheco Torres

118

MDULO

B.

FUNDAMENTOS DE PROGRAMACIN

Escritura:
escribir (<nombre del array>[subindice])
escribir (el nmero es: ,numero[3])
escribir (el nmero es: ,numero[a])

C.

Imprimir - Escribir
para i 1 hasta 4 inc 1 hacer
escribir(nombre[i], )
fin_para
para i 1 hasta 4 inc 1 hacer
escribir(edad[i], )
fin_para

Ejemplo 1. Se requiere un programa que calcule el promedio de una coleccin


de 20 nmeros reales que el usuario ingresar.
Inicio
/* Las siguientes seis lneas leen el arreglo de reales */
para (i 0 hasta 19) inc 1hacer
escribir (ingrese el dato:)
leer (A[i])
Fin_para
/* Las siguientes cuatro lneas calculan la suma de los reales */
suma 0
para (i 0 hasta 19) inc 1hacer
suma suma + A[i]
Fin_para
/* la siguiente lnea calcula el promedio */
promedio suma / 20.0
/* las siguientes dos lneas imprimen el resultado */
escribir (El promedio es:, promedio)
Fin
Ejemplo 2. Este ejemplo procesa un array PUNTOS, realizando las siguientes
operaciones.
a) lectura del array
b) clculo de la suma de los valores del array
c) clculo de la media de los valores.
El array lo denominaremos PUNTOS; el lmite superior del rango se fijar
mediante la constante LIMITE, a la que se asigne el valor 40, y el lmite
inferior lo consideraremos 1.
Ing. Juan Francisco Pacheco Torres

119

MDULO

FUNDAMENTOS DE PROGRAMACIN

algoritmo Media_puntos
Variables:
entero LIMITE = 40
real PUNTOS [1..LIMITE]
real suma, media
entero i
inicio
suma 0
escribir('Datos del array')
para i 1 hasta LIMITE inc 1 hacer
leer(PUNTOS[i])
suma suma + PUNTOS [i]
fin_para
media suma/LIMITE
escribir('La media es', media)
fin
Se podra ampliar el ejemplo, en el sentido de visualizar los elementos del array,
cuyo valor es superior a la media. Mediante una estructura desde se podra realizar
la operacin, aadindole al algoritmo anterior.
escribir ('Elementos del array superior a la media')
para i 1 hasta LIMITE inc 1hacer
si PUNTOS[i] > media entonces
escribir(PUNTOS[i] )
fin_si
fin_para
XIII. ORDENAMIENTO
La ordenacin o clasificacin de datos (sort, en ingls) es una operacin
consistente en disponer un conjunto estructura de datos en algn
determinado orden con respecto a uno de los campos de elementos del conjunto.
Por ejemplo, cada elemento del conjunto de datos de una gua telefnica tiene un
campo nombre, un campo direccin y un campo nmero de telfono; la gua
telefnica est dispuesta en orden alfabtico de nombres; los elementos
numricos se pueden ordenar en orden creciente o decreciente de acuerdo al
valor numrico del elemento. En terminologa de ordenacin, el elemento por el
cual est ordenado un conjunto de datos (o se est buscando) se denomina clave.
Una coleccin de datos (estructura) puede ser almacenada en un archivo, un
array (vector o tabla), un array de registros, una lista enlazada o un rbol.
Cuando los datos estn almacenados en un array, una lista enlazada o un rbol,
se denomina ordenacin interna. Si los datos estn almacenados en un archivo,
el proceso de ordenacin se llama ordenacin externa.
Ing. Juan Francisco Pacheco Torres

120

MDULO

FUNDAMENTOS DE PROGRAMACIN

Una lista se dice que est ordenada por la clave k si la lista est en orden
ascendente o descendente con respecto a esta clave. La lista se dice que est en
orden ascendente si:
i <j

implica que k[i] <= k[j]

y se dice que est en orden


descendente si:
i >j

implica que k[i] <= k[j]

para todos los elementos de la lista. Por ejemplo, para una gua telefnica, la lista
est clasificada en orden ascendente por el campo clave k, donde k [i ] es el
nombre del abonado (apellidos, nombre).
4 5 14 21 32 45
75 70 35 16 14 12
Zacarias Rodriguez Martinez Lopez Garcia

orden ascendente
orden descendente
orden descendente

Los mtodos (algoritmos) de ordenacin son numerosos, por ello se debe


prestar especial atencin en su eleccin. Cmo se sabe cul es el mejor
algoritmo? La eficiencia es el factor que mide la calidad y rendimiento de un
algoritmo. En el caso de la operacin de ordenacin, dos criterios se suelen
seguir a la hora de decidir qu algoritmo de entre los que resuelven la
ordenacin es el ms eficiente: 1) tiempo menor de ejecucin en
computadora; 2) menor nmero de instrucciones. Sin embargo, no siempre es
fcil efectuar estas medidas: puede no disponerse de instrucciones para medida
de tiempo aunque no sea ste el caso del lenguaje C, y las instrucciones
pueden variar, dependiendo del lenguaje y del propio estilo del programador.
Por esta razn, el mejor criterio para medir la eficiencia de un algoritmo es
aislar una operacin especfica clave en la ordenacin y contar el nmero de
veces que se realiza. As, en el caso de los algoritmos de ordenacin, se
utilizar como medida de su eficiencia el nmero de comparaciones entre
elementos efectuados. El algoritmo de ordenacin A ser ms eficiente que el B,
si requiere menor nmero de comparaciones.
En algunos casos el tipo de un arreglo tiene un orden total asociado a l. Por
ejemplo, los nmeros enteros estn ordenados totalmente y los caracteres estn
ordenados totalmente por el ASCII asociado a cada uno. Un ordenamiento sobre
un arreglo es una operacin que dado un arreglo retorna el mismo arreglo con los
elementos ordenados en forma ascendente o descendente.
EJEMPLO

ARREGLO

ASCENDENTEMENTE DESCENDENTEMENTE

1 (Entero)

[1, 4, 2, -3, 0,
8]
[3.1, 2.4, - 12,
3.1, 0.5, 4.8]
[3, A, a,
, #]

[-3, 0, 1, 2, 4, 8]

2 (Real)
3 (Caracter)

[-12, 0.5, 2.4, 3.1, 3.1, 4.8]


[ , #, 3, A, a]

[8, 4, 2, 1, 0, -3]

[4.8, 3.1, 3.1, 2.4, 0.5, -12]


[a, A,3, #, ]

Para ordenar un arreglo se han desarrollado diversos algoritmos, entre los cuales
estn burbuja, seleccin, insercin y quick-sort.

Ing. Juan Francisco Pacheco Torres

121

MDULO

FUNDAMENTOS DE PROGRAMACIN

13.1. ORDENAMIENTO BURBUJA


El bubble sort, tambin conocido como ordenamiento burbuja, funciona de
la siguiente manera: Se recorre el arreglo intercambiando los elementos
adyacentes que estn desordenados. Se recorre el arreglo tantas veces hasta
que ya no haya cambios. Prcticamente lo que hace es tomar el elemento
mayor y lo va recorriendo de posicin en posicin hasta ponerlo en su
lugar.
Ejemplo se quiere ordenar una lista de 6 nmeros = {6, 3, 8, 4, 5,2}

Ing. Juan Francisco Pacheco Torres

122

MDULO

FUNDAMENTOS DE PROGRAMACIN

El Algoritmo es:
Para i 0 hasta n - 1 inc 1 hacer
Para j i+1 hasta n inc 1 hacer
si (elemento[i] > elemento [j]) entonces
Temporal = Elemento[i]
Elemento[i] = Elemento [j]
Elemento [j] = Temporal
fin si
fin para
fin para
13.2. ORDENAMIENTO SELECCIN
Considrese el algoritmo para ordenar un array A de enteros en orden
ascendente, es decir, del nmero ms pequeo al mayor. Es decir, si el
array A tiene n elementos, se trata de ordenar los valores del array de
modo que el dato contenido en A [0] sea el valor ms pequeo, el valor
almacenado en A [1] el siguiente ms pequeo, y as hasta A[n-1],
que ha de contener el elemento de mayor valor. El algoritmo se apoya en
sucesivas pasadas que intercambian el elemento ms pequeo
sucesivamente con el primer elemento de la lista, A [0] en la primera
pasada. En sntesis, se busca el elemento ms pequeo de la lista y se
intercambia con A[0], primer elemento de la lista.
A[0] A[1] A[2].... A[n-1]

Despus de terminar esta primera pasada, el frente de la lista est


ordenado y el resto de la lista A[1], A[2]...A[n-1] permanece
desordenado. La siguiente pasada busca en esta lista desordenada y
selecciona el elemento ms pequeo, que se almacena entonces en la
posicin A [1]. De este modo los elementos A[0] y A[1] estn
ordenados y la sublista A[2], A[3]...A[n-1] desordenada;
entonces, se selecciona el elemento ms pequeo y se intercambia con
A[2]. El proceso contina n 1 pasadas y en ese momento la lista
desordenada se reduce a un elemento (el mayor de la lista) y el array
completo ha quedado ordenado.
Un ejemplo prctico ayudar a la comprensin del algoritmo.
Consideremos un array A con 5 valores enteros 51, 21, 39, 80, 36:
A[0] A[1] A[2] A[3] A[4]
51

21

39

80

36

Pasada 0. Seleccionar 21
Intercambiar 21 y A[0]

39

80

36

Pasada 1. Seleccionar 36
Intercambiar 36 y A[1]

pasada 0
21

51

pasada 1

Ing. Juan Francisco Pacheco Torres

123

MDULO

21

36

39

80

FUNDAMENTOS DE PROGRAMACIN

51

Pasada 2. Seleccionar 39
Intercambiar 39 y A[2]

51

Pasada 3. Seleccionar 51
Intercambiar 51 y A[3]

pasada 2
21

36

39

80

pasada 3
21

36

39

51

80

Lista ordenada

Los pasos del algoritmo son:


1.

Seleccionar el elemento ms pequeo de la lista A; intercambiarlo con el


primer elemento A[0]. Ahora la entrada ms pequea est en la primera
posicin del vector.

2.

Considerar las posiciones de la lista A[1], A[2], A[3]...,


seleccionar el elemento ms pequeo e intercambiarlo con A[1]. Ahora
las dos primeras entradas de A estn en orden.

3.

Continuar este proceso encontrando o seleccionando el elemento ms


pequeo de los restantes elementos de la lista, intercambindolos
adecuadamente.

El siguiente es el algoritmo de ordenamiento ascendente por seleccin:


Inicio
para (i 0 hasta n-2) inc 1 hacer
para (j i+1 hasta n-1) hacer
si (A[i] > A[j]) entonces
/* Las siguientes 3 lneas son muy famosas y son conocidas como
el intercambio de variables o swapping */
auxiliar A[i]
A[i] A[j]
A[j] auxilia
fin_si
fin_para
fin_para
Fin

13.3. ORDENAMIENTO POR INSERCIN


El mtodo de ordenacin por insercin es similar al proceso tpico de
ordenar tarjetas de nombres (cartas de una baraja) por orden alfabtico,
que consiste en insertar un nombre en su posicin correcta dentro de
una lista o archivo que ya est ordenado. As el proceso en el caso de la
Ing. Juan Francisco Pacheco Torres

124

MDULO

FUNDAMENTOS DE PROGRAMACIN

lista de enteros A = 50, 20, 40, 80, 30.


Comienzo con 50

Procesar 20

50

Procesar 20

20

Procesar 40

20

Procesar 80

20

40

50

80

Procesar 30

20

30

40

50

50

Se inserta 20 en la posicin 0
50 se mueve a posicin 1

40

50

Se inserta 40 en la posicin 1
Se mueve 50 a posicin 2
El elemento 80 est bien ordenado
Se inserta 30 en posicin 1
Se desplaza a la derecha la sublista
derecha
80

El algoritmo correspondiente a la ordenacin por insercin contempla los


siguientes pasos:
El primer elemento A[0] se considera ordenado; es decir, la lista
inicial consta de un elemento.
2. Se inserta A[1] en la posicin correcta, delante o detrs de A[0],
dependiendo de que sea menor o mayor.
3. Por cada bucle o iteracin i (desde i=1 hasta n-1) se explora la sublista A[i1] . .A[0] buscando la posicin correcta de insercin; a la vez se mueve
hacia abajo (a la derecha en la sublista) una posicin todos los
elementos mayores que el elemento a insertar A[i], para dejar vaca esa
posicin.
4. Insertar el elemento a la posicin correcta.
1.

Ing. Juan Francisco Pacheco Torres

125

MDULO

FUNDAMENTOS DE PROGRAMACIN

REFERENCIAS BIBLIOGRFICAS
JOYANES, Luis, Fundamentos De la Programacin, Algoritmos Y Estructura
De Datos, 1era Edicin, Espaa, Editorial McGraw Hill Interamericana de
Espaa 1995, Cdigo Biblioteca: 005.3/J79F
GALVEZ, Javier, Algortmica: diseo y anlisis de algortmico Funcionales e
Imperativos. 1 era Edicin, Estados Unidos, Editorial Addison Wesley
Iberoamericana S.A, 2000, ISBN: 0201623501 Cdigo Biblioteca: (005.3/G-19)
LOPEZ, Leobardo, Programacin estructurada: Un enfoque algortmico, 1era
Edicin, Mxico, Editorial Alfaomega, 1999, ISBN: 9701500997. Cdigo
Biblioteca: 005.26/L83
WEISS, Mark, Estructura de Datos y Algoritmos, 1era Edicin, Estados Unidos,
Editorial
Addison
Wesley
Iberoamericana
S.A,
2001,
ISBN:
0201625717.Cdigo: (005.3/W-42)
JEAN Paul Tremblay, B. Bunt Richard; "Introduccin a la ciencias de las
computadoras (enfoque algortmico)" Mc Graw Hill.
AGUILAR, Luis. Fundamentos de programacin, algoritmos, estructura de
datos y Objetos (tercera ediciOn). Espaa. 2003. McGRAW-HILL.

SITIOS WEB
Pes Rivas, C. J. (2006). WEB DE CARLOS PES. Recuperado el 22 de
OCTUBRE de 2009, de http://www.carlospes.com

Ing. Juan Francisco Pacheco Torres

126

S-ar putea să vă placă și