You are on page 1of 52

Fundamentos de programacin 1

Ing. Walther Vargas Gonzlez


Profesor de Informtica

1
QU ES UNA COMPUTADORA?

Una computadora es un dispositivo electrnico utilizado para procesar informacin y
obtener resulta-dos. Los datos y la informacin se pueden introducir en la computadora por
la entrada (input) y a continuacin se procesan para producir una salida (output, resultados),
como se observa en la Figura 1.1. La computadora se puede considerar como una unidad en
la que se ponen ciertos datos, entrada de datos, procesa estos datos y produce unos datos de
salida. Los datos de entrada y los datos de salida pueden ser realmente cualquier cosa,
texto, dibujos o sonido. El sistema ms sencillo de comunicarse una persona con la
computadora es esencialmente mediante un ratn (mouse), un teclado y una pantalla
(monitor). Hoy da existen otros dispositivos muy populares tales como escneres,
micrfonos, altavoces, cmaras de vdeo, cmaras digitales, etc.; de igual manera, mediante
mdems, es posible conectar su computadora con otras computadoras a travs de redes,
siendo la ms importante, la red Internet.




Los componentes fsicos que constituyen la computadora, junto con los dispositivos que
realizan las tareas de entrada y salida, se conocen con el trmino hardware. El conjunto de
instrucciones que hacen funcionar a la computadora se denomina programa, que se
encuentra almacenado en su memoria; a la persona que escribe programas se llama
programador y al conjunto de programas escritos para una computadora se llama software.
Este libro se dedicar casi exclusivamente al software, pero se har una breve revisin del
hardware como recordatorio o introduccin segn sean los conocimientos del lector en esta
materia. En el Anexo A de la pgina oficial del libro (www.mhe.es/joyanes)puede encon-

Fundamentos de programacin 1


Ing. Walther Vargas Gonzlez
Profesor de Informtica

2
trar una amplia informacin de Introduccin a las computadoras, si desea ampliar este
apartado.

1.2. ORGANIZACIN FSICA DE UNA COMPUTADORA (HARDWARE)

La mayora de las computadoras, grandes o pequeas, estn organizadas como se muestra
en la Figura 1.2. Constan fundamentalmente de tres componentes principales: Unidad
Central de Proceso (UCP) o procesador (compuesta de la UAL, Unidad Aritmtica y
Lgica, y la UC, Unidad de Control); la memoria principal o central y el programa.
1 En Espaa est muy extendido el trmino ordenador para referirse a la traduccin de la
palabra inglesa computer.

















Figura 1.2. Organizacin fsica de una computadora.
Si a la organizacin fsica de la Figura 1.2 se le aaden los dispositivos para comunicacin
con la computadora, aparece la estructura tpica de un sistema de computadora: dispositivos
de entrada, dispositivos de salida, memoria externa y el procesador/memoria central con su
programa (Fig.1.3).







Fundamentos de programacin 1


Ing. Walther Vargas Gonzlez
Profesor de Informtica

3


















Dispositivos de Entrada/Salida (E/S)

Los dispositivos de Entrada/Salida (E/S) (en ingls, Input/Output I/O) o perifricos
permiten la comunicacin entre la computadora y el usuario.
Los dispositivos de entrada, como su nombre indica, sirven para introducir datos
(informacin) en la computadora para su proceso. Los datos se leen de los dispositivos de
entrada y se almacenan en la memoria central o interna. Los dispositivos de entrada
convierten la informacin de entrada en seales elctricas que se almacenan en la memoria
central. Dispositivos de entrada tpicos son teclados, lectores de tarjetas perforadas ya en
desuso, lpices pticos, palancas de mando (joystick), lectores de cdigos de barras,
escneres, micrfonos, lectores de tarjetas digitales, lectores RFID (tarjetas de
identificacin por radio frecuencia), etc. Hoy da tal vez el dispositivo de entrada ms
popular es el ratn (mouse) que mueve un puntero grfico (electrnico) sobre la pantalla
que facilita la interaccin usuariomquina2.

Los dispositivos de salida permiten representar los resultados (salida) del proceso de los
datos. El dispositivo de salida tpico es la pantalla (CRT)3o monitor. Otros dispositivos de
salida son: impreso-ras (imprimen resultados en papel), trazadores grficos (plotters),
reconocedores (sintetizadores) de voz, altavoces, etc.

Fundamentos de programacin 1


Ing. Walther Vargas Gonzlez
Profesor de Informtica

4
Dispositivos de entrada/salida y dispositivos de almacenamiento masivo o auxiliar
(memoria externa) son: unidad de discos (disquetes, CD-ROM, DVD, cintas, discos duros,
etc.), videocmaras, memorias flash, USB, etc.




Figura 1.4. Dispositivo de salida (Impresora HP Color LaserJet 2600n).



La memoria central (interna)

La memoria central o simplemente memoria (interna o principal) se utiliza para almacenar
informacin (RAM, Random, Access Memory). En general, la informacin almacenada en
memoria puede ser de dos tipos: instrucciones, de un programa y datos con los que operan
las instrucciones. Por ejemplo, para que un programa se pueda ejecutar (correr, rodar,
funcionar..., en ingls, run), debe ser situado en la memoria central, en una operacin
denominada carga (load) del programa. Despus, cuando se eje-cuta (se realiza, funciona)
el programa, cualquier dato a procesar por el programa se debe llevar a la memoria
mediante las instrucciones del programa. En la memoria central, hay tambin datos diversos
y espacio de almacenamiento temporal que necesita el programa cuando se ejecuta a fin de
poder funcionar.

2 Todas las acciones a realizar por el usuario se realizarn con el ratn con la excepcin de
las que se requieren de la escritura de datos por teclado. 3 Cathode Ray Tube: Tubo de
rayos catdicos.


Fundamentos de programacin 1


Ing. Walther Vargas Gonzlez
Profesor de Informtica

5
Con el objetivo de que el procesador pueda obtener los datos de la memoria central ms
rpidamente, normalmente todos los procesadores actuales (muy rpidos) utilizan una
memoria denominada cach que sirve para almacenamiento intermedio de datos entre el
procesador y la memoria principal. La memoria cach en la actualidad se incorpora
casi siempre al procesador.


Organizacin de la memoria.
La memoria central de una computadora es una zona de almacenamiento organizada en
centenares o millares de unidades de almacenamiento individual o celdas. La memoria
central consta de un conjunto de celdas de memoria (estas celdas o posiciones de memoria
se denominan tambin palabras, aunque no guardan analoga con las palabras del
lenguaje). El nmero de celdas de memoria de la memoria central, dependiendo del tipo y
modelo de computadora; hoy da el nmero suele ser millones (512, 1.024, etc.). Cada
celda de memoria consta de un cierto nmero de bits (normalmente 8, un byte).

La unidad elemental de memoria se llama byte (octeto). Un byte tiene la capacidad de
almacenar un carcter de informacin, y est formado por un conjunto de unidades ms
pequeas de almacenamiento denominadas bits, que son dgitos binarios (0 o 1).




Figura 1.5. Computadora porttil digital.

Por definicin, se acepta que un byte contiene ocho bits. Por consiguiente, si se desea
almacenar la frase:


Fundamentos de programacin 1


Ing. Walther Vargas Gonzlez
Profesor de Informtica

6
Hola Mortimer todo va bien la computadora utilizar exactamente 27 bytes consecutivos
de memoria. Obsrvese que, adems de las letras, existen cuatro espacios en blanco y un
punto (un espacio es un carcter que emplea tambin un byte). De modo similar, el nmero
del pasaporte P57487891 ocupar 9 bytes, pero si se almacena como P5-748-7891 ocupar
11.

