Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Pg.
INDICE
RESUMEN
INTRODUCCION
MARCO TEORICO
MATERIALES Y METODOS
11
RESULTADOS
12
CAPTULO I
1.
HARDWARE Y SOFTWARE.
13
1.1 Hardware
13
1.2 Software.
33
41
42
CAPTULO II
2.
HERRAMIENTAS DE PROGRAMACIN.
47
47
48
48
2.3 Pseudocdigo.
51
52
CAPITULO III
3.
PROGRAMACIN ESTRUCTURADA.
54
3.1 Secuenciales
54
3.2 Selectivas
55
3.3 Repetitivas.
58
62
CAPTULO IV
4.
ESTRUCTURA DE DATOS.
65
65
68
4.2.1Estaticas.
68
4.2.2 Dinmicas
102
133
CAPITULO V
5.
TEORA DE GRAFOS.
136
136
139
143
145
CAPTULO VI
6.
147
147
158
166
2
CAPTULO VII
7.
168
7.1 Introduccin.
168
7.2 Operadores
169
7.3 Variables.
171
7.4 Expresiones.
171
172
192
199
204
212
CAPTULO VIII
8.
220
8.1 Introduccin.
220
8.2 Operadores.
221
223
8.4 Constantes.
224
8.5 Variables.
225
226
227
8.8 Funciones.
241
246
8.10 Arreglos.
246
258
264
3
278
282
287
DISCUSION
297
REFERENCIAS BIBLIOGRAFICAS
298
APENDICE
300
300
RESUMEN
En este trabajo de investigacin se ha elaborado un texto de naturaleza terico-prctico
que expone de forma sistemtica y detallada, las definiciones y ejemplos ms importantes de
las Estructuras de datos, Herramientas de programacin, Ordenamiento y bsqueda de datos,
Software Matlab y el Lenguaje de programacin C++, permitiendo el dictado de la asignatura
de programacin de computadoras correspondiente al cuarto ciclo acadmico del currculo de
estudios de la Escuela profesional de Matemtica de la Facultad de Ciencias Naturales y
Matemtica de la Universidad Nacional del Callao.
El texto Programacin de computadoras y sus aplicaciones procura hacer
comprender la asignatura en referencia y as mismo pretende preparar al estudiante para que
emprenda con xito el estudio de asignaturas de ciclos posteriores, tales como: Investigacin
Operativa I y II, Matemtica Computacional I, II y III, Mtodos matemticos y los Cursos de
seminario I y II de la Lnea del Anlisis Numrico y Matemtica Computacional.
El texto est basado, en su plan general y en algunas extensiones de su
contenido, en los textos mencionados en los referenciales; sin embargo, la diferencia es que
aqu hemos recopilado lo necesario para el desarrollo de la asignatura de programacin de
computadoras y adems tenemos ejercicios de aplicacin para cada uno de los captulos a un
nivel adecuado, lo que le da un carcter integral y funcional a la obra.
El resultado muestra que, en comparacin con los textos elaborados por otros autores
mencionados
en
la
referencia
bibliogrfica,
el
texto
PROGRAMACION
DE
INTRODUCCION
Con el avance de la ciencia y la tecnologa nos enfrentamos a una manera diferente de
ensear las matemticas y sus aplicaciones.
La asignatura de programacin de computadoras proporciona las herramientas
necesarias para la utilizacin de la computadora como un complemento para el estudio de las
ciencias e ingeniera.
No podemos estar al margen del avance de la tecnologa informtica que se ha
convertido en una herramienta de investigacin para la resolucin de complejos problemas
planteados en la realizacin y aplicacin de modelos matemticos de Ingeniera u otras
disciplinas. Por tanto es necesario contar con un texto que nos permita utilizar de forma
eficiente sus aplicaciones a la matemtica e ingeniera.
Es muy limitado la bibliografa, especialmente en textos que logren compilar y
tratar todos los temas relacionados con la asignatura de programacin de computadoras,
encontramos en la literatura mayormente que ponen nfasis a ciertos temas. Se requiere un
texto donde podamos relacionar conocimientos tericos y aplicaciones prcticas, experiencias
de aplicaciones en diferentes ramas de la ciencia e ingenieras. Por lo que es importante
recopilar toda informacin posible, que se encuentra dispersa, ordenndola en forma sencilla
y razonada, dando origen a la creacin del Texto: Programacin de computadoras y sus
aplicaciones.
En este sentido el problema de la investigacin consisti en elaborar un texto de
naturaleza terico-prctico que oriente adecuadamente el desarrollo sistemtico y concreto de
la asignatura
de
PROGRAMACION DE
COMPUTADORAS
con aplicaciones
presente texto no se pretende agotar un tema bastante extenso, complejo y que guarda relacin
con otras reas tanto en ciencia e ingenieras, por el contrario se desea exponer de manera
pragmtica y accesible los temas contenidos en el syllabus de Programacin de
Computadoras para que sirva de gua y referencia preferencialmente para los estudiantes
universitarios de la especialidad matemtica y afines.
OBJETIVO GENERAL
Desarrollar - preparar, redactar y editar - un texto de Programacin de Computadoras
y sus aplicaciones en el que se compile informacin tcnica y cientfica existente, que sirva
de gua y referencia bibliogrfica para los estudiantes de ciencias e ingenieras principalmente
de la Universidad Nacional del Callao.
OBJETIVOS ESPECFICOS
Complementar y afianzar los conocimientos impartidos en la asignatura de
Programacin de computadoras.
Presentar al lector conceptos y aplicaciones sobre temas especficos tales como:
hardware y software, herramientas de programacin, programacin estructurada, estructuras
de datos, teora de grafos, ordenamiento y bsqueda de datos, lenguajes de programacin
matlab y C++.
El texto: Programacin de Computadoras y sus aplicaciones permitir que el usuario
lector, sea estudiante o no, tenga un material de consulta de primera mano a su disposicin,
en donde se centralizar la informacin cientfica y tcnica existente, relacionadas con las
herramientas bsicas de programacin y sus aplicaciones a las ciencias e ingeniera.
MARCO TEORICO
Existen pocos textos que logren compilar y tratar todos los temas relacionados con la
programacin acadmica del curso de programacin de computadoras, se encuentra
bibliografa que ponen nfasis en algunos temas y en otros no.
Todos los captulos en su integridad contienen material aprovechable (teora-practica)
para los estudiantes de ciencias e ingenieras.
Los temas ms importantes acorde con la programacin acadmica y que se trataran en
este texto son los siguientes:
PROGRAMACION ESTRUCTURADA
La programacin estructurada es una forma de escribir programas de ordenador de
forma clara. Para ello utiliza nicamente tres estructuras: secuencia, seleccin e iteracin;
siendo innecesario el uso de la instruccin o instrucciones de transferencia incondicional
(GOTO, EXIT FUNCTION, EXIT SUB o mltiples RETURN).
Hoy en da las aplicaciones informticas son mucho ms ambiciosas que las
necesidades de programacin existentes en los aos 1960, principalmente debido a las
aplicaciones grficas, por lo que las tcnicas de programacin estructurada no son suficientes.
Ello ha llevado al desarrollo de nuevas tcnicas, tales como la programacin orientada a
objetos y el desarrollo de entornos de programacin que facilitan la programacin de grandes
aplicaciones (Joyanes Aguilar, Fernandez Azuela & Rodriguez Baena, 1998).
ESTRUCTURA DE DATOS
La estructura de datos es una forma de organizar un conjunto de datos elementales con
el objetivo de facilitar su manipulacin. Un dato elemental es la mnima informacin que se
tiene en un sistema (Joyanes Aguilar & Zahonero Martinez,1998).
9
TEORIA DE GRAFOS
La teora de grafos estudia las propiedades de los grafos (tambin llamadas grficas).
Un grafo es un conjunto, no vaco, de objetos llamados vrtices (o nodos) y una seleccin de
pares de vrtices, llamados aristas que pueden ser orientados o no. Tpicamente, un grafo se
representa mediante una serie de puntos (los vrtices) conectados por lneas (las aristas).
SOFTWARE MATLAB
MATLAB es un software desarrollado en un ambiente de algoritmo de interaccin,
visualizacin y anlisis de datos.Con esta herramienta se puede resolver problemas
computacionales tcnicos ms rpido que con los tradicionales lenguajes de programacin,
tales como: C, C++ y Fortran.
Es usado para una gran variedad de clculos cientficos y de ingeniera, especialmente
para control automtico y diseo de procesos adems de otra variedad de aplicaciones tales
como: procesamiento de seal e imgenes, comunicaciones y modelamiento financiero
(Nakamura, 2000).
10
MATERIALES Y MTODOS
MATERIALES
El texto PROGRAMACION DE COMPUTADORAS Y SUS APLICACIONES no
est sujeto a experimento de laboratorio, sin embargo se ha desarrollado sobre la base de
textos, que se propone en la referencia: Nakamura Choichiro(2000), Stroustrup Bjarne(2002),
Delores Etter(1998), software especializado y experiencias propias en el dictado de la
asignatura Programacin de Computadoras.
Adems tambin se ha usado material de tipo tcnico en el diseo e impresin de
informes trimestrales y final. Toda la informacin ha sido procesada en una computadora
personal, usando Microsoft Word y en concordancia con las directivas vigentes, mediante el
cual se han editado y elaborado los esquemas y dibujos relacionados a los diversos temas
desarrollados.
MTODOS
Luego de realizar la recoleccin de datos necesarios para la investigacin. Los
mtodos usados en la discusin de los temas de cada captulo son clasificados en: Inductivo,
deductivo e inductivo-deductivo.
El mtodo deductivo es conciso y lgico que permite desarrollar la asignatura de
Programacin de Computadoras en forma concreta y ordenada.
El mtodo inductivo-deductivo ha hecho posible mostrar el desarrollo de los
programas codificados en el lenguaje de programacin C++ y que describen la solucin de
problemas concretos de los estudiantes de ciencias e ingenieras as como tambin, el anlisis
de las soluciones para los ejercicios presentados. Estos mtodos han permitido que el trabajo
tenga contenido y mayor calidad
11
RESULTADOS
El
resultado
del
presente
trabajo
de
investigacin
es
el
texto:
12
CAPITULO I
HARDWARE Y SOFTWARE
1.1 HARDWARE
QU ES UNA COMPUTADORA?
Figura 1.1 Computadora
Definicin 1.1 Persona o Dispositivo mecnico o electrnico que realiza cmputos, o sea,
que cuenta o calcula aritmticamente. Su funcin fundamental es sumar y restar.
La diferencia entre una computadora y una calculadora es que sta no solo cuenta,
adems realiza clculos mucho ms complejos como manejo de exponentes, raz cuadrada,
etc.
La comnmente denominada COMPUTADORA realiza funciones mucho ms
complejas que contar y calcular, adems de trabajar con nmeros tambin efecta funciones
lgicas, trabaja con informacin concreta: palabras, imgenes, sonidos.
Por la tanto la Real Academia de la Lengua la ha titulado como ORDENADOR.
13
14
habilidades de cualquier computadora, una tarjeta con una arquitectura muy cerrada terminar
con la vida de todo el equipo en el momento que sta requiera una reparacin o mejora, ste
fue el caso de la mayora de las computadoras que existieron en el pasado, como por
mencionar algunas: Comodore 64, Tandy 1000 e incluso todas las XTs y algunas 286 de
IBM.
Estas se pueden clasificar en la actualidad en:
- Arquitectura de 8 bits: Primeras XT
- Arquitectura ISA 8 -16 bits. La mayora de las actuales clones
- Arquitectura EISA o MCA de 32 bits.
compatibles de marca de calidad que se venden actualmente.
16
17
1.1.4 LA MEMORIA
Definicin 1.8 Es la capacidad de almacenar informacin, la cual se realiza en bancos
separados de la UCP. Su unidad de almacenamiento es el BYTE que es la capacidad de
almacenar un carcter: una letra, nmero o cualquier smbolo como #, $, &, etc.
18
TIPOS DE MEMORIAS:
a) MEMORIA ROM
Definicin 1.9 Esta memoria es slo de lectura, y sirve para almacenar el programa bsico
de iniciacin, instalado desde fbrica. Este programa entra en funcin en cuanto es encendida
la computadora y su primera funcin es la de reconocer los dispositivos, (incluyendo memoria
de trabajo), dispositivos.
b) MEMORIA RAM
Definicin 1.10 Esta es la denominada memoria de acceso aleatorio o sea, como puede
leerse tambin puede escribirse en ella, tiene la caracterstica de ser voltil, esto es, que slo
opera mientras est encendida la computadora.
instrucciones que necesita ejecutar el microprocesador como los datos que introducimos y
deseamos procesar, as como los resultados obtenidos de esto.
19
Observacin 1.1
Observacin 1.2
20
b) CINTA DE RESPALDO
Definicin 1.12 Son como las cintas de cassette de audio y pueden almacenar desde 20
Mbytes hasta 2 Gigabytes o ms. Son medios de almacenamiento muy econmicos y sobre
todo muy rpidos, ya que pueden almacenar todo un disco duro en un pequeo cassette en
unos cuantos minutos.
Figura 1.6 Cintas de respaldo
c) DISCO DURO
Definicin 1.13 El Cul se instala fijo dentro de la computadora, son ms rpidos y
seguros que las unidades de lectura de disquete y cuyas capacidades de almacenamiento van
desde los 40 Gigabytes hasta 500 Gigabytes. Los ms rpidos andan por debajo de los 15
milisegundos de acceso de la informacin.
21
22
a) EL TECLADO
Definicin 1.17 Es un perifrico de entrada o dispositivo, en parte inspirado en el teclado
de las mquinas de escribir, que utiliza una disposicin de botones o teclas, para que acten
como palancas mecnicas o interruptores electrnicos que envan informacin a la
computadora. Despus de las tarjetas perforadas y las cintas de papel, la interaccin a travs
de los teclados al estilo teletipo se convirti en el principal medio de entrada para las
computadoras. El teclado tiene entre 99 y 127 teclas aproximadamente.
Figura 1.10 Teclado
b) El MOUSE
Definicin 1.18 Este dispositivo permite simular el sealamiento de pequeos dibujos o
localidades como si fuera hecho con el dedo ndice, gracias a que los programas que lo
aprovechan presentan sobre la pantalla una flecha que al momento de deslizar el dispositivo
24
1.- Escner manual: Se parece al ratn y a medida que se desplaza por una
superficie lisa va convirtiendo la imagen en archivo, son muy lentos y requieren de
mucha precisin para evitar errores en la imagen obtenida.
2.- Escner de cama: Son bsicamente pequeas copiadoras que al igual qu stas,
rastrean el documento depositado en su pantalla. Son muy rpidos, precisos y cada
vez ms baratos.
26
a) EL MONITOR
Definicin 1.20 Es un aparato de los llamados CTR (Tubo de rayos Catdicos) en los
cuales se pueden representar los datos de tipo texto o grficos procesados por la computadora.
El estndar en vdeo de las modernas computadoras se basa en el sistema VGA, el cual le da
al usuario la capacidad de poder representar en la pantalla no slo imgenes de mejor calidad
sino que incluso se pueden apreciar en calidad normal fotografas autnticas, dicha capacidad
no la tena ninguno de los sistemas de vdeo anteriores a ste.
Figura 1.13 Monitor
Al momento de escoger una computadora es muy importante que nos hagan saber de
su calidad, marca y garanta individual, ya que este aparato por si slo es el que: puede
contaminar ms, a menor calidad cansar y deteriorar ms nuestra vista, consume mucha
energa, se calienta ms que todo el equipo, etc.
27
b) LA IMPRESORA
Estas actan como mquinas de escribir, es decir, vacan la informacin contenida en
la memoria principal en papel. Y se clasifican en cuatro tipos principales:
28
29
3.-IMPRESORA LASER
Definicin 1.23 El sistema es totalmente distinto al de las dems y es ms bien parecido al
de una copiadora tradicional, o sea, papel magnetizado con un polvo-tinta muy fino que al ser
fundido con un haz lser crean un documento de calidad inigualable que llega alcanzar hasta
los 600 DPI.
30
4.-LOS PLOTTERS
Definicin 1.24 Son grandes impresoras basadas en plumillas de colores que permiten a
los Arquitectos o Ingenieros convertir un plano o trazo de lneas contenido en la memoria de
su computadora en un autntico gran plano listo para su envi, ahorrando mediante stos
sofisticados implementos tanto el diseo a mano de los planos como la heliografa necesaria
para su reproduccin.
Figura 1.17 Plotter
31
b) MONITORES ITERATIVOS
Definicin 1.26 Existen monitores especiales que presentan informacin como cualquier
monitor lo hace, permitiendo adems introducir informacin sealando con nuestro dedo
sobre ellos, aunque ms caros que el simple hecho de comprar un ratn, son muy tiles en
reas abiertas donde es preciso rapidez y aguante en el uso del dispositivo, como lo es el
hecho de hacer reservaciones en aeropuertos.
Definicin 1.27 El Mdem es un aparato que una vez conectado uno por computadora por
un lado modula la seal binaria en ondas o seales anlogas permitiendo de sta manera
32
1.2 SOFTWARE
Dentro de los componentes bsicos, el SOFTWARE o Equipo Blando, es la otra
mitad de la computadora, el alma o la materia gris, ya que las necesidades de crecimiento y de
capacidad han surgido para hacer realidad toda la creatividad, ingenio y desempeo humano.
Definicin 1.28 El Software son todas las instrucciones y datos que corren en mayor o
menor medida dentro del ordenador, es decir, la informacin misma, la razn del ser del
Hardware. En nuestros tiempos a medida que la magia de la electrnica ponen al alcance de
todos estas prodigiosas maquinas verdaderas prtesis mentales, mediante el abaratamiento de
33
34
Computadoras Personales y sobre el cul trabajan la mayora de los programas usados tanto
en la pequea, mediana y grande empresa, as como en Industrias, Instituciones y hogares por
millones de gentes alrededor del mundo. Su versin ms nueva a la fecha es la 6.22
Definicin 1.31 El OS/2 WARP Diseado por IBM es el competidor ms cercano de MSDOS sobre todo por sus grandes capacidades de interconexin de equipos y facilidad de uso
bajo ambiente grfico.
Definicin 1.32 El Netware diseado por Novell, lder mundial en sistemas operativos
para redes de computadoras que ha conquistado al mundo de la informtica por el poder y
versatilidad de sus funciones, as como su extremada capacidad de interconectar
computadoras y recursos de tan variadas capacidades y marcas.
36
NOMBRE Y VERSIN
Microsoft
Novell
Software Libre
OpenOffice, Latex
IBM
NOMBRE Y VERSIN
Microsoft
IBM
Software Libre
Open Office
NOMBRE Y VERSIN
Microsoft
Microsoft
Software Libre
Mysql
IBM
DB2, Informix
Oracle
Oracle
39
REA DE APLICACIN
Autocad 2011
Autodesk
Diseo Arquitectnico 3D
Bancos
Caja
Apemex
Contpaq
Computacin en Accin
Coreldraw
Corel
MegaPak
Computacin en Accin
Money 2.0
Microsoft
Nmina
Microsip
Sistema de Nmina
Organizer
Lotus
Organizador diario
Page Maker 4
Aldus
Edicin Tipogrfica
Photoshop
Adobe
Ilustrator
Adobe
Premiere
Adobe
Edicin de Videos
Power Point
Microsoft
Presentaciones Grficas
Project 2.0
Microsoft
Administracin de Proyectos
40
1.3.2 COMPUTACIN
Definicin 1.38 Conjunto de mtodos y tcnicas que permiten administrar, manipular y
controlar en forma automtica y correcta la informacin utilizando para ello la ayuda de un
Computador
1.3.5 ALGORITMO
Definicin 1.40 Un Algoritmo se puede definir como un conjunto de reglas,
procedimientos y/o instrucciones lgicas que se deben ejecutar en un orden especifico para
resolver el problema.
41
Un algoritmo debe estar bien definido. Si se elabora varios algoritmos todos deben
dar el mismo resultado.
Un algoritmo debe ser finito. Todo algoritmo tiene que terminar en algn
momento, es decir tiene un nmero determinado de pasos.
1.3.6 PROGRAMA
Definicin 1.41 Es el conjunto de instrucciones escritas en un orden lgico y codificados
en un determinado Lenguaje de Programacin, las cuales permiten llevar a cabo un
determinado proceso previamente establecido.
Un programa en la PC es un conjunto de instrucciones, ordenes dadas a la maquina que
producirn la ejecucin de una determinada tarea. Tambin es un medio para conseguir un fin.
45
46
CAPITULO II
HERRAMIENTAS DE PROGRAMACION
2.1 ANALISIS DEL PROBLEMA
Requisitos:
Ejemplo 2.1
Leer el radio de un crculo y calcular su superficie y la longitud de la circunferencia.
ANALISIS:
Circulo
Variables
47
Ejemplo 2.2
Leer el radio de un crculo y calcular su superficie y la longitud de la circunferencia.
Inicio
Ingresar valor de la Radio del crculo
Calcular Superficie
Superficie 3.141592 * Radio ^ 2
Calcular Circunferencia
Circunferencia 3.141592 * Radio * 2
Imprimir el Valor de la Superficie
Imprimir el Valor de la Longitud de la Circunferencia
Fin
48
SIMBOLO
DESCRIPCION
TERMINAL: Representa el inicio y el Final de un
programa
ENTRADA/SALIDA: Todo tipo de Introduccin de
Datos en la memoria desde entrada (Leer) o Salida
(imprimir) de informacin.
PROCESO: Cualquier tipo de operacin que pueda
originar cambio de valor almacenada en la memoria,
operaciones aritmticas, etc.
DECISIN:
Indica
operaciones
Lgicas
de
acuerdo
la
MULTIPLE:
de
Sirve
para
unir
dos
49
Ejemplo 2.3
Realizar el Diagrama de Flujo de la Suma de todos los nmeros pares entre 2 y 100.
Ilustracin 2.1 Diagrama de flujo de suma de pares
50
2.4 PSEUDOCODIGO
Definicin 2.2 Es un lenguaje de descripcin del algoritmo, esto es la traduccin de un
problema a un lenguaje de Programacin escogido por el usuario.
La ventaja de un Pseudocdigo es que al usarlo en la planificacin de un programa, el
programador se puede concentrar en la Lgica
Ejemplo 2.4
Pseudocdigo para determinar e imprimir el mayor valor de DOS nmeros ingresados.
Inicio
Leer A, B
SI el valor A es mayor que el valor de B HACER
Establecer MAYOR con el valor A
DE LO CONTRARIO
Establecer MAYOR con el valor B
FIN_SI
Visualizar MAYOR
Fin
Ejemplo 2.5
Pseudocdigo para calcular la suma de 1+2+3+....100
Inicio
Establecer CONTADOR a 1
Establecer SUMA a 0
51
ANALISIS
DIAGRAMA DE FLUJO
PSEUDOCODIGO
52
53
CAPITULO III
PROGRAMACION ESTRUCTURADA
La programacin estructurada hace los programas ms fciles de escribir, verificar,
leer y mantener. Los programas deben estar dotados de una estructura que puede ser:
Secuenciales
Selectivas
Repetitivas
INICIO
< INSTRUCCIN 1 >
< INSTRUCCIN 2 >
..................................
54
Simples
Dobles
Mltiples
55
alternativa doble necesita una estructura que permita elegir entre dos
56
Accin 1
Expresin 2
Accin 2
Expresin 3
Accin 3
SINO
Accin
FIN_SEGN
57
Accin 1
Expresin 2
Accin 2
Expresin 3
Accin 3
OTHERWISE
// ELSE
Action
END_CASE
OBSERVACIONES DE LA ALTERNATIVA MULTIPLE
-
Los valores que toman las expresiones no siempre sern consecutivos o nicos,
tambin se pueden considerar rangos de constantes numricas o de caracteres.
Segn sea expresin hacer
2, 4, 6,8: escribir nmeros pares
1, 2, 3, 5,7: escribir nmeros impares
Fin_segun
58
PSEUDOCODIGO
MIENTRAS <CONDICION> HACER
INSTRUCCIONES VERDADERAS
FIN_MIENTRAS
PSEUDOCODIGO EN INGLES
WHILE <CONDICION> DO
INSTRUCCIONES VERDADERAS
ENDWHILE
DO WHILE <CONDICION>
INSTRUCCIONES VERDADERAS
ENDDO
59
ACCIONES O
INSTRUCCIONES
FALSO
CONDICION
VERDADERO
PSEUDOCODIGO
REPETIR
INSTRUCCIONES
HASTA <CONDICION>
PSEUDOCODIGO EN INGLES
REPEAT
INSTRUCCIONES
UNTIL <CONDICION>
60
PSEUDOCODIGO
PARA VARIABLE = VALOR INICIAL HASTA VALOR FINAL HACER
INSTRUCCIONES
FIN_PARA
PSEUDOCODIGO EN INGLES
FOR I = 1 TO VALOR FINAL DO
INSTRUCCIONES
ENDFOR
61
x2 n
2! n!
5. Calcular la suma de los N nmeros enteros positivos y terminar con nmero negativo.
6. Sumar los nmeros enteros de 100 a 200 mediante a) Estructura Repetir b) Estructura
Mientras c) Estructura Desde
7. Se desea leer las calificaciones de una clase y contar l nmero total de aprobados.
8. Representar las siguientes condiciones en forma de alternativa simple, en pseucodigo y
diagrama de flujo:
Colocar un mensaje a cada uno.
para los mayores de edad
para los menores de edad
para los mayores de edad dentro de 2 aos
para los desaprobado en su promedio
para los aprobados en su 4 nota
para numero par
para un numero impar
para los mayores de 30 aos por su fecha de nacimiento
9. Representar las siguientes condiciones en forma de alternativa compuesta en
pseucodigo y diagrama de flujo:
62
10. Hacer su diagrama de flujo y pseudocdigo para la suma de los N primeros nmeros
enteros cuadrados 12+22+32...n2
11. Hacer su diagrama de flujo y pseudocdigo para calcular la planilla de una empresa, se
ingresa el nmero de los empleados y para cada uno de ellos se ingresa el nmero de
horas y el salario por hora, se calcula el pago y se acumula para el total de la planilla.
12. Hacer su diagrama de flujo y pseudocdigo para un restaurant ofrece un descuento del
10% para consumos de hasta 30 nuevos soles, un descuento de 20% para consumos
mayores y para ambos casos aplica un impuesto del 15%. Determinar el importe a
pagar por lo consumido.
13. Hacer su diagrama de flujo y pseudocdigo para determinar el mayor valor ingresado
de 5 nmeros enteros.
14. Hacer su diagrama de flujo y pseudocdigo para leer 100 nmeros ingresados.
Determinar la media de los nmeros positivos y la media de los nmeros negativos.
15. Pseudocdigo que pida el ingreso de un nmero para el da de la semana e indique a
que da se refiere.
16. Se desea convertir las calificaciones A,B,C,D,E a calificaciones numricas
14,13,12,11,10 respectivamente
17. Pseudocdigo que nos indique si un numero entero
considerar los negativos.
63
64
CAPITULO IV
ESTRUCTURAS DE DATOS
4.1TIPOS DE DATOS
Definicin 4.1 El Tipo de Datos de una variable es el conjunto de valores que dicha
variable puede asumir
65
A) ENTEROS
Definicin 4.3 El tipo entero es un subconjunto finito de los nmeros enteros. Los enteros
son nmeros completos, no tienen componentes fraccionarios o decimales y pueden ser
negativos o positivos. Ejm: 5, -5
Los nmeros enteros mximos y mnimos de una computadora suelen ser 32768 a
+32767, los nmeros enteros fuera de este rango no se suelen representar como nmeros
enteros, sino como reales, en algunos lenguajes de Programacin hay excepciones.
B) REALES
Definicin 4.4 El tipo real consiste en un subconjunto de los nmeros reales. Los nmeros
reales siempre tienen un punto decimal y pueden ser positivos o negativos. Un nmero real
consta de un entero y una parte decimal. Ejm:
0.08
3739.41
0.09
52.321
0.00000000387
Ejemplo 4.1
Si el numero fuera
123456700000000000000 (14)
Descomponer en Cifras
1.234567 * 1020
Ejemplo 4.2
Si el nmero fuera
0.0000000000123456
1.23456 * 10-11
False (FALSE)
Este tipo de datos se utiliza para representar las alternativas (SI/NO) a determinadas
condiciones. Por ejemplo cuando se pide determinar si el valor es par la respuesta ser
Verdadera y Falsa segn sea el valor del nmero.
(A..... Z) (a..... z)
CARACTERES NUMERICOS:
(1, 2, 3.... 9, 0)
67
Nombre [2]
Nombre [3]
...
Nombre [n]
68
Observacin 4.1
El arreglo unidimensional tiene un solo nombre de variable que representa a todos los
elementos.
Observacin 4.2
Observacin 4.3
Observacin 4.4
NUMERO [1]
DIRECCION N
NUMERO [2]
DIRECCION N+1
NUMERO [3]
DIRECCION N+2
NUMERO [50]
DIRECCION N+49
69
Ejemplo 4.4
En Visual Basic:
DIM
DIM
Ejemplo 4.5
Dim contadores (5) as integer
Dim contadores (1 to 5) as string
70
NUMERO [4] 50
SUMANUMERO [1]+NUMERO[5]
SUMASUMA+NUMERO[5]
Observacion 4.5
Los Arreglos pueden tener por ndice:
empieza en 1
empieza en cero
limite 3 y +3
a) ASIGNACION
La asignacin tiene la siguiente forma:
NOTAS [ 14 ] 20 Asigna El Valor 20 Al Elemento 14 Del Arreglo
71
Ejemplo 4.6
Si se introducen los valores 10,11,10 mediante asignaciones
A[1] 10
A(1) 10
A[2] 11
A(2) 11
A[3] 10
A(3) 10
b) LECTURA Y ESCRITURA
Normalmente la Lectura y escritura se realizan con estructuras repetitivas como el
FOR (para o desde), las instrucciones simples se representan as:
c) RECORRIDO
Se puede acceder a los elementos de un Vector o Arreglo para introducir Datos
(leer) o imprimir su contenido (escribir).
A la operacin de efectuar una accin general sobre todos los elementos del
arreglo se la denomina RECORRIDO DEL VECTOR.
72
Ejemplo 4.7
Pseudocdigo para permitir el INGRESO de 5 nmeros
Inicio
PARA ndice=1 HASTA 5 HACER
LEER nmeros [ndice]
FIN_PARA
Fin
Ejemplo 4.8
Pseudocdigo para IMPRIMIR los 5 nmeros ingresados anteriormente
Inicio
PARA ndice 1 HASTA 5 HACER
ESCRIBIR nmeros[indice]
FIN_PARA
Fin
Ejemplo 4.9
Pseudocdigo para ingresar 20 nmeros utilizando MIENTRAS O REPETIR,
CONTADORES.
INICIO
ndice 1
MIENTRAS ndice < 21 hacer
LEER nmero[ ndice ]
73
d) AADIR
Un arreglo llamado PROMEDIO se ha dimensionado a seis elementos pero
solo han sido llenados cuatro valores, se podrn aadir dos elementos ms con una
simple operacin de asignacin.
PROM [1]
PROM [2]
PROM [3]
PROM [4]
10
11
20
11
PROM [5]
PROM [6]
e) INSERTAR
Coloca uno o ms elementos en una determinada posicin del arreglo.
Ejemplo 4.10
Pseudocdigo para el arreglo llamado LETRAS de 8 elementos, Agregar el elemento
CC en la posicin LETRAS[3]
LETRAS[1] LETRAS[2] LETRAS[3] LETRAS[4] LETRAS[5]
AA
BB
DD
EE
FF
INICIO
//ALGORITMO DE INGRESO DE DATOS MAXIMO HASTA 6 ELEMENTOS
POSICION 3
74
// INDICE = 6
f) BORRAR
La operacin de borrar provoca el movimiento hacia arriba de los elementos
inferiores.
ARREGLOS BIDIMENSIONALES
ARREGLOS MULTIDIMENSIONALES
a) ARREGLOS BIDIMENSIONALES:
Definicin 4.10 Se considera como un vector de vectores, es un conjunto de
elementos todos del mismo tipo el cual el orden de los elementos es significativo y en
el que se necesita especificar los subndices para poder identificar cada uno de los
elementos del arreglo.
FILA 1
10
10
10
10
FILA 2
11
11
11
11
FILA 3
12
12
12
12
FILA 4
13
13
13
13
COLUMNA 1
COLUMNA 1
COLUMNA 3
COLUMNA 4
75
NOTAS
Cantidad de Filas
Cantidad de Columnas
Total de elementos
20
Ejemplo 4.11
Un arreglo de tres dimensiones puede tener:
-
5 Cursos de un alumno
Tipo de sexo
6 ciclos aos
B) REGISTROS
Definicin 4.11 Es una coleccin de informacin, normalmente relativa a una entidad
particular. Un registro es una coleccin de campos lgicamente relacionado, que pueden ser
tratados como una unidad por algn programa.
Observacin 4.6
Observacin 4.7
A los espacios reservados para cada numeracin se les conoce con el nombre de
CAMPOS y a la disposicin consecutiva de campos se denomina REGISTRO.
Observacin 4.8
abc0001
77
Oscar Ibez
A [1].Promedio
17.4
A [1].Edad
29
78
TIPO DE DATOS
CAMPO 2
TIPO DE DATOS
CAMPO 3
TIPO DE DATOS
CAMPO 4
TIPO DE DATOS
C) ARCHIVOS
Definicin 4.12 Un archivo es un conjunto ordenado de datos que tienen entre s una
relacin lgica y estn almacenados en un soporte de informacin adecuado para la
comunicacin con el computador. En un archivo se almacena informacin referente a un
mismo tema de una forma estructurada con el fin de manipular los datos de una manera
individual. Un archivo est formado por estructuras de datos ms simples denominados
79
ORGANIZACIN DE ARCHIVOS
Al disear un archivo, dependiendo del uso que se va a hacer del mismo y del soporte
utilizado, se pueden elegir diferentes maneras de organizar sus registros, siendo las
principales organizaciones las siguientes:
-
Secuencial
Directa o aleatoria
Secuencial indexada
80
1. ORGANIZACIN SECUENCIAL
Definicin 4.13 Es aqulla en la cual los registros ocupan posiciones consecutivas de
memoria, y slo se puede acceder a ellos de uno en uno a partir del primero.
En un archivo secuencial no se pueden hacer operaciones de escritura cuando se est
leyendo, ni operaciones de lectura cuando se est escribiendo.
Por otro lado, para actualizarlos es preciso crear nuevos archivos donde se copien los
registros que vayan a permanecer, modificados o no, junto con los nuevos.
Acceso secuencial
Registro 1
Registro 2
Registro 3
Registro 4
Registro 5
81
Registro 2
Posicin 1
Registro 1
Registro 5
Posicin 3
Posicin 4
Posicin 2
Posicin 5
rea de ndices
rea primaria
Definicin 4.15 El rea primaria contendr los registros de datos, clasificados en orden
ascendente por su campo clave.
Definicin 4.17 El rea de excedentes para aadir nuevos registros que no pueden ser
colocados en el rea primaria cuando se produce una actualizacin del archivo.
Presenta la ventaja de un rpido acceso por medio de la clave del registro y adems el
sistema se encarga de relacionar la posicin de cada registro con su contenido por medio del
rea de ndices.
82
04
AC
06
CH
GF
rea primaria
AA -
AB -
AC
01
02
03
BC
04
CH
05
FA
GF -
06
rea de excedentes
FM
AN
COPIA
Definicin 4.19 Consiste en crear un nuevo archivo como duplicacin de otro existente.
CONSULTA
Definicin 4.20 Se realiza para obtener el contenido de uno o varios registros. En muchos
casos ir precedida por la bsqueda de los mismos.
83
CLASIFICACIN
Definicin 4.21 Es la operacin consistente en reubicar los registros de tal forma que
queden ordenados con respecto a los valores de un campo que denominamos clave de
ordenacin.
CONCATENACIN
Definicin 4.22 Dados dos archivos con registros de igual estructura, se trata de obtener
uno solo en que figuren todos los registros del primero y a continuacin todos los del
segundo.
INTERSECCIN
Definicin 4.23 Dados dos archivos de igual estructura se trata de obtener otro en el que
figuren lo registros comunes a ambos.
FUSIN O MEZCLA
Definicin 4.24 A partir de dos archivos de igual estructura clasificados por un mismo
campo, se obtiene como resultado un archivo que contiene los registros de ambos y que
mantiene la ordenacin.
PARTICIN
Definicin 4.25
84
ACTUALIZACIN
Definicin 4.26 Es la operacin de modificar un archivo por medio de un archivo de
movimientos, conteniendo altas, bajas y modificaciones que hay que realizar sobre el archivo
maestro.
REORGANIZACIN
Definicin 4.27 Reubica los registros de un archivo que ha sufrido actualizaciones, para
ocupar los posibles huecos libres intermedios resultantes de bajas de registros para optimizar
la ocupacin de la memoria, liberando la que no estaba aprovechada.
BORRADO
Definicin 4.28 Eliminacin total del archivo, cuando ya no se necesite, dejando libre la
memoria del dispositivo de almacenamiento utilizado.
D) CONJUNTOS (SET)
Supongamos que debemos construir un programa Pascal que cuente el nmero de
vocales no acentuadas que aparecen en un texto. Se nos podra ocurrir inmediatamente, ir
tomando el texto carcter a carcter, aplicarle la funcin UPCASE y decidir si se trata de
alguno de los caracteres 'A', 'E', 'I', 'O','U'. En este caso, incrementaramos un contador y
pasaramos a analizar el siguiente carcter; en caso contrario, pasaramos directamente al
siguiente carcter.
Ejemplo 4.12
Codificacion en Pascal
FOR C:=1 TO LENGTH (Texto) DO
85
Ejemplo 4.13
Para cada carcter Texto[C] ....
Si UPCASE (Texto[C]) pertenece a VOCALES, entonces ..
Incrementar contador de vocales,
En caso contrario, no realizar ninguna accin.
Se puede hacer esto en Turbo Pascal ? La respuesta es s, mediante el tipo de dato
estructurado CONJUNTO (SET en ingls).
CONSTANTES Y VARIABLES DE TIPO SET
Podemos definir CONJUNTOS particulares de elementos de cualquiera de los
siguientes tipos base:
BYTE
CHAR
BOOLEAN
Abstractos (de 1 byte)
86
Ejemplo 4.14
Conjuntos constantes (constantes de tipo SET) vlidos seran:
CONST VOCALES = ['A','E','I','O','U'];
PARES = [2,4,6,8,0];
Ejemplo 4.15
CONST VOCALES = ['U','E','O','A','I'];
PARES = [0,2,4,6,8];
Si en la definicin de un conjunto, los elementos, o algunos de los elementos
constituyentes son consecutivos, se puede utilizar una notacin similar a la de los subrangos.
Ejemplo 4.16
CONST HEXADIG = ['A'..'F','0'..'9'];
NUMEROS = [0..100,125];
HEXADIG define un conjunto de 16 elementos del tipo base CHAR y NUMEROS uno
de 102 elementos del tipo BYTE.
87
: SET OF 10...99;
BOOLE
: SET OF BOOLEAN;
Seran declaraciones vlidas de variables de tipo SET. LETRAS es una variable que
podr contener cualquier conjunto de caracteres; NUMERO podr contener cualquier
conjunto de nmeros que pertenezcan al rango 0..255; MAYUS podr contener cualquier
conjunto de caracteres pertenecientes al rango 'A'..'Z', DECEN cualquier conjunto de nmeros
pertenecientes
al
rango
10..99
BOOLE
cualquier
subconjunto
del
conjunto
{FALSE,TRUE}.
Como ocurre con todas las variables en Pascal, cuando se declaran las variables de tipo
SET no contienen ningn conjunto concreto: podemos decir que estn vacas. Declarar en un
programa una variable de tipo SET OF CHAR, por ejemplo, significa disponer de una
estructura de datos capaz de contener cualquier subconjunto del tipo CHAR; desde el
conjunto vaco (empty set, en ingls) hasta el conjunto completo.
La carga con un conjunto concreto de elementos de una variable de tipo SET, se realiza
con la instruccin de asignacin. As, las variables declaradas anteriormente se podran cargar
Ejemplo 4.17
LETRAS
:= ['A','E','I','O','U'];
NUMERO
:= [1..50,75,91];
88
:= ['A','B','S'];
:= [10,20,30,40,50,60,70,80,90];
BOOLE
:= [];
{ conjunto vaco }
Como hemos dicho, el tipo base no puede tener ms de 256 valores posibles y los
valores ordinales de los valores menor y mayor del tipo base deben estar en el rango 0..255.
Por esta razn el tipo base de un SET no puede ser de los tipos SHORTINT, INTEGER,
LONGINT ni WORD. Igualmente no puede serlo el subrango -100..100, por ejemplo, as
como algn tipo abs-tracto con ms de 256 valores enumerados.
Ya sabemos definir constantes y declarar variables de tipo SET. Tambin es posible,
como para otros tipos de datos, definir tipos SET, con TYPE:
TYPE NOMBRE = STRING [15];
CALEN = SET OF 1...31;
VAR NAME : NOMBRE;
MES : CALEN;
Por ltimo, podemos tambin definir constantes con tipo (o variables inicializadas) de
tipo SET, de la forma habitual.
Ejemplo 4.18
TYPE
Un gran inconveniente de los datos tipo SET es que no se pueden leer por teclado con
READLN ni escribir en pantalla con WRITE/LN.
89
OPERACION
TIPO DE OPERANDOS
Igualdad de Conjuntos
<>
Desigualdad de Conjuntos
<=
Subconjunto de
>=
Superconjunto de
IN
Pertenencia a
Tipos SET compatibles son aquellos que tienen el mismo tipo base o tipos base
compatible. Por ejemplo, SET OF CHAR es compatible con SET OF 'A'..'Z', y viceversa, si
todos los elementos del primero se encuentran en el rango del segundo. Sin embargo SET OF
CHAR no es compatible con SET OF BYTE.
Si A y B son SET's compatibles, y T es un valor ordinal de su tipo base, sus
comparaciones producen los siguientes resultados:
i)
90
Ejemplos 4.19
Si A = ['a','e','i','o','u']; B = ['a','i','u']; T = 'o', entonces:
WRITE (A = B);
{FALSE}
{TRUE}
{FALSE}
{TRUE}
WRITE (T IN A);
{TRUE}
WRITE (T IN B);
{FALSE}
Podemos ya codificar en Pascal el programa, del que hablamos al principio del tema,
que cuenta las vocales de un texto, utilizando el tipo SET y el operador IN; por ejemplo, de la
siguiente manera: Si TXT es una variable de tipo STRING que hemos cargado por teclado;
VO-WELS es la constante tipo SET formada por ['A','E','I','O','U'] y CONT es una variable
BYTE que utilizaremos para contar las vocales del texto, tendramos:
FOR K: =1 TO LENGTH (TXT) DO
IF UPCASE (TXT [K]) IN VOWELS THEN
CONT:=CONT+1;
91
OPERACION
TIPO DE OPERANDOS
Unin de Conjuntos
Diferencia de Conjuntos
Interseccin de Conjuntos
Ejemplos 4.20
Si A = ['a','e','i','o','u'] y B = ['a','i','u'], entonces:
A + B = ['a','e','i','o','u']
A - B = ['e','o']
A * B = ['a','i','u']
E) CADENAS
Definicin 4.29 Una cadena de caracteres es una secuencia de cero o ms smbolos, que
incluyen letras del alfabeto, dgitos y caracteres especiales.
92
Numricos (0,1,2,3,4,5,6,7,8,9)
VALOR ASCII
CARCTER TECLA
VALOR ASCII
CARCTER TECLA
13
ENTER
41
27
ESCAPE
42
32
Barra Espaciadora
43
33
44
34
45
35
46
36
47
37
48
38
&
49
39
50
40
51
93
123
53
124
54
125
55
126
56
127
57
128
58
129
59
130
60
<
154
61
160
62
>
161
63
162
64
163
65
164
***********
***********
165
90
166
91
167
92
168
93
169
94
170
95
171
96
172
97
173
***********
***********
174
122
175
94
I
S
1
1
S
U
2
3
U
A
3
4
L
4
B
5
A
7
A
S
8
9
S
I
C
1
V
1
I
1
10 11 12 13 14 15 16 17 18 19 20
Dimensin de la Cadena: 20
V
V
I
S
S
U
U
A
A
L
B
B
DONDE:
17 es la longitud mxima
95
A
S
S
I
I
C
V
V
V
V
S
S
A
A
DONDE
6 es la Longitud Actual
Ejemplo 4.21
M i c r o s o f t V i s u a l S t u d i otiene 23 caracteres
La operacin de determina la longitud de la cadena se representara por la funcin
cuyo formato es:
LONGITUD (Cadena de Caracteres)
Dicha formula tiene acceso a datos tipo carcter pero el resultado ser
numrico.
Ejemplos:
LONGITUD (MICROSOFT VISUAL STUDIO')
23 caracteres
LONGITUD ( ')
3 caracteres
21 caracteres
Observacin 4.9
Ejemplo 4.22
10 + 15 + longitud ( ESTRUCTURA DE DATOS )
4 + 5 * 2 + longitud (visual basic) + longitud ( )
b) COMPARACION
Definicin 4.34 Los criterios de comparacin de cadenas se basan en el orden
numrico del cdigo ASCII como cdigo de referencia:
97
Ejemplo 4.23
A > B
A = a
AREVALO = AREVALO
verdadero
AREVALO = Arvalo
falso
AREVALO = Arvalo
falso
Ejemplo 4.24
COMPARACION DE DESIGUALDAD: Utilizar <>
Arvalo < AREVALO
Cceres > Arvalo
AREVALO > Arvalo
c) CONCATENACION
Definicin 4.35 Es la operacin que rene varias cadenas de caracteres en una
sola, pero conservando el orden en que se les llame o invoque.
Mayormente los smbolos ms usados son: &
//
B=Visual
D=A+ +B+ +C
98
C=Basic
d) EXTRACCION DE SUBCADENAS
Definicin 4.36 Es aquella que permite la extraccin de una parte especfica de una
cadena llamndose as Subcadena.
Utilizar la siguiente funcin:
SUBCADENA (Cadena , Posicin Inicial, longitud de la subcadena)
En este caso la Subcadena estar compuesta por la cantidad de caracteres que
extraiga desde la posicin actual y la longitud de la misma.
SUBCADENA (Cadena , Posicin Inicial)
En este caso la Subcadena estar formado por caracteres de la cadena desde la
posicin inicial hacia al final de la misma.
Ejemplo 4.25
Subcadena (abcdefg, 2,4)
bcde
e) BUSQUEDA DE INFORMACION
Definicin 4.37 Localiza si una subcadena forma parte de la cadena, devolviendo
para este caso la posicin exacta del primer encuentro de izquierda a derecha
POSICION (CADENA1, CADENA2)
Supongamos que la Cadena es C=ESTRUCTURA DE LA INFORMACION
POSICION(C, DE)
Resultado 12
99
ITOA, FCVT
EN BASIC:
-
g) INSERTAR CADENAS
Definicin 4.39 Inserta una subcadena dentro de una cadena ms larga = y en
determinada posicin.
Sintaxis:
Idea:
100
Ejemplo 4.26
CADENA= E S T R U C T U R A I N F O R M A C I O N, debemos agregar las
letras que faltan para que la nueva cadena sea ESTRUCTURA DE LA
INFORMACIN
Subcadena (cadena, 1, (12-1)) ESTRUCTURA_
Cadena a insertar DE LA_
Subcadena (cadena, 12, (22-12+1) INFORMACION
h) BORRAR CADENAS
Definicin 4.40 Elimina determinados caracteres de cuerdo a una posicin y la
cantidad de caracteres a borrar.
Sintaxis:
Idea:
Ejemplo 4.27
CADENA= I N F O R M A C I O N, debemos borrar las letras FORMA de tal
manera que la nueva cadena ser
INCION
101
i) CAMBIAR CADENAS
Sustituye un texto por otro.
Sintaxis: CAMBIAR (Cadena, Subcadena a sustituir, Subcadena nueva)
Idea:
102
estaVacia (): devuelve verdadero si la lista esta vaca, falso en caso contrario.
103
B) PILAS
Definicin 4.42 Una pila (stack o pushdown en ingls) es una lista de elementos de la cual
slo se puede extraer el ltimo elemento insertado. La posicin en donde se encuentra dicho
elemento se denomina tope de la pila. Tambin se conoce a las pilas como listas LIFO (LAST
IN - FIRST OUT: el ltimo que entra es el primero que sale).
104
tope (): retorna el elemento que se encuentre en el tope de la pila, pero sin eliminarlo
de sta (top en ingls).
Observacin 4.10
Algunos autores definen desapilar como sacar el elemento del tope de la pila sin
retornarlo.
105
class PilaArreglo
{
private Object[] arreglo;
private int tope;
private int MAX_ELEM=100; /mximo numero de elemento en la pila
public PilaArreglo()
{
arreglo=new Object[MAX_ELEM];
tope=-1; // inicialmente la pila esta vaca
}
public void apilar(Object x)
{
106
class PilaLista
{
109
Ejemplo 4.28
Para eliminar la recursividad suponer que una funcin F realiza un llamado recursivo
dentro de su cdigo, lo que se ilustra en el siguiente esquema:
111
Ejemplo 4.29
Recorrido en preorden de un rbol binario.
Un mtodo recursivo es menos eficiente que uno no recursivo, pero slo en pocas
oportunidades vale la pena eliminar la recursin.
115
C) COLAS
Definicin 4.43 Una cola (queue en ingls) es una lista de elementos en donde siempre se
insertan nuevos elementos al final de la lista y se extraen elementos desde el inicio de la lista.
Tambin se conoce a las colas como listas FIFO (FIRST IN - FIRST OUT: el primero que
entra es el primero que sale).
Ilustracin 4.4 Esquema de cola
sacar (): retorna el elemento que se ubica al inicio de la cola (dequeue en ingls).
estaVacia (): retorna verdadero si la cola esta vaca, falso en caso contrario.
Al igual que con el TDA pila, una cola se puede implementar tanto con arreglos como
con listas enlazadas. A continuacin se ver la implementacin usando un arreglo.
116
117
Ilustracin 4.6 Esquema de elementos en una cola para implementar con arreglo circular
class ColaArreglo
{
private Object[] arreglo;
private int primero, ultimo, numElem;
private int MAX_ELEM=100; /maximo numero de elemento en la cola
public ColaArreglo()
{
arreglo=new Object[MAX_ELEM];
primero=0;
ultimo=MAX_ELEM-1;
numElem=0;
}
public void encolar(Object x)
{
if (numElem<MAX_ELEM) // si esta llena se produce OVERFLOW
{
ultimo= (ultimo+1) %MAX_ELEM;
118
Con esta implementacin, todas las operaciones del TDA cola tienen costo O (1).
119
D) LISTAS ENLAZADAS
Definicin 4.44 En Ciencias de la Computacin, una lista enlazada es una de las
estructuras de datos fundamentales, y puede ser usada para implementar otras estructuras de
datos. Consiste en una secuencia de nodos, en los que se guardan campos de datos arbitrarios
y una o dos referencias (punteros) al nodo anterior y/o posterior. El principal beneficio de las
listas enlazadas respecto a los arreglos convencionales es que el orden de los elementos
enlazados puede ser diferente al orden de almacenamiento en la memoria o el disco,
permitiendo que el orden de recorrido de la lista sea diferente al de almacenamiento.
Las listas enlazadas pueden ser implementadas en muchos lenguajes. Lenguajes tales
como Lisp y Scheme tiene estructuras de datos ya construidas, junto con operaciones para
acceder a las listas enlazadas. Lenguajes imperativos u orientados a objetos tales como C o
C++ y Java, respectivamente, disponen de referencias para crear listas enlazadas.
120
Una lista enlazada simple contiene dos valores: el valor actual del nodo y un enlace al
siguiente nodo
Una lista doblemente enlazada contiene tres valores: el valor, el link al nodo siguiente,
y el link al anterior
121
NODOS CENTINELAS
Definicin 4.50 Un nodo centinela (tambin llamado falso nodo o nodo ficticio) es un
nodo que se ubica al principio y/o al final de la lista, el cual no es usado para guardar datos.
Su propsito es simplificar o agilizar algunas operaciones, asegurando que cualquier nodo
tiene otro anterior o posterior, y que toda la lista (incluso alguna que no contenga datos)
siempre tenga un primer y ltimo nodo.
A veces, las listas enlazadas son usadas para implementar arreglos asociativos, y estas
en el contexto de las llamadas listas asociativas. Hay pocas ventajas en este uso de las listas
enlazadas; hay mejores formas de implementar stas estructuras, por ejemplo con rboles
binarios de bsqueda equilibrados. Sin embargo, a veces una lista enlazada es dinmicamente
creada fuera de un subconjunto propio de nodos semejante a un rbol, y son usadas ms
eficientemente para recorrer sta serie de datos
VENTAJAS
Ventajas de usar listas: Las listas son dinmicas, es decir, podemos almacenar en ellas
tantos elementos como necesitemos, siempre y cuando haya espacio suficiente espacio en
memoria. Al insertar un elemento en la lista, la operacin tiene un tiempo constante
124
a)
RECORRIDO. Esta operacin consiste en visitar cada uno de los nodos que forman
la lista. Para recorrer todos los nodos de la lista, se comienza con el primero, se toma
el valor del campo liga para avanzar al segundo nodo, el campo liga de este nodo nos
dar la direccin del tercer nodo, y as sucesivamente.
b)
INSERCIN. Esta operacin consiste en agregar un nuevo nodo a la lista. Para esta
operacin se pueden considerar tres casos:
d)
BSQUEDA. Esta operacin consiste en visitar cada uno de los nodos, tomando al
campo liga como puntero al siguiente nodo a visitar.
E) RBOLES
Definicin 4.51 Un rbol se define como una coleccin de nodos organizados en forma
recursiva. Cuando hay 0 nodos se dice que el rbol esta vaco, en caso contrario el rbol
consiste en un nodo denominado raz, el cual tiene 0 o ms referencias a otros rboles,
conocidos como subrboles. Las races de los subrboles se denominan hijos de la raz, y
consecuentemente la raz se denomina padre de las races de sus subrboles. Una visin
grfica de esta definicin recursiva se muestra en la siguiente figura:
Ilustracin 4.10 Esquema de un rbol
126
Definicin 4.52 Los nodos que no poseen hijos se denominan hojas. Dos nodos que tienen
el padre en comn se denominan hermanos.
Definicin 4.53 Un camino entre un nodo n1 y un nodo nk est definido como la secuencia
de nodos n1, n2,..., nk tal que ni es padre de ni+1, 1 <= i < k. El largo del camino es el nmero
de referencias que componen el camino, que para el ejemplo son k-1. Existe un camino desde
cada nodo del rbol a s mismo y es de largo 0. Ntese que en un rbol existe un nico camino
desde la raz hasta cualquier otro nodo del rbol. A partir del concepto de camino se definen
los conceptos de ancestro y descendiente: un nodo n es ancestro de un nodo m si existe un
camino desde n a m; un nodo n es descendiente de un nodo m si existe un camino desde m a
n.
Definicin 4.54 Se define la profundidad del nodo nk como el largo del camino entre la
raz del rbol y el nodo nk. Esto implica que la profundidad de la raz es siempre 0. La altura
de un nodo nk es el mximo largo de camino desde nk hasta alguna hoja. Esto implica que la
altura de toda hoja es 0. La altura de un rbol es igual a la altura de la raz, y tiene el mismo
valor que la profundidad de la hoja ms profunda. La altura de un rbol vaco se define como
-1.
Ejemplo 4.30
La siguiente figura muestra los conceptos previamente descritos:
127
A es padre de B, C y D.
La profundidad de C es 1, de F es 2 y de Q es 4.
La altura de C es 0, de F es 1 y de D es 3.
La altura del rbol es 4 (largo del camino entre la raz A y la hoja ms profunda, P o
Q).
128
RBOLES BINARIOS
Definicin 4.55 Un rbol binario es un rbol en donde cada nodo posee 2 referencias a
subrboles (ni ms, ni menos). En general, dichas referencias se denominan izquierda y
derecha, y consecuentemente se define el subrbol izquierdo y subrbol derecho del rbol.
Ilustracin 4.12 Esquema de un rbol binario
class NodoArbolBinario
{
Object elemento;
NodoArbolBinario izq;
NodoArbolBinario der;
}
Los nodos en s que conforman un rbol binario se denominan nodos internos, y todas
las referencias que son null se denominan nodos externos.
129
Propiedad 4.1
e = i+1
Propiedad 4.2
In = suma del largo de los caminos desde la raz a cada nodo interno (largo de caminos
internos).
En = suma del largo de los caminos desde la raz a cada nodo externo (largo de
caminos externos).
Se tiene que:
130
Propiedad 4.3
bn
bn?
Ejemplo 4.31
b4 = b0*b3 + b1*b2 + b2*b1 + b3*b0 = 5 + 2 + 2 + 5 = 14.
131
Ejemplo 4.32
La siguiente figura muestra un ejemplo de un rbol de expresiones matemticas. En un
rbol de expresiones las hojas corresponden a los operandos de la expresin (variables o
constantes), mientras que los nodos restantes contienen operadores. Dado que los operadores
matemticos son binarios (o unarios como en el caso del operador signo -), un rbol de
expresiones resulta ser un rbol binario.
Ilustracin 4.14 Esquema de un rbol binario de expresiones matemticas
Si la raz del rbol es una constante o una variable se retorna el valor de sta.
132
Ejemplos 4.33
Recorrido del rbol de expresiones anterior en preorden se obtiene: * + a b - c d
Recorrido del rbol de expresiones en inorden se obtiene: a + b * c - d
Recorrido del rbol de expresiones en postorden se obtiene: a b + c d - *
133
134
12. Programa en Visual Basic donde se ingrese un texto en los Cuadros TEXT1 Y TEXT2
y luego se unan en un cuadro de TEXT3 al presionar Clic en un botn command que
se llame Concatenacin.
Text3.Text = Text1.Text + Text2.Text
Text3.Text = Text1.Text & Text2.Text
135
CAPITULO V
TEORIA DE GRAFOS
5.1 CONCEPTOS BASICOS
Definicin 5.1 Un grafo es un objeto matemtico que se utiliza para representar circuitos,
redes, etc. Los grafos son muy utilizados en computacin, ya que permiten resolver problemas
muy complejos.
Definicin 5.2 Un grafo consta de vrtices (o nodos) y aristas. Los vrtices son objetos que
contienen informacin y las aristas son conexiones entre vrtices. Para representarlos, se
suelen utilizar puntos para los vrtices y lneas para las conexiones, aunque hay que recordar
siempre que la definicin de un grafo no depende de su representacin.
Definicin 5.3 Un camino entre dos vrtices es una lista de vrtices en la que dos
elementos sucesivos estn conectados por una arista del grafo. As, el camino AJLOE es un
camino que comienza en el vrtice A y pasa por los vrtices J, L y O (en ese orden) y al final
va del O al E. El grafo ser conexo si existe un camino desde cualquier nodo del grafo hasta
cualquier otro. Si no es conexo constar de varias componentes conexas.
Definicin 5.4 Un camino simple es un camino desde un nodo a otro en el que ningn nodo
se repite (no se pasa dos veces). Si el camino simple tiene como primer y ltimo elemento al
mismo nodo se denomina ciclo. Cuando el grafo no tiene ciclos tenemos un rbol. Varios
rboles independientes forman un bosque. Un rbol de expansin de un grafo es una
136
Definicin 5.5 Un grafo es completo si cuenta con todas las aristas posibles (es decir, todos
los nodos estn conectados con todos), disperso si tiene relativamente pocas aristas y denso si
le faltan pocas para ser completo.
Definicin 5.6 Un grafo no dirigido es cuando las aristas son la mayor parte de las veces
bidireccionales, es decir, si una arista conecta dos nodos A y B se puede recorrer tanto en
sentido hacia B como en sentido hacia A.
Definicin 5.7 Un grafo dirigido es cuando las aristas son unidireccionales. Estas uniones
se suelen dibujar con una flecha.
Definicin 5.8 Un grafo es ponderado cuando las aristas llevan un coste asociado (un
entero al que se denomina peso).
137
COLORACION DE UN MAPA
Cuatro colores son siempre suficientes para colorear un mapa. El mapa siguiente
muestra que tres colores no bastan: Si se empieza por el pas central a y se esfuerza uno en
utilizar el menor nmero de colores, entonces en la corona alrededor de a alternan dos
colores. Llegando al pas h se tiene que introducir un cuarto color. Lo mismo sucede en i si se
emplea el mismo mtodo.
Ilustracin 5.2 Esquema de un mapa coloreado
138
int V, A;
int a[maxV][maxV];
void inicializar()
{
int i,x,y,p;
139
140
Las listas de adyacencia sern estructuras que contendrn un valor entero (el nmero
que identifica al nodo destino), as como otro entero que indica el coste en el caso de que el
grafo sea ponderado.
Ejemplo 5.1
En este ejemplo se ha utilizado un nodo z ficticio en la cola (ver listas, apartado
cabeceras y centinelas).
struct nodo
{
int v;
int p;
nodo *sig;
};
int V,A; // vrtices y aristas del grafo
struct nodo *a[maxV], *z;
141
En este caso el espacio ocupado es O(V + A), muy distinto del necesario en la matriz
de adyacencia, que era de O(V2). La representacin por listas de adyacencia, por tanto, ser
ms adecuada para grafos dispersos.
142
En primer lugar, una forma sencilla de recorrer los vrtices es mediante una funcin
recursiva, lo que se denomina bsqueda en profundidad. La sustitucin de la recursin (cuya
base es la estructura de datos pila) por una cola nos proporciona el segundo mtodo de
bsqueda o recorrido, la bsqueda en amplitud o anchura.
143
Suponiendo que el orden en que estn almacenados los nodos en la estructura de datos
correspondiente es A-B-C-D-E-F... (El orden alfabtico), tenemos que el orden que seguira el
recorrido en profundidad sera el siguiente:
A-B-E-I-F-C-G-J-K-H-D
A-B-C-D-E-G-H-I-J-K-F
Es decir, en el primer caso se exploran primero los verdes y luego los marrones,
pasando primero por los de mayor intensidad de color. En el segundo caso se exploran
primero los verdes, despus los rojos, los naranjas y, por ltimo, el rosa.
1
0
0
1
1
1
1
1
0
1
1
0
0
1
1
0
1
1
1
1
1
1
0
1
0
1
1
; B
1
0
1
1
1
0
1
1
0
1
0
0
;
1
A) A y B son isomorfos
B) A y C son isomorfos
C) B y C son isomorfos
145
A) Tres
B) Cuatro
C) Cinco
5.- Los grafos de la figura, son isomorfos?
146
CAPITULO VI
ORDENAMIENTO Y BUSQUEDA DE DATOS
6.1 ORDENAMIENTO DE DATOS
Debido a que las estructuras de datos son utilizadas para almacenar informacin, para
poder recuperar esa informacin de manera eficiente es deseable que aquella est ordenada.
Existen varios mtodos para ordenar las diferentes estructuras de datos bsicas.
Definicin 6.1 El ordenar un grupo de datos significa mover los datos o sus referencias
para que queden en una secuencia tal que represente un orden, el cual puede ser numrico,
alfabtico o incluso alfanumrico, ascendente o descendente.
147
For i <- 2 to N do
Paso 2: [Inicializa v y j]
j <- i.
Paso 5: [Decrementa j]
Paso 6: [Fin]
End.
Ejemplo 6.1
Si el arreglo a ordenar es a = ['a','s','o','r','t','i','n','g','e','x','a','m','p','l','e'],
149
Luego compara esta 's' con lo que hay en la posicin j-1, es decir, con 'a'. Debido a que
's' no es menor que 'a' no sucede nada y avanza i.
Ahora v toma el valor 'o' y lo compara con 's', como es menor recorre a la 's' a la
posicin de la 'o'; decrementa j, la cual ahora tiene la posicin en dnde estaba la 's'; Compara
a 'o' con a [j-1], es decir, con 'a'. Como no es menor que la 'a' sale del for y pone la 'o' en la
posicin a[j]. El resultado hasta este punto es el arreglo siguiente: a = ['a','o','s','r',....]
a = ['a','a','e','e','g','i','l','m','n','o','p','r','s','t','x']
B).MTODO DE INTERCAMBIO
El bubble sort, tambin conocido como ordenamiento burbuja, funciona de la siguiente
manera: Se recorre el arreglo intercambiando los elementos adyacentes que estn
desordenados. Se recorre el arreglo tantas veces hasta que ya no haya cambios. Prcticamente
lo que hace es tomar el elemento mayor y lo va recorriendo de posicin en posicin hasta
ponerlo en su lugar.
Procedimiento Bubble Sort
Paso 1: [Inicializa i al final de arreglo]
For j <- 2 to i do
Paso 4: [Si a [j-1] es mayor que el que le sigue] If a [j-1] < a[j] then
Paso 5: [Los intercambia]
End.
promedio O(n2)
C) MTODO DE SELECCIN
El mtodo de ordenamiento por seleccin consiste en encontrar el menor de todos los
elementos del arreglo e intercambiarlo con el que est en la primera posicin. Luego el
segundo ms pequeo, y as sucesivamente hasta ordenar todo el arreglo.
For i <- 1 to N do
menor <- i
min = j
End.
Ejemplo 6.2
El arreglo a ordenar es a = ['a','s','o','r','t','i','n','g','e','x','a','m','p','l','e']. Se empieza por
recorrer el arreglo hasta encontrar el menor elemento. En este caso el menor elemento es la
151
la
's',
quedando
el
arreglo
as
despus
de
dos
recorridos:
['a','a','o','r','t','i','n','g','e','x','s','m','p','l','e'].
Para el primer elemento se comparan n-1 datos, en general para el elemento i-simo
se hacen n-i comparaciones, por lo tanto, el total de comparaciones es:
B).MTODO QUICKSORT
El mtodo Quicksort divide la estructura en dos y ordena cada mitad recursivamente.
Tiene la ventaja de que utiliza un tiempo proporcional a: n log (n), su desventaja
radica en que se requiere de un espacio extra para el procedimiento.
153
#include<stdio.h>
void ordenar (int *,int,int);
void main()
{ // Dar valores al array
if(desde>=hasta)
return;
for(i=desde+1,d=hasta;;)
{
for(;i<=hasta && array[i]<=array[desde];i++); // Primera bsqueda
for(;d>=0 && array[d]>=array[desde];d--);
if(i<d) // si no se han cruzado:
{
aux=array[i];
// Intercambiar.
154
// segunda bsqueda
// si se han cruzado:
// salir del bucle.
}
if(d==desde-1)
d=desde;
aux=array[d];
// Colocar el pivote
array[d]=array[desde];
// en su posicin.
array[desde]=aux;
ordenar(array,desde,d-1); // Ordenar el primer array.
ordenar(array,d+1,hasta); // Ordenar el segundo array.
}
C).MTODO HEAPSORT
Este mtodo garantiza que el tiempo de ejecucin siempre es de: O(n log n)
El significado de heap en ciencia computacional es el de una cola de prioridades
(priority queue). Tiene las siguientes caractersticas:
155
El valor en un nodo es mayor o igual a los valores de sus hijos. Por consiguiente, el
nodo padre tiene el mayor valor de todo su subrbol.
construir un arreglo ordenado de atrs hacia adelante (mayor a menor) repitiendo los
siguientes pasos:
Procedimiento Heapsort
/* Recibe como parmetros un arreglo a ordenar y un entero que indica el numero de
datos a ordenar */
void heapsort (int a [], int N)
{
int k;
for (k=N/2; k>=1; k--)
downheap (a,N,k);
while (N > 1)
{
156
157
for(i=j=0;i<N;i++)
if(array[i]==elemento)
{
solucion[j]=i;
j++;
}
158
for(i=j=0;array[i]<=elemento;i++)
for(i=0;i<N;i++)
if(array[i]==elemento)
break;
En este ltimo caso, cuando slo interesa la primera posicin, se puede utilizar un
centinela, esto es, dar a la posicin siguiente al ltimo elemento de array el valor del
elemento, para estar seguro de que se encuentra el elemento, y no tener que comprobar a cada
paso si seguimos buscando dentro de los lmites del array:
array[N]=elemento;
for(i=0;;i++)
if(array[i]==elemento)
break;
Ejemplo 6.3
Buscar el elemento 3 en el array {1,2,3,4,5,6,7,8,9} se realizaran los siguientes pasos:
{}-3-{4}
En general, este mtodo realiza log (2, N+1) comparaciones antes de encontrar el
elemento, o antes de descubrir que no est. Este nmero es muy inferior que el necesario para
la bsqueda lineal para casos grandes.
6.2.3
BSQUEDA
MEDIANTE
TRANSFORMACIN
DE
CLAVES
(HASHING)
Es un mtodo de bsqueda que aumenta la velocidad de bsqueda, pero que no
requiere que los elementos estn ordenados. Consiste en asignar a cada elemento un ndice
mediante una transformacin del elemento. Esta correspondencia se realiza mediante una
funcin de conversin, llamada funcin hash. La correspondencia ms sencilla es la identidad,
esto es, al nmero 0 se le asigna el ndice 0, al elemento 1 el ndice 1, y as sucesivamente.
Pero si los nmeros a almacenar son demasiado grandes esta funcin es inservible. Por
ejemplo, se quiere guardar en un array la informacin de los 1000 usuarios de una empresa, y
se elige el nmero de DNI como elemento identificativo. Es inviable hacer un array de
100.000.000 elementos, sobre todo porque se desaprovecha demasiado espacio. Por eso, se
realiza una transformacin al nmero de DNI para que nos d un nmero menor, por ejemplo
coger las 3 ltimas cifras para guardar a los empleados en un array de 1000 elementos. Para
buscar a uno de ellos, bastara con realizar la transformacin a su DNI y ver si est o no en el
array.
La funcin de hash ideal debera ser biyectiva, esto es, que a cada elemento le
corresponda un ndice, y que a cada ndice le corresponda un elemento, pero no siempre es
fcil encontrar esa funcin, e incluso a veces es intil, ya que puedes no saber el nmero de
elementos a almacenar. La funcin de hash depende de cada problema y de cada finalidad, y
se pueden utilizar con nmeros o cadenas, pero las ms utilizadas son:
A) Restas sucesivas: esta funcin se emplea con claves numricas entre las que existen
huecos de tamao conocido, obtenindose direcciones consecutivas. Por ejemplo, si el
162
1998-000
-->
1998000-1998000
1998-001
-->
1998001-1998000
1998-002
-->
1998002-1998000
1998-399
-->
399
1998399-1998000
1999-000
-->
400
1999000-1998000+400
yyyy-nnn
-->
yyyynnn-1998000+ (400*(yyyy-1998))
13000000
-->
12345678
-->
13602499
-->
71140205
-->
73062138
-->
C) Mitad del cuadrado: consiste en elevar al cuadrado la clave y coger las cifras centrales.
Este mtodo tambin presenta problemas de colisin:
163
-->
51
136*136=18496
-->
84
730*730=532900
-->
29
301*301=90601
-->
06
625*625=390625
-->
06
D) Truncamiento: consiste en ignorar parte del nmero y utilizar los elementos restantes
como ndice. Tambin se produce colisin. Por ejemplo, si un nmero de 8 cifras se debe
ordenar en un array de 1000 elementos, se pueden coger el primer, el tercer y las ltimas
cifras para formar un nuevo nmero:
13000000
-->
100
12345678
-->
138
13602499
-->
169
71140205
-->
715
73162135
-->
715
13000000
-->
130=130+000+00
12345678
-->
657=123+456+78
71140205
-->
118
-->
1118=711+402+05
164
-->
259=136+024+99
25000009
-->
259=250+000+09
TRATAMIENTO DE COLISIONES
Pero ahora se nos presenta el problema de qu hacer con las colisiones, qu pasa
cuando a dos elementos diferentes les corresponde el mismo ndice. Pues bien, hay tres
posibles soluciones:
Tambin se pueden reservar unos cuantos lugares al final del array para alojar a las
colisiones. Este mtodo tambin tiene un problema: Cunto espacio se debe reservar?
Adems, sigue la lentitud de bsqueda si el elemento a buscar es una colisin.
165
M E
M A C I
O N
167
CAPITULO VII
SOFTWARE DE PROGRAMACION MATLAB
7.1 INTRODUCCIN
Definicin 7.1 MATLAB es un entorno de computacin y desarrollo de aplicaciones
totalmente integrado orientado para llevar a cabo proyectos en donde se encuentre elevados
clculos matemticos y su visualizacin grfica.
MATLAB integra anlisis numrico, clculo matricial, proceso de seal y
visualizacin grfica.
Procesamiento de seal
Identificacin de Sistema
Matemticas Simblicas
Optimizacin
Procesamiento de Imagen
Lgica Difusa
Estadstica
Splines
168
7.2 OPERADORES
7.2.1 OPERADORES LOGICOS
OPERADOR
DESCRIPCION
&
NO
MATRIZ
VECTOR
DESCRIPCION
Adicin
Sustraccin
.*
Multiplicacin
./
\.
Transpuesta
DESCRIPCION
<
Menor que
<=
>
Mayor que
>=
169
==
Igual
~=
No igual
DESCRIPCION
[]
()
Ejemplo 7.1
Ejemplo 7.2
Ejemplo 7.3
>> 13/3
>> 3/13
>> 4^ 2
ans = 4.3333
ans = 62.3333
ans = 16
Ejemplo 7.4
Ejemplo 7.5
Ejemplo 7.6
>> 2* pi^ 3
>>a = [0 1 2 3 4 5 6 7 8 9 10]
>>t = 0: 2: 20
a = 0 1 2 3 4 5 6 7 8 9 10
t = 0 2 4 6 8 10 12 14
Ejemplo 7.7
Ejemplo 7.8
Ejemplo 7.9
>>b = a + 3
>>t = [1; 3; 5]
>>c = a + b
ans = 62.01255336059
b = 3 4 5 6 7 8 9 10 11 12 13
t=1
c = 3 4 5 6 7 8 9 11 13 15 17
3
19 21 23
5
170
Ejemplo 7.10
Ejemplo 7.11
Ejemplo 7.12
>>d
>>f = [4; 6; 9]
>>d.*f
ans=
f=
ans=
4
18
45
1 3 5
7.3 VARIABLES
Definicin 7.3 Las variables deben tener un nombre segn las siguientes reglas:
no pueden comenzar con un nmero, pero si pueden tener nmeros en los caracteres
siguientes.
7.4 EXPRESIONES
Definicin 7.4 Una expresin en MATLAB, puede ser:
171
Observacin 7.1
Observacin 7.2
Ejemplo 7.13
>> x = [5 7 -2 4 -6] % es un vector, los elementos los separamos con espacios
x=
5 7 -2 4 -6
Ejemplo 7.14
>> y = [2, 1, 3,7] % es otro vector, los elementos los separamos con comas
172
Ejemplo 7.15
>> z = [0 1 2,3 4,5] % es otro vector, da igual separar los elementos por comas o
espacios
z=
012345
Ejemplo 7.16
>> A = [1 2 3; 4 5 6] % es una matriz con 2 filas y 3 columnas
A=
123
456
Ejemplo 7.17
>> x = [5 7 -2 4 -6];
>> x (2) % segundo elemento del vector x
173
Ejemplo 7.18
>> x (end) % ltimo elemento del vector x
ans =
-6
Para acceder a un bloque de elementos a la vez, se usa la notacin de dos puntos (:),
as x (m: n) nos da todos los elementos desde el m-simo hasta el n-simo del vector x.
Ejemplo 7.19
>> x (2:4) % devuelve desde el segundo al cuarto elemento del vector x
ans =
7 -2 4
Ejemplo 7.20
>> x (1:2:5) % devuelve el primero, tercero y quinto elemento del vector x
ans =
5 -2 -6
174
Ejemplo 7.21
>> x ([3 5 1]) % devuelve el tercer, quinto y primer elemento del vector x
ans =
-2 -6 5
Para acceder a los elementos de una matriz necesitamos dar dos valores, el primero
indica la fila y el segundo la columna.
Ejemplo 7.22
>> A = [1 2 3; 4 5 6];
>> A (2,1) % elemento de la matriz que est en la fila 2 y en la columna 1
ans =
4
Si queremos que escriba toda una fila usaremos los dos puntos para indicar que
queremos todos los elementos.
Ejemplo 7.23
>> A (2, :) % escribe la segunda fila de la matriz
ans =
456
175
Ejemplo 7.24
>> A (:,2) % escribe la segunda columna de la matriz
ans =
2
5
Al igual que con los vectores podemos indicar que escriba una serie de filas o
columnas, la manera de hacerlo sera muy parecido.
Ejemplo 7.25
>> A (2,2:3) % escribe de la segunda fila de la matriz, las columnas de la 2 a la 3
ans =
56
Ejemplo 7.26
>> A (2, [3 1]) % escribe de la segunda fila de la matriz, las columnas 3 y 1
ans =
64
Ejemplo 7.27
>> A ([2 1], 2:3) % escribe de las filas 2 y 1 de la matriz, las columnas de la 2 a la 3
ans =
56
176
Ejemplo 7.28
>> A (end, [1 3]) % escribe de la ltima fila, las columnas 1 y 3
ans =
46
Matlab tiene adems otra forma de identificar cada elemento de una matriz, de modo
que podemos acceder a un elemento de una matriz indicando slo un valor y no dos, pero
debemos saber que el orden elegido por Matlab es por columnas as los elementos de la matriz
A seran denominados:
Ejemplo 7.29
Como la matriz A que tenamos era
A=
123
456
177
Ejemplo 7.30
>> (1:7) % crea un vector que comienza en 1, aumenta de 1 en 1 y acaba en 7
ans =
1234567
Ejemplo 7.31
>> (1:3:10) % crea un vector que comenzando en 1, aumenta de 3 en 3 hasta el 10
178
Ejemplo 7.32
>> (1:4:10) % comenzando en 1, aumenta de 4 en 4 hasta el 10 y por eso acaba en 9
ans =
159
Ejemplo 7.33
>> (50:-7:1) % crea un vector que comenzando en 50, disminuye de 7 en 7 hasta el 1
ans =
50 43 36 29 22 15 8 1
Ejemplo 7.34
>> linspace (2,6,3) % genera un vector desde el 2 al 6 con 3 elementos equidistantes
ans =
246
Ejemplo 7.35
>> linspace (2,6,4) % genera un vector desde el 2 al 6 con 4 elementos equidistantes
ans =
2.0000 3.3333 4.6667 6.0000
179
Ejemplo 7.36
>> logspace (0,2,4) % genera un vector logartmicamente espaciado entre 10^0 y 10^2
con 4 elementos
ans =
1.0000 4.6416 21.5443 100.0000
Ejemplo 7.37
>> zeros (3) % matriz cuadrada 3 x 3 de ceros
ans =
000
000
000
Ejemplo 7.38
>> zeros (2,5) % matriz 2 x 5 de ceros
ans =
00000
00000
Ejemplo 7.39
>> ones (2,3) % matriz de unos
ans =
111
111
Ejemplo 7.40
>> rand (2,4) % matriz de valores aleatorios entre 0 y 1 segn la uniforme (0,1)
181
Ejemplo 7.41
>> randn (2,5) % matriz de valores aleatorios segn la normal (0,1)
ans =
0.8156 1.2902 1.1908 -0.0198 -1.6041
0.7119 0.6686 -1.2025 -0.1567 0.2573
Ejemplo 7.42
>> eye (2) % matriz identidad o unidad
ans =
10
01
Ejemplo 7.43
>> magic (4) % matriz mgica 4 x 4
ans =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
182
Ejemplo 7.44
>> hilb (3) % matriz de Hilbert 3 x 3
ans =
1.0000 0.5000 0.3333
0.5000 0.3333 0.2500
0.3333 0.2500 0.2000
Ejemplo 7.45
>> invhilb (3) % inversa de la matriz de Hilbert 3 x 3
ans =
9 -36 30
-36 192 -180
30 -180 180
183
Ejemplo 7.46
Definimos tres matrices para poder hacer operaciones entre ellas.
A=B=C=
1 2 1 1 1.0000 + 1.0000i 2.0000 + 2.0000i
3 4 0 1 3.0000 + 1.0000i 4.0000 + 7.0000i
>> A * B % multiplicacin de matrices
ans =
13
37
Ejemplo 7.47
>> A .* B % multiplicacin elemento a elemento
ans =
12
04
Ejemplo 7.48
>> C ' % traspuesta conjugada
ans =
1.0000 - 1.0000i 3.0000 - 1.0000i
2.0000 - 2.0000i 4.0000 - 7.0000i
Ejemplo 7.49
>> C .' % traspuesta
184
Ejemplo 7.50
>> A + 2 % si sumamos el nmero 2 a la matriz se suma ese nmero a cada elemento
ans =
34
56
Ejemplo 7.51
>> x = [1 2 3]; y = [4 5 6];
>> cross (x,y) % producto vectorial
ans =
-3 6 3
Ejemplo 7.52
>> dot (x,y) % producto escalar
ans = 32
185
Ejemplo 7.53
>> diag (v) % crea una matriz diagonal a partir del vector v
ans =
100
020
003
Ejemplo 7.54
>> A = [1 2 3 4; 7 8 9 2; 2 4 6 8]
A=
1234
7892
2468
186
Ejemplo 7.55
>> diag (A) % crea un vector columna a partir de la diagonal de la matriz A
ans =
1
8
6
Ejemplo 7.56
>> size (A) % devuelve las dimensiones de la matriz como un vector fila
ans =
34
Ejemplo 7.57
>> length (A) % devuelve la mayor de las dos dimensiones de la matriz
ans =
4
Ejemplo 7.58
>> trace (A) % traza de la matriz
ans =
15
Ejemplo 7.59
>> rank (A) % rango de la matriz
187
Ejemplo 7.60
>> rref (A) % reduccin mediante Gauss
ans =
1.0000 0 -1.0000 -4.6667
0 1.0000 2.0000 4.3333
0000
Ejemplo 7.61
>> l = tril (A), u = triu (A)
l=
1 0 0 0 % convierte en ceros todos los elementos que quedan encima de
7 8 0 0 % la diagonal principal y lo guarda en la variable l
2460
Ejemplo 7.62
u=
1 2 3 4 % convierte en ceros todos los elementos que quedan debajo de
0 8 9 2 % la diagonal principal y lo guarda en la variable u
0068
188
Ejemplo 7.63
>> A = [pi 0; pi/4 pi/3]
A=
3.1416 0
0.7854 1.0472
Ejemplo 7.64
>> find (A) % devuelve los ndices como un vector columna
ans =
1
2
189
Ejemplo 7.65
>> reshape (A,1,4)
ans =
3.1416 0.7854 0 1.0472
Ejemplo 7.66
>> rot90 (A) % gira la matriz 90
ans =
0 1.0472
3.1416 0.7854
Ejemplo 7.67
>> rot90 (A,3) % gira la matriz 270 ( 90 x 3 = 270 )
ans =
0.7854 3.1416
1.0472 0
Ejemplo 7.68
>> funm (A,@sin) % calcula el seno de cada elemento de la matriz
ans =
0.0000 0
-0.3248 0.8660
190
Ejemplo 7.69
>> expm (A)
ans =
23.1407 0
7.6091 2.8497
COMANDOS AVANZADOS
Definicin 7.5 Cada comando en MATLAB es un archivo con extensin .m por lo tanto
es necesario tener las libreras donde se encuentran los comandos que se desean utilizar.
MATLAB no distingue entre maysculas y minsculas en los comandos.
que es: Es un archivo de texto como cualquier otro donde se encuentra el listado del
programa.
En el Editor de MATLAB.
191
El archivo debe quedar grabado en el mismo directorio que MATLAB para poder
correrlo
7.6.2 COMANDO IF
Verifica si se cumple la condicin, si es verdadero falso ejecuta la accin
correspondiente.
SINTAXIS:
if (condicin), (accin 1) [else, (accin 2)] end;
a<b
a>b
a<=b
a>=b
a~=b
Ejemplo 7.70
% uso de if
n = 0;
192
else,
n=1
end
n = 2;
if n = 0,
n
else,
n=1
end;
SALIDA
n=
0
n=
1
SINTAXIS
while (condicin), (accin) end;
Donde:
(accin) son las ordenes a ejecutar
193
Ejemplo 7.71
% uso del comando while
n=0
while n<=2
n
n=n+1;
end;
SALIDA
n=
0
n=
1
n=
2
SINTAXIS
for (contador), (accin) end;
194
variable es el contador
Ejemplo 7.72
% uso del for
for i = 0.5 : 2.0
i
end;
SALIDA
i=
0
i=
0.5
i=
1
i=
195
SINTAXIS
disp (X);
X puede ser:
- Un vector.
- Una matriz
- Una cadena de texto
Ejemplo 7.73
% uso de disp
a = [1,2,3,4,9,11]; % un vector
disp (a);
a = [1,2,7;6,3,4]; % un matriz
disp (a);
a = ` Texto de Prueba; % una cadena de texto
disp (a);
disp (`Tambin se puede escribir as);
SALIDA
1
2 3 4 9 11
2 7
196
3 4
Texto de Prueba
Tambin se puede escribir as
SINTAXIS
Variable = input (texto);
Donde:
variable es un nombre valido donde se almacena el valor que se pregunta.
Texto puede ser una variable una cadena
Ejemplo 7.74
% uso de input
a = 0;
a = input (`Ingrese el valor de a; );
SALIDA
Ingrese el valor de a: (espera)
a=
197
Ejemplo 7.75
Hacer un programa en MATLAB para encontrar los nmeros primos menores que 100.
clc,
disp('Estos son los nmeros primos menores de 100')
disp (2)
for i=3:100
n=2;
while n <= sqrt(i)
if rem(i,n)==0
n=i;
else n=n+1;
end
end
if n~=i disp(i)
end
end
Ejemplo 7.76
198
Ejemplo 7.77
>> x = [-2 -1 0 1 2 3]; y = [4 1 0 1 4 9];
>> plot (x,y)
199
La funcin plot nos permite otras opciones como superponer grficas sobre los
mismos ejes:
Ejemplo 7.78
>> x = [-2 -1 0 1 2 3]; y = [4 1 0 1 4 9]; z = [6 5 3 7 5 2];
>> plot (x,y,x,z)
200
Ejemplo 7.79
Tambin podemos usar distintos tipos de lneas para el dibujo de la grfica:
>> plot (x,y,'*')
Figura 7.4 Esquema de grafico con otro tipo de lnea
202
Ejemplo 7.80
>> x = 1:360; y1 = sind (x); y2 = cosd (x); y3 = exp (x); y4 = exp (-x);
>> subplot (2,2,1), plot (x,y1), title ('seno')
>> subplot (2,2,2), plot (x,y2), title ('coseno')
>> subplot (2,2,3), plot (x,y3), title ('exponencial')
>> subplot (2,2,4), plot (x,y4), title ('-exponencial')
Figura 7.5 Esquema de grafico con varias funciones
Ejemplo 7.81
>> x = [-2 0 2 0 -2]; y = [4 8 4 0 4];
>> plot (x,y)
203
Ejemplo 7.82
>> x = [-2 0 2 0 -2]; y = [4 8 4 0 4];
>> fill (x,y,'r') % dibuja el polgono, 'r' indica el color rojo
Figura 7.7 Esquema de grafico con fondo
Ejemplo 7.83
>> x = -720:720; y = sind (x); z = cosd (x);
>> plot3 (x,y,z)
204
Ejemplo 7.84
>> x = [-2 0 2 0 -2];
>> y = [4 8 4 0 4];
>> z = [3 5 10 5 3];
>> fill3 (x,y,z,'b') % dibuja en 3-D, 'b' indica el color azul
Figura 7.9 Esquema de grafico relleno en 3-D
205
Ejemplo 7.85
>> x = -10:0.5:10; y = -10:0.5:10;
>> [X,Y] = meshgrid (x,y); % crea matrices para hacer la malla
>> Z = sin (sqrt (X .^2 + Y .^2)) ./ sqrt (X .^ 2 + Y .^ 2 + 0.1);
>> mesh (X,Y,Z) % dibuja la grfica
Figura 7.10 Esquema de grafico de superficie de malla
206
Ejemplo 7.86
>> surf (X,Y,Z)
Figura 7.11 Esquema de grafico de superficie
Ejemplo 7.87
>> contour (X,Y,Z) % dibuja las lneas de contorno
Figura 7.12 Esquema de contorno en 2-D
207
Ejemplo 7.88
>> pcolor (X,Y,Z)
Figura 7.13 Esquema de grafico con pcolor
Manipulacin de grficos:
Fija el ngulo de visin especificando el azimut y la elevacin:
>> view(az,el)
Coloca su vista en un vector de coordenada cartesiana (x,y,z) en el espacio 3-D:
>>view([x,y,z])
Almacena en az y el los valores del azimut y de la elevacin de la vista actual:
>> [az,el]=view
Aade etiquetas de altura a los grficos de contorno:
>> clabel(C,h)
Aade una barra de color vertical mostrando las transformaciones:
>> colorbar
208
Ejemplo 7.89
>> surf (X,Y,Z)
>> view (10,70)
209
Ejemplo 7.90
>> surf (X,Y,Z)
>> view ([10,-12,2])
Figura 7.16 Esquema de grafico de superficie y vista
Ejemplo 7.91
>> surf (X,Y,Z)
>> [az,el] = view
az =
-37.5000
el =30
Ejemplo 7.92
>> [C,h] = contour (X,Y,Z);
>> clabel (C,h)
210
La sentencia colormap (M) instala a la matriz M como el mapa de color a utilizar por
la figura actual.
211
Ejemplo 7.93
>> surf (X,Y,Z)
>> colormap (pink)
Figura 7.18 Esquema de grafico de superficie y color en 3-D
v=0:2:10
b.
v=linspace(0,10,6)
c.
d.
v=[0 2 4 6 8 10]
Error
b.
[1 1 1;1 1 1]
c.
[1 1 1]
212
[1 0 0;0 1 0]
[0.2190 0.0470]
b.
[0.2190;0.0470]
c.
[3.2190,1.1617;5.4678,3.567]
d.
[3.2190,1.1617; 5.4678,3.567;6.2123,5.125]
b.
[2 3]
c.
d.
[3 2]
v(4)
b.
v[4]
c.
v(3)
d.
v[3]
x=[3 2 1]
b.
[1 2 3]
c.
[7 6 5 4 3]
d.
x=[7 6 5]
x=[5 3 7 1]
213
Ninguna es correcta
c.
x=[3 1 5 7]
d.
Error
x=[3 2 1]
b.
x=[]
c.
x=[3 -1 1]
d.
x=[5 6 7]
10. Dado el vector v= [7 6 5 4 3 2 1]. Calcula lo que devuelve la instruccin: >>v (:)
a.
Error
b.
[7 6 5 4 3 2 1]
c.
[7 6 5 4 3 2 1]
d.
A= [0 0 0;0 0 0;0 0 0]
b.
A= [1 2 3;4 5 6;7 8 0]
c.
A=0
d.
A[3 3]=0
[2 3;5 6]
b.
[1 2;2 3]
c.
(1:2,2:3)
d.
[1:2,2:3]
[3 2 1;1 2 3]
b.
Error
c.
[7 8 9;4 5 6;1 2 3]
d.
14. Dada A= [4:-2:0; 2:3:8; 3:5:14]. Escribir la matriz que devuelve: (introduce todos los
elementos de la matriz uno por uno y en cada fila separada por espacios)
>>A (2,1)=5*A (3,2)-A (1,1)
15. Dada A= [4 2 0; 36 5 8; 3 8 13]. Escribir la matriz que devuelve: (introduce todos los
elementos de la matriz uno por uno y en cada fila separada por espacios)
>>D=A (1:2,2:3)
16. Dada A= [4 2 0; 36 5 8; 3 8 13]. Escribir la matriz que devuelve: (introduce todos los
elementos de la matriz uno por uno y en cada fila separada por espacios)
>>E=A (1:2, :)
17. Dada A= [4 2 0; 36 5 8; 3 8 13]. Escribir la matriz que devuelve: (introduce todos los
elementos de la matriz uno por uno y en cada fila separada por espacios)
>>F=A (:)
18. Dada A= [4 2 0; 36 5 8; 3 8 13]. Escribir la matriz que devuelve: (introduce todos los
elementos de la matriz uno por uno y en cada fila separada por espacios)
>>G=A (1:2)
19. Dada A= [4 2 0; 36 5 8; 3 8 13]. Escribir la matriz que devuelve: (introduce todos los
elementos de la matriz uno por uno y en cada fila separada por espacios)
>>H=A (:,3)
20. Dada A= [4 2 0; 36 5 8; 3 8 13]. Escribir la matriz que devuelve: (introduce todos los
elementos de la matriz uno por uno y en cada fila separada por espacios)
215
Error
b.
c.
d.
Ninguna es correcta
[6 8;10 12]
b.
Error
c.
[8 6;12 10]
d.
Ninguna es correcta
[]
b.
Error
c.
[3]
d.
[[3]]
[6;12;18]
216
Error
c.
[]
d.
[6 12 18]
28. Dado el vector v= [1 2 3], usando las funciones de lgebra, qu instruccin debemos
ejecutar para obtener la matriz: A= [1 0 0; 1 2 0; 0 0 3]?
29. Dada A= [1 2 3; 4 5 6; 7 8 9], qu instruccin debemos ejecutar para obtener la matriz: [1
0 0; 1 5 0; 0 0 9]?
30. Dada A= [1 2 3; 4 5 6; 7 8 9], qu instruccin debemos ejecutar para obtener la matriz: [1
2 3; 0 5 6; 0 0 9]?
31. Usando las funciones de lgebra lineal, Cmo podemos obtener la matriz: [0 1 0 0 0; 1 0
1 0 0; 0 1 0 1 0; 0 0 1 0 1; 0 0 0 1 0]?
32. Genera una matriz de tamao 6x6, que est formada en sus tres primeras filas y columnas
por una matriz de elementos aleatorios, en sus tres siguientes filas y sus tres primeras
columnas por la matriz identidad, en sus tres siguientes columnas y tres primeras filas
compuestas por ceros y en las tres ltimas filas y tres ltimas columnas por una matriz
diagonal compuesta por los elementos de la diagonal de A.
33. Representar grficamente en [0,10] la funcin.
f(x) = e(-x/4) *sin(x)
34. Representar grficamente en [-10,10] la funcin.
f(x) = (7*x2-sin(x))/(2*x+3)
35. Escribe una funcin que devuelva como resultado el mayor de los elementos de un vector.
36. Escribe una funcin que dada una matriz A de orden nxm, permute los renglones k e i.
Function [B]=permuta(A, k, i).
217
219
CAPITULO VIII
LENGUAJE DE PROGRAMACION C++
8.1 INTRODUCCION
El Lenguaje de Programacin C++ fue creado por Bjarne Stroustrup en 1985
como una extensin del Lenguaje C, el mismo que es mas consistente y conocido
que otros lenguajes de programacin cientficos.
Abstraccin de Datos
220
8.2 OPERADORES
Definicin 8.2 Son smbolos que se utiliza para manipular datos.
A = 3;
A = b;
A=b=c=3;
A=b=c=d;
+ suma
suma = a + b
++ Incrementar un uno
x = x + 1;
- resta
resta = a b
-- Decremento en uno
x = x - 1;
221
// x = x++; // x +=1;
// x = x - -; // x -=1;
i = i * j;
// i * = j;
/ Divisin
x= x / 2;
// x /=2;
% modulo
==
!=
>, <, >=, <= mayor, menor, mayor o igual y menor o igual
&&
&
and
( alt + 38 )
||
or
( alt + 124 )
not
222
* /%
+-
== =
&&
||
8.3.1 ENTEROS
Para nmeros enteros con el siguiente rango:
int
long
223
float
float
double
double
8.3.3 CARACTER
Para caracteres solos y cadenas de caracteres:
char [cantidad]
8.4 CONSTANTES
Definicin 8.8 Son aquellos datos que no pueden cambiar a lo largo de la ejecucin
de un programa.
Sintaxis:
1. Declarar la Variable
2. Variable = valor_segn_declaracin
224
Ejemplo 8.1
Ejemplo 8.2
#define pi 3.14159
8.5 VARIABLES
Definicin 8.9
void main()
}
225
void main()
8.6.1 ENTRADA
FUNCIN CIN : ( # include < stdio.h > # include < bcd.h > )
Sintaxis:
8.6.2 SALIDA
FUNCIN COUT: (# include < stdio.h > - # include< bcd.h >)
Forma:
Ejemplo 8.4
8.7.1 SELECTIVAS
Definicin 8.11
1ra Sintaxis:
if (Condicin _ verdadera)
Sentencias Ejecutables;
2da Sintaxis:
if (Condicin)
......................
Sentencias Ejecutables;
......................
228
else
......................;
Sentencias Ejecutables
......................;}
Observacin 8.1
&& (and)
|| (or)
Ejemplo 8.5
if (N % 2! = 1)
Ejemplo 8.6
SUELDO=SUELDO + 100;
else
SUELDO=SUELDO - 200;
B) SWITCH.- Esta sentencia permite ejecutar una de varias acciones, en funcin del
valor de una expresin.
Sintaxis:
switch (EXPRESION)
getch(); break;
getch(); break;
getch(); break;
Case 1:
Case 2:
5) Necesita utilizar la sentencia BREAK al finalizar cada CASE. Break hace que
la ejecucin del programa contine despus del SWITCH.
231
8.7.2 REPETITIVAS
Definicin 8.12 Estas instrucciones hacen que una seccin del programa se repita
un cierto nmero de veces. La repeticin continua mientras una condicin sea
verdadera, cuando la decisin es falsa el bucle termina y el control pasa a las
sentencias a continuacin del bucle, existen tres clases de Bucles for, while y
do...while.
A) FOR.- El bucle FOR, ejecuta una seccin de cdigo un nmero fijo de veces.
Sintaxis:
Sentencia Ejecutables;
.......................;
Sentencia Ejecutables;
...................;
Sentencia Ejecutables;
.....................;
....................;
232
exp1
exp2
exp3
Ejemplo 8.8
int i;
Ejemplo 8.9
int i;
Sintaxis:
233
.......................;
Sentencias Ejecutables;
...................... ;
Ejemplo 8.10
int c=1;
c + +;
Ejemplo 8.11
int c = 20;
while (c > = 1)
234
c--;
Observacin 8.2
UTILIZAR
cin.getline(nombre,40);
Observacin 8.3
UTILIZAR
setprecision (CANTIDAD_DE_DECIMALES)
float raiz_cuadrada, n;
235
Observacin 8.4
UTILIZAR
setw (CANTIDAD_DE_ESPACIOS)
cout << a << setw (5) << b << setw (5) << c; // Ancho
//tabulador
Sintaxis:
do
...................... ;
SENTENCIAS EJECUTABLES;
...................... ;
236
Ejemplo 8.12
SUMA = 0;
cin >> N;
do{
SUMA + = N;
cin >> N;
Ejemplo 8.13
COLOCAR
PROGRAMA
char OP;
do
clrscr();
cin >> N;
237
8.7.3 DE SALTO
Definicin 8.13 Estas instrucciones hacen que en un determinado momento de la
ejecucin del programa se traslade a otra parte o abandone una instruccin
repetitiva y pueda continuar con el resto del programa, existen tres clases: break,
continue y goto.
A) BREAK.- Hace finalizar la ejecucin del Ciclo bucle: DO, FOR, SWITCH,
WHILE ms interno que lo contenga.
Sintaxis:
break;
Ejemplo 8.14
n=1;
while(n < 5)
238
cout<< n;
if (n == 4)
break;
else
n++;
Sintaxis:
continue;
Ejemplo 8.15
n=1;
239
continue;
else
cout<< n;
n++;
Sintaxis:
goto etiqueta;
......................
......................
Ejemplo 8.16
240
cin >>a;
8.8 FUNCIONES
Definicin 8.14 Es una coleccin independiente de declaraciones y sentencias,
generalmente realiza una tarea especfica, En C++ existe una funcin por naturaleza
y es el programa principal:
void main ( )
241
void main( )
Funcin1( )
Funcin2( )
Funcin1 ( );
Instrucciones;
Instruccin;
Funcin2 ( );
Instrucciones;
Instruccin;
Observacin 8.5
242
el
encabezado de la funcin
Sintaxis:
SENTENCIAS EJECUTABLES;
return [VARIABLE;]
// Variables de Salida
Donde:
TIPO
NOMBRE
243
FORMAS:
Funcin Sin Argumentos
SUMA ( );
int
SUMA ( );
int
int
Sintaxis:
return variable;
244
return (N)
return (N + 2)
return (N * 2)
LLAMADA A LA FUNCIN
Una llamada se realiza para que la funcin tenga efecto.
Sintaxis:
Ejemplo 8.17
Suma ( )
Su = suma ( )
245
Pasos:
Factorial. hpp)
Sintaxis:
# include NombredelFichero.hpp
8.10 ARREGLOS
Definicin 8.16 Los arreglos son estructuras de datos, que permiten el
almacenamiento masivo de informacin.
246
NOMBRE
....
Dato 1
Dato 2
.....
n
Dato N
DEL
ARREGLO
ndice
247
Ejemplo 8.18
0
NOTAS
NOMBRES
08
ANA
PROMEDIOS 10.5
09
10
3
11
4
10
LUISA LIZA
JANET
ELISA
11.50
19.55
0.025
3.45
NOMBRES [ 3 ]
PROMEDIOS [ 2 ]
Sintaxis:
Observacin 8.7
Ejemplo 8.19
Declarar el ingreso de 5 notas enteras: int notas [ 5 ] ;
248
10
13
11
10
13
11
10
13
11
10
13
11
ndice Columnas
Datos
249
(NMERO [ 1 ][ 1 ])
(NMERO [ 4 ][ 3 ])
Sintaxis:
Observacin 8.8
Ejemplo 8.22
while(w!=z)
{
if(w>z)
w=w-z;
else
z=z-w;
}
}
int mcm(int x,int y,int k)
{
int m;
m=x*y/k;
cout<<"El MINIMO COMUN MULTIPLO es: "<<m;
}
3. Realizar el Mximo Comn Divisor de 2 nmeros ingresados, utilizando
Recursividad.
#include<conio.h>
#include<bcd.h>
#include<stdio.h>
int n1,n2,m2,m1,mayor,menor,r;
void main()
{
clrscr();
253
mayor=n1;
menor=n2;
}
else
{
mayor=n2;
menor=n1;
}
while(mayor%menor!=0)
{
r=mayor%menor;
mayor=menor;
menor=r;
}
cout<<menor;
getch();
}
4. Funcin recursiva para listar los 100 primeros nmeros primos.
#include<conio.h>
#include<stdio.h>
#include<bcd.h>
int divisor();
int primos();
254
clrscr();
getch();
}
int primos()
{
if(i>450)
return 0;
else
{
if((i%2!=0)&&(i%3!=0)&&(i%5!=0)&&(i%7!=0))
cout<<i<<"\t";
i+=1;
}
primos();
}
5. Funcin recursiva para listar los 30 primeros nmeros primos.
#include<bcd.h>
#include<stdio.h>
#include<conio.h>
int primos();
int i=2;
255
clrscr();
cout<<"los
30
primeros
nmeros
primos
son:\t";
cout<<1<<"\t"<<2<<"\t"<<3<<"\t"<<5<<"\t"<<7;
primos();
getch();
}
int primos()
{
if (i>110)
return 0;
else
if((i%2!=0)&&(i%3!=0)&&(i%7!=0)&&(i%5!=0))
cout<<"\t"<<i;
i+=1;
primos();
}
6.-Construir una funcin que reciba un numero entero de 4 cifras y determine el
digito mayor as como el digito menor contenido en dicho numero.
Ejemplo: 1520
Digito mayor: 5
Digito menor 0
#include<conio.h>
#include<stdio.h>
#include<bcd.h>
compara1(int a);
256
void main()
{
int h,n,i,b,a,d;
clrscr ( );
cin>>n;
i=1; d=1000;
while(i<5)
{
a=n/d;
b=n%d;
d=d/10;
n=b;
i++;
// cout<<"\n"<<a;
compara1(a);
compara2(a);
}
cout<<"\n\n el mayor es :"<<mayor;
cout<<"\n\n el menor es :"<<menor;
getch();
}
compara1(int a)
257
// 1 > 0
// mayor=1
else
mayor=mayor;
return mayor;
}
compara2 (int a)
{
// 1 < 0
// menor=1
else
menor=menor;
return menor;
}
Aqu se especifican los elementos que la componen, as como los tipos de datos, cada
elemento de la estructura recibe el nombre de miembro (campo de registro).
Una vez declarado la Estructura se tiene que DEFINIR una variable que sea del tipo
de Estructura que se declaro.
Para hacer REFERENCIA dentro del programa a una variable de tipo Estructura se
separan por un punto por cada campo utilizado.
Sintaxis:
struct Nombre_estructura
{
tipo1 campo_1;
tipo2 campo_2;
.........................
tipo campo_n;
};
1RA FORMA:
Nombre_estructura variables_de_tipo_estructura;
2DA FORMA:
struct Nombre_estructura
{
// Declaraciones de los miembros
} Variables_de_tipo_estructura;
259
Ejemplo 8.23
Declarar la estructura Datos con los siguientes campos: Nombre, Paterno, Materno, edad y
Sueldo de un alumno.
struct DATOS
{
char nombre [20], paterno [20], materno [20];
int edad;
float sueldo;
} ALUMNO;
if (alumno.sueldo == 500)
if (alumno.edad > 18)
cout << alumno.edad + 1;
260
Ejemplo 8.24
Programa que ingrese los siguientes datos para 3 alumnos: NOMBRES, EDAD Y
SUELDO, sin arreglos.
void main()
{
struct datos
{
int edad;
float sueldo;
} a1,a2,a3,a4,a5;
cout<<ingrese nombre del primer alumno: ; gets (a1.nombres);
cout<<Ingrese edad:; cin>> a1.edad;
cout<<Ingrese Sueldo:; cin>> a1.sueldo;
cout<<ingrese nombre del Segundo alumno: ; gets (a2.nombres);
cout<<Ingrese edad:; cin>> a2.edad;
cout<<Ingrese Sueldo:; cin>> a2.sueldo;
cout<<ingrese nombre del Tercer alumno: ; gets (a3.nombres);
cout<<Ingrese edad:; cin>> a3.edad;
cout<<Ingrese Sueldo:; cin>> a3.sueldo;
getch();
}
261
Nombre
Promedio
Edad
Acosta Ferrer
15
23
Calle de La Cruz
14
25
Soto Hernndez
10
20
................ ............
.............
...........
Ejemplo 8.25
Observacin 8.9
Ejemplo 8.26
Fecha de Nacimiento Da, mes, ao
Paterno, Materno, Nombres
Apellidos
Edad y promedio
struct datos
{
struct a
{
char nombre[20],paterno[20],materno[20];
} apellidos;
struct f
{
int dia,mes,ao;
263
CLASE IFSTREAM
Permite el manejo de archivos cuyo acceso sea solamente de Entrada (Lectura)
( I NPUT F ILE STREAM ).
Esta clase dispone de los siguientes mtodos o funciones ms utilizados:
-
open ( NOMBRE )
close( )
get ( CARACTER )
eof( )
Abre el Archivo
Cierra el Archivo
Obtiene el carcter o byte
CLASE OFSTREAM
Permite el manejo de archivos solamente de grabacin o salida Escritura
(O UTPUT F ILE STREAM ).
Esta clase dispone de los siguientes mtodos o funciones ms utilizados:
264
open ( NOMBRE)
close( )
put (CARACTER)
eof( )
Abre el archivo
Cierra el archivo
Graba un caracter o byte
CLASE FSTREAM
Permite el manejo de archivos cuyo acceso sea de entrada, de salida, o de entrada y
salida a la vez (File Stream).
ios : : in
ios : : out
ios : : app
ios : : binary
close( )
eof ( )
Abrir un archivo
265
Cerrar un archivo
Sintaxis:
fstream NOMBRE_ARCHIVO;
NOMBRE_ARCHIVO.open (Nombre.dat, ios : : in);
fstream NOMBRE_ARCHIVO ( NOMBRE.DAT , ios : : in );
Ejemplo 8.27
// DECLARACION
fstream ARCHIVO1;
ARCHIVO1.open (DATOS.DAT, ios:: in);
// DECLARACION
fstream ARCHIVO1 (DATOS.DAT, ios:: in);
266
B) CERRAR UN ARCHIVO
Al cerrar un archivo no elimina su contenido solo lo desconecta del archivo. Una
llamada OPEN lo puede cancelar nuevamente.
Normalmente va al final de cada programa.
Sintaxis
Nombre_Archivo.close ( );
Ejemplo 8.28
Archivo1.close( );
CLASE FSTREAM
La entrada es de Lectura y Escritura normalmente para binarios.
B) CERRAR EL ARCHIVO
close() ;
C) ESCRITURA DE CARACTERES DE FLUJO
ARCHIVO1.put ((char), CONTADOR_BYTES ++ );
// AQU SE PIDE EL INGRESO DE LOS DATOS
ARCHIVO1.write((char*)&Estructura, TAMAO_ESTRUCTURA_BYTE);
Observacin 8.10
El Tamao de la Estructura en Bytes para la lectura no es conocido utilizar el comando:
sizeof(Estructura);
Ejemplo 8.29
sizeof(persona);
sizeof(empleado);
268
}
x.close();
}
7.- Programa para la creacin de un archivo de texto
#include<stdlib.h>
#include<fstream.h>
#include<stdio.h>
273
clrscr();
filebuf archivo1;
if (archivo1.open("abc.txt",ios::out)==NULL)
{
cout<<"Error no se puede abrir el Fichero ";
exit(1);
}
ofstream escribir(&archivo1);
char linea[81];
cout<<"introducir datos y Finalizar con Ctrl+Z\n";
char *fin=gets(linea);
while(fin!=NULL)
{
escribir<<linea<<"\r\n";
fin=gets(linea);
}
archivo1.close();
}
8.- Programa para la lectura de un archivo de texto
#include<conio.h>
#include<bcd.h>
274
fstream archivo("copia.dat",ios::out);
char car;
while(cin.get(car))
archivo.put(car);}
10.- Escribe datos dentro de un archivo binario utilizando las funciones put y write para 5
registros empleado.
#include<conio.h>
#include<stdio.h>
275
struct datos
{
char nombre[30];
int edad;
float salario;
} empleado;
ofstream empresa("registros.dat",ios::binary);
if (!empresa)
{
clrscr();
cout<<"No se puede abrir archivo Registros.dat";
return;
}
clrscr();
int numero=0;
while (numero<5 && empresa )
{
empresa.put((char)numero++);
cout<<"Ingrese nombre :";
cin>>empleado.nombre;
cout<<"Ingrese edad :";
cin>>empleado.edad;
cout<<"Ingrese Salario :";
cin>>empleado.salario;
empresa.write((char*)&empleado,sizeof(empleado));
}
getch();
empresa.close();}
11.- Lectura de Datos Binarios del Ejercicio 10
#include<conio.h>
#include<stdio.h>
#include<bcd.h>
276
char nombre[30];
int edad;
float salario;
} empleado;
ifstream empresa("registros.dat",ios::binary);
if (!empresa)
{
clrscr();
cout<<"No se puede abrir archivo Registros.dat";
return;
}
clrscr();
int numero=0;
while (!empresa.eof() && numero<5)
{
empresa.get((char)numero++);
empresa.read((char*)&empleado,sizeof(empleado));
cout<<empleado.nombre<<"\t";
cout<<empleado.edad<<"\t";
cout<<empleado.salario<<"\n";
}
getch();
empresa.close();
}
empresa.get((char)numero++);
277
cout<<empleado.nombre<<"\t";
cout<<empleado.edad<<"\t";
cout<<empleado.salario<<"\n";
}
}
278
Ejemplo 8.30
1ERA FORMA: char NOMBRE1 (30), NOMBRE2 ( 30);
gets (NOMBRE1) ; gets ( NOMBRE2);
cout<<La unin de las cadenas es:<< strcat(NOMBRE1, NOMBRE2);
279
Ejemplo 8.31
1ERA FORMA:
Ejemplo 8.32
char NOMBRE1 (30),
gets (NOMBRE1);
280
Ejemplo 8.33
1ERA FORMA:
Ejemplo 8.34
1ERA FORMA:
char NOMBRE1(30),
gets (NOMBRE1);
Cadena
Base
Ejemplo 8.35
Realizar un programa que ingrese un numero entero y determine su base binaria
utilizar la funcin itoa.
# include <conio.h>
# include <string.h>
# include< stdio.h>
void main()
{
clrscr();
char a (15);
int n;
puts(ingrese un nmero a cambiar de base:);
cin>> n;
itoa (n, a, 16);
cout<< en base 2 es: <<a<</n;
getch() ;
}
283
NEGRO
VERDE PERICO
VERDE CLARO
ROJO
MORADO O VIOLETA
CAF CLARO
GRIS CLARO
COLORES CLAROS
-
GRIS FUERTE
10
VERDE
11
AZUL CLARO
12
ROJO CLARO
13
ROSA MEXICANO
14
AMARILLO
15
BLANCO
284
VERTICAL
initgraph(&controlador, modo, );
/* Aqu colocar los comandos de creacin de grficos */
getch( );
closegraph( );}
285
2. LINE
3. ARC
Dibuja un arco
arc(x , y , anguloinicio , angulofinal , radio);
4. BAR
5. BAR3D
6. RECTANGLE
0 topoff
Crea un rectngulo
rectangle(x1,y1,x2,y2)
7. LINETO
8. CLEARDEVICE :
Limpia Pantalla
cleardevice( );
9. SETCOLOR
10. SETBKCOLOR :
11. PIESLICE
12. SETCOLOR
forma horizontal
forma vertical
1. SETTEXTSTYLE
2. OUTTEXTXY
287
289
23. Permitir el ingreso de N datos a una estructura de arreglos con los siguientes campos:
PATERNO, MATERNO, NOMBRES, EDAD, SEXO, PROMEDIO DE NOTAS.
Generar el siguiente men :
Salir
Su opcin es:
24. Se pide emitir la planilla de pago del personal de una empresa considerando los
siguientes datos por empleado. Cdigo, Apellidos (nombres, paterno, materno),
Sueldo (Bsico, Horas extras, Bruto).
PLANILLA DE SUELDOS
HORAS
CODIGO
XXXX
XXXX
XXXXXX
XXXXXX
XXXXXX
XXXXXX
XXXXX
XXXXX
999.99
99
BRUTO
999.99
999.99
99
BRUTO
999.99
25. En una Biblioteca se desea tener un control sobre los prstamos de sus libros, los
cuales tienen los siguientes datos: CODIGO, TITULO, AUTOR, AO DE EDICION,
FECHA DE DEVOLUCION. Realizar el siguiente men :
291
Consulta
Salir
Su opcin es:
Formato de Consulta:
Cdigo del Libro
Titulo
: xxxx xxx
Autor
: xxxxx xxxx
29. Crear un archivo de texto llamado DATOS.TXT para los programas de Ficheros, el
primero guardara los datos personales del autor del programa (nombres, paterno,
materno), el siguiente programa mostrara el contenido del mismo.
30. Crea un programa de fichero que agregue los siguientes datos al archivo
DATOS.TXT, edad, sexo, Estado Civil.
31. Crear un Programa que pida el nombre del fichero y luego llenar N personas a un
Arreglo de Estructuras con los siguientes campos: CODIGO, NOMBRES,
PATERNO, MATERNO. Utilizando Funciones.
32. Crear un programa que Lea un Archivo de Texto y muestre los contenidos de los
archivos creados en el programa del ejercicio N 31, utilizando Funciones.
33. Crear un programa que permita agregar ms datos o informacin a los registros
creados en el ejercicio N 31.
34. Crear el Siguiente men de opciones, Todos con uso de Funciones
MEN DE OPCIONES
1. Ingreso de datos al fichero
2. Listado de los datos del fichero
3. Agregar datos al fichero
293
DESCRIPCION CANTIDAD
PRECIO
TOTAL
A001
MEN 1
4.00
12.00
....
....
....
.....
.....
36. Crear un archivo Binario que ingrese 10 registros con los siguientes campos ORDEN,
NOMBRE, PATERNO, EDAD, SUELDO de una Estructura de datos.
37. Crear un programa que lea los datos creados en el archivo binario del ejercicio N 36.
38. Crear un programa que ingrese un nmero de Orden y muestre a que registro le
pertenece. Utilizar el archivo del ejercicio N 36.
39. Realizar los 3 programas anteriores en un men, utilizando funciones, estructura,
Binarios.
294
ESPECIALIDAD
DEL
ALUMNO
DESCRIPCIN CANTIDAD
PRECIO
TOTAL
A001
Producto
4.00
12.00
....
....
....
.....
.....
295
Numero de caracteres.
Convertirlos en maysculas
Convertirlas en minsculas.
Texto invertido.
Salir.
44. Permitir el ingreso de una clave para realizar un programa a cualquiera y que solo
permite el ingreso de 3 veces la clave luego emitir el mensaje ERROR DE CLAVE y
terminar el programa.
45. Determinar si una cadena de caracteres es un palndromo ( es un texto que se lee igual
hacia la derecha o hacia la izquierda) Ejemplo: Radar, somos
46. Realizar un programa que ingrese un nmero entero de no ms de 4 cifras y mostrar el
equivalente en palabras. Ejemplo : 2000 dos mil 2001 dos mil uno
296
DISCUSIN
Considerando que el presente trabajo no tiene resultados experimentales,
obtenidos en gabinete o laboratorio no es posible realizar una discusin en ese
sentido. Sin embargo podemos realizar una discusin respecto de otros trabajos.
La elaboracin del texto esta destinada al dictado de la asignatura
Programacin de computadoras, estructurado en xxxxx captulos donde se exponen
los principales conceptos de la informtica y sus aplicaciones.
El texto PROGRAMACION DE COMPUTADORAS Y SUS APLICACIONES
a diferencia de otros, ha sido redactado en un lenguaje simple e incluso por cada
captulo se presenta una relacin de ejemplos desarrollados para una mejor
comprensin. La mayora de los textos responsables de los temas tratados se
encuentran escritos en diferentes idiomas, lo que dificulta su entendimiento por
parte del estudiantado. Por lo que estos textos no pueden ser usados en el dictado
de la asignatura.
297
REFERENCIAS BIBLIOGRAFICAS
1.- JOYANES AGUILAR, LUIS;
Fundamentos de programacin,
C++ a su alcance,
Madrid: McGraw-Hill, 1a edicin, 1994.
Matlab,
Mxico:
PrenticeHall,
1a
edicin, 2000.
7.- STROUSTRUP, BJARNE.
8. - STROUSTRUP, BJARNE.
298
Effective C++,
Madrid: Addison Wesley, 2a edicin, 1997.
299
APENDICE
DIAGRAMA DE LAS ESTRUCTURAS DE DATOS
300