Documente Academic
Documente Profesional
Documente Cultură
MDULO DE FUNDAMENTOS DE
PROGRAMACIN
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.
IV.
VII.
VIII.
PSEUDOCDIGO ......................................................................................... 58
ii
II UNIDAD .............................................................................................................. 62
X. ESTRUCTURAS ALGORTMICAS ................................................................. 63
10.1
10.2
10.3
11.2.
11.3.
PROCEDIMIENTOS.......................................................................... 111
11.4.
11.5.
XII.
XIII.
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.
MDULO
FUNDAMENTOS DE PROGRAMACIN
MDULO
FUNDAMENTOS DE PROGRAMACIN
MDULO
FUNDAMENTOS DE PROGRAMACIN
MDULO
FUNDAMENTOS DE PROGRAMACIN
10
MDULO
FUNDAMENTOS DE PROGRAMACIN
Grfico 02
Grfico 03
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.
-
SCANNER:
Dispositivo
para
capturar
imgenes mediante rastreo. Es muy utilizado en
diseos grficos.
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.
13
MDULO
FUNDAMENTOS DE PROGRAMACIN
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.
14
MDULO
FUNDAMENTOS DE PROGRAMACIN
15
MDULO
FUNDAMENTOS DE PROGRAMACIN
16
MDULO
FUNDAMENTOS DE PROGRAMACIN
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:
-
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
17
MDULO
FUNDAMENTOS DE PROGRAMACIN
18
MDULO
FUNDAMENTOS DE PROGRAMACIN
19
MDULO
FUNDAMENTOS DE PROGRAMACIN
20
MDULO
FUNDAMENTOS DE PROGRAMACIN
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
21
MDULO
FUNDAMENTOS DE PROGRAMACIN
22
MDULO
FUNDAMENTOS DE PROGRAMACIN
23
MDULO
FUNDAMENTOS DE PROGRAMACIN
24
MDULO
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)
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.
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.
2.3.
28
MDULO
2.4.
FUNDAMENTOS DE PROGRAMACIN
2.5.
29
MDULO
FUNDAMENTOS DE PROGRAMACIN
30
MDULO
FUNDAMENTOS DE PROGRAMACIN
31
MDULO
FUNDAMENTOS DE PROGRAMACIN
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
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
33
MDULO
FUNDAMENTOS DE PROGRAMACIN
34
MDULO
FUNDAMENTOS DE PROGRAMACIN
35
MDULO
FUNDAMENTOS DE PROGRAMACIN
36
MDULO
FUNDAMENTOS DE PROGRAMACIN
37
MDULO
FUNDAMENTOS DE PROGRAMACIN
38
MDULO
FUNDAMENTOS DE PROGRAMACIN
39
MDULO
FUNDAMENTOS DE PROGRAMACIN
40
MDULO
FUNDAMENTOS DE PROGRAMACIN
41
MDULO
FUNDAMENTOS DE PROGRAMACIN
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
43
MDULO
FUNDAMENTOS DE PROGRAMACIN
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:
45
MDULO
FUNDAMENTOS DE PROGRAMACIN
46
MDULO
FUNDAMENTOS DE PROGRAMACIN
47
MDULO
FUNDAMENTOS DE PROGRAMACIN
PRIORIDAD
DE
LOS
OPERADORES
RELACIONALES, LGICOS Y DE CADENA
ARITMTICOS,
48
MDULO
FUNDAMENTOS DE PROGRAMACIN
49
MDULO
FUNDAMENTOS DE PROGRAMACIN
Ejemplos:
a = 10 b = 12 c = 13 d =10
V.
1)
2)
3)
50
MDULO
FUNDAMENTOS DE PROGRAMACIN
51
MDULO
FUNDAMENTOS DE PROGRAMACIN
Ser definido: Sin ambigedad, cada paso del algoritmo debe indicar la
accin a realizar sin criterios de interpretacin.
52
MDULO
FUNDAMENTOS DE PROGRAMACIN
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.
53
MDULO
FUNDAMENTOS DE PROGRAMACIN
54
MDULO
FUNDAMENTOS DE PROGRAMACIN
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.
55
MDULO
FUNDAMENTOS DE PROGRAMACIN
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
NO
SI
Disco magntico
Conector de pagina
Lneas de flujo
57
MDULO
Leer
Proceso
FUNDAMENTOS DE PROGRAMACIN
Lectura de datos.
Escribir
Muestra el resultado.
Fin
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
Variables:
Var_ 01: Tipo
Var_02: Tipo
.
Var_ n: Tipo
Declaracin de Variables
58
MDULO
INICIO / FIN
LEER / ESCRIBIR
FUNDAMENTOS DE PROGRAMACIN
HACER MIENTRAS
MIENTRASHACER
PARA..HACER
Si.entoncessino
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
59
MDULO
FUNDAMENTOS DE PROGRAMACIN
DIAGRAMA DE FLUJO
Inicio
leer (costo_total)
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]
[Semipermetro de un tringulo]
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
[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
Diagrama de Flujo
Inicio
Inicio
Accion1
Accion2
Accion2
...
AccionN
AccionN
Fin
Fin
63
Ing. Juan F. Pacheco Torres
MDULO
FUNDAMENTOS DE PROGRAMACIN
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
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
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
MDULO
13.
FUNDAMENTOS DE PROGRAMACIN
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.
68
Ing. Juan F. Pacheco Torres
MDULO
FUNDAMENTOS DE PROGRAMACIN
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
70
Ing. Juan F. Pacheco Torres
MDULO
FUNDAMENTOS DE PROGRAMACIN
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
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
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)
75
MDULO
FUNDAMENTOS DE PROGRAMACIN
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
76
MDULO
FUNDAMENTOS DE PROGRAMACIN
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
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
79
MDULO
FUNDAMENTOS DE PROGRAMACIN
80
MDULO
FUNDAMENTOS DE PROGRAMACIN
81
MDULO
FUNDAMENTOS DE PROGRAMACIN
82
MDULO
FUNDAMENTOS DE PROGRAMACIN
83
MDULO
FUNDAMENTOS DE PROGRAMACIN
84
MDULO
FUNDAMENTOS DE PROGRAMACIN
___________________________________
Inicio
mientras ( <expresin_lgica> )
<bloque_de_instrucciones>
fin_mientras
Fin
85
MDULO
FUNDAMENTOS DE PROGRAMACIN
2.
86
MDULO
FUNDAMENTOS DE PROGRAMACIN
10
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:
88
MDULO
FUNDAMENTOS DE PROGRAMACIN
89
MDULO
FUNDAMENTOS DE PROGRAMACIN
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
90
MDULO
FUNDAMENTOS DE PROGRAMACIN
91
MDULO
FUNDAMENTOS DE PROGRAMACIN
92
MDULO
FUNDAMENTOS DE PROGRAMACIN
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
94
MDULO
FUNDAMENTOS DE PROGRAMACIN
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
95
MDULO
FUNDAMENTOS DE PROGRAMACIN
96
MDULO
FUNDAMENTOS DE PROGRAMACIN
Donde:
V.C
L.I
L.S
INC
97
MDULO
FUNDAMENTOS DE PROGRAMACIN
98
MDULO
FUNDAMENTOS DE PROGRAMACIN
99
MDULO
FUNDAMENTOS DE PROGRAMACIN
Algoritmo Cubos_de_numeros_pares
variables
entero numero
inicio
para numero 2 hasta 10 incremento 2 hacer
escribir (numero ** 3)
fin_para
fin
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
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
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
102
MDULO
FUNDAMENTOS DE PROGRAMACIN
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
104
MDULO
FUNDAMENTOS DE PROGRAMACIN
105
III UNIDAD
MDULO
FUNDAMENTOS DE PROGRAMACIN
107
MDULO
FUNDAMENTOS DE PROGRAMACIN
EJEMPLOS
Ejemplo 1. h: Reales x Reales
(a , b)
Reales
a2+2*b
, c )
a si a
bya
b si b
c si c
ayb
ayc
c
b
108
MDULO
FUNDAMENTOS DE PROGRAMACIN
109
MDULO
FUNDAMENTOS DE PROGRAMACIN
EJEMPLOS
Ejemplo 1. factorial :
Entero
Entero n 1 si n
Ejemplo 2. Fibonacci :
Entero
Entero n 1 si n
110
MDULO
FUNDAMENTOS DE PROGRAMACIN
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
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
B)
112
MDULO
FUNDAMENTOS DE PROGRAMACIN
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
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.
114
MDULO
FUNDAMENTOS DE PROGRAMACIN
NOTAS (2)
Vector
.............
NOTAS (I)
............
NOTAS (N)
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
116
MDULO
FUNDAMENTOS DE PROGRAMACIN
DIRECCIN X
DIRECCIN X + 1
DIRECCIN X + 2
NUMEROS (50)
DIRECCIN X + 49
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
117
MDULO
FUNDAMENTOS DE PROGRAMACIN
ndices
(Posiciones)
Vector_Notas [N]
12.6
10.4
15.0
3
...
11.8
...
N-2
15.6
N-1
16.0
Elementos
Lectura:
leer (<nombre del array>[subindice])
leer (numero[4])
leer (numero[x])
leer (numero[a+b])
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
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
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
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)
[8, 4, 2, 1, 0, -3]
Para ordenar un arreglo se han desarrollado diversos algoritmos, entre los cuales
estn burbuja, seleccin, insercin y quick-sort.
121
MDULO
FUNDAMENTOS DE PROGRAMACIN
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]
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
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
2.
3.
124
MDULO
FUNDAMENTOS DE PROGRAMACIN
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
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
126