Estos datos se llaman alfanumricos, y pueden constar de letras del alfabeto, dgitos o in-
cluso caracteres especiales (smbolos: $, #, *, etc.).
Mientras que cada carcter de un dato alfanumrico se almacena en un byte, la informacin
numrica se almacena de un modo diferente. Los datos numricos ocupan 2, 4 e incluso 8
bytes consecutivos, dependiendo del tipo de dato numrico (se ver en el Captulo 12).
Existen dos conceptos importantes asociados a cada celda o posicin de memoria: su
direccin y su contenido. Cada celda o byte tiene asociada una nica direccin que indica
su posicin relativa en me-moria y mediante la cual se puede acceder a la posicin para
almacenar o recuperar informacin. La informacin almacenada en una posicin de
memoria es su contenido. La Figura 1.6 muestra una me-moria de computadora que consta
de 1.000 posiciones en memoria con direcciones de 0 a 999. El con-tenido de estas
direcciones o posiciones de memoria se llaman palabras, de modo que existen palabras de
8, 16, 32 y 64 bits. Por consiguiente, si trabaja con una mquina de 32 bits, significa que en
cada posicin de memoria de su computadora puede alojar 32 bits, es decir, 32 dgitos
binarios, bien ceros o unos.


Siempre que se almacena una nueva informacin en una posicin, se destruye (desaparece)
cualquier informacin que en ella hubiera y no se puede recuperar. La direccin es
permanente y nica, el contenido puede cambiar mientras se ejecuta un programa.

Fundamentos de programacin 1


Ing. Walther Vargas Gonzlez
Profesor de Informtica

7
La memoria central de una computadora puede tener desde unos centenares de millares de
bytes hasta millones de bytes. Como el byte es una unidad elemental de almacenamiento, se
utilizan mltiplos de potencia de 2 para definir el tamao de la memoria central: Kilo-byte
(KB o Kb) igual a 1.024 bytes (210) prcticamente se consideran 1.000; Megabyte
(MB o Mb) igual a 1.024 1.024 bytes = = 1.048.576 (220) prcticamente se consideran
1.000.000; Gigabyte (GB o Gb) igual a 1.024 MB (230), 1.073.741.824 = prcticamente se
consideran 1.000 millones de MB.



En la actualidad las computadoras personales tipo PC suelen tener memorias centrales de
512 MB a
2 GB, aunque ya es muy frecuente verlas con memorias de 4 GB y hasta 8 GB. La memoria
principal es la encargada de almacenar los programas y datos que se estn ejecutando y
su principal caracterstica es que el acceso a los datos o instrucciones desde esta memoria
es muy rpido.
En la memoria principal se almacenan:
Los datos enviados para procesarse desde los dispositivos de entrada.
Los programas que realizarn los procesos.
Los resultados obtenidos preparados para enviarse a un dispositivo de salida.

Tipos de memoria principal.

En la memoria principal se pueden distinguir dos tipos de memoria: RAM y ROM. La
memoria RAM (Random Access Memory, Memoria de acceso aleatorio) almacena los
datos e instrucciones a procesar. Es un tipo de memoria voltil (su contenido se pierde
cuando se apaga la computadora); esta memoria es, en realidad, la que se suele conocer
como memoria principal o de trabajo; en esta memoria se pueden escribir datos y leer de
ella. La memoria ROM (Read Only Memory, Memoria de slo lectura) es una memoria
permanente en la que no se puede escribir (viene pregrabada por el fabricante); es una

Fundamentos de programacin 1


Ing. Walther Vargas Gonzlez
Profesor de Informtica

8
memoria de slo lectura. Los programas almacenados en ROM no se pierden al apagar la
computadora y cuando se enciende, se lee la informacin almacenada en esta memoria. Al
ser esta memoria de slo lectura, los programas almacenados en los chips ROM no se
pueden modificar y suelen utilizarse para almacenar los programas bsicos que sirven para
arrancar la computadora.

La Unidad Central de Proceso (UCP): el Procesador.

La Unidad Central de Proceso, UCP (Central Processing Unit, CPU, en ingls), dirige y
controla el proceso de informacin realizado por la computadora. La UCP procesa o
manipula la informacin almacenada en memoria; puede recuperar informacin desde
memoria (esta informacin son datos o instrucciones: programas). Tambin puede
almacenar los resultados de estos procesos en memoria para su uso posterior.

La UCP consta de dos componentes: unidad de control (UC) y unidad aritmtica-lgica
(UAL) (Figura 1.7). La unidad de control (Control Unit, CU) coordina las actividades de la
computadora y determina qu operaciones se deben realizar y en qu orden; asimismo
controla y sincroniza todo el proceso de la computadora. La unidad aritmtico-lgica
(Arithmetic-Logic Unit, ALU) realiza operaciones aritmticas y lgicas, tales como suma,
resta, multiplicacin, divisin y comparaciones. Los datos en la memoria central se pueden
leer (recuperar) o escribir (cambiar) por la UCP.




El microprocesador.

El microprocesador es un chip (un circuito integrado) que controla y realiza las funciones y
operaciones con los datos. Se suele conocer como procesador y es el cerebro y corazn de
la computadora. En realidad el microprocesador representa a la Unidad Central de Proceso
de una computadora.

El primer microprocesador comercial, el Intel 4004 fue presentado el 15 de noviembre de
1971. Existen diferentes fabricantes de microprocesadores, como Intel, Zilog, AMD,
Motorola; Cyrix, etc. Microprocesadores histricos de 8 bits son el Intel 8080, Zilog Z80 o
Motorola 6800; otros microprocesadores muy populares han sido: 8086, 8088 de Intel o el
Motorola MC68000. En la dcada de los ochenta eran populares: Intel 80286, 80386,
80486; Motorola, MC 68020, MC68400; AMD 80386, 80486.
Unidad central de proceso


Fundamentos de programacin 1


Ing. Walther Vargas Gonzlez
Profesor de Informtica

9


Figura 1.7. Unidad central de proceso.

En el ao 1993 aparecieron el Intel Pentium y durante esa dcada, Intel Pentium Pro, Intel
Pentium II/III y AMD K6. En 2000, Intel y AMD controlan el mercado con Intel Pentium
IV, Intel Titanium, Intel Pentium D o bien AMD Athlon XP, AMD Duxor. En los aos
2005 y 2006 aparecen las nuevas tecnologas Intel Core Duo, AMD Athlon 64, etc.

Memoria externa: almacenamiento masivo
Cuando un programa se ejecuta, se debe situar primero en memoria central de igual modo
que los datos. Sin embargo, la informacin almacenada en la memoria se pierde (borra)
cuando se apaga (desconecta de la red elctrica) la computadora, y por otra parte la
memoria central es limitada en capacidad. Por esta razn, para poder disponer de
almacenamiento permanente, tanto para programas como para datos, se necesitan
dispositivos de almacenamiento secundario, auxiliar o masivo (mass storage o
secondary sto rage).

Los dispositivos de almacenamiento o memorias auxiliares (externas o secundarias) ms
comnmente utilizados son: cintas magnticas, discos magnticos, discos compactos (CD-
ROM, Compact Disk Read Only Memory) y videodiscos digitales (DVD). Las cintas son
utilizadas principalmente por sistemas de computadores grandes similares a las utilizadas
en los equipos de audio. Los discos y disquetes magnticos se utilizan por todas las
computadoras, especialmente las medias y pequeas las computadoras personales. Los
discos pueden ser duros, de gran capacidad de almacenamiento (su capacidad actual oscila
entre 40 GB y 500 GB), disquetes o discos flexibles (floppy disk), ya casi en des-uso.
Aunque todava se suelen comercializar lectoras de disquetes para compatibilidad con
equipos antiguos. El disquete, ya casi en desuso, es de 3,5 y de 1,44 MB de capacidad.

Fundamentos de programacin 1


Ing. Walther Vargas Gonzlez
Profesor de Informtica

10
Figura 1.9. Memorias auxiliares: Tarjeta compact flash (izquierda), memoria flash USB
(centro) y disco duro (derecha).

Los discos compactos (conocidos popularmente como CD) son soportes digitales pticos
utilizados para almacenar cualquier tipo de informacin (audio, vdeo, documentos...). Se
desarroll en 1980 y comenz a comercializarse en 1982. Existen diferentes modelos CD-
ROM (de slo lectura), CD-R (grabable), CD-RW (reescribible). Su capacidad de
almacenamiento va de 650 MB a 875 MB e incluso 215 MB.

Los DVD constituyen un formato multimedia de almacenamiento ptico y que se puede
usar para guardar datos, incluyendo pelculas de alta calidad de vdeo y audio. Los formatos
ms populares son: DVDROM, DVDR, DVDRW, DVDRAM, y sus capacidades de
almacenamiento van desde 4,7 GB y 8,5 GB hasta 17,1 GB, segn sean de una cara, de dos
caras y de una capa simple o capa doble.

Los ltimos discos pticos presentados en el mercado durante 2006 son: Bluray y HD
DVD. Estos discos son de alta definicin y su capacidad de almacenamiento es muy grande
de 15 GB a 50 GB y podr llegar en el futuro hasta 200 GB.
La informacin almacenada en la memoria central es voltil (desaparece cuando se apaga la
computadora) mientras que la informacin almacenada en la memoria externa (masiva) es
permanente.

Esta informacin se organiza en unidades independientes llamadas archivos (ficheros, file
en ingls). Los resultados de los programas se pueden guardar como archivos de datos y los
programas que se escriben se guardan como archivos de programas, ambos en la memoria
auxiliar. Cualquier tipo de archivo se puede transferir fcilmente desde la memoria auxiliar
hasta la memoria central para su proceso posterior.

En el campo de las computadoras es frecuente utilizar la palabra memoria y
almacenamiento o memoria externa, indistintamente. En este libro y recomendamos su
uso se utilizar el trmino memoria slo para referirse a la memoria central.
Comparacin de la memoria central y la memoria externa.

La memoria central o principal es mucho ms rpida y cara que la memoria externa. Se
deben transferir los datos desde la memoria externa hasta la memoria central, antes de que
puedan ser procesados. Los datos en memoria central son: voltiles y desaparecen cuando
se apaga la computadora. Los datos en memoria externa son permanentes y no desaparecen
cuando se apaga la computadora.


Fundamentos de programacin 1


Ing. Walther Vargas Gonzlez
Profesor de Informtica

11
Las computadoras modernas necesitan comunicarse con otras computadoras. Si la
computadora se conecta con una tarjeta de red se puede conectar a una red de datos locales
(red de rea local). De este modo se puede acceder y compartir a cada una de las memorias
de disco y otros dispositivos de entrada y salida. Si la computadora tiene un mdem, se
puede comunicar con computadoras lejanas. Se pueden conectar a una red de datos o enviar
correo electrnioco a travs de las redes corporativas Intranet/Ex-tranet o la propia red
Internet. Las redes inalmbricas permiten conexiones a Internet desde nmerosos lugares,
siempre que su PC disponga de tarjetas o conexiones inalmbricas.

La computadora personal ideal para programacin

Hoy da el estudiante de informtica o de computacin y mucho ms el profesional, dispone
de un amplio abanico de computadoras a precios asequibles y con prestaciones altas. En el
segundo semestre de 2006 se pueden encontrar computadoras personales (PC) con 1.024
MB de memoria, grabadoras de DVD de doblecapa, procesador Pentium de 3.00/3.20 GH2
y un monitor plano 17", disco duro de 200/400 GB por 800 a 1.000 e incluso ms
econmicos. En computadoras porttiles se pueden encontrar modelos de 1024 MB, 60-80
GB, procesadores Intel Pentium de 1,736 GHz, 1,83 GHz, pantalla de 15,4" y con precios
de 800 a 1200 . La Tabla 1.2 resume nuestra propuesta y recomendacin de caractersticas
medias para un/una PC, a mediados de 2006.
Tabla 1.2. Caractersticas medias de una computadora porttil (laptop).

REPRESENTACIN DE LA INFORMACIN EN LAS COMPUTADORAS

Una computadora es un sistema para procesar informacin de modo automtico. Un tema
vital en el proceso de funcionamiento de una computadora es estudiar la forma de
representacin de la informacin en dicha computadora. Es necesario considerar cmo se
puede codificar la informacin en patrones de bits que sean fcilmente almacenables y
procesables por los elementos internos de la computadora.

Las formas de informacin ms significativas son: textos, sonidos, imgenes y valores
numricos y, cada una de ellas presentan peculiaridades distintas. Otros temas importantes
en el campo de la programacin se refieren a los mtodos de deteccin de errores que se
puedan producir en la transmisin o almacenamiento de la informacin y a las tcnicas y
mecanismos de comprensin de informacin al objeto de que sta ocupe el menor espacio
en los dispositivos de almacenamiento y sea ms rpida su transmisin.

Representacin de textos


Fundamentos de programacin 1


Ing. Walther Vargas Gonzlez
Profesor de Informtica

12
La informacin en formato de texto se representa mediante un cdigo en el que cada uno de
los distintos smbolos del texto (tales como letras del alfabeto o signos de puntuacin) se
asignan a un nico patrn de bits. El texto se representa como una cadena larga de bits en la
cual los sucesivos patrones representan los sucesivos smbolos del texto original.
En resumen, se puede representar cualquier informacin escrita (texto) mediante caracteres.

Los caracteres que se utilizan en computacin suelen agruparse en cinco categoras:
1. Caracteres alfabticos (letras maysculas y minsculas, en una primera versin del
abecedario ingls).
A, B, C, D, E, ... X, Y, Z, a, b, c, ... , X, Y, Z
2. Caracteres numricos (dgitos del sistema de numeracin).
0, 1, 2, 3, 4, 5, 6, 7, 8, 9 sistema decimal
3. Caracteres especiales (smbolos ortogrficos y matemticos no incluidos en los
grupos anteriores). { } ! ? & > # ...
4. Caracteres geomtricos y grficos (smbolos o mdulos con los cuales se pueden
representar
cuadros, figuras geomtricas, iconos, etc.

| ||| ...
5. Caracteres de control (representan rdenes de control como el carcter para pasar a
la siguiente lnea [NL] o para ir al comienzo de una lnea [RC, retorno de carro, carriage
return, CR] emitir un pitido en el terminal [BEL], etc.).
Al introducir un texto en una computadora, a travs de un perifrico, los caracteres se
codifican segn un cdigo de entrada/salida de modo que a cada carcter se le asocia una
determinada combinacin de n bits.
Los cdigos ms utilizados en la actualidad son: EBCDIC, ASCII y Unicode.
Cdigo EBCDIC (Extended Binary Coded Decimal Inter Change Code).
Este cdigo utiliza n = 8 bits de forma que se puede codificar hasta m = 28 = 256 smbolos
di-ferentes. ste fue el primer cdigo utilizado para computadoras, aceptado en principio
por IBM.
Cdigo ASCII (American Standard Code for Information Interchange).

El cdigo ASCII bsico utiliza 7 bits y permite representar 128 caracteres (letras
maysculas y minsculas del alfabeto ingls, smbolos de puntuacin, dgitos 0 a 9 y
ciertos controles de informacin tales como retorno de carro, salto de lnea, tabulaciones,
etc.). Este cdigo es el ms utilizado en computadoras, aunque el ASCII ampliado con 8
bits permite llegar a 28 (256) caracteres distintos, entre ellos ya smbolos y caracteres
especiales de otros idiomas como el espaol.

Representacin de valores numricos.

Fundamentos de programacin 1


Ing. Walther Vargas Gonzlez
Profesor de Informtica

13
El almacenamiento de informacin como caracteres codificados es ineficiente cuando la
informacin se registra como numrica pura. Veamos esta situacin con la codificacin del
nmero 65; si se almacena como caracteres ASCII utilizando un byte por smbolo, se
necesita un total de 16 bits, de modo que el nmero mayor que se poda almacenar en 16
bits (dos bytes) sera 99. Sin embargo, si utilizamos nota-cin binaria para almacenar
enteros, el rango puede ir de 0 a 65.535 (216 1) para nmeros de 16 bits. Por
consiguiente, la notacin binaria (o variantes de ellas) es la ms utilizada para el
almacenamiento de datos numricos codificados.

La solucin que se adopta para la representacin de datos numricos es la siguiente: al
introducir un nmero en la computadora se codifica y se almacena como un texto o cadena
de caracteres, pero dentro del programa a cada dato se le enva un tipo de dato especfico y
es tarea del programador asociar cada dato al tipo adecuado correspondiente a las tareas y
operaciones que se vayan a realizar con dicho dato.

El mtodo prctico realizado por la computadora es que una vez definidos los datos
numricos de un programa, una rutina (funcin interna) de la biblioteca del compilador
(traductor) del lenguaje de programacin se encarga de transformar la cadena de caracteres
que representa el nmero en su notacin binaria.

Existen dos formas de representar los datos numricos: nmeros enteros o nmeros reales.

Representacin de enteros
Los datos de tipo entero se representan en el interior de la computadora en notacin binaria.
La memoria ocupada por los tipos enteros depende del sistema, pero normalmente son dos,
bytes (en las versiones de MS-DOS y versiones antiguas de Windows y cuatro bytes en los
sistemas de 32 bits como Windows o Linux). Por ejemplo, un entero almacenado en 2 bytes
(16 bits): 1000 1110 0101 1011

Los enteros se pueden representar con signo (signed, en C++) o sin signo (unsigned, en
C++); es decir, nmeros positivos o negativos. Normalmente, se utiliza un bit para el signo.
Los enteros sin signo al no tener signo pueden contener valores positivos ms grandes.
Normalmente, si un entero no se especifica con/sin signo se suele asignar con signo por
defecto u omisin.

El rango de posibles valores de enteros depende del tamao en bytes ocupado por los
nmeros y si se representan con signo o sin signo (la Tabla 1.3 resume caractersticas de
tipos estndar en C++).



Fundamentos de programacin 1


Ing. Walther Vargas Gonzlez
Profesor de Informtica

14
Representacin de reales.
Los nmeros reales son aquellos que contienen una parte decimal como 2,6 y 3,14152. Los
reales se representan en notacin cientfica o en coma flotante; por esta razn en los
lenguajes de programacin, como C++, se conocen como nmeros en coma flotante.
Existen dos formas de representar los nmeros reales. La primera se utiliza con la notacin
del punto decimal (ojo en el formato de representacin espaol de nmeros decimales, la
parte decimal se representa por coma).

Ejemplos
12.35 99901.32 0.00025 9.0
La segunda forma para representar nmeros en coma flotante en la notacin cientfica o
exponencial, conocida tambin como notacin E. Esta notacin es muy til para representar
nmeros muy grandes o muy pequeos.

Notacin exponencial
Exponente

Representacin de caracteres
Un documento de texto se escribe utilizando un conjunto de caracteres adecuado al tipo de
documento. En los lenguajes de programacin se utilizan, principalmente, dos cdigos de
caracteres. El ms comn es ASCII (American Standard Code for Information Interchange)
y algunos lenguajes, tal como Java, utilizan Unicode (www.unicode.org). Ambos cdigos
se basan en la asignacin de un cdigo numrico a cada uno de los tipos de caracteres del
cdigo.
En C++, los caracteres se procesan normalmente usando el tipo char, que asocia cada
carcter a un cdigo numrico que se almacena en un byte.
El cdigo ASCII bsico que utiliza 7 bits (128 caracteres distintos) y el ASCII ampliado a 8
bits (256 caracteres distintos) son los cdigos ms utilizados. As se pueden representar
caracteres tales como 'A', 'B', 'c', '$', '4', '5', etc.

En el caso de C++ se considera un dato de tipo carcter denominado wchar_t que sirve para
representar caracteres de tipo internacional para manejar lenguajes extranjeros. La Tabla
1.3, recoge los tipos enteros, reales y carcter utilizados en C++, la memoria utilizada (n
mero de bytes ocupados por el dato) y el rango de nmeros.


Fundamentos de programacin 1


Ing. Walther Vargas Gonzlez
Profesor de Informtica

15


Tabla 1.3. Tipos enteros reales, en C++.

CONCEPTO DE ALGORITMO

El objetivo fundamental de este texto es ensear a resolver problemas mediante una
computadora. El programador de computadora es antes que nada una persona que resuelve
problemas, por lo que para llegar a ser un programador eficaz se necesita aprender a
resolver problemas de un modo riguroso y sistemtico. A lo largo de todo el libro nos
referiremos a la metodologa necesaria para resolver problemas mediante programas,
concepto que se denomina metodologa de la programacin. El eje central de esta
metodologa es el concepto, ya tratado, de algoritmo.

Un algoritmo es un mtodo para resolver un problema. Aunque la popularizacin del
trmino ha llegado con el advenimiento de la era informtica, algoritmo proviene de
Mohammed al-Khowrizmi, matemtico persa que vivi durante el siglo IX y alcanz gran
reputacin por el enunciado de las reglas paso a paso para sumar, restar, multiplicar y
dividir nmeros decimales; la traduccin al latn del apellido en la palabra algorismus
deriv posteriormente en algoritmo. Euclides, el gran matemtico griego (del siglo IV antes
de Cristo) que invent un mtodo para encontrar el mximo comn divisor de dos nmeros,
se considera con Al-Khowrizmi el otro gran padre de la algoritmia (ciencia que trata de los
algoritmos).

El profesor Niklaus Wirth inventor de Pascal, Modula-2 y Oberon titul uno de sus
ms famosos libros, Algoritmos + Estructuras de datos = Programas, significndonos que
slo se puede llegar a realizar un buen programa con el diseo de un algoritmo y una
correcta estructura de datos. Esta ecuacin ser una de las hiptesis fundamentales
consideradas en esta obra.

La resolucin de un problema exige el diseo de un algoritmo que resuelva el problema
propuesto. En las obras del profesor Alberto Prieto, Schaum Conceptos de Informtica e

Fundamentos de programacin 1


Ing. Walther Vargas Gonzlez
Profesor de Informtica

16
Introduccin a la Informtica, publicadas en McGraw-Hill, puede encontrar una excelente
referencia sobre estos conceptos y otros complementarios de este captulo introductorio.



Figura 1.10. Resolucin de un problema.



Los pasos para la resolucin de un problema son:

1 Diseo del algoritmo, que describe la secuencia ordenada de pasos sin
ambigedades que conducen a la solucin de un problema dado. (Anlisis del problema y
desarrollo del algoritmo.)
2 Expresar el algoritmo como un programa en un lenguaje de programacin adecuado.
(Fase de codificacin.)
3 Ejecucin y validacin del programa por la computadora.

Para llegar a la realizacin de un programa es necesario el diseo previo de un algoritmo,
de modo que sin algoritmo no puede existir un programa.

Los algoritmos son independientes tanto del lenguaje de programacin en que se expresan
como de la computadora que los ejecuta. En cada problema el algoritmo se puede expresar
en un lenguaje diferente de programacin y ejecutarse en una computadora distinta; sin
embargo, el algoritmo ser siempre el mismo. As, por ejemplo, en una analoga con la vida
diaria, una receta de un plato de cocina se puede expresar en espaol, ingls o francs, pero
cualquiera que sea el lenguaje, los pasos para la elaboracin del plato se realizarn sin
importar el idioma del cocinero.

En la ciencia de la computacin y en la programacin, los algoritmos son ms importantes
que los lenguajes de programacin o las computadoras. Un lenguaje de programacin es tan
slo un medio para expresar un algoritmo y una computadora es slo un procesador para
ejecutarlo. Tanto el lenguaje de programacin como la computadora son los medios para
obtener un fin: conseguir que el algoritmo se ejecute y se efecte el proceso
correspondiente.


Fundamentos de programacin 1


Ing. Walther Vargas Gonzlez
Profesor de Informtica

17
El diseo de la mayora de los algoritmos requiere creatividad y conocimientos profundos
de la tcnica de la programacin. En esencia, la solucin de un problema se puede expresar
mediante un algoritmo.

Caractersticas de los algoritmos.

Las caractersticas fundamentales que debe cumplir todo algoritmo son:
Un algoritmo debe ser preciso e indicar el orden de realizacin de cada paso.
Un algoritmo debe estar definido. Si se sigue un algoritmo dos veces, se debe
obtener el mismo resultado cada vez.
Un algoritmo debe ser finito. Si se sigue un algoritmo, se debe terminar en algn
momento; o sea, debe tener un nmero finito de pasos.

La definicin de un algoritmo debe describir tres partes: Entrada, Proceso y Salida. En el
algoritmo de receta de cocina citado anteriormente se tendr:
Entrada: ingredientes y utensilios empleados. Proceso: elaboracin de la receta en la cocina.
Salida: terminacin del plato (por ejemplo, cordero).

Ejemplo 1.1

Un cliente ejecuta un pedido a una fbrica. La fbrica examina en su banco de datos la
ficha del cliente; si el cliente es solvente entonces la empresa acepta el pedido; en caso
contrario, rechazar el pedido. Redactar el algoritmo correspondiente.
Los pasos del algoritmo son:

1. Inicio.

2. Leer el pedido.

3. Examinar la ficha del cliente.

4. Si el cliente es solvente, aceptar pedido; en caso contrario, rechazar pedido.

5. Fin.

Ejemplo 1.2

Se desea disear un algoritmo para saber si un nmero es primo o no. Un nmero es
primo si slo puede dividirse por s mismo y por la unidad (es decir, no tiene ms
divisores que l mismo y la unidad). Por ejemplo, 9, 8, 6, 4, 12, 16, 20, etc., no son
primos, ya que son divisibles por nmeros distintos a ellos mismos y a la unidad. As, 9 es

Fundamentos de programacin 1


Ing. Walther Vargas Gonzlez
Profesor de Informtica

18
divisible por 3, 8 lo es por 2, etc. El algoritmo de resolucin del problema pasa por dividir
sucesivamente el nmero por 2, 3, 4, etc.

1. Inicio.

2. Poner X igual a 2 (x = 2, x variable que representa a los divisores del nmero que se
busca N).

3. Dividir N por X (N/X).

4. Si el resultado de N/X es entero, entonces N es un nmero primo y bifurcar al punto 7;
en caso contrario, continuar el proceso.

5. Suma 1 a X (X X + 1).

6. Si X es igual a N, entonces N es un nmero primo; en caso contrario, bifurcar al punto 3.

7. Fin.

Por ejemplo, si N es 131, los pasos anteriores seran:
1. Inicio.
2. X = 2. 3 y 4. 131/X. Como el resultado no es entero, se contina el proceso.


5. X 2 + 1, luego X = 3.

6. Como X no es 131, se bifurca al punto 3. 3 y 4. 131/X resultado no es entero.


5. X 3 + 1, X = 4.

6. Como X no es 131 bifurca al punto 3. 3 y 4.131/X..., etc.

7. Fin.

Ejemplo 1.3
Realizar la suma de todos los nmeros pares entre 2 y 1.000.
El problema consiste en sumar 2 + 4 + 6 + 8 ... + 1.000. Utilizaremos las palabras SUMA y
NUMERO (variables, sern denominadas ms tarde) para representar las sumas sucesivas

Fundamentos de programacin 1


Ing. Walther Vargas Gonzlez
Profesor de Informtica

19
(2+4), (2+4+6), (2+4+6+8), etctera. La solucin se puede escribir con el siguiente
algoritmo:

1. Inicio.

2. establecer SUMA a 0.

3. establecer NMERO a 2.

4. Sumar NMERO a SUMA. El resultado ser el nuevo valor de la suma (SUMA).

5. Incrementar NMERO en 2 unidades.

6. Si NUMERO =< 1.000 bifurcar al paso 4;

7. en caso contrario, escribir el ltimo valor de SUMA y terminar el proceso.





















Fundamentos de programacin 1


Ing. Walther Vargas Gonzlez
Profesor de Informtica

20
Smbolos de los Organigramas




Reglas Bsicas

1 Todos los smbolos han de estar conectados
2 A un smbolo de proceso pueden llegarle varias lneas
3 A un smbolo de decisin pueden llegarle varias lneas, pero slo saldrn dos.
4 A un smbolo de inicio nunca le llegan lneas.
5 De un smbolo de fin no parte ninguna lnea.




Fundamentos de programacin 1


Ing. Walther Vargas Gonzlez
Profesor de Informtica

21
La plantilla de Diagramacin
La plantilla contiene un conjunto de smbolos y reglas, para el proceso de negociacin que
nos ocupan.



Estructuras de control
Llamaremos estructuras de control a las acciones que tienen como objeto marcar el orden
de ejecucin de las instrucciones y que van a servirnos para escribir concisamente y sin
ambigedades los algoritmos.
Todas las estructuras de control que estudiaremos estarn compuestas de unos elementos
bsicos (lxico) y una estructura (sintaxis.)



Estructuras selectivas
Son las que toman una cierta direccin dentro del flujo del programa en funcin de una
condicin o el valor de una variable.
Alternativas simples.- Se realiza una accin o conjunto de acciones si se cumple una
determinada condicin.

Fundamentos de programacin 1


Ing. Walther Vargas Gonzlez
Profesor de Informtica

22














Alternativas dobles
Si una condicin se cumple se realizan unas acciones, si no se cumple la condicin se
realizan otras











Fundamentos de programacin 1


Ing. Walther Vargas Gonzlez
Profesor de Informtica

23





Alternativas mltiples
Dependiendo del valor de una variable se realizan unas acciones u otras.



Este tipo de estructuras se utiliza especialmente cuando se programan mens de seleccin.
Ejemplo: Calculadora infantil. Realizar un programa que pida dos nmeros y una operacin
(suma, resta, multiplicacin o divisin) y nos de el resultado de operar los nmeros con esa
operacin.



Fundamentos de programacin 1


Ing. Walther Vargas Gonzlez
Profesor de Informtica

24



EJERCICIOS DE DIAGRAMAS DE FLUJO

1 Hacer el diagrama de flujo para sumar dos nmeros ledos por teclado y escribir el
resultado.
2 Modificar el anterior pero para sumar 100 nmeros ledos por teclado.
3 Modificar el anterior para que permita sumar N nmeros. El valor de N se debe leer
previamente por teclado.
4 Hacer un diagrama de flujo que permita escribir los 100 primeros pares.
5 Hacer el diagrama de flujo para sumar los N primeros impares. Realizar despus uno que
haga lo mismo con los pares y, otro, con los mltiplos de 3.
6 La sucesin de Fibonacci se define de la siguiente forma: a1=1, a2=1 y an=an-1+an-2
para n>2, es decir los dos primeros son 1 y el resto cada uno es la suma de los dos
anteriores, los primeros son: 1, 1, 2, 3, 5, 8, 13, 21, ... Hacer un diagrama de flujo para
calcular el Nsimo trmino de la sucesin.
7 Hacer un diagrama de flujo que simule un reloj.
8 Realizar el diagrama de flujo para resolver una ecuacin de segundo grado, teniendo en
cuenta las soluciones complejas.
9 Hacer un organigrama que calcule el total de una factura, partiendo de una lista de
parejas importe, iva. La lista finaliza cuando el importe sea 0. El iva puede ser el 4%, el 7%
o el 16%, en cualquier otro caso se rechazan importe e iva y se deben introducir de nuevo.


Fundamentos de programacin 1


Ing. Walther Vargas Gonzlez
Profesor de Informtica

25
Finalmente hay que realizar un descuento, en funcin de la suma de los importes, dicho
descuento es del 0% si es menor que 1000, es del 5% si es mayor o igual que 1000 y menor
que 10000 y es de un 10% si es mayor o igual que 10000. El descuento se debe aplicar a la
suma de los importes y a la suma de los ivas.

Para acabar se debe imprimir el importe y el iva resultantes (total menos descuento) y la
suma de ambos.

10. Hacer un organigrama que lea N nmeros, calcule y escriba la suma de los pares y el
pro-ducto de los impares.

11. Hacer un diagrama de flujo para calcular el mximo comn divisor de dos nmeros
enteros positivos N y M siguiendo el algoritmo de Eucldes, que es el siguiente:

1. Se divide N por M, sea R el resto.

2. Si R=0, el mximo comn divisor es M y se acaba.

3. Se asigna a N el valor de M y a M el valor de R y volver al paso 1.

Por qu el mtodo anterior acaba alguna vez? Por qu calcula el mximo comn divisor
de N y M?
12. Calcular los nmeros primos hasta el N, segn la Criba de Eratstenes, que consiste en
poner todos los nmeros del 2 al N en una tabla e ir tachando los mltiplos de cada nmero,
detalladamente es como sigue:

1. Escribir los nmeros del 2 al N.
2. Hacer I igual a 2
3. Mirar el nmero I de la tabla.
4. Si esta tachado ir al paso 6.
5. Si no lo esta tachar los mltiplos de I en la tabla.
6. Incrementar I.
7. Si I es menor o igual que N ir al paso 3.
8. En otro caso finalizar.

El punto 5 tambin requiere un algoritmo, que es el siguiente:
5.1 Hacer J igual al doble de I (primer mltiplo de I).
5.2 Si J es mayor que N finalizar (el apartado 5).
5.3 En otro caso tachar el elemento J.
5.4 Incrementar J en I (para pasar al siguiente mltiplo de I).

Fundamentos de programacin 1


Ing. Walther Vargas Gonzlez
Profesor de Informtica

26
5.5 Volver a 5.2.
Para realizarlo se simular la tabla con nmeros tachados mediante un array P, y el
elemento I estar sin tachar cuando P(I) sea 1 y tachado cuando sea 0.

13. Hacer el diagrama de flujo para calcular el factorial de N (N!=123...N).

14. Hacer un diagrama de flujo para sumar los N primeros trminos de una progresin
geomtrica de primer trmino A y razn R (dados por teclado). Se debe realizar la suma
sin emplear la frmula que existe para ello.

15. Hacer un diagrama de flujo para convertir un nmero decimal N dado por teclado a
binario.

16. Hacer un diagrama de flujo para calcular AB, siendo B un entero, ntese que B puede
ser 0

o negativo. No se pueden emplear logaritmos.

17. Hacer un diagrama de flujo para calcular el mximo de N nmeros ledos por teclado,
se debe realizar de dos formas, una almacenando previamente los nmeros dados por
teclado en un array y la otra calculando el mximo directamente segn se leen los nmeros
del teclado.

18. Hacer un diagrama de flujo para ordenar N nmeros ledos por teclado y almacenados
en un array A. El algoritmo es el siguiente:

1. Se lee N y despus los N nmeros al array A.

2. Se busca el mximo de los elementos del 1 al N y su ndice J.

3. Se intercambian los elementos A(J) y A(N).

4. Se decrementa N en 1.

5. Se compara N con 1, si es mayor se vuelve a 2.

6. Si es menor o igual se termina.

19. Hacer el organigrama de un programa que dado un array A ordenado de N elementos,
encuentre la posicin de uno B ledo por teclado. El algoritmo a emplear es el siguiente:

Fundamentos de programacin 1


Ing. Walther Vargas Gonzlez
Profesor de Informtica

27

1. Se fijan los extremos de la porcin a buscar: I=1, J=N.

2. Se calcula el ndice del elemento medio K=(I+J)/2.

3. Se compara B con el elemento medio A(K).

4. Si es igual se escribe K y se termina.

5. Si es mayor se cambian los extremos a I=K+1, J=N y se vuelve a 2.

6. Si es menor se cambian los extremos a I=1, J=K-1 y se vuelve a 2.

Pensar despus que habr que modificar para que busque tambin valores de B que no estn
en el array A, si se da ese caso y no lo encuentra debe poner un mensaje diciendo que no
esta.

20. Hacer un organigrama de un programa que adivine el nmero entre 1 y 1000 pensado
por un humano. El programa debe ir diciendo nmeros y el humano responder con los
smbolos '<', '>' o '=', segn el nmero pensado sea menor, mayor o igual que el dicho por
el ordenador. Cuando lo adivine deber poner un mensaje especificando cuantas preguntas
ha necesitado y finalizar. No debe realizar ms de 10 preguntas y debe detectar si el
humano le engaa dicindole cosas imposibles, por ejemplo es mayor que 4 y menor que
5. Si en lugar de estar el nmero de partida entre 1 y 1000 estuviera entre 1 y 1000000,
cuantas preguntas seran necesarias?

21. Realizar el organigrama de un programa que permita calcular ceros de funciones
empleando el Teorema de Bolzano (si una funcin continua, definida en un intervalo
cerrado [a,b], toma valores de signos opuestos en los extremos, existe un punto c en [a,b]
tal que f(c)=0). Los datos de partida son los extremos del intervalo a y b y E que nos dice el
mximo error tolerado en el resultado. El programa deber poner un mensaje de error si la
funcin tiene igual signo en los extremos del intervalo, en otro caso debe escribir un valor
C, que diste del c del Teorema en menos de E.

22. Dados dos nmeros enteros positivos N y D, se dice que D es un divisor de N si el resto
de dividir N entre D es 0. Se dice que un nmero N es perfecto si la suma de sus divisores
(excluido el propio N) es N. Por ejemplo 28 es perfecto, pues sus divisores (excluido el 28)
son: 1, 2, 4, 7 y 14 y su suma es 1+2+4+7+14=28. Hacer un organigrama que dado un
nmero N nos diga si es o no perfecto.


Fundamentos de programacin 1


Ing. Walther Vargas Gonzlez
Profesor de Informtica

28
23. Un ao es bisiesto si es mltiplo de 4, exceptuando los mltiplos de 100, que slo son
bisiestos cuando son mltiplos adems de 400, por ejemplo el ao 1900 no fue bisiesto,
pero el ao 2000 si lo ser. Hacer un organigrama que dado un ao A nos diga si es o no
bisiesto.

24. Hacer un organigrama que dados un da D, un mes M y un ao A, calcule cual es el da
siguiente. Se debe tener en cuenta que en los aos bisiestos Febrero tiene 29 das y en los
no bisiestos 28.

25. El Mircoles de Ceniza es 46 das antes que el Domingo de Resurreccin. Hacer un
orga-nigrama para que dados el da D, el mes M y el ao A del Domingo de Resurreccin
calcule la fecha del Mircoles de Ceniza en ese ao. Se debe tener en cuenta si el ao es o
no bisiesto.



26. Hacer un organigrama que lea un nmero N y obtenga las ternas pitagricas (A, B, C)
en las que A, B y C son todos enteros positivos y menores que N. Para que una terna (A, B,
C) sea pitagrica debe cumplir que A2+B2=C2.

27. Una empresa paga a sus 100 operarios semanalmente, de acuerdo con el nmero de
horas trabajadas, a razn de P pesetas por hora y de 1.5P pesetas por cada hora extra. Las
horas extras son las que exceden de 40h. Hacer el organigrama que dado el nmero de
horas trabajadas y el valor de P calcule el salario que le corresponde.

28. Disponemos de una mquina que puede dar vueltas con 5 tipos de monedas distintas:
100, 50, 25, 5 y 1 pts. Realizar el organigrama de un programa que dados el precio del
artculo y la cantidad entregada por el consumidor nos indique la vuelta a entregar
empleando el menor nmero posible de monedas.

29. Plantear el organigrama de un programa que sea capaz de calcular el impuesto sobre la
renta el nmero de veces que sea necesario y lo escriba por impresora. El impuesto de la
renta es el 15% del salario anual de cada persona, al que previamente se debe realizar una
deduccin en funcin del nmero de hijos, que es del 0% si tiene 0, del 5% si tiene 1 o 2 y
del 15% si tiene ms de 2.

30. Realizar un organigrama para leer por teclado las notas de N alumnos que estn
matriculados en M asignaturas, si un alumno no esta matriculado de una asignatura o no
se presenta al examen se debe introducir como nota -1. El programa debe calcular y

Fundamentos de programacin 1


Ing. Walther Vargas Gonzlez
Profesor de Informtica

29
escribir el nmero de alumnos presentados a cada asignatura, la nota media, el nmero de
suspensos, el nmero de aprobados, el nmero de notables y el nmero de sobresalientes.

31. Hacer el organigrama para resolver el siguiente problema: Un hombre, un lobo, una
cabra y un repollo deben pasar un ro, para ello se dispone de una barca con capacidad para
dos ocupantes, el hombre (nico que sabe remar) y otro. Si en una orilla se quedan solos el
lobo y la cabra, el lobo se come a la cabra. Si en una orilla se quedan solos la cabra y el
repollo, la cabra se come el repollo.









SOLUCIONES A LOS EJERCICIOS DE DIAGRAMAS DE FLUJO

1. Hacer el diagrama de flujo para sumar dos nmeros ledos por teclado y escribir el
resultado.




2. Modificar el anterior pero para sumar 100 nmeros ledos por teclado.

Fundamentos de programacin 1


Ing. Walther Vargas Gonzlez
Profesor de Informtica

30





En I contamos los nmeros que quedan por sumar. -En S calculamos la suma. -A se emplea
para leer temporalmente cada nmero. Vamos a ver paso a paso como funciona.
Supongamos que los datos son: 7, -1, 8, 5, ...

(1) I=100 (nmeros a sumar)
(2) S=0 (suma, inicialmente 0)
(3) Leer A. El primero es 7, luego A=7
(4) S=S+A=0+7=7
(5) I=I-1=100-1=99
(6) I=0? NO
(3) Leer A, ahora A=-1
(4) S=S+A=7-1=6
(5) I=I-1=99-1=98
(6) I=0? NO
Cuando I=0 habremos sumado los 100 nmeros y pasaremos a:
(7) Escribir S que ser la suma





Fundamentos de programacin 1


Ing. Walther Vargas Gonzlez
Profesor de Informtica

31
3. Modificar el anterior para que permita sumar N nmeros. El valor de N se debe
leer previamente por teclado.

















Fundamentos de programacin 1


Ing. Walther Vargas Gonzlez
Profesor de Informtica

32
4. Hacer un diagrama de flujo que permita escribir los 100 primeros pares.

P: Variable para contener el siguiente par que se debe escribir.
I: Contador de pares que quedan por escribir.
El proceso es similar al anterior. Necesitamos un bucle para contar 100 veces y
dentro de l escribimos el par e incrementamos para obtener el siguiente.
5. Hacer el diagrama de flujo para sumar los N primeros impares. Realizar despus
uno que haga lo mismo con los pares y otro con los mltiplos de 3.

Fundamentos de programacin 1


Ing. Walther Vargas Gonzlez
Profesor de Informtica

33


6. La sucesin de Fibonacci se define de la siguiente forma: a1=1, a2=1 y an=an-1+an-
2 para n>2, es decir, los dos primeros son 1 y el resto cada uno es la suma de los dos
anteriores, los primeros son: 1, 1, 2, 3, 5, 8, 13, 21, ... Hacer un diagrama de flujo para
calcular el Nsimo trmino de la sucesin.

Fundamentos de programacin 1


Ing. Walther Vargas Gonzlez
Profesor de Informtica

34

Dado N, el proceso es el siguiente:
- si N2 se escribe directamente 1 y se acaba.
-en otro caso se guardan en A y B los 2 ltimos (al principio 1) y se suman, pasando
despus a llamar A al antiguo B, y B a la suma. Se decrementa N y cuando valga 2, en B
tenemos lo que queremos.
Vamos a ver cmo funciona paso a paso. Para ello vamos a numerar cada uno de los pasos
y ver cmo se van realizando.

(1) Leemos N, supongamos N=4.
(2) N=2? NO
(3) A=1
(4) B=1
(5) C=A+B=1+1=2
(6) A=B=1
(7) B=C=2

(8) N=N-1=4-1=3
(9) N=2? NO
(5) C=A+B=1+2=3

Fundamentos de programacin 1


Ing. Walther Vargas Gonzlez
Profesor de Informtica

35

7. Hacer un diagrama de flujo que simule un reloj.





9. Hacer un organigrama que calcule el total de una factura, partiendo de una lista de
parejas importe, iva. La lista finaliza cuando el importe sea 0. El iva puede ser el 4%,
el 7% o el 16%, en cualquier otro caso se rechazan importe e iva y se deben introducir
de nuevo. Finalmente hay que realizar un descuento, en funcin de la suma de los
importes, dicho descuento es del 0% si es menor que 1000, es del 5% si es mayor o

Fundamentos de programacin 1


Ing. Walther Vargas Gonzlez
Profesor de Informtica

36
igual que 1000 y menor que 10000 y es de un 10% si es mayor o igual que 10000. El
descuento se debe aplicar a la suma de los importes y a la suma de los ivas. Para
acabar se debe imprimir el importe y el iva resultantes (total menos descuento) y la
suma de ambos.



10. Hacer un organigrama que lea N nmeros, calcule y escriba la suma de los pares y
el producto de los impares.


Fundamentos de programacin 1


Ing. Walther Vargas Gonzlez
Profesor de Informtica

37

11. Hacer un diagrama de flujo para calcular el mximo comn divisor de dos nmeros
enteros positivos N y M siguiendo el algoritmo de Eucldes, que es el siguiente:


12


Fundamentos de programacin 1


Ing. Walther Vargas Gonzlez
Profesor de Informtica

38














14.
13 Hacer el diagrama de flujo para calcular el factorial de N (N!=1 2 3 ... N).


Fundamentos de programacin 1


Ing. Walther Vargas Gonzlez
Profesor de Informtica

39


14.- Hacer un diagrama de flujo para sumar los N primeros trminos de una
progresin geomtrica de primer trmino A y razn R (dados por teclado). Se debe
realizar la suma sin emplear la frmula que existe para ello.




15. Hacer un diagrama de flujo para convertir un nmero decimal N dado por teclado a
binario.

Fundamentos de programacin 1


Ing. Walther Vargas Gonzlez
Profesor de Informtica

40

16. Hacer un diagrama de flujo para calcular AB, siendo B un entero, ntese que B puede
ser 0 o negativo. No se pueden emplear logaritmos.



17. Calcular el mximo de N nmeros ledos desde teclado.

Fundamentos de programacin 1


Ing. Walther Vargas Gonzlez
Profesor de Informtica

41

Vamos a almacenar en M el mximo de los nmeros que se hayan ledo, el primero va di-
rectamente a M y los N-1 restantes los leemos en A, comparamos con M y si son mayores
cambiamos el mximo temporal. Al final se escribe el resultado.
Vamos a ejecutarlo paso a paso para N=4, empleando como datos: 2, 3, -1, 7.

(1) Leer N N=4
(2) Leer M M=2
(3) I=N-1=3
(4) Leer A A=3
(5) A>M? SI
(6) M=A=3
(7) I=I-1=3-I=2
(8) I=0? NO
(4) Leer A A=-1





Fundamentos de programacin 1


Ing. Walther Vargas Gonzlez
Profesor de Informtica

42
18 Hacer un diagrama de flujo para ordenar N nmeros ledos por teclado y almacenados
en un array A. El algoritmo es el siguiente:
1. Se lee N y despus los N nmeros al array A.
2. Se busca el mximo de los elementos del 1 al N y su ndice J.
3. Se intercambian los elementos A(J) y A(N).
4. Se decrementa N en 1.
5. Se compara N con 1, si es mayor se vuelve a 2.
6. Si es menor o igual se termina.








Fundamentos de programacin 1


Ing. Walther Vargas Gonzlez
Profesor de Informtica

43
19 Hacer el organigrama de un programa que dado un array A ordenado de N
elementos, encuentre la posicin de uno B ledo por teclado. El algoritmo a emplear es
el siguiente:
1. Se fijan los extremos de la porcin a buscar: I=1, J=N.
2. Se calcula el ndice del elemento medio K=(I+J)/2.
3. Se compara B con el elemento medio A(K).
4. Si es igual se escribe K y se termina.
5. Si es mayor se cambian los extremos a I=K+1, J=N y se vuelve a 2.
6. Si es menor se cambian los extremos a I=1, J=K-1 y se vuelve a 2.
Pensar despus que habr que modificar para que busque tambin valores de B que no estn
en el
array A, si se da ese caso y no lo encuentra debe poner un mensaje diciendo que no est.















Fundamentos de programacin 1


Ing. Walther Vargas Gonzlez
Profesor de Informtica

44
22. Dados dos nmeros enteros positivos N y D, se dice que D es un divisor de N si el
resto de dividir N entre D es 0. Se dice que un nmero N es perfecto si la suma de sus
divisores (excluido el propio N) es N. Por ejemplo 28 es perfecto, pues sus divisores
(excluido el 28) son: 1, 2, 4, 7 y 14 y su suma es 1+2+4+7+14=28. Hacer un
organigrama que dado un nmero N nos diga si es o no perfecto.












Fundamentos de programacin 1


Ing. Walther Vargas Gonzlez
Profesor de Informtica

45
23. Un ao es bisiesto si es mltiplo de 4, exceptuando los mltiplos de 100, que slo
son bisiestos cuando son mltiplos adems de 400, por ejemplo el ao 1900 no fue
bisiesto, pero el ao 2000 si lo ser. Hacer un organigrama que dado un ao A nos
diga si es o no bisiesto.



24. Hacer un organigrama que dados un da D, un mes M y un ao A, calcule cual es el da
siguiente. Se debe tener en cuenta que en los aos bisiestos Febrero tiene 29 das y en los
no bisiestos 28.


Fundamentos de programacin 1


Ing. Walther Vargas Gonzlez
Profesor de Informtica

46
26. Hacer un organigrama que lea un nmero N y obtenga las ternas pitagricas (A,
B, C) en las que A, B y C son todos enteros positivos y menores que N. Para que una
terna (A, B, C) sea pitagrica debe cumplir que A
2
+B
2
=C
2
.















Fundamentos de programacin 1


Ing. Walther Vargas Gonzlez
Profesor de Informtica

47
27. Una empresa paga a sus 100 operarios semanalmente, de acuerdo con el nmero
de horas trabajadas, a razn de P pesetas por hora y de 1.5 P pesetas por cada hora
extra. Las horas extras son las que exceden de 40h. Hacer el organigrama que dado el
nmero de horas trabajadas y el valor de P calcule el salario que le corresponde.









Fundamentos de programacin 1


Ing. Walther Vargas Gonzlez
Profesor de Informtica

48
28. Disponemos de una mquina que puede dar vueltas con 5 tipos de monedas
distintas: 100, 50, 25, 5 y 1 pts. Realizar el organigrama de un programa que dados el
precio del artculo y la cantidad entregada por el consumidor nos indique la vuelta a
entregar empleando el menor nmero posible de monedas.








Fundamentos de programacin 1


Ing. Walther Vargas Gonzlez
Profesor de Informtica

49
29 Plantear el organigrama de un programa que sea capaz de calcular el impuesto
sobre la renta el nmero de veces que sea necesario y lo escriba por impresora. El
impuesto de la renta es el 15% del salario anual de cada persona, al que previamente
se debe realizar una deduccin en funcin del nmero de hijos, que es del 0% si tiene
0, del 5% si tiene 1 o 2 y del 15% si tiene ms de 2.












Fundamentos de programacin 1


Ing. Walther Vargas Gonzlez
Profesor de Informtica

50
BIBLIOGRAFIA
Bibliografa bsica
JOYANES, L. (2008). Fundamentos de la programacin. Algoritmos y Estructura de Datos, 4
Edicin. Madrid: McGraw-Hill.
VILLALOBOS, RICARDO. Fundamentos de programacin C#. Lima Macro 2008.
Bibliografa complementaria.
AHO, Alfred V.; HOPCROFT, John E.; ULLMAN, Jeffrey D. (1998). Estructuras de datos y
algoritmos. Mxico: Addison Wesley.
BRASSARD, G.; BRATLEY, P. (1997). Fundamentos de Algoritmia. Madrid: Prentice-Hall.
COLLADO MACHUCA, M.; MORALES FERNNDEZ, R.; MORENO NAVARRO, J. J.
(1987). Estructuras de datos. Realizacin en Pascal. Madrid: Ediciones Daz de Santos.
ESPINOZA, Jaime. Fundamentos de programacin. Nueva Edicin..Ministerio de Educacin y
Cultura. ISBN-10: ISBN 9978 45-386-5 2010
GARCA MOLINA, J. J.; MONTOYA DATO, F. J.; FERNNDEZ ALEMN, J. L.; MAJADO
ROSALES, M. J. (2005). Una introduccin a la programacin. Un enfoque algortmico. Madrid:
Thomson-Paraninfo.
JOYANES, L. (1990). Problemas de Metodologa de la Programacin. Madrid: McGraw-Hill.











Fundamentos de programacin 1


Ing. Walther Vargas Gonzlez
Profesor de Informtica

51

You might also like