You are on page 1of 155

Gua temtica de aprendizajes

para entornos virtuales


Chiclayo noviembre de 2012

Luis Alberto Vives Garnique
Docente experto PEaD USS Virtual

Introduccin a la
Ingeniera de Sistemas
Asignatura
Material para el docente

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

2















Rector
Dr. Humberto Llempn Coronel

Vicerrector Acadmico
Mg. Alcibades Sime Marques

Decano de Facultad Derecho
Dr. Daniel Cabrera Leonardini

Decano Facultad de Ingeniera
Mg. Jorge Lujan Lpez

Decano Facultad de Humanidades
Mg. Nicols Valle Palomino

Decano de la Facultad de Ciencias Empresariales
Mg. Alfredo Daz Jave

Directora del PEaD
Mg.. Lady Lora Peralta


Gua temtica de aprendizajes
para entornos virtuales
__________________________
Introduccin a la Ingeniera de Sistemas
Luis Alberto Vives Garnique

Universidad Seor de Sipn
Programa Acadmico de Educacin a Distancia

Edicin y tratamiento didctico
rea de Desarrollo Pedaggico PEaD

Primera edicin octubre 2012

Chiclayo: Av. Luis Gonzles 1004 Esq. Con Lora y Cordero
Telf. 481615
Campus USS: Carretera a Pimentel km. 5 / Telf.: 51 74 481615
Fax: 51 74 236091
http://www.uss.edu.pe/

Introduccin a la Ingeniera
de Sistemas
Asignatura
Gua temtica de aprendizajes
para entornos virtuales

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

3
ndice
Pg.

Presentacin ..
Programacin de contenidos de aprendizaje


PRIMERA SEMANA
Definiciones bsicas de fundamentos de programacin
Bienvenida
Ruta de aprendizaje primera semana

Tema 1: Definiciones bsicas de fundamentos de programacin ..
Introduccin al tema
Aprendizajes esperados: Capacidad / Actitudes
Mapa conceptual referido al tema
Desarrollo de los contenidos de aprendizaje
1.1 Concepto de algoritmo - Concepto de programa
- Traductores e intrpretes - Los lenguajes de programacin
1.2 Datos, tipos de datos y operaciones primitivas
- Constantes, variables
- Operadores, expresiones.
1.3 Diseo del Algoritmo
- Pseudocdigo - Diagrama de flujo
- Diagrama N S
1.4 Concepto de Programa
- Elementos Bsicos de un Programa
1.5 Uso del Lenguaje de Programacin
1.6 Sintaxis del Lenguaje
Lecturas recomendadas (para ampliar conocimientos de la primera semana)
Conclusiones (de la primera semana)
Metacognicin de la primera semana
Control de lectura primera semana


SEGUNDA SEMANA
Estructuras de control I

Tema 2: Estructuras de control I ..
Introduccin al tema
Aprendizajes esperados: Capacidad / Actitudes
Mapa conceptual referido al tema
Desarrollo de los contenidos de aprendizaje
2.1 Estructuras Secuenciales
2.2 Estructuras Condicionales
- Simples (if)
- Dobles (if else)
- Mltiples (Switch)
2.3 Conversin de Algoritmos a Programas
2.4 Creacin de programas en Java
Lecturas recomendadas (para ampliar conocimientos de la segunda semana)
Conclusiones (de la segunda semana)
Metacognicin de la segunda semana
Control de lectura segunda semana

TERCERASEMANA
Estructuras de Control II

Bienvenida
Ruta de aprendizaje primera semana

Tema 3: Estructuras de Control II ....
Introduccin al tema
Aprendizajes esperados: Capacidad / Actitudes

05
06


07





08


Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

4
Mapa conceptual referido al tema
Desarrollo de los contenidos de aprendizaje
3.1 Estructuras Repetitivas (Mientras / Hacer, Mientras (While, Do-while)
3.2 Estructura Repetitiva Desde (For)
3.3 Conversin de Algoritmos a Programas
3.4 Creacin de programas en Java
Lecturas recomendadas (para ampliar conocimientos de la tercera semana)
Conclusiones (de la tercera semana)
Metacognicin de la tercera semana
Control de lectura tercera semana

CUARTA SEMANA
Introduccin a la Estructura de Datos
Bienvenida
Ruta de aprendizaje primera semana

Tema 4: Introduccin a la Estructura de Datos ..
Introduccin al tema
Aprendizajes esperados: Capacidad / Actitudes
Mapa conceptual referido al tema
Desarrollo de los contenidos de aprendizaje
4.1 Arreglos unidimensionales
4.2 Operaciones con vectores
4.3 Mtodos de ordenamiento y bsqueda
Lecturas recomendadas (para ampliar conocimientos de la cuarta semana)
Conclusiones (de la cuarta semana)
Metacognicin de la cuarta semana
Control de lectura cuarta semana


QUINTA SEMANA
Cadenas de Caracteres.
Bienvenida
Ruta de aprendizaje primera semana

Tema 5: Cadenas de Caracteres....
Introduccin al tema
Aprendizajes esperados: Capacidad / Actitudes
Mapa conceptual referido al tema
Desarrollo de los contenidos de aprendizaje
5.1 Cadena de Caracteres
5.2 Operaciones y funciones de cadenas.
Lecturas recomendadas (para ampliar conocimientos de la quinta semana)
Conclusiones (de la quinta semana)
Metacognicin de la quinta semana
Control de lectura quinta semana

SEXTA SEMANA
Introduccin a mtodos
Bienvenida
Ruta de aprendizaje primera semana

Tema 6: Introduccin a mtodos ....
Introduccin al tema
Aprendizajes esperados: Capacidad / Actitudes
Mapa conceptual referido al tema
Desarrollo de los contenidos de aprendizaje
6.1 Un Programa
6.2 Una Funcin
6.3 Una Subrutina (o Procedimiento)
Lecturas recomendadas (para ampliar conocimientos de la sexta semana)
Conclusiones (de la sexta semana)
Metacognicin de la sexta semana
Control de lectura sexta semana
SPTIMA SEMANA

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

5

Arreglos dimensionales
Bienvenida
Ruta de aprendizaje primera semana

Tema 7: Arreglos dimensionales ....
Introduccin al tema
Aprendizajes esperados: Capacidad / Actitudes
Mapa conceptual referido al tema
Desarrollo de los contenidos de aprendizaje
7.1 Arreglos bidimensionales
7.2 Operaciones con arreglos bidimensionales
7.3 Exposiciones Finales
Lecturas recomendadas (para ampliar conocimientos de la sptima semana)
Conclusiones (de la sptima semana)
Metacognicin de la sptima semana
Control de lectura sptima semana


Referencias bibliogrficas
Glosario






Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

6

Presentacin

Es una enorme satisfaccin presentar, la Gua temtica de aprendizajes para entornos
virtuales de la asignatura Fundamentos de programacin, que hemos elaborado segn
los lineamientos de planificacin curricular y diseo didctico, estipulados en el modelo
educativo del Programa Acadmico de Educacin Superior a Distancia - Virtual de la
Universidad Seor de Sipn.

En este documento, se desarrollan estructuralmente los contenidos de aprendizaje
planificados en el slabo del curso y que corresponden al plan de estudio de la escuela
Acadmico profesional de Ingeniera de Sistemas.

Para lograr las finalidades exigidas por la metodologa e-learning, en el tratamiento
didctico de los contenidos hemos incluido textos, imgenes, videos, direcciones
electrnicas, pg. web, etc. buscando siempre la comprensin de las temticas
abordadas, sin descuidar el rigor cientfico de la asignatura. Adems, con nuestra
produccin buscamos en todo momento que el alumno a distancia, sienta las
orientaciones del docente a travs de rutas de aprendizaje, actividades significativas y
sobre todo identifique constantemente el logro de sus aprendizajes a travs de controles
de lectura, as mismo conozca los criterios de evaluacin que demuestren el logro de las
competencias desarrolladas.


Adems esta gua cobra relevancia, pues, es el insumo principal para virtualizar nuestro
curso Fundamentos de Programacinj.








Luis Alberto Vives Garnique
Docente experto
PEaD USS Virtual










Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

7
PROGRAMACIN DE CONTENIDOS DE APRENDIZAJE

COMPETENCIAS
Implementar algoritmos y su codificacin en un lenguaje de programacin, aplicando las tcnicas de programacin, haciendo uso de su
capacidad lgica, habilidad y destreza, demostrando adems capacidades para el trabajo aplicativo y en equipo.
SEMANA TEMAS FINALIDADES FORMATIVAS

Semana 1

del 04 al 11 de mayo



Tema1: Definiciones bsicas de fundamentos de
programacin
.1.1. Concepto de algoritmo - Concepto de programa
- Traductores e intrpretes - Los lenguajes de programacin
.1.2. Datos, tipos de datos y operaciones primitivas
- Constantes, variables
- Operadores, expresiones.
.1.3. Diseo del Algoritmo
- Pseudocdigo - Diagrama de flujo
- Diagrama N S
.1.4. Concepto de Programa
- Elementos Bsicos de un Programa
.1.5. Uso del Lenguaje de Programacin Java
.1.6. Sintaxis del Lenguaje Java



Capacidades
Comprende los conceptos y principios bsicos de
la algoritmia y la programacin, para la resolucin
de problemas.

Analiza y disea algoritmos usando diagramas de
flujo, pseudocdigos y plasmndolos en un
programa, diferenciando la funcionalidad de las
estructuras bsicas de control.

Utiliza las estructuras bsicas de control en la
construccin de algoritmos y programas.


Actitudes

Reconoce la oportunidad de aplicar algoritmos y
programas en situaciones reales.

Distingue entre los diversos problemas la
oportunidad de utilizar estructuras de control.

Es creativo al generar planteamientos y
soluciones innovadoras a los problemas que se le
presentan.
Semana 2


Tema2: Estructuras de control I
2.1. Estructuras Secuenciales
2.2. Estructuras Condicionales
- Simples (if)
- Dobles (if else)
- Mltiples (Switch)
2.3. Conversin de Algoritmos a Programas
2.4. Creacin de programas en Java

Semana 3

Tema3: Estructuras de Control II

3.1. Estructuras Repetitivas
Mientras / Hacer
Mientras (While, Do-while)
Estructura Repetitiva Desde (For)
3.2. Conversin de Algoritmos a Programas
3.3. Creacin de programas en Java
Semana 4


Tema4: Introduccin a la Estructura de Datos
4.1. Arreglos unidimensionales
4.2. Operaciones con vectores
4.3. Mtodos de ordenamiento y bsqueda

Capacidades
Utiliza eficientemente estructuras de datos
estticas en la solucin de problemas.
Aplica adecuadamente algoritmos y programas
recursivos para resolver problemas especficos.
Implementa apropiadamente archivos de datos
para su aplicacin en problemas de nivel
intermedio.
Comprende el manejo de memoria de las
estructuras estticas.
Resuelve problemas asociados a la manipulacin
de cadenas.

Actitudes
Asume una actitud de respeto ante sus
semejantes, mostrndose responsable en las
diversas actividades.

Demuestra solidaridad en el trabajo cooperativo y
tolerancia en la resolucin de discrepancias en las
opiniones y actitudes de los dems.

Asume una actitud de respeto ante sus
semejantes, mostrndose responsable en las
diversas actividades.
Semana 5

Tema5: Cadenas de Caracteres.

5.1. Cadena de Caracteres
Operaciones y funciones de cadenas.

Semana 6

Tema6: Introduccin a mtodos
6.1. Modularizacin
6.2. Programacin con mtodos
Semana 7

Tema7: Arreglos dimensionales
6.3. Arreglos bidimensionales
6.4. Operaciones con arreglos bidimensionales
6.5. Exposiciones Finales



Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

8





Los mejores programadores son un orden de magnitud mejores, medidos en cualquier
estndar: creatividad conceptual, velocidad, ingenuidad de diseo o capacidad de resolver
problemas

Randall E. Stross











Bienvenida

Estimados estudiantes bienvenidos! a la primera semana del curso, en la cual conoceremos los
fundamentos necesarios para despertar tu lgica, la cual te llevara al mundo de la programacin y podrs
desarrollar soluciones a problemas de la realidad usando algoritmos y su codificacin en un lenguaje de
programacin.

Ruta de aprendizaje
Durante la primera semana que corresponde del 06 al 12 de mayo realizaremos las siguientes
actividades, no sin antes haber descargado y revisado el silabo del curso, la gua de aprendizaje y haber
respondido la evaluacin diagnstica, luego emprenderemos la siguiente ruta:

- Concepto de algoritmo - Concepto de programa
- Datos, tipos de datos y operaciones primitivas
- Diseo del Algoritmo
- Concepto de Programa
- Uso del Lenguaje de Programacin
- Sintaxis del Lenguaje

Es preciso recordarte que para que cumplas los objetivos planteados debes planificar tu tiempo, pues
estas actividades demandan 10 horas de estudio semanales.
Cordialmente
Ing. Luis Alberto Vives Garnique
Docente experto de la asignatura

Primera Semana
Conozcamos los principales conceptos que ayudan a explicar los fundamentos
de la programacin, el anlisis y diseo de los algoritmos y su codificacin en un
lenguaje de programacin, esto constituye una pieza clave para el desarrollo de
sistema de software
(06 al 12 de mayo)
F
u
e
n
t
e
:

I
m
a
g
e
n

e
x
t
r
a

d
a

d
e


i
n
t
e
r
n
e
t



Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

9
Tema 1

Definiciones bsicas de fundamentos de
programacin


Introduccin al tema

Imagnate que deseas realizar un programa sobre el clculo de horas a pagar de un trabajador
promedio, y solo llegas a sentarte frente a tu computadora sin haber planeado como enfrentar el
programa, llevas horas y horas ingresando cdigo y probando los resultados. Luego de x horas te
desesperas y an no has llegado a resolver lo del pago de horas adicionales trabajadas!.

Aqu puedes apreciar un ejemplo de lo que puede suceder si solamente llegas a escribir cdigo y
cdigo sin haber planificado antes lo que haras en el programa.

Aprendizajes esperados

Conozcamos ahora las capacidades y actitudes a desarrollar en este primer tema:
Capacidades
- Comprende los conceptos y principios bsicos de la algoritmia y la programacin, para la
resolucin de problemas.

Actitudes
- Reconoce la oportunidad de aplicar algoritmos y programas en situaciones reales.
- Distingue entre los diversos problemas la oportunidad de utilizar estructuras de control.
- Es creativo al generar planteamientos y soluciones innovadoras a los problemas que se le
presentan.





F
u
e
n
t
e
:

I
m
a
g
e
n

e
x
t
r
a

d
a

d
e


i
n
t
e
r
n
e
t



Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

10
Mapa conceptual referido al tema

Observa detenidamente el siguiente esquema, en el encontrars de un vistazo de manera
sintetizada los principales concepto de la temtica que abordaremos. Qu conceptos o categoras te
llaman la atencin?






Fuente: Elaboracin propia






Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

11
Desarrollo de los contenidos de aprendizaje

1.1 ALGORITMOS
Se deriva de la traduccin al latn de la palabra rabe Alkhowarismi, nombre de un matemtico y
astrnomo rabe que escribi un tratado sobre manipulacin de nmeros y ecuaciones en el siglo
IX.
Un algoritmo es un mtodo para resolver un problema mediante una serie de pasos
precisos, definidos y finitos.
Caractersticas de los Algoritmos

1. Preciso, tiene que indicar el orden de realizacin en cada paso.
2. Definido, es decir, si el algoritmo se prueba dos veces, en estas dos pruebas, se debe
obtener el mismo resultado.
3. Finito, es decir, que el algoritmo tiene que tener un nmero determinado de pasos.

Ejemplos de algoritmos cotidianos:
A. Ver una pelcula
1. Buscar el DVD de la pelcula
2. SI el televisor y el DVD se encuentran apagados, encenderlos
3. Sacar el DVD de la pelcula del estuche
4. Introducirlo en el DVD casetera
5. Tomar el control del televisor y del DVD
6. Dirigirme al sof
7. Ponerme cmodo
8. Disfrutar la pelcula
Fjate como he descrito en estos pasos el algoritmo para poder ver una pelcula en el DVD, este
pequeo algoritmo cumple con los requisitos descritos arriba, ya que cada paso precisa un orden
y tiene un orden de pasos finitos. En este algoritmo aparece la palabra SI remarcada en
maysculas, el uso de esta palabra la veremos ms adelante, cuando discutamos sobre las
estructuras de control.
Los algoritmos se pueden expresar por frmulas, diagramas de flujo, y pseudocdigos conocidos
como herramientas de programacin. Esta ltima representacin es la ms utilizada por su
sencillez y parecido al lenguaje humano.
B. Cambiar una llanta a un carro.
1. Inicio.
2. Traer gata.
3. Levantar el coche con la gata.
4. Aflojar tornillos de las llantas.
5. Sacar los tornillos de las llantas.
6. Quitar la llanta.

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

12
7. Poner la llanta de repuesto.
8. Poner los tornillos.
9. Apretar los tornillos.
10. Bajar la gata.
11. Fin.
1.2 Definicin de Lenguajes Algortmicos
Los algoritmos se pueden describirse utilizando diversos lenguajes. Cada uno de estos lenguajes
permiten describir los pasos con mayor o menor detalle.
La clasificacin de los lenguajes para algoritmos puede enunciarse de la siguiente manera:
- Lenguaje Natural
Es aqul que describe en espaol, para nuestro caso, los pasos a seguir utilizando un
vocabulario cotidiano. Se le conoce como lenguaje jerga cuando se utilizan trminos
especializados de una determinada ciencia, profesin o grupo.
- Lenguaje de Diagrama de Flujo
Es aqul que se vale de diversos smbolos para representar las ideas o acciones a desarrollar.
Es til para organizar las acciones o pasos de un algoritmo pero requiere de etapas posteriores
para implementarse en un sistema de cmputo.
- Lenguaje Natural de Programacin
Son aqullos que estn orientados a la solucin de problemas que se definen de una manera
precisa. Generalmente son aplicados para la elaboracin de frmulas o mtodos cientficos.
- Lenguaje de Programacin:
Es un conjunto de palabras, smbolos y reglas sintcticas mediante los cuales puede indicarse a
la computadora los pasos a seguir para resolver un problema.
Los lenguajes de programacin pueden clasificarse por diversos criterios, siendo el ms comn
su nivel de semejanza con el lenguaje natural, y su capacidad de manejo de niveles internos de
la mquina.
1.3 Los principales tipos de lenguajes utilizados son tres:
Lenguaje Mquina
Son aqullos que estn escritos en lenguajes directamente inteligibles por la mquina
(computadora), ya que sus instrucciones son cadenas binarias (cadenas o series de caracteres
de dgitos 0 y 1) que especifican una operacin y las posiciones (direccin) de memoria implicadas
en la operacin se denominan instrucciones de mquina o cdigo mquina. El cdigo mquina
es el conocido cdigo binario.

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

13
Las instrucciones en lenguaje mquina dependen del hardware de la computadora y, por tanto,
diferirn de una computadora a otra.
Ventajas del Lenguaje Mquina
Posibilidad de cargar (transferir un programa a la memoria) sin necesidad de traduccin
posterior, lo que supone una velocidad de ejecucin superior a cualquier otro lenguaje de
programacin. En la actualidad, las desventajas superan a las ventajas, lo que hace
prcticamente no recomendables a los lenguajes mquinas.
Lenguajes de Bajo Nivel
Son ms fciles de utilizar que los lenguajes mquina, pero al igual que ellos, dependen de la
mquina en particular. El lenguaje de bajo nivel por excelencia es el ensamblador. Las
instrucciones en lenguaje ensamblador son instrucciones conocidas como nemotcnicos. Por
ejemplo, nemotcnicos tpicos de operaciones aritmticas son: en ingls: ADD, SUB, DIV, etc.;
en espaol: SUM, RES, DIV, etc.
Una instruccin tpica de suma sera:
ADD M, N, P
Esta instruccin significa "sumar el contenido en la posicin de memoria M al nmero
almacenado en la posicin de memoria N y situar el resultado en la posicin de memoria P.
Evidentemente es ms sencillo recordar la instruccin anterior con un nemotcnico que su
equivalente en cdigo mquina.
0110 1001 1010 1011
Un programa escrito en lenguaje ensamblador, requiere de una fase de traduccin al lenguaje
mquina para poder ser ejecutado directamente por la computadora.
El programa original escrito en lenguaje ensamblador se denomina programa fuente y el
programa traducido en lenguaje mquina se conoce como programa objeto, el cual ya es
directamente entendible por la computadora.
Ventajas del lenguaje ensamblador frente al lenguaje mquina
- Mayor facilidad de codificacin y, en general, su velocidad de clculo.
Lenguajes de Alto Nivel
Estos lenguajes son los ms utilizados por los programadores. Estn diseados para que las
personas escriban y entiendan los programas de un modo mucho ms fcil que los lenguajes
mquina y ensambladores. Un programa escrito en lenguaje de alto nivel es independiente de la
mquina (las instrucciones no dependen del diseo del hardware o de una computadora en
particular), por lo que estos programas son portables o transportables. Los programas escritos
en lenguaje de alto nivel pueden ser ejecutados con poca o ninguna modificacin en diferentes
tipos de computadoras.


Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

14
1.4 Fases para la Resolucin de Problemas
En esta seccin describimos brevemente las fases o pasos a seguir para la resolucin de
problemas con ayuda de la computadora.
- Definicin y Anlisis del Problema
Esta fase requiere una clara definicin donde se contemple exactamente lo que debe hacer el
programa y el resultado o solucin deseada.
Dado que se busca una solucin se precisan especificaciones de entrada y salida.
Para poder definir bien un problema es conveniente responder a las siguientes preguntas:
- Qu entradas se requieren? (cantidad y tipo)
- Cul es la salida deseada? (cantidad y tipo)
- Qu mtodo produce la salida deseada?

- Diseo del Algoritmo
En la fase de anlisis en el proceso de programacin se determina que hace el programa. En la
fase de diseo se determina como hace el programa la tarea solicitada.
Los mtodos utilizados para el proceso del diseo se basan en el conocido divide y vencers. Es
decir la resolucin de un problema complejo se realiza dividiendo el problema en sub problemas y
a continuacin dividir estos sub problemas en otros de nivel ms bajo, hasta que sea
implementada una solucin en la computadora. Este mtodo se conoce tcnicamente como
diseo descendente (top-down) o modular.
Cada programa bien diseado consta de un programa principal (el mdulo de nivel ms alto) que
llama a subprogramas (mdulos) de nivel ms bajo, que a su vez pueden llamar a otros
subprogramas.
Los mdulos pueden ser planeados, codificados, comprobados y depurados independientemente
y a continuacin combinarlos entre s. Este proceso implica la ejecucin de estos pasos hasta que
el programa se ha terminado:
- Programar un mdulo
- comprobar el mdulo
- Si es necesario, depurar el mdulo
- Combinar el mdulo, con el resto de los otros mdulos
El diseo del algoritmo es independiente del lenguaje de programacin en el que se vaya a
codificar posteriormente.
Implementacin del Algoritmo
Para implementar un algoritmo en la computadora, se debe ejecutar los siguientes pasos:
- Codificacin
- Compilacin y ejecucin
o Verificacin
o Depuracin
- Documentacin



Codificacin:

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

15
Es la escritura en un lenguaje de programacin de la representacin de un algoritmo. Dado que el
diseo del algoritmo es independiente del lenguaje de programacin utilizado en su
implementacin, el cdigo puede ser escrito con igual facilidad en un lenguaje o en otro.
Si la codificacin original se realiz en papel, previo a la compilacin deber existir un paso
conocido como trascripcin.

Compilacin y ejecucin:
Una vez que el algoritmo se ha convertido en un programa fuente, es preciso introducirlo en
memoria mediante el teclado y almacenarlo posteriormente en un disco. Esta operacin se realiza
con un editor de texto, posteriormente el programa fuente se convierte en un archivo de programa
que se guarda en un disco.
El programa fuente debe ser traducido a lenguaje mquina. Este proceso se realiza con el
compilador y el sistema operativo que se encarga prcticamente de la compilacin. Si al compilar
el programa fuente se presentan errores (errores de compilacin), es necesario volver a editar el
programa, corregir los errores y compilar de nuevo. Esto se repite hasta que ya no se presenten
ms errores, obtenindose el programa objeto, el cual todava no es ejecutable directamente. Al
ya no existir errores en el programa fuente se debe instruir al sistema operativo para que efecte
la fase de montaje o enlace, del programa fuente con las libreras del programa del compilador.
Este proceso de montaje produce un programa ejecutable.

Documentacin:
La importancia de la documentacin debe ser destacada por su influencia en la etapa final, ya que
programas pobremente documentados son difciles de leer, ms difciles de depurar y casi
imposibles de mantener y modificar.
Puede ser interna y externa. La documentacin interna es la contenida en lneas de comentarios.
La documentacin externa incluye anlisis, diagramas de flujo y/o pseudocodigos, manuales de
usuarios con instrucciones para ejecutar el programa y para interpretar los resultados.
La documentacin es vital cuando se desea corregir posibles errores futuros o bien cambiar el
programa. Estos cambios se denominan mantenimiento del programa.
Adems es de buena costumbre para todo buen programador, dejar comentado su cdigo, esto
es para que el futuro programador pueda darle mantenimiento fcilmente a el programa, o incluso,
si es el mismo creador quien debe darle mantenimiento.

Autoevaluacin

Explora ahora tu nivel de aprendizaje.

1. Indica la falsedad o veracidad de las siguientes expresiones: 2 puntos cada uno.

Expresiones
a. El algoritmo es independiente del Lenguaje de Programacin V F
b. Un Algoritmo debe ser preciso V F
c. Si se sigue dos veces un algoritmo, llegamos a obtener dos
respuestas diferentes
V F
d. El diagrama de flujo se presenta por medio de cdigos

V F



Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

16
2. Que diferencias encuentras entre un Lenguaje de Programacin y un Lenguaje de Bajo Nivel
3. Describa las fases para resolver problemas con respecto a los algoritmos
4. Mencione 5 lenguajes de programacin existentes
5. Mencione y describa 3 tcnicas ms usadas para representar los algoritmos.

Taller N 01
Como ejercicio te recomendara que escribieras algunos algoritmos de sucesos en tu vida cotidiana,
como por ejemplo:
1. Encender el auto.
2. Ir al cine.
3. Hacer un depsito al banco.
4. Ir a la playa.
5. Imprimir un documento escrito en un procesador de texto.
6. Realizar una llamada telefnica desde un telfono pblico.
7. Cambiar la llanta de un vehculo.
8. Comprar una prenda.
9. Jugar futbol.
10. Registrar Matricula en la USS.
11. Hacer un viaje a Lima por avin.
12. Quemar un archivo de texto en un Cd.
13. Formatear el disco duro de la Pc.
14. Crear un carpeta en el disco D:/ de tu Pc.
15. Buscar el nmero de telfono de un alumno en tu celular
16. Quitar un foco quemado de un techo
17. Encontrar la media de una lista indeterminada de nmeros positivos terminada con un nmero
negativo.











Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

17
1.5 ENTIDADES BSICAS PARA EL DESARROLLO DE ALGORITMOS

1.5.1 Datos
Todos los datos tienen un tipo asociados con ellos que nos servir para poder conocer con que
informacin trabajaremos. Es decir, cuando ingresemos el sueldo de un trabajador necesitamos que
este contenga decimales, o al solicitar la edad de una persona est tiene que estar con nmeros
enteros u otros casos. Adems la suma entre caracteres no tiene sentido.
La asignacin de tipos a los datos tiene dos objetivos principales:
Detectar errores de operaciones aritmticas en los programas
Determinar cmo ejecutar las operaciones.

Tipos de Datos Numricos
Dentro de estos tipos se puede hacer mencin de los tipos enteros (integer), reales o de coma
flotante, y de los exponenciales.
- Enteros
Es un conjunto finito de los nmeros enteros. Los enteros son nmeros completos, no
tienen componentes fraccionarios o decimales y pueden ser negativos y positivos.
Algunos ejemplos son:
- 7
- -10
- 15
- -50
- Reales
Consiste en un subconjunto de los nmeros reales. Estos nmeros siempre tienen un
punto decimal y pueden ser positivos o negativos. Un nmero real consiste de un
nmero entero y una parte decimal. Algunos ejemplos son:
- 0.52
- 6.579
- -47.23
Tipos de Datos Carcter o Tipo Cadena (String)
Los tipos de datos carcter se dividen tambin en caracteres ASCII, como por ejemplo: a A
, /, * ; entre otros.
El otro grupo de caracteres son los strings o cadenas de caracteres, como por ejemplo:
"Hola Mundo".
- Tipo Carcter
Es un conjunto finito y ordenado de caracteres que la computadora reconoce. Un dato
de este tipo contiene solo un carcter.

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

18
Reconoce los siguientes caracteres:
- Caracteres Alfabticos (A,B,C,Z,a,b,cz)
- Caracteres Numricos (0,1,2,9)
- Caracteres Especiales (+, -, *, /, ^, . , ;, <, >, $, .)
- Tipo Cadena (String)
Es una sucesin de caracteres que se encuentran delimitados por una comilla
(apstrofe) o dobles comillas, segn el tipo de lenguaje de programacin. La longitud de
una cadena de caracteres es el nmero de ellos comprendidos entre los separadores o
delimitadores.
Ejemplos:
- Hola AMOR
- 30 de mayo del 2020
- Enunciado cualquiera
Nota: Los smbolos disponibles para la formulacin de caracteres y de cadenas son
aqullos que se encuentran en el cdigo ASCII
MUY MUY IMPORTANTE
Revisa el cdigo ASCII (American Standard Code for Information Interchange).
Indica el valor que tiene la letra A y la letra a, as como tambin la letra B mayscula y
minscula.
Resolver: Qu relacin encuentras entre sus valores?
Cuadro N01: Tipos de datos, palabras reservadas y tamao en Byte
TIPO PALABRA RESERVADA TAMAO EN BYTES
sin valor Void 0
carcter Char 1
entero Int 2
coma flotante (simple precisin) Float 4
coma flotante (doble precisin) Doubl 8
Fuente: Elaboracin propia
Tipos de Datos Lgicos
Los tipos lgicos solamente pueden tomar los valores verdadero (true) o falso (false).
Se utiliza para representar las alternativas (si/no) a determinadas condiciones. Por ejemplo,
cuando se pide si un valor entero sea primo, la respuesta ser verdadera o falsa, segn
sea.

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

19
- And Y
- Or O
- Not Negacin
1.5.2 Los Identificadores
Representan los nombres de los objetos de un programa (constantes, variables, tipos de datos,
procedimientos, funciones, etc.). Es una secuencia de caracteres que puede ser de cualquier
longitud, aunque tiene ciertas reglas que hay que seguir, las cuales son:

1. Debe comenzar con una letra o "_" y no puede contener espacios en blanco.
2. Letras, dgitos y caracteres subrayados ("_") estn permitidos despus del primer carcter.
En sntesis un identificador es un mtodo para nombrar a las celdas de memoria en la
computadora, en lugar de memorizarnos una direccin de memoria.
Se utilizan para nombrar variables, constantes, procedimientos y funciones.
Ejemplos
- numero
- horas_trabajadas
- _prom
- $total_pago
- promedio

Constantes

Las constantes son valores que no pueden cambiar en la ejecucin del programa o de un
algoritmo. Recibe un valor en el momento de la compilacin del programa y este no puede ser
modificado.

CONSTANTES REALES VALIDAS CONSTANTES REALES NO VALIDAS
1.26
-0.34
+5.236
1, 26
-0, 34
+5, 236

- CONSTANTES TIPO CARCTER:
A , B` , .. + , ,.1 , 2 ,
Una secuencia de caracteres se denomina una cadena y una constante tipo cadena
encerrada entre apstrofos.
Ejemplo:
Hola a todos

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

20
Feliz Aniversario

- CONSTANTES LOGICAS (BOOLEAN):
True (verdadero) o False(Falso)


Variables
Las variables son valores que se pueden modificar durante el desarrollo de un algoritmo o la
ejecucin de un programa. Al contrario de las constantes estas reciben un valor, pero este valor
puede ser modificado. Dependiendo del lenguaje de programacin hay diversos tipos de
variables: enteros, reales, lgicos, carcter, y de cadena.
Una Variable se identifica por los siguientes atributos:

NOMBRE TIPO
Debe ser significativo y debe tener
relacin con el objeto que representan.
Por Ejemplo:
EDAD
NOMBRE
NOTA
Pueden ser de tipo: entero, real o punto
flotante; carcter.
Siguiendo el Ej.

Integer
String
Integer o real

Clasificacin de las Variables
Por su Contenido Por su Uso
Numricas De Trabajo
Lgicas Contadores
Alfanumricas (String) Acumuladores
- Por su Contenido
Variable Numricas: Son aquellas en las cuales se almacenan valores numricos,
positivos o negativos, es decir almacenan nmeros del 0 al 9, signos (+ y -) y el punto
decimal. Ejemplo:

iva=0.15 pi=3.1416 costo=2500
Variables Lgicas: Son aquellas que solo pueden tener dos valores (cierto o falso)
estos representan el resultado de una comparacin entre otros datos.
Variables Alfanumricas: Est formada por caracteres alfanumricos (letras,
nmeros y caracteres especiales). Ejemplo:

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

21
Letra=a apellido=lopez direccion=Av. Libertad #190
- Por su Uso
Variables de Trabajo: Variables que reciben el resultado de una operacin
matemtica completa y que se usan normalmente dentro de un programa. Ejemplo:
suma=a+b+c
Contadores: Se utilizan para llevar el control del nmero de ocasiones en que se
realiza una operacin o se cumple una condicin. Con los incrementos generalmente
de uno en uno.
Acumuladores: Forma que toma una variable y que sirve para llevar la suma
acumulativa de una serie de valores que se van leyendo o calculando
progresivamente.
Expresiones
Son combinaciones de constantes, variables, smbolos de operacin, parntesis y nombres de
funciones especiales.
Una expresin consta de OPERANDOS y OPERADORES. Las expresiones se clasifican en:







Una expresin es un conjunto de datos o funciones unidos por operadores aritmticos, los
cuales se muestran en la siguiente tabla:

Operador Significado
+ Suma
- Resta
* Multiplicacin
/ Divisin
^ Exponenciacin
Mod Mdulo

1.5.3 Los Operadores
Operadores Div y Mod
El smbolo / se utiliza para la divisin real, y el operador Div representa la divisin entera.
Expresin Resultado
1. Aritmticas
2. Relacionales
3. Lgicas
4. Carcter
Aritmticas
Lgica
Lgica
Carcter

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

22
El smbolo mod o % se usa para obtener el residuo de la divisin de dos nmeros ENTEROS
Expresin
valores reales
Resultado Expresin
valores enteros
Resultado
10.5/3.0 3.5 10 Div 3 3
1/4 0.25 18 Div 2 9
2.0/4.0 0.5 30 Div 30 1
30/30 1.0 10 Mod 3 1
6/8 0.75 10 Mod 2 0

Operadores Relacionales
Permiten realizar comparaciones de valores de tipo numrico o carcter. Estos operadores
sirven para expresar las condiciones en los algoritmos. Proporcionan resultados lgicos.
Operador Significado
< Menor que
> Mayor que
= Igual que
<= Menor o igual que
>= Mayor o igual que
<> Diferente de


Operadores Lgicos
Son aqullos que permiten la combinacin de condiciones para formar una sola expresin lgica.
Utilizan operandos lgicos y proporcionan resultados lgicos tambin.
Operador Relacin
not Negacin (No)
and Conjuncin (Y)
or Disyuncin (O)
xor Disyuncin Exclusiva (O/SOLO)




X Y NOT(X) NOT(Y) X AND Y X OR Y X XOR Y
F F V V F F F
V F F V F V V
F V V F F V V
V V F F V V F
Se obtiene Verdadero si:
NOT El operando es falso
AND Ambos operandos son verdaderos
OR Al menos un operando es verdadero
XOR Solo uno de los operandos son verdadero

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

23

1.5.4 Asignacin
La operacin de asignacin es el modo de darle valores a una variable. La operacin de
asignacin se conoce como instruccin o sentencia de asignacin cuando se refiere a un
lenguaje de programacin.
A fin de manejar datos por medio de variables, estos pueden recibir valores determinados. El tipo
de los valores que pueden recibir dependen de la declaracin previa de tales variables.
En una asignacin se resuelve, primeramente la expresin (al lado derecho del smbolo de
asignacin) y se asigna el resultado en la variable.
El formato general de asignacin es:
Nom_variable Expresin
Donde Expresin puede ser una variable o constante, operacin, funcin.
Ejemplo:
A 9
Significa que la variable A se le ha asignado el valor 9. La accin de asignar es destructiva, ya
que el valor que tuviera la variable antes de la asignacin se pierde y se reemplaza por el nuevo
valor. As en la secuencia de operaciones:
A 30
A 189
A 9
Cuando se ejecutan, el ltimo valor que toma A ser 9, ya que los valores anteriores a este han
desaparecido.
Las acciones de asignacin se clasifican segn sea el tipo de expresiones: Aritmticas,
Lgicas y de Caracteres.
Asignacin Aritmtica
Las expresiones en las operaciones de asignacin son aritmticas:
Suma 5+10+2
Se evala la expresin 5+10+2 y se asigna a la variable Suma, es decir, 17 ser el valor que
toma Suma.
Asignacin Lgica

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

24
La expresin que se evala en la operacin de asignacin es lgica. Supngase que M, N, y P
son variables de tipo lgico.
M 8 < 5
N M o (7 <= 12)
P 7 > 6
Tras ejecutar las operaciones anteriores, las variables M,N,P toman los valores, falso, verdadero,
verdadero respectivamente.
Asignacin de caracteres
La operacin que se evala es de tipo carcter.
x 29 de Julio del 2006'
La accin de asignacin anterior asigna la cadena de caracteres '29de Julio del 2006' a la
variable de tipo carcter x.
1.5.5 Precedencia de Operadores
Cuando una expresin aritmtica se evala, el resultado es un nmero. Ahora bien,
cuando aparecen dos o ms expresiones aritmticas, qu operaciones se realizan
primero?
Una expresin aritmtica en programacin tiene una sintaxis de la forma:
x
2
+1/2
Hay que observar que esta expresin es totalmente diferente a esta otra (x
2
+1)/2, por lo que es
importante codificar las expresiones aritmticas correctamente.
Para realizar esto se debern conocer las reglas de evaluacin de los operadores, que se
estudian a continuacin.

1.5.6 Reglas de Evaluacin
Todas las subexpresiones entre parntesis se evalan primero. Las subexpresiones entre
parntesis anidados se evalan de adentro hacia afuera, es decir, que el parntesis ms interno
se evala primero.

Prioridad de Operaciones: Dentro de una misma expresin o subexpresin, los operadores se
evalan en el siguiente orden:







* , / Multiplicacin y divisin
Div,mod Divisin y Mdulo de enteros
+,- Suma y Resta

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

25
Nota:
Los operadores en una misma expresin o subexpresin con igual nivel de prioridad se evalan de
izquierda a derecha.

1.5.7 Conversin de expresiones aritmticas a expresiones algortmicas.

Una expresin aritmtica tiene una sintaxis de la forma:
( )
4 3 6
3 27 33 4
8
16
* 8 *
2
1
+ + |
.
|

\
|

Una expresin algortmica tiene una sintaxis de la forma:
* raz(8*(16/8))-4^6 +(33 raiz3(27))+potencia(3,4)

La funcin raz, utilizada en expresiones algortmicas me permite obtener la raz cuadrada de un
nmero, si a esta sintaxis le agrego un numero como raiz4(numero), estara referenciando a la raz
cuarta de un nmero.
As mismo para la potencia se puede utilizar la sintaxis: base^exponente, tambin podemos usar la
palabra reservada potencia(base, exponente).

Taller N 2

Explora ahora tu nivel de aprendizaje.

1. Cules de los siguientes identificadores no son vlidos.
a. Xrayo.
b. X_Rayo.
c. R2D2.
d. X.
e. 45
f. N14
g. ZZZ.
h. 3

2. Cul de las siguientes constantes no son vlidas:
a. 234.
b. -8.975
c. 12E - 5.
d. 0
e. 32,767
f. 1/2
g. 3.6 E +7.
h. 3.5 * 10.


3. Evaluar la siguiente Expresin para A=2 y B=5:
3 * A 4 * B / A ^ 2

4. Escribir las siguientes expresiones algortmicas como expresiones algebraicas:
a. b^2 4 * a * c

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

26
b. 3 * X ^ 4 5 * X ^ 3 + X 21 17
c. (b + d) / ( c + 4)
d. ( x ^ 2 + y ^ 2 ) ^ (1 / 2)

5. Cul es el resultado de las siguientes expresiones?
a. -4 * 7+ 2 ^ 3/4- 5
b. 12+ 3 * 7+ 5 * 4
c. (33+ 3 * 4)/ 5
d. 7 mod 5(mod 3)
e. B^2- 4 * A * C
f. (X ^ 2 + Y ^ 2) ^(1/2)
g. (7* (10 5) mod 3) * 4+ 9
h. ((-14 / 2) raiz 64 + 100)/ 2*2
i. ((12 + 30) div 2) / (8 (5 *1))
j. 14 div 3 + 3+(3*3/3)+5/ 3


1.6 Construccin y Representacin de Algoritmos
1.6.1 Tcnicas para la formulacin de Algoritmos
Las herramientas de programacin ms utilizadas comnmente para disear algoritmos son:
- Descripcin Narrada
- Pseudocdigos
- Diagramas de flujo
- Diagramas N-S
Siendo el pseudocdigo el ms popular por su sencillez y su parecido al lenguaje humano
correctos del programa.
Para representar un algoritmo se debe utilizar algn mtodo que permita independizar dicho
algoritmo del lenguaje de programacin elegido. Ello permitir que un algoritmo pueda ser
codificado indistintamente en cualquier lenguaje. Para conseguir este objetivo se precisa que el
algoritmo sea representado grfica o numricamente, de modo que las sucesivas acciones no
dependan de la sintaxis de ningn lenguaje de programacin, sino que la descripcin pueda
servir fcilmente para su transformacin en un programa, es decir, su codificacin.
Descripcin Narrada.

Este algoritmo es caracterizado porque sigue un proceso de ejecucin comn y lgico,
describiendo textualmente paso a paso cada una de las actividades a realizar dentro de
una actividad determinada.

Ejemplo 1 Algoritmo para asistir a clases a la USS:

1. Levantarse
2. Baarse
3. Vestirse
4. Desayunar

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

27
5. Cepillarse los dientes
6. Salir de casa
7. Tomar el autobs
8. Llegar a la USS
9. Buscar el aula
10. Ubicarse en un asiento

PSEUDOCDIGOS
Pseudo = falso. El pseudo cdigo no es realmente un cdigo sino una imitacin y una versin
abreviada de instrucciones reales para las computadoras. Es una tcnica para diseo de
programas que permite definir las estructuras de datos, las operaciones que se aplicarn a los
datos y la lgica que tendr el programa de computadora para solucionar un determinado
problema. Utiliza un pseudolenguaje muy parecido a nuestro idioma, pero que respeta las
directrices y los elementos de los lenguajes de programacin. Se concibi para superar las dos
principales desventajas de los flujogramas: lento de crear y difcil de modificar sin un nuevo
redibujo.
Palabras reservadas
Inicio Start
Sentencia 1 sentencia 1
Sentencia 2 sentencia 2
. .
Fin end
Estilo de escritura de algoritmos / programas
Algoritmo identificador //cabecera
Inicio
// seccin de declaraciones //
Var tipo de datos: lista de identificadores
Const lista de identificadores = valor
<sentencia 1>
<sentencia 2> // cuerpo del algoritmo //

Fin


Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

28
Notas:
*Las cadenas de caracteres se encerraran entre comillas
*En ocasiones la declaracin de constantes y variables la omitiremos.
*Utilizar siempre sangras en los bucles para dar legibilidad al algoritmo/ programa.

Ejemplo:
1. Escriba un algoritmo para expresar en centmetros y pulgadas una cantidad dada en
metros. Utilizando conceptos computacionales de variable, entrada de datos y salida de
resultados.
La solucin considera que 1 metro = 100 centmetros y que 1 pulgada = 2.54 centmetros.
Algoritmo ConversioMetros_Pulgadas_Centimetros
INICIO
Definir metros,centi,pulg Como Real;
Escribir "Ingrese la cantidad en metros: "; //mensaje de salida
Leer metros; // ingreso de datos
centi<- metros*100;
pulg<-centi/2.54;
Escribir "La cantidad de metros convertida a centimetros es: ",centi;
Escribir "La cantidad de metros convertida a pulgadas es: ",pulg;
FIN

Otra forma:

Algoritmo ConversioMetros_Pulgadas_Centimetros
START
Definir metros,centi,pulg Como Real;
write "Ingrese la cantidad en metros: "; //mensaje de salida
read metros; // ingreso de datos
centi<- metros*100;
pulg<-centi/2.54;
write "La cantidad de metros convertida a centimetros es: ",centi;
write "La cantidad de metros convertida a pulgadas es: ",pulg;
EDN

El algoritmo empieza con el nombre del algoritmo: ConversioMetros_Pulgadas_Centimetros,
el cual se escribe con la primera letra con mayscula, no contiene espacios entre las
palabras.
Luego continua la palabra Start(inicio) y finaliza con la palabra end (fin), entre estas palabras
solo se escribe una instruccin o accin por lnea.

Continuamos con la definicin de variables, las cuales pueden tener las siguientes
estructuras:
- Var: tipo_dato variable o variables;
Ejemplo:
Var: real metro, centi, pulg;

- Definir variable o variables Como tipo_dato;
Ejemplo
Definir metros,centi,pulg Como Real;


Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

29
La lnea precedida por // se llama comentario
Recordar que cada sentencia finaliza con un punto y coma, a excepcin de las estructuras
de control.
El objetivo del pseudocdigo es permitir que el programador se centre en los aspectos
lgicos de la solucin, evitando las reglas de sintaxis de los lenguajes de programacin.
No siendo el pseudocdigo un lenguaje formal, los pseudocdigos varan de un
programador a otro, es decir, no hay un pseudocdigo estndar.

Diagrama de Flujo (flowchart)
Es una de las tcnicas de representacin de algoritmo ms antigua y a la vez
ms utilizada, aunque se empleo ha disminuido considerablemente, sobre todo
desde la aparicin de lenguajes de programacin estructurados. Un diagrama de
flujo es un diagrama que utiliza los smbolos (cajas) estndar mostrados en la
figura 3.1 y que tiene los pasos del algoritmo escritos en esas cajas unidas por
flechas, denominadas lneas de flujo, que indican la secuencia en que se deben
ejecutar.

FIGURA 3.1:





Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

30



Reglas para la construccin de diagramas de flujo
a) Todo Diagrama de flujo debe de tener un inicio y un fin








b) Las lneas utilizadas para indicar la direccin del flujo del diagrama deben ser
rectas, verticales y horizontales.
INICIO
FIN
Figura.- Inicio/Fin de un diagrama de flujo


Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

31



c) Todas las lneas utilizadas para indicar la direccin del flujo del diagrama deben
estar conectadas. La conexin puede ser a un smbolo que exprese lectura,
proceso, decisin, impresin, conexin o fin de diagrama.








Ejemplo:

1. Calcular el salario neto de un trabajador en funcin del nmero de horas trabajadas, precio
de la hora de trabajo y considerando unos descuentos fijos al salario bruto en concepto de
impuestos (25%).

INICIO
nombre, bruto, hora, precio, tasa, neto
Leer:
nombre,hora, precio
bruto<- hora*precio
tasa <- 0.25*bruto
Neto<- bruto - tasa
Escribir
nombre,bruto, tasa,
neto
FIN

No valido
Valido
No valido
Figura 1.18. Uso correcto de flechas en un Diagrama de Flujo.

Figura 1.19. Uso Incorrecto de flechas en un Diagrama de Flujo.


Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

32

El diagrama anterior representa la resolucin de un programa que deduce el salario neto de un
trabajador a partir de la lectura del nombre, horas trabajadas, precio de la hora, y sabiendo que
los impuestos aplicados son el 25 por 100 sobre el salario bruto.
Los smbolos estndar normalizados por ANSI (abreviatura de America National Standard
Institute) son muy variados.

Para el curso de Algoritmos solo se usarn los SMBOLOS:
- TERMINAL
- ENTRADA/SALIDA (O TAMBIN EL SMBOLO DE TECLADO PARA ENTRADA Y
EL SMBOLO PANTALLA PARA SALIDA)
- PROCESO
- DECISIN
- CONECTOR


Reglas para el uso de algoritmos

- El Diagrama se dibuja de arriba hacia abajo, las figuras se conectan con flechas, en caso
de faltar espacio en el papel, se usan conectores para saber dnde continua el diagrama.

- Se debe de declarar las variables que se van a utilizar, algunas variables que se
reutilizaran constantemente para almacenar un valor, deben de inicializar en 0.
a, b, suma<-0, prod<-0

- Las variables deben de ser utilizadas de la mismas manera como fueron declaradas,
respetando las maysculas y minsculas.
- En un Smbolo de Entrada/Salida o Leer/Mostrar debe especificarse si se est usando
para entrada o salida en el encabezado del smbolo.
- El Smbolo de entrada puede representar la entrada de varias variables a la vez pero
deben estar separadas por comas.
Leer:
a, b

- El smbolo de salida puede representar la salida de varias variables a la vez pero deben
estar separadas por comas

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

33
Escribir:
suma, prod

- El smbolo de Proceso puede incluir hasta 3 procesos separados por lnea
suma<-a+b
prod<- a*b


- Todo diagrama debe tener un terminal de INICIO y uno de FINAL.
- Los Rombos de Decisin solo pueden tener una flecha de llegada, pero deben tener 2
salidas obligatorias y el participante debe indicar con un SI el flujo en caso el TEST sea
verdadero y con un NO el flujo a seguir en caso el TEST sea Falso.






Diagramas N-S (Nassi-Schneiderman o de Chapin)
Son una herramienta que favorece la programacin estructurada y rene caractersticas
grficas propias de diagramas de flujo y lingsticas propias de pseudocdigos. Constan
de una serie de cajas contiguas que se leern siempre de arriba-abajo.









Nota: Mas adelante vamos ir viendo el resto de representaciones de los diagramas N-S




Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

34

EJERCICIOS RESUELTOS

1. Calcular el salario neto de un trabajador en funcin del nmero de horas trabajadas, precio de
la hora de trabajo y considerando unos descuentos fijos al salario bruto en concepto de
impuestos (25%).
Solucin2:
En Pseudocdigo
Inicio
Var:
Enteros: ht,ph,sb,sn,igv
Leer (ht, ph)
sb ht*ph
igvsb*0.25
snsb-igv
escribir (sb,sn,igv)
Fin
En Diagrama de Flujo

ht,ph,sb,igv,sn
sb<- ht*ph
igv<- sb*0.25
sn<- sb-igv
Inicio
Leer:
ht,ph
Escribir:
sb,igv,sn
Fin




ht: Horas Trabajadas
ph: Pago por hora trabajada
sb: Salario bruto
sn: Salario Neto
igv: Impuesto peruano IGV

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

35
2. Construya un Algoritmo, para ingresar 3 notas de un estudiante y publicar su promedio.

Algoritmo NotaFinal
INICIO
Definir n1,n2,n3,nf Como Real;
Escribir "Ingrese nota 1: ";
Leer n1;
Escribir "Ingrese nota 2: ";
Leer n2;
Escribir "Ingrese nota 3: ";
Leer n3;
nf<-(n1+n2+n3)/3;
Escribir "El promedio obtenido es:",nf;
FIN

3. Construya un algoritmo para calcular el total de 3 ventas realizadas por un vendedor y la
comisin del vendedor que es el 10% del total de las ventas, as mismo el sueldo del trabajador
que se obtiene de sumar su sueldo base ms la comisin.
Proceso Sueldo
Definir sb,vt,v1,v2,v3,ganancia,comision Como Real;
comision<-0.10;
Escribir "Ingrese el sueldo base: ";
Leer sb;
Escribir "Ingrese venta 1: ";
Leer v1;
Escribir "Ingrese Venta 2: ";
Leer v2;
Escribir "Ingrese Venta 3: ";
Leer v3;
vt<-v1+v2+v3;
ganancia<-sb+(vt*comision);
Escribir "Las ventas todales es: ",vt;
Escribir "La ganancia del trabajador es: ",ganancia;
FinProceso




Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

36
INICIO
sb,vt,v1,v2,v3,ganancia,comision
Leer:
sb,vt,v1,v2,v3
vt<-v1+v2+v3;
ganancia<-sb+(vt*comision);
Escribir
vt,ganancia
FIN



4. Construya un Algoritmo para calcular el salario neto de un trabajador en funcin del nmero de
horas trabajadas, precio de la hora de trabajo y considerando unos descuentos fijos al sueldo
bruto en concepto de impuestos (20 por 100).
Aqu se representa mediante un Diagrama N-S



















Taller N 03

Explora ahora tu nivel de aprendizaje.

Escribir un algoritmo para:

a. Sumar dos nmeros enteros.

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

37
b. Leer un nmero y escriba su cuadrado
c. Calcular la superficie de un circulo
d. Convertir metros a pies y a pulgadas ( 1 metro = 39.37 pulgadas, 1 pie=12 pulgadas)
e. Convierta una temperatura dada en grados Celsius a grados Fahrenheit. Formula: (9/5)C +
32.
f. Calcula la longitud de la Hipotenusa de un tringulo rectngulo, conociendo las longitudes
de sus catetos.
g. Hacer un programa que pida 2 Radios R1 y R2. Calcule las respectivas reas de los
crculos y halle la diferencia de reas y muestre esta diferencia como respuesta.
h. Convertir el valor 15 dado en Km. a Decmetro, metros y milmetros.
i. Convertir N pulgadas a Metros y a Yardas.
j. Calcule el monto parcial (cantidad * precio), el IGV (18% del monto parcial) y el monto total
(monto parcial + IGV) que debe pagarse por comprar una determinada cantidad de un
producto, que cuesta determinado precio.
k. En un curso se han establecido tres notas: nota de trabajos T, nota de medio ciclo M y nota
de fin de ciclo F, cada una con un peso de 40%, 30% y 30% respectivamente. Calcular el
promedio de un alumno.
l. Calcular el salario que recibir un trabajador, si se conoce el nmero de horas trabajadas
y el pago que recibe por hora. Considere adems que por concepto de AFP se le
descuenta el 7%.
m. Calcular el nmero de das que ha vivido una persona a partir de su edad. Considere cada
ao como 365 das.
n. Ingresar un nmero que represente segundos y determinar a cuanto equivale en horas,
minutos y segundos.
o. La distancia entre dos puntos (X1, Y1) y (X2, Y2) de un plano se puede obtener sacando la
raz cuadrada de la expresin (X2 X1)2 + (Y2 Y1)2. Escribir un programa que dados dos
puntos por el usuario, calcule la distancia entre esos dos puntos.
p. La gasolina se almacena en tanques cilndricos de un radio especfico. Se necesita un
programa que ingresando el valor del radio y la altura hasta que se llene la gasolina, calcule
el volumen de gasolina que se tiene. (Volumen del cilindro = PI*Radio*Altura).

Nota: Elija usted la forma que ms est familiarizado de representar los algoritmos.


Lecturas recomendadas

Un algoritmo utilizando seudocdigos puede ser escrito en un editor de texto (el block de notas
por ejemplo), y utilizando diagramas de flujo puede ser editado en un diagramador como es
Microsoft Visio (software propietario) o en da (software libre, puede descargarlo en http://dia-
installer.de/).

Tomando en cuenta al alumnado que recibir el curso, consideramos adecuado usar una IDE
ms atractivo y apropiado para el desarrollo de los algoritmos y los diagramas de flujo. Para ello
este curso estar basado en PESEINT, ya que es una IDE de software libre, pensado y
documentado para un sencillo uso.

Se le sugerir al alumno que simplemente baje PESEINT y lo instale.

- Se puede bajar PESEINT gratuito de
http://pseint.sourceforge.net/index.php?page=descargas.php

- Podr revisar el manual de uso en:
http://pseint.sourceforge.net/index.php?page=documentacion.php

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

38

- Deber revisar los videos tutoriales desarrollados por nuestro colaborador
Jonathan Fred Snchez Hinostroza, vea:
http://www.youtube.com/playlist?list=PLA5ED193B23ACD2D5


Estimado estudiante pon aprueba tus conocimientos adquiridos en el manejo del PESEINT.

Te reto a desarrollar los talleres 1, 2 y 3 utilizando el software PSEINT.

Conclusiones
En esta primera semana se presentaron los conceptos bsicos para la elaboracin de
algoritmos, desde el nombre que le damos al algoritmo, la declaracin de variables, las
funciones de entrada, y salida y el proceso de manejo de variables, hasta finalizar el algoritmo.
Se ha utilizado algunas tcnicas como los diagramas de flujo, los pseudocdigos y los
diagramas N-S, para la elaboracin de los algoritmos, as como tambin se propuso el uso del
software libre PSEINT que permite generar pseudocdigos y diagramas de flujo, siendo su
codificacin similar a la los lenguajes de programacin.

Metacognicin de la primera semana
Las siguientes preguntas te ayudarn a reflexionar sobre tus propios aprendizajes, es un ejercicio
recomendado para razonar e identificar nuestro esfuerzo intelectual, la finalidad es regular nuestras
acciones y procesos mentales
De la temtica abordada que te llam ms la atencin?
Consideras que aprendiste con los contenidos abordados? Qu parte te tom ms tiempo?
Tuviste dificultad con algn tema o actividad? Cmo los solucionaste?
Qu acciones realizaste para aprender?

Control de lectura primera semana

Muy bien! Hemos llegado al final de la primera semana, ahora, para comprobar tus logros y nivel
de aprendizaje alcanzado en relacin a la temtica estudiada, responde a las siguientes
preguntas:

1. Elaborar un algoritmo en pseudocdigo para Encender el auto.
Alternativas Fundamenta tu respuesta (Cdigo de la solucin)
Solucin
INICIO
Abrir la puerta
Ubicarse en el asiento del piloto
Buscar la llave del auto
Insertar la llave en la ranura de contacto
Establecer en neutro la palanca de cambio
Accionar la llave de contacto.

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

39
Presionar el acelerador.
FIN

2. Elaborar un algoritmo en pseudocdigo para Ir a la playa.
Alternativas Fundamenta tu respuesta (Cdigo de la solucin)
Solucin
INICIO
Seleccionar playa de destino
Preparar los elementos que se llevaran a la playa
Comprar bloqueador adecuado
Tomar movilidad de traslado hasta la playa elegida
Buscar una ubicacin en la playa
Instalarse en la playa
Desarrollar actividades de recreacin
Disfrutar de las olas del mar
Volver a casa
FIN


3. Escribir un algoritmo en pseudocdigo que lea las cuatro notas de un estudiante (practica, exposicin, oral, examen
parcial), e imprima la nota definitiva del curso.
Alternativas Fundamenta tu respuesta (Cdigo de la solucin)
Solucin
INICIO
notaPractica es real
notaExposicin es real
notaExamenOral es real
notaExamenParcial es real
promedio es real

Leer "Ingrese nota de prctica", notaPractica
Leer "Ingrese nota de exposicin", notaExposicin
Leer "Ingrese nota de examen oral", notaExamenOral
Leer "Ingrese nota de examen parcial", notaExamenParcial

promedio=(notaPractica+notaExposicin+notaExamenOral+notaExamenParcial)/4
Escribir "El promedio del curso es: ", promedio
FIN



4. Elaborar un programa en JAVA para determinar la hipotenusa de un tringulo rectngulo conocidas las longitudes de
sus catetos.
Alternativas Fundamenta tu respuesta (Cdigo de la solucin)
Solucin
package Semana1;
import java.util.Scanner;
public class preg9 {
public static void main(String[] args) {
double ladoA;
double ladoB;
Scanner teclado=new Scanner(System.in);
System.out.println("Ingrese el primer lado del tringulo en cm");
ladoA=teclado.nextDouble();
System.out.println("Ingrese el segund lado del tringulo en cm");
ladoB=teclado.nextDouble();
System.out.println("La hipotenisa del tringulo es::
"+Math.sqrt((ladoA*ladoB)+(ladoB*ladoB)));
}
}

5. Elaborar un programa en JAVA que calcule el monto parcial (cantidad * precio), el IGV (18% del monto parcial) y el
monto total (monto parcial + IGV) que debe pagarse por comprar una determinada cantidad de un producto, que
cuesta determinado precio.
Alternativas Fundamenta tu respuesta (Cdigo de la solucin)

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

40
Solucin
package Semana1;
import java.util.Scanner;
public class Preg10 {
public static void main(String[] args) {

float precio;
int cantidad;
double igv;
double subtotal;

Scanner teclado=new Scanner(System.in);
System.out.println("Ingrese la cantidad de productos a comprar");
precio=teclado.nextFloat();
System.out.println("Ingrese el precio del producto");
cantidad=teclado.nextInt();
subtotal= cantidad* precio;
igv=subtotal*0.18;
System.out.println("Subtotal: "+subtotal);
System.out.println("IGV: "+igv);
System.out.println("Subtotal: "+subtotal);
System.out.println("Total a pagar: "+(subtotal+igv));
}
}



































Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

41





Durante toda la vida, mientras vamos pasando de un ambiente a otro, encontramos novedad y nuevos retos,
pequeos y grandes. Si estamos preparados para ellos, vivir y aprender son inseparables.
Peter Senge













Bienvenida

Estimados estudiantes bienvenidos! a la segunda semana del curso, En la cual conoceremos los
conceptos bsicos de un programa y la sintaxis de un lenguaje de programacin, as como tambin las
primeras estructuras de control, tiles para desarrollar nuestros algoritmos y su respectiva codificacin.

Ruta de aprendizaje

Durante la segunda semana que corresponde del 13 al 19 de mayo realizaremos las siguientes
actividades, emprendiendo la siguiente ruta:

Estructuras Secuenciales
Estructuras Condicionales
Conversin de Algoritmos a Programas
Creacin de programas en Java

Es preciso recordarte que para que cumplas los objetivos planteados debes planificar tu tiempo, pues
estas actividades demandan 10 horas de estudio semanales.




Cordialmente
Ing. Luis Alberto Vives Garnique
Docente experto de la asignatura


Segunda Semana
Analizaremos las diferentes estructuras de control desde las secuenciales, seguidas de las
condicionales simples, dobles y mltiples hasta llegar a estructuras anidadas, desarrollando
ejercicios algortmicos y llevando a programarlo en un lenguaje de programacin actual
(13 al 19 de mayo)
F
u
e
n
t
e
:

I
m
a
g
e
n

e
x
t
r
a

d
a

d
e


i
n
t
e
r
n
e
t



Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

42
Tema 2

Estructuras de Control: Condicionales
Simples y Mltiples













Introduccin al tema

Los problemas desarrollados en el captulo anterior usando tcnicas algortmicas, se ejecutan de
forma secuencia, es decir una secuencia despus de otra, donde el flujo de datos trascurre
secuencialmente, esto quiere decir que la entrada de una sentencia es la salida de la anterior
sentencia.
Esta forma de programar se aprecia en ejercicios sencillos, pero en la vida nada es secuencial,
siempre existe alternativas de decisiones que pueden ser dos o muchas alternativas. Esta semana
estudiaremos las estructuras de control de seleccin, para luego aprender estructuras de iteracin o
repetitivas en los prximos captulos.

Aprendizajes esperados
Conozcamos ahora las capacidades y actitudes a desarrollar en este segundo tema:
Capacidad
- Comprende los conceptos y principios bsicos de la algoritmia y la programacin, para la
resolucin de problemas.

Actitudes
- Reconoce la oportunidad de aplicar algoritmos y programas en situaciones reales.
- Distingue entre los diversos problemas la oportunidad de utilizar estructuras de control.
- Es creativo al generar planteamientos y soluciones innovadoras a los problemas que se le
presentan.
F
u
e
n
t
e
:

I
m
a
g
e
n

e
x
t
r
a

d
a

d
e


i
n
t
e
r
n
e
t



Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

43
Mapa conceptual referido al tema

Observa detenidamente el siguiente esquema, en el encontrars de un vistazo de manera sintetizada los
principales concepto de la temtica que abordaremos. Qu conceptos o categoras te llaman la atencin?









Fuente: elaboracin propia












Esquema2: Mapa conceptual

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

44
Desarrollo de los contenidos de aprendizaje

Las estructuras de control refieren al orden en que las instrucciones de un algoritmo se ejecutarn. El
orden de ejecucin de las sentencias o instrucciones determina el flujo de control.
Estas estructuras de control son por consiguiente fundamentales en los lenguajes de programacin y en
los diseos de algoritmos especialmente los pseudocdigos. Las tres estructuras de control bsico son:
- Secuencial
- Seleccin (Simples y Mltiples)
- Iterativas (Repeticin)

2.1. Estructura Secuencial
Es aqulla en la que una accin (instruccin) sigue a otra en secuencia. Las tareas se suceden
de tal modo que la salida de una es la entrada de la siguiente y as sucesivamente hasta el fin
del proceso. La estructura secuencial tiene una entrada y una salida. Su representacin grfica
es la siguiente:
DIAGRAMA DE FLUJO






DIAGRAMA N-S DE UNA ESTRUCTURA SECUENCIAL








Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

45
PSEUDOCODIGO DE UNA ESTRUCTURA SECUENCIAL






Ejemplos
Algoritmo haciendo uso de Pseudocdigo en el software PSeInt
1. Calcular el salario neto de un trabajador en funcin del nmero de horas trabajadas, precio
de la hora de trabajo y considerando unos descuentos fijos al sueldo bruto en concepto de
impuestos (20 por 100).
Algoritmo Nombre_Algoritmo
Inicio
Definir variables como tipo_dato // Definicin de variables
variable valor // Asignando valor a la variable
entrada de datos
proceso
salida de datos
Fin


Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

46

La ejecucin del programa es la siguiente:



La programacin del algoritmo en un lenguaje de programacin Java, usando una interfaz de desarrollo
como Netbeans es la siguiente:



Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

47
Diagrama de Flujo
ht,ph,sb,igv,sn
sb<- ht*ph
igv<- sb*0.20
sn<- sb-igv
Inicio
Leer:
ht,ph
Escribir:
sb,igv,sn
Fin


2.2. Estructuras selectivas
Las estructuras selectivas se utilizan para tomar decisiones lgicas, de ah que se suelan
denominar tambin estructuras de decisin o alternativas.
En las estructuras selectivas se evala una condicin y en funcin del resultado de la misma
se realza una opcin u otra. Las condiciones se especifican usando expresiones lgicas. La
representacin de una estructura selectiva se hace con palabras en pseudocdigo (if, then,
else o bien en espaol si, entonces, si_no), con una figura geomtrica en forma de rombo o
bien con un tringulo en el interior de una caja rectangular. Las estructuras selectivas o
alternativas pueden ser:
- Simples.
- Dobles.
- Mltiples.
2.3. Alternativa simple ( si-entonces / if-then)
La estructura alternativa simple si-entonces ejecuta una determinada accin cuando se
cumple una determinada condicin. La seleccin si- entonces evala la condicin y

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

48
- Si la condicin es verdadera, entonces ejecuta la accin S1 (o acciones casi de ser
S1 una accin compuesta y constar de varias acciones)
- Si la condicin es falsa, entonces no hace nada

a) Diagrama de Flujo
Condicin
Acciones

b) Pseudocdigo en espaol



Pseudocdigo en ingles



c) Diagrama N-S












si (condicin) entonces
Acciones
fin_si
if (condicin) then
Acciones
endif
Condicin
Verdadera Falsa
Acciones
Figura 1.22. Estructuras alternativas simples: a) Diagrama de
Flujo; b) Pseudocdigo; c) Diagrama N-S


Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

49
2.3.1. Alternativa Doble (si-entonces-sino / if-then-else)
La estructura anterior es muy limitada y normalmente se necesitara una estructura
que permita elegir entre dos opciones o alternativas posibles, en funcin del
cumplimiento o no de una determinada condicin. Si la condicin es verdadera, se
ejecuta la accin S1, si es falsa, se ejecutara la accin S2.
a) Diagrama de Flujo
Condicin
Acciones S1 Acciones S2

b) Pseudocdigo en espaol





Pseudocdigo en ingles





c) Diagrama N-S







si (condicin) entonces
Acciones S1
si_no
Acciones S2
fin_si
if (condicin) then
Acciones S1
Else
Acciones S2
endif
Condicin
Verdadera Falsa
Acciones
S1
Acciones
S2
Figura 1.23. Estructuras alternativas dobles: a) Diagrama de Flujo;
b) Pseudocdigo; c) Diagrama N-S


Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

50
Ejemplo 4.3.
Construya un programa que pida un nmero A y muestre si el nmero ingresado es PAR o
IMPAR
Solucin:
Aqu usaremos el operador MOD. Mod devuelve el residuo de una divisin por ejemplo 20
MOD 2 resulta 0 ya que al dividir 20 entre 2 da 10 sobrando 0 de residuo, lo cual quiere decir
que el numero ingresado es par. Si el residuo fuese diferente de 0, entonces el nmero
ingresado es impar.
En Pseudocdigo
Inicio
Var:
Entero: num
escribir(Ingrese un numero)
leer(num)
si (num mod 2 == 0) entonces
Escribir(El numero ingresado es par)
si_no
escribir(El numero ingresado es impar)
fin_si
Fin
En Diagrama de Flujo
num
Inicio
Leer:
num
Escribir:
El numero
es par
Fin
num mod 2 == 0 Si No
Escribir:
El numero es
par


Ejemplo 4.4

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

51
Hacer un algoritmo que determine qu nmero es el mayor de 2 nmeros ingresados
Solucin:
En Pseudocdigo
Inicio
Var:
Entero: a,b
escribir(Ingrese numero A: )
leer(a)
escribir(Ingrese numero B: )
leer(b)
si (a>b) entonces
Escribir(El numero, a , es mayor)
si_no
Escribir(El numero, b , es mayor)
fin_si
Fin
En Diagrama de Flujo
a,b
Inicio
Leer:
a,b
Escribir:
El numero a
es mayor
Fin
a>b Si No
Escribir:
El numero b
es mayor

Ejemplo 4.5
Elaborar un diagrama de flujo que permita mostrar en pantalla un mensaje de mayora o
minora de edad segn sea el caso.

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

52
Solucin:
En Pseudocdigo
Inicio
Var:
Entero: edad
escribir(Ingrese su edad: )
leer(edad)
si (edad>=18) entonces
Escribir(Ud. es mayor de edad)
si_no
Escribir(Ud aun no cumple la mayora de edad)
fin_si
Fin
En Diagrama de Flujo
edad
Inicio
Leer:
edad
Escribir:
UD. es mayor de
edad
Fin
edad >=18 Si No
Escribir:
Ud. aun no cumple
la mayora de edad






Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

53
2.4. Alternativa mltiple ( segn_sea, caso de)
La estructura de decisin mltiple evaluara una expresin que podr tomar n valores distintos:
1, 2, 3, 4,., n. Segn que elija uno de estos valores en la condicin, se realizara una de las n
acciones o lo que es igual, el flujo del algoritmo seguir un determinado camino entre los n
posibles.



























Pseudocdigo en castellano

Segn_sea (expresin) hacer
Caso valor1_de_la_expresion:
Sentencia,
Sentencia,

roptura,
Caso valor2_de_la_expresion:
Sentencia,
Sentencia,

roptura,
Caso valor3_de_la_expresion:
Sentencia,
Sentencia,

roptura,
Caso valor4_de_la_expresion:
Sentencia,
Sentencia,

roptura,
por_defecto
Sentencia,
Sentencia,

roptura,
fin_segn






Figura 1.24. Estructuras segn_sea: Pseudocdigo en castellano

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

54






















Condicin
Accin S1 Accin S2 Accin S3 Accin S4 Accin n





Pseudocdigo en Ingles

switch (expresin)
Case valor1_de_la_expresion:
Sentencia,
Sentencia,

break,
Case valor2_de_la_expresion:
Sentencia,
Sentencia,

break,
Case valor3_de_la_expresion:
Sentencia,
Sentencia,

break,
Case valor4_de_la_expresion:
Sentencia,
Sentencia,

break,
default
Sentencia,
Sentencia,

break,
fin_segn






Figura 1.25. Estructuras segn_sea: Pseudocdigo en ingles
Figura 1.26. Estructuras segn_sea: Diagrama de flujo
1 2 3 4 n

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

55
Ejemplo 4.6
Se desea disear un algoritmo que escriba los nombres de los das de la semana en funcin
del valor de una variable DIA introducida por teclado.
Solucin:
En Pseudocdigo
Algoritmo diasSemana
Inicio
Var:
entero: dia
escribir(Ingrese un numero del 1 7 para saber q da de la `
semana es: )
leer(dia)
Segn_sea (dia) hacer
Caso 1:
escribir(Domingo)
roptura,
Caso 2:
escribir(Lunes)
roptura,
Caso 3:
escribir(Martes)
roptura,
Caso 4:
escribir(Mircoles)
roptura,
Caso 5:
escribir(Jueves)
roptura,
Caso 6:
escribir(Viernes)
roptura,
Caso 7:
escribir(Sbado)
roptura,
Por_defecto
escribir(Valor no permitido)
roptura,
fin_segn

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

56
Fin
Ejemplo 4.7
Hacer un algoritmo que permita ingresar un da de la semana y segn el da permita ingresar al
Restaurant Gourmet el plato del da. Teniendo en cuenta que el da 1 es lunes y el men es
espesado, martes el men es arroz con pato, el mircoles el men es arroz con pollo, el jueves
el men es lomito saltado, el viernes el men es tallarines con salsa roja, el sbado el men es
ceviche y cabrito, el da domingo buffet dominical.
Algoritmo Plato_dia
Inicio
Var:
entero: dia
escribir(Ingrese un numero del 1 al 7: )
leer(dia)
Segn_sea (dia) hacer
Caso 7:
escribir(Domingo)
escribir(Buffet dominical)
roptura,
Caso 1:
escribir(Lunes)
escribir(Hoy toca Espesado)
roptura,
Caso 2:
escribir(Martes)
escribir(Hoy arroz con pato)
roptura,
Caso 3:
escribir(Martes)
escribir(Hoy arroz con pollo)
roptura,
Caso 4:
escribir(Jueves)
escribir(Hoy Lomito saltado)
roptura,
Caso 5:
escribir(Viernes)
escribir(Hoy Tallarines con salsa roja)
roptura,
Caso 6:
escribir(Viernes)
escribir(Hoy ceviche y cabrito)
roptura,
Por_defecto
escribir(Da no valido)
roptura,
fin_segn
Fin


Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

57
2.5. Estructuras de decisin anidadas
Las estructuras de seleccin si-entonces y si-entonces-si_no implican la seleccin de una de
dos alternativas. Es posible tambin utilizar la instruccin si para disear estructuras de
seleccin que contengan ms de dos alternativas. Por ejemplo, una estructura si-entonces
puede contener otra estructura si-entonces, y esta estructura si-entonces puede contener
otra, y as sucesivamente cualquier nmero de veces; a su vez, dentro de cada estructura
pueden existir diferentes acciones.
Las estructuras si interiores a otras estructuras si se denominan anidadas o encajadas.
As, una estructura de seleccin de n alternativa o decisin mltiple puede ser construida
utilizando una estructura si con este formato:



si (expresin) entonces
acciones
si_no
si (expresin) entonces
Acciones
si_no
si (expresin) entonces
Acciones
si_no
si (expresin) entonces
Acciones
si_no
.
.
.
fin_si
fin_si
fin_si
fin_si


Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

58

Ejemplo 4.8.
Disear un algoritmo que lea tres nmeros A, B, C y visualice por pantalla el valor del ms
grande. Se supone que los tres valores son diferentes.
Solucin:
En Pseudocdigo
Inicio
Var:
entero: a,b,c
leer(a,b,c)
si (a<b) entonces
si (a<c)entonces
escribir(a es mayor)
si_no
escribir(c es mayor)
fin_si
si_no
si (b>c)entonces
escribir(b es mayor)
si_no
escribir(c es mayor)
fin_si
fin_si
Fin







Figura 1.27. Estructuras anidadas

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

59
En Diagrama de Flujo
Inicio
a,b,c
Leer
a,b,c
a<b
a<c
Escribir
a es
mayor
Escribir
c es
mayor
b<c
Escribir
b es
mayor
Escribir
c es
mayor
Inicio

Ejemplo 4.9.
Disear un algoritmo que lea tres nmeros A, B, C e imprima los valores mximo y mino. El
procedimiento consistir en comparaciones sucesivas de parejas de nmeros.
Solucin:
En Pseudocdigo
Algoritmo ordenar
Inicio
Var:
real: a,b,c
escribir (Deme 3 nmeros: )
leer(a,b,c)
si (a>b) entonces
si (b>c)entonces
escribir(a,b,c)
si_no
si (c>a)entonces

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

60
escribir(c,a,b) entonces
si_no
escribir(a,c,b) entonces
fin_si
fin_si
si_no
si (a>c)entonces
escribir(b, a, c) entonces
si_no
si (c>b)entonces
escribir(c, b, a)entonces
si_no
escribir(b, c, a)entonces
fin_si
fin_si
fin_si
Fin

Algunos conceptos:
1. Contador: Es una variable que sirve para llevar la cuenta de las veces que se repite
una operacin o proceso (procesos). Generalmente se incrementa o decrementa de
uno en uno.
2. Acumulador: Es una variable en la cual se va almacenando la suma de los valores
sucesivos que va tomando otra variable
3. Inicializar variables: Consiste en indicar o asignar qu valor tiene inicialmente una
variable. Este valor por lo general se indica al inicio del algoritmo.










Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

61
Lecturas recomendadas

Documento 1: " Estructura o esquema de decisin condicional en JAVA. IF ELSE, IF
ELSE IF, Ejemplos de uso"
Direccin: Ver carpeta de lecturas: 2_Estructura esquema de decisin condicional en
JAVA.pdf
Breve Descripcin: Alex Rodriguez en este artculo aborda la naturaleza de los
esquemas de control bsicos como IF ELSE, IF ELSE IF, muy utilizado en lenguaje JAVA
para implementar algoritmos, describiendo su sintaxis, mostrando un ejemplo bastante
sencillo comprender.

Documento 2: "Estructuras de control JAVA"
Direccin: Ver carpeta de lecturas: Estructuras de control JAVA.pdf
Breve Descripcin: Enrrique Garca Hernndez en su blog presenta ejemplos sencillos
pero bastante didcticos de cmo utilizar las estructuras de decisin simple, estructuras
condicional, alternativa o selectiva, condiciones dobles, condicin mltiple.

Conclusiones
En esta semana de estudio se presentaron las estructuras de control bsico, que se utiliza para
controlar el flujo de la informacin dentro de un algoritmo, esto nos permite darle poder
decisin a nuestros algoritmos.
As mismo se present como implementarlo en un lenguaje de programacin, los ejemplos
ilustran de forma clara como sigue el curso de ejecucin lnea a lnea del algoritmo de solucin.
Las estructuras de control IF ELSE, pueden anidarse para conseguir controlar mltiples
condiciones, sin embargo con la estructura de control mltiple es ms sencillo seleccionar entre
muchas opciones.

Metacognicin de la segunda semana
Las siguientes preguntas te ayudarn a reflexionar sobre tus propios aprendizajes, es un ejercicio
recomendado para razonar e identificar nuestro esfuerzo intelectual, la finalidad es regular nuestras
acciones y procesos mentales
De la temtica abordada que te llam ms la atencin?
Consideras que aprendiste con los contenidos abordados? Qu parte te tom ms tiempo?
Tuviste dificultad con algn tema o actividad? Cmo los solucionaste?
Qu acciones realizaste para aprender?

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

62
Control de lectura segunda semana

Muy bien! Hemos llegado al final de la segunda semana, ahora, para comprobar tus logros y nivel de
aprendizaje alcanzado en relacin a la temtica estudiada, responde a las siguientes preguntas:
Elabore los siguientes programas en JAVA.

1. Elaborar un programa en pseudocdigo para determinar si un estudiante aprueba o reprueba un curso, sabiendo que
aprobara si su promedio de tres calificaciones es mayor o igual a 10.5; reprueba en caso contrario.
Alternativas Fundamenta tu respuesta (Cdigo de la solucin)
Solucin
INICIO
nota1 es real
nota2 es real
nota3 es real
promedio es real

Leer "Ingresa la primera nota: ",nota1
Leer "Ingresa la segunda nota:", nota2
Leer "Ingresa la tercera nota:", nota3

promedio=(nota1+nota2+nota3)/3

SI(promedio>=10.5) ENTONCES
Escribir "Alumno aprobado con: ",promedio
SI_NO
Escribir "Alumno desaprobado con: ",promedio
FIN_SI
FIN


2. Elabore un programa en JAVA para Ingresar un nmero que represente segundos y determinar a cuanto equivale en
horas, minutos y segundos.
Alternativas Fundamenta tu respuesta (Cdigo de la solucin)
Solucin
package Semana2;
import java.util.Scanner;
public class preg4 {
public static void main(String[] args) {
long cantidadSegundos;

Scanner teclado=new Scanner(System.in);
System.out.println("Ingresa la hora en segundos");
cantidadSegundos=teclado.nextLong();

System.out.println("Cantidad de segundos: "+cantidadSegundos);
System.out.println("Cantidad de minutos: "+cantidadSegundos/60);
System.out.println("Cantidad de Horas: "+(cantidadSegundos/60)/60);
}
}

3. Hacer un algoritmo en JAVA que lea los nombres y edades de dos personas e imprima cul de ellas tiene ms edad.
Alternativas Fundamenta tu respuesta (Cdigo de la solucin)
Solucin
package Semana2;
import java.util.Scanner;
public class Prog5 {
public static void main(String[] args) {
String nombre1;

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

63
String nombre2;
int edad1;
int edad2;

Scanner teclado=new Scanner(System.in);
System.out.println("Ingrese el nombre de la primera persona");
nombre1=teclado.nextLine();
System.out.println("Ingrese la edad de la primera persona");
edad1=Integer.parseInt(teclado.next());

System.out.println("Ingrese el nombre de la segunda persona");
nombre2=teclado.next();
System.out.println("Ingrese la edad de la segunda persona");
edad2=teclado.nextInt();

if (edad1>edad2)
{
System.out.println("La persona mayor es: "+nombre1);
}else
{
System.out.println("La persona mayor es: "+nombre2);
}
}
}

4. Hacer un algoritmo en JAVA para una granja donde existen N conejos, N1 blancos y N2 negros. Se venden X negros y
Y blancos. Hacer un algoritmo que:
- Imprima la cantidad de conejos vendida.
- Si P1 es el precio de venta de los conejos blancos y P2 es el precio de venta de los conejos negros, imprima el
monto total de la venta.
- Imprima el color de los conejos que se vendieron ms.
Alternativas Fundamenta tu respuesta (Cdigo de la solucin)
Solucin
package Semana2;
import java.util.Scanner;
public class preg6 {
public static void main(String[] args) {
int cantidadConejosBlancos;
int cantidadConejosNegros;
int cantidadConejosBlancosVendidos=0;
int cantidadConejosNegrosVendidos=0;

Scanner teclado=new Scanner(System.in);
System.out.println("Ingrese la cantidad de conejos blancos");
cantidadConejosBlancos=teclado.nextInt();

System.out.println("Ingrese la cantidad de conejos negros");
cantidadConejosNegros=teclado.nextInt();

System.out.println("Total de conejos en la granja: " +
(cantidadConejosBlancos+cantidadConejosNegros) +"\n");

System.out.println("Ingrese la cantidad de conejos blancos que desea
comprar");
cantidadConejosBlancosVendidos=teclado.nextInt();
System.out.println("Ingrese la cantidad de conejos negros que desea
comprar");
cantidadConejosNegrosVendidos=teclado.nextInt();

//10 es el precio de cada conejo

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

64
System.out.println("Monto recaudado:" +
(cantidadConejosBlancosVendidos*10)+(cantidadConejosNegrosVendidos*10));

if (cantidadConejosBlancosVendidos>cantidadConejosNegrosVendidos){
System.out.println("Se ha vendido mas conejos blancos");
}
else
{
System.out.println("Se ha vendido mas conejos negros");
}
System.out.println("cantidad de conejos blancos vendidos: " +
cantidadConejosBlancosVendidos );
System.out.println("cantidad de conejos negros vendidos: " +
cantidadConejosNegrosVendidos +"\n");
System.out.println("cantidad de conejos blancos disponible: " +
(cantidadConejosBlancos-cantidadConejosBlancosVendidos ));
System.out.println("cantidad de conejos negros disponibles: " +
(cantidadConejosNegros-cantidadConejosNegrosVendidos) );
}
}

5. Hacer un algoritmo en JAVA traductor de los meses del ao, si se ingresa 1: imprimir Enero, 2: febrero, 3: Marzo
as hasta diciembre.
Alternativas Fundamenta tu respuesta (Cdigo de la solucin)
Solucin
package Semana2;
import java.util.Scanner;
public class Prog8 {
public static void main(String[] args) {
int mes;
Scanner teclado=new Scanner(System.in);
System.out.println("Ingrese monto total de la factura");
mes=teclado.nextInt();

switch(mes){
case 1: System.out.println("Enero"); break;
case 2:System.out.println("Febrero"); break;
case 3: System.out.println("Marzo"); break;
case 4: System.out.println("Abril"); break;
case 5: System.out.println("Mayo"); break;
case 6: System.out.println("Junio"); break;
case 7: System.out.println("Julio"); break;
case 8: System.out.println("Agosto"); break;
case 9: System.out.println("Setiembre"); break;
case 10: System.out.println("Octubre"); break;
case 11: System.out.println("Noviembre"); break;
case 12: System.out.println("Diciembre"); break;
default: System.out.println("Ingreso incorrecto"); break;
}
}
}







Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

65







La democracia slo es posible con el acceso fcil a la informacin
y las buenas comunicaciones.
Y la tecnologa es una forma de facilitar las comunicaciones.
Tom Clancy


Bienvenida

Estimados estudiantes bienvenidos! a la tercera semana del curso, En la cual conoceremos las
estructuras de control repetitivas, tiles para desarrollar nuestros algoritmos y su respectiva codificacin.

Ruta de aprendizaje

Durante la tercera semana que corresponde del 20 al 26 de mayo realizaremos las siguientes actividades,
no sin antes haber descargado y revisado el silabo del curso, la gua de aprendizaje, luego
emprenderemos la siguiente ruta:

- Estructuras Repetitivas
- Mientras / Hacer
- Mientras (While, Do-while)
- Estructura Repetitiva Desde (For)
- Conversin de Algoritmos a Programas
- Creacin de programas en Java

Es preciso recordarte que para que cumplas los objetivos planteados debes planificar tu tiempo, pues
estas actividades demandan 10 horas de estudio semanales.


Cordialmente
Ing. Luis Alberto Vives Garnique
Docente experto de la asignatura
Tema 3:
Tercera Semana
Explicaremos las estructuras repetitivas while, do-while y for, desarrollando
ejercicios algortmicos y llevando a programarlo en un lenguaje de
programacin actual
Del 20 al 26 de mayo
F
u
e
n
t
e
:

I
m
a
g
e
n

e
x
t
r
a

d
a

d
e


i
n
t
e
r
n
e
t



Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

66

Estructura repetitivas WHILE, DO-WHILE Y FOR


Introduccin al tema

Son aquellas aplicaciones en las cuales una operacin o conjunto de ellas deben repetirse muchas
veces.
Las estructuras de control que repiten una secuencia de instrucciones un nmero determinado de
veces se denomina bucles y se denomina iteracin, cuando se repite la ejecucin de una secuencia
de acciones.

Entre las Estructuras Repetitivas que utilizaremos en el curso veremos:

- Estructura repetitiva WHILE
- Estructura repetitiva DO-WHILE
- Estructura repetitiva FOR

Aprendizajes esperados

Conozcamos ahora las capacidades y actitudes a desarrollar en este cuarto tema:

Capacidades
- Comprende los conceptos y principios bsicos de la algoritmia y la programacin, para la
resolucin de problemas.
Actitudes
- Reconoce la oportunidad de aplicar algoritmos y programas en situaciones reales.
- Distingue entre los diversos problemas la oportunidad de utilizar estructuras de control.
- Es creativo al generar planteamientos y soluciones innovadoras a los problemas que se le
presentan.





Mapa conceptual referido al tema
F
u
e
n
t
e
:

I
m
a
g
e
n

e
x
t
r
a

d
a

d
e


i
n
t
e
r
n
e
t



Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

67

Observa detenidamente el siguiente esquema, en el encontrars de un vistazo de manera
sintetizada los principales concepto de la temtica que abordaremos. Qu conceptos o categoras te
llaman la atencin?




Fuente: Elaboracin propia






Desarrollo de los contenidos de aprendizaje
3.1. Estructura mientras (while)

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

68
Mientras (while), pertenece a las estructuras repetitivas y nos permite repetir
el cuerpo del bucle mientras se cumpla una determinada condicin. Cuando
se ejecuta la instruccin mientras, se evala una expresin lgica (una
expresin booleana), si la expresin evaluada resulta verdadera el programa
ejecuta las sentencias que se encuentran dentro de la estructura mientras, el
proceso se repite hasta que la expresin lgica sea falsa, este proceso se
repite una y otra vez mientras la expresin booleana (condicin) sea
verdadera. El ejemplo anterior quedara as:
Condicin
Acciones
Si
No




En las estructuras mientras se distingue dos partes:
- Ciclo: Conjunto de instrucciones que se ejecutaran repetidamente.
- Condicin: La evaluacin de esta condicin permite decidir cuando
finaliza la ejecucin del ciclo. La condicin se evala al inicio del mismo.
Ejemplo 5.1
Pseudocdigo en castellano
mientras (condicin) hacer
Accin S1
Accin S2
.
.
.
Accin n
fin_mientras
mientras condicin
Acciones
Pseudocdigo en ingles
while (condicin) do
Accin S1
Accin S2
.
.
.
Accin n
end_while
Figura 1.28. Estructuras mientras: Diagrama de flujo,
Pseudocdigo en castellano y Pseudocdigo en ingles

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

69
Lee por teclado un nmero que represente una cantidad de nmeros que a
su vez se leern tambin por teclado. Calcular la suma de todos esos nmeros.
Solucin:
En Pseudocdigo
Inicio
Var:
Enteros: n, total
Real: nmero, suma0
leer(n)
totaln
mientras(total>0) hacer
Leer(nmero)
sumasuma+nmero
totaltotal-1
fin_mientras
escribir(la suma de los,n, nmeros es,suma)
Fin

En Diagrama de Flujo




Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

70
Total>0
Suma<-suma+numero
Si
No
Inicio
n,total,numero,suma<-0
Leer
n
n<-total
Leer
numero
total<-total-1
mostrar
suma
Inicio

Ejemplo 5.2
Contar los nmeros enteros positivos introducidos por teclado. Se
consideran dos variables enteras nmero y contador (contara el nmero
de enteros positivos). Se supone que se leen nmeros positivos y se
detiene el bucle cuando se lee un nmero negativo o cero.
Solucin:
En Pseudocdigo
Inicio
Var:
Enteros: numero,contador
contador0
leer(numero)
mientras(numero>0) hacer
Leer(numero)
contadorcontador-1

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

71
fin_mientras
escribir(El numero de enteros positivos es, contador)
Fin
En Diagrama de Flujo
numero>0
Si
No
Inicio
numero,contador<-0
Leer
numero
Leer
numero
contador<-contador+1
mostrar
contador
Inicio

Ejemplo 5.3
Considere los siguientes algoritmos. Qu visualizar y cuntas veces se
ejecuta el bucle?
a) i0
mientras(i<6) hacer
escribir(i)
ii+1
fin_mientras
La salida es el valor de la variable de control I al principio de cada
ejecucin del cuerpo del bucle: 0, 1, 2, 3, 4, 5. El bucle se ejecuta seis
veces.
b) i0

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

72
mientras(i<6) hacer
ii+1
escribir(i)
fin_mientras
La salida ser entonces 1, 2, 3, 4, 5 y 6. El cuerpo del bucle se ejecuta
tambin seis veces. Obsrvese que cuando i=5, la expresin booleana
es verdadera y el cuerpo del bucle se ejecuta; con i=6 la sentencia
escribir se ejecuta, pero a continuacin evala la expresin booleana y
se termina el bucle.
Mtodos para terminar un bucle de entrada

1. Preguntar antes de la iteracin

Ejemplo:

Solicito un mensaje al usuario si existen ms entradas

Suma 0
Escribir (`Existen ms nmeros en la lista S/ N`)
leer (resp) // variable resp es tipo carcter //
mientras (resp = `S` o resp= `N`) hacer
Escribir (nmero)
leer (N)
Sumasuma + N
escribir (Existen ms nmeros (S/N)`)
leer (resp)
fin_mientras

- El mtodo correcto para terminar un bucle que lee una lista de
valores es con un centinela, es un valor especial usado para indicar
el final de una lista de datos.
- Si la lista de datos son nmeros positivos un valor centinela ser
un nmero negativo, que indique el final de la lista.


Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

73
Otro Ejemplo:

Calcular la media de un conjunto de notas de alumnos valor centinela -99
que detecte el fin del bucle.
En Pseudocdigo usando un valor centinela:
Inicio
Total0
N0 // Nmero de alumnos//
leer(nota) // la primera nota debe ser distinta de -99 //
mientras (nota <> -99) hacer
Totaltotal + nota
Nn+ 1
Leer(nota)
fin_mientras
Mediatotal / N
Escribir (`La media es`, media)
Fin

3.2. Estructura hacer-mientras (do-while)
El bucle mientras al igual que el bucle desde que se ver con posterioridad
evala la expresin al comienzo del bucle de repeticin; siempre se utilizara
para crear bucle pre-test. Los bucles pre-test se denominan tambin bucles
controlados por la entrada. En numerosas ocasiones se necesita que el
conjunto de sentencias que componen el cuerpo del bucle se ejecuten al
menos una vez sea cual sea el valor de la expresin o condicin de evaluacin.
Estos bucles se denominan bucles post-test o bucles controlados por la salida.
El bucle hacer-mientras es anlogo al bucle mientras y el cuerpo del bucle se
ejecuta una y otra vez mientras la condicin (expresin booleana) es
verdadera. Existe, sin embargo, una gran diferencia y es que el cuerpo del
bucle est encerrado entre las palabras reservadas hacer y mientras, de modo
que las sentencias de dicho cuerpo se ejecutan, al menos una vez, antes de
que se evalu la expresin booleana. En otras palabras, el cuerpo del bucle
siempre se ejecuta, al menos una vez, incluso aunque la expresin booleana
sea falsa.

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

74
Acciones
Condicin
No
Si



Ejemplo 5.4
Desarrollar un algoritmo necesario para calcular el factorial de un numero N.
Solucin:
En Pseudocdigo
Algoritmo FACTORIAL
Inicio
Var:
entero: i, n
real: factorial
escribir(Ingrese un numero)
leer(n)
factorial1
i1
hacer
factorialfactorial*i
ii+1
mientras(i<=n)
escribir(El factorial del numero, n, es, factorial)
hacer
Acciones
mientras (condicin)
Figura 1.29. Estructuras hacer-mientras: Diagrama de flujo,
Pseudocdigo en castellano.

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

75
Fin
i<=n
Inicio
n, factorial<-1,i<-1
Leer
n
factorial<-factorial*i
mostrar
factorial
Inicio
i<-i+1
Si
No

Ejemplo 5.5
Escribir los nmeros 1 al 100
Algoritmo uno_cien
Inicio
Var:
Entero: num1
hacer
escribir(num)
numnum+1
mientras(num<100)
Fin

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

76
i<100
Inicio
num<-1
factorial<-factorial*i
mostrar
n
Inicio
n<-n+1
Si
No

3.3. Estructura desde/para (for)
En muchas ocasiones se conoce de antemano el nmero de veces que se
desean ejecutar las acciones de un bucle. En estos casos en el que el nmero
de iteraciones es fija, se debe usar la estructura for.
La estructura for ejecuta las acciones del cuerpo del bucle un nmero
especfico de veces y de modo automtico controla el nmero de iteraciones
o pasos a travs del cuerpo del bucle. Su representacin grfica es:














Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

77






























Su sintaxis:
for (sentencia inicial; condicin; incremento/decremento)
Sentencia;
O para la ejecucin repetida de un grupo de sentencias:
for (sentencia inicial; condicin; incremento/decremento)
{
grupo de sentencias;
}

La primera parte de la construccin for acostumbra a ser una sentencia de
asignacin donde se inicializa alguna variable que controla el nmero de veces

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

78
que debe ejecutarse el cuerpo del bucle. Esta sentencia se ejecuta una sola
ocasin, antes de entrar por primera vez al cuerpo del bucle.
La segunda parte corresponde a la condicin que indica cuando finaliza el
bucle, de la misma forma que en las construcciones iterativas anteriores. En
este caso, la condicin se evala antes de ejecutar el cuerpo del bucle, por lo
que al igual que en la construccin while, el cuerpo puede ejecutarse entre ( )
y N N veces, donde N depende de la condicin.
La tercera parte corresponde normalmente a una sentencia de incremento o
decremento sobre la variable de control del bucle. Esta sentencia se ejecuta
siempre despus de la ejecucin del cuerpo del bucle.

Lecturas recomendadas

Documento 1: " Estructuras de control repetitivo"
Direccin: Carpeta de lecturas: 3_F_Estructuras de control repetitiva JAVA.pdf
Breve Descripcin: Enrrique Garca Hernndez en su blog presenta ejemplos sencillos
pero bastante didcticos de cmo utilizar las estructuras de decisin simple, estructuras
condicional, alternativa o selectiva, condiciones dobles, condicin mltiple.

Documento 2: " Estructuras de control repetitivo 2
Direccin: Carpeta de lecturas: 3_F_Estructuras de control repetitiva 2 JAVA.pdf
Breve Descripcin: Este documento encontrado en www.javaya.com.ar se presenta
ejercicios y su algoritmo de resolucin en lenguaje JAVA, donde utiliza estructuras
repetitivas, necesarias para este tipo de problemas.
Conclusiones
En esta semana de estudio se presentaron las estructuras repetitivas, que son una de
las estructuras importantes para controlar el flujo del algorimo en forma repetitiva de
acuerdo a una condicin evaluada cada vez que se desee procesar un grupo de
instrucciones.
Tambin en este tema nos hemos dedicado desarrollar algunos ejemplo que ilustran
como el flujo del algoritmo se repite hasta el lmite establecido, pudiendo comprender la
naturaleza de la estructura y su utilizacin en un cierto tipo de problemas de la
realidad.



Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

79
Metacognicin de la tercera semana
Las siguientes preguntas te ayudarn a reflexionar sobre tus propios aprendizajes, es un
ejercicio recomendado para razonar e identificar nuestro esfuerzo intelectual, la finalidad
es regular nuestras acciones y procesos mentales
De la temtica abordada que te llam ms la atencin?
Consideras que aprendiste con los contenidos abordados? Qu parte te tom ms tiempo?
Tuviste dificultad con algn tema o actividad? Cmo los solucionaste?
Qu acciones realizaste para aprender?

Control de lectura tercera semana

Muy bien! Hemos llegado al final de la tercera semana, ahora, para comprobar tus logros y nivel
de aprendizaje alcanzado en relacin a la temtica estudiada, responde a las siguientes
preguntas:

1. Elaborar un programa en JAVA para ayudar a una persona que debe realizar un muestreo de 50 personas para
determinar el promedio de peso de los nios, jvenes y viejos que existen en su distrito. Se determina las categoras
con base en la tabla siguiente:
Categora Edad
Nios 0-12
Jvenes 13-29
Adultos 30-59
Viejos 60 en adelante
Alternativas Fundamenta tu respuesta (Cdigo de la solucin)
Solucin
package Semana3;
import java.util.Scanner;
public class preg1 {

public static void main(String[] args) {
int edad;
int cantidadNios=0;
int cantidadJovenes=0;
int cantidadAdultos=0;
int cantidadviejos=0;

Scanner teclado=new Scanner(System.in);

for (int i=1;i<=10;i++){
System.out.println("Ingrese la edad de la "+i+" persona");
edad=teclado.nextInt();
if (edad>=60){
cantidadviejos=cantidadviejos+1;
}else if(edad>=30){
cantidadAdultos=cantidadAdultos+1;
}else if(edad>=13){
cantidadJovenes=cantidadJovenes+1;
}else if(edad>=0){
cantidadNios=cantidadNios+1;
}
}
System.out.println("Cantidad de nios "+cantidadNios);

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

80
System.out.println("Cantidad de jovenes "+cantidadJovenes);
System.out.println("Cantidad de adultos "+cantidadAdultos);
System.out.println("Cantidad de Viejos "+cantidadviejos);
}
}


2. Elaborar un programa en JAVA para ayudar a un entrenador que le ha propuesto a un atleta recorrer una ruta de cinco
kilmetros durante 10 das, para determinar si es apto para la prueba de 5 kilmetros o debe buscar otra especialidad.
Para considerarlo apto debe cumplir por lo menos una de las siguientes condiciones:
- Que ninguna de las pruebas haga un tiempo mayor a 16 minutos.
- Que al menos en una de las pruebas realice un tiempo mayor de 14 minutos
- Que su promedio de tiempos sea menor o igual a 15 minutos.
Alternativas Fundamenta tu respuesta (Cdigo de la solucin)
Solucin
package Semana3;
import java.util.Scanner;
public class preg3 {
public static void main(String[] args) {
int tiempo;
boolean estado=true;
boolean estado2=false;
boolean estado3=false;
int suma=0;
int contador=1;

Scanner teclado=new Scanner(System.in);

for (int i=1;i<=10;i++){
System.out.println("Ingrese tiempo del "+i+" da.");
tiempo=teclado.nextInt();
if (tiempo>16)
{
estado=false;
}

if (tiempo>=14)
{
estado2=true;
}
suma=suma+tiempo;
contador=i;
}
if ((suma/contador)<=15){
estado3=true;
}

if (estado==true && estado2==true && estado3==true){
System.out.println("Apto para la prueba");
}else{
System.out.println("No apto para la prueba");
}
}
}

3. Elaborar un programa en JAVA para una frutera que al cerrar el expendio de naranjas al finalizar el da, 15 clientes
que an no han pagado recibirn un 15% de descuento si compran ms de 10 kilos. Determinar cunto percibir la
tienda por esas compras.
Alternativas Fundamenta tu respuesta (Cdigo de la solucin)

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

81
Solucin
package Semana3;
import java.util.Scanner;
public class preg5 {
public static void main(String[] args) {
double venta=0;
double total=0;
double cantidad;
double precio;

Scanner teclado=new Scanner(System.in);
for (int i=1;i<=5;i++){
System.out.println("Ingrese la cantidad de producto");
cantidad=teclado.nextDouble();
System.out.println("Ingrese el precio producto");
precio=teclado.nextDouble();

venta=cantidad*precio;

if (cantidad>10){
total=total+((venta-(venta*0.15)));
}else{
total=total+venta;
}
}
System.out.println("Ingrese totales: "+ total );
}
}


4. Elaborar un programa en JAVA para ingresar dos nmeros enteros A y B, y obtener la lista de los nmeros que se
encuentran entre A y B, donde A > B.
Alternativas Fundamenta tu respuesta (Cdigo de la solucin)
Solucin
package Semana3;
import java.util.Scanner;
public class preg7 {
public static void main(String[] args) {
int numeroInicial;
int numeroFinal;

Scanner teclado=new Scanner(System.in);
System.out.println("Ingresa nmero de inicio");
numeroInicial=teclado.nextInt();
System.out.println("Ingresa nmero final");
numeroFinal=teclado.nextInt();
if (numeroInicial<numeroFinal) {
for(int i=numeroInicial;i<=numeroFinal;i++){
System.out.print(i+" ");
}
}else
{
System.out.println("El nmero inicial es mayor que el nmero final");
}
}
}

5. Elaborar un programa en JAVA para ingresar N nmeros y calcular el promedio de los pares y el promedio de los
impares.
Alternativas Fundamenta tu respuesta (Cdigo de la solucin)

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

82
Solucin
package Semana3;
import java.util.Scanner;
public class preg10 {
public static void main(String[] args) {
int cantidad;
int sumaPares=0;
int sumaImpares=0;
int numero;
int cantidadPares=0;
int cantidadImpares=0;
Scanner teclado=new Scanner(System.in);
System.out.println("Ingrese cantidad de trminos de la serie");
cantidad=teclado.nextInt();

for (int i=1;i<=cantidad;i++){
System.out.println("Ingrese nmero");
numero=Integer.parseInt(teclado.next());

if (numero%2==0){
sumaPares=sumaPares+numero;
cantidadPares=cantidadPares+1;
}else{
sumaImpares=sumaImpares+numero;
cantidadImpares=cantidadImpares+1;
}
}
System.out.println("Promedio de pares: " + (sumaPares/cantidadPares));
System.out.println("Promedio de impares: " +
(sumaImpares/cantidadImpares));
}
}
























Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

83







La socializacin slo se presenta cuando la coexistencia aislada de los individuos
adopta formas determinantes de cooperacin y colaboracin
que caen bajo el concepto general de la accin recproca.
Georg Simmel



Bienvenida

Estimados estudiantes bienvenidos! a la cuarta semana del curso, En la cual conoceremos las
estructuras de datos e iniciaremos explicando los arreglos unidimensionales, llamados vectores, sus
operaciones y los mtodos de ordenamiento y bsqueda de datos, desarrollando algoritmos y llevndolo
a un lenguaje de programacin

Ruta de aprendizaje
Durante la cuarta semana que corresponde del27 mayo al 02 junio realizaremos las siguientes
actividades, luego emprenderemos la siguiente ruta:
- Arreglos unidimensionales
- Operaciones con vectores
- Mtodos de ordenamiento y bsqueda

Es preciso recordarte que para que cumplas los objetivos planteados debes planificar tu tiempo, pues
estas actividades demandan 10 horas de estudio semanales.


Cordialmente
Ing. Luis Alberto Vives Garnique
Docente experto de la asignatura
Cuarta Semana
Analizaremos las estructuras de datos e iniciaremos explicando los arreglos
unidimensionales, llamados vectores, sus operaciones y los mtodos de
ordenamiento y bsqueda de datos, desarrollando algoritmos y llevndolo a un
lenguaje de programacin.
(27 mayo al 02 junio)
F
u
e
n
t
e
:

I
m
a
g
e
n

e
x
t
r
a

d
a

d
e


i
n
t
e
r
n
e
t



Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

84
Tema 4

Introduccin a la Estructura de Datos


Introduccin al tema

Una estructura de datos es una coleccin de datos, los tipos de datos utilizados con mayor
frecuencia en los diferentes lenguajes de programacin son:
a. Datos simples:
- Integer
- Real
- Char
- boolean
b. Datos estructurados:
b.1. Estticos
- Arrays (vectores y matrices)
- Registros (record)
- Ficheros (archivos)
- Conjuntos (set)
- Cadenas (string)
b.2. Dinmicos
- Listas (pilas/ colas)
- Listas enlazadas
- rboles
- Grafos
Aprendizajes esperados
Conozcamos ahora las capacidades y actitudes a desarrollar en este cuarto tema:
Capacidades
- Utiliza eficientemente estructuras de datos estticas en la solucin de problemas.
- Aplica adecuadamente algoritmos y programas recursivos para resolver problemas
especficos.

F
u
e
n
t
e
:

I
m
a
g
e
n

e
x
t
r
a

d
a

d
e


i
n
t
e
r
n
e
t



Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

85
- Implementa apropiadamente archivos de datos para su aplicacin en problemas de nivel
intermedio.
- Comprende el manejo de memoria de las estructuras estticas.
- Resuelve problemas asociados a la manipulacin de cadenas
Actitudes
- Asume una actitud de respeto ante sus semejantes, mostrndose responsable en las
diversas actividades.
- Demuestra solidaridad en el trabajo cooperativo y tolerancia en la resolucin de
discrepancias en las opiniones y actitudes de los dems.
- Asume una actitud de respeto ante sus semejantes, mostrndose responsable en las
diversas actividades.

Mapa conceptual referido al tema

Observa detenidamente el siguiente esquema, en el encontrars de un vistazo de manera
sintetizada los principales concepto de la temtica que abordaremos. Qu conceptos o categoras te
llaman la atencin?


Fuente: Elaboracin propia

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

86
Desarrollo de los contenidos de aprendizaje

Las variables que hemos utilizado hasta ahora nos permiten el almacenamiento de un solo valor a
la vez.
Para resolver cierto tipo de problemas con datos mltiples en forma eficiente, se requiere
almacenamiento en conjunto. A esta organizacin de elementos se le conoce con el nombre de
arreglo.
Otra definicin de arreglo ms completa (Luis Joyanes A.), es un conjunto finito y ordenado de
elementos homogneos. La propiedad "ordenado" significa que el elemento primero, segundo,
terceroensimo de un arreglo puede ser identificado. Los elementos de un arreglo debern ser
homogneos, es decir, del mismo tipo de datos. Por ejemplo un arreglo puede estar compuesto
de todos sus elementos de tipo cadena, otro puede tener sus elementos de tipo entero, etc.

Al tratar el tema de arreglos es necesario conocer el trmino de dimensin.

Dimensin Descripcin
0 Un solo punto.
1 (vector o lista) Una recta. Contiene largo.
2 (matriz o tabla) Contiene largo y ancho.
3 (cubo) Tiene largo, ancho y fondo.

4.1. Declaracin de un arreglo

Nom_variable : Arreglo [dimensin] de Nom_tipo
En donde dimensin especifica:
<subndice inferior> <subndice superior>
En el orden : Fila, Columna, Fondo.

Ejemplo de una declaracin:
- 0 Dimensin:
x =20 donde x, es de tipo Entero.

- 1 Dimensin:

5
1 2 3 4

x[2]= 5

x : arreglo [1..4] de Enteros.

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

87

- 2 Dimensiones :
1 2 3 4

8



x[2,4] = 8

x : arreglo [1..4, 1..4] de Enteros.

- Dimensiones:
x[1,4,2] = 3

x : arreglo[1..3, 1..4, 1..2] de Enteros.

4.2. Vectores
Son aquellos de una sola dimensin, por lo que tambin son llamados arreglos
Unidimensionales.

Ejemplo:

Un vector de una dimensin llamado CALIF, que consta de n elementos.

calif(1) calif(2) calif(n-2) calif(n-1) calif(n)

El subndice o ndice de un elemento (1, 2 n) designa su posicin en la ordenacin del vector.
Otras posibles notaciones del vector son:
a1, a2,,an En matemticas y algunos lenguajes(BASIC)
A(1), A(2),A(n)
A[1], A[2],A[n] En programacin (Pascal)

Los vectores se almacenan en memoria central de la computadora en un orden adyacente. As,
un vector de 50 elementos denominado NUMEROS se representa grficamente por 50
posiciones de memoria sucesivas.
Memoria


Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

88
NUMEROS(1) Direccin x
NUMEROS(2) Direccin x+1
NUMEROS(3) Direccin x+2
:
:
NUMEROS(50) Direccin x+49

Cada elemento de un vector se puede procesar como si fuese una variable simple al ocupar una
posicin de memoria. As:
NUMEROS(25) 75 almacena el valor 75 en la posicin 25
a
del vector NUMEROS y la
instruccin de salida : escribir NUMEROS(25).

Declaracin
nom _arreglo = arreglo[liminf..limsup] de tipo

Donde:
nom_arreglo : nombre vlido del arreglo.
liminf..limsup : lmites inferior y superior del rango del arreglo.
tipo : tipo de datos de los elementos del arreglo : entero, real, carcter.

NOMBRES= arreglo [1..10] de carcter

Significa que NOMBRES es un arreglo (array) unidimensional de 10 elementos (1 a 10) de tipo
carcter.
4.2.1. Llenado de un vector
- Hacer para I = 1 a 10
Leer vec[I]
Fin-para

- Hacer mientras I <= 10
Leer vec[I]
Fin-mientras

- I=1
Repetir
Leer vec[I]
I = I + 1
Hasta-que I>10



Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

89
4.2.2. Operaciones con Vectores
Las operaciones que se pueden realizar con arreglos durante el proceso
de resolucin de un problema son:

- Asignacin
- Lectura/Escritura
- Recorrido (acceso secuencial)
- Actualizar (aadir, borrar, insertar)

Asignacin
NOMBRES(8) Ana
Asigna el valor Ana al elemento 8 del vector NOMBRES

Lectura/Escritura de Datos
La Lectura/Escritura de datos en un arreglo u operaciones de entrada/salida normalmente se
realizan con estructuras repetitivas, aunque puede tambin hacerse con estructuras selectivas.
Las instrucciones simples de lectura/escritura se representarn como:
leer A Lectura del vector A
escribir A Escritura del vector A
leer V(5) Leer el elemento V(5) del vector V


Acceso Secuencial al Vector (recorrido)
Se puede acceder a los elementos de un vector para introducir datos (escribir) en el o bien
para visualizar su contenido (leer). Estas operaciones se realizan utilizando estructuras
repetitivas, cuyas variables de control (por ejemplo I) se utilizan como subndices del vector
(por ejemplo, X(I). El incremento del contador del bucle producir el tratamiento sucesivo de los
elementos del vector.

Ejemplo :
Lectura de 15 valores enteros de un vector denominado TOTAL.

TOTAL= array [1.15] de entero
desde i 1 hasta 15 hacer
leer TOTAL(i)
fin _desde

Si se cambian los lmite inferior y superior, por ejemplo, 5 y 12, el bucle de lectura sera :
desde i 5 hasta 12 hacer
leer TOTAL(i)

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

90
fin_desde

La salida o escritura de vectores se representa de un modo similar.
desde i 1 hasta 15 hacer
escribir TOTAL(i)
fin_desde
Visualiza todo el vector completo (un elemento en cada lnea independiente).

Actualizacin de un Vector
Puede constar de tres operaciones ms elementales:

a) Aadir elementos (aade un nuevo elemento al final del vector)
Un arreglo A se ha dimensionado a 6 elementos, pero solo se han asignado 4 valores a los
elementos A(1), A(2), A(3), A(4), se podrn aadir dos elementos ms con una simple accin
de asignacin.
A(5) 15
A(6) 9

b) Insertar elementos (introduce un elemento en el interior de un vector)

Ejemplo:
Se tiene un arreglo NOM de 6 elementos de nombres de personas, en orden alfabtico y se
desea insertar un nuevo nombre.

{Calcular la posicin ocupada por el elemento a insertar} P
{Inicializar contador de inserciones} i n.
mientras i >= P hacer
{transferir el elemento actual hacia abajo, a la posicin i+1}
NOM(i+1) NOM(i)
{decrementar contador}
i i-1
fin_mientras
{Insertar el elemento en la posicin P}
NOM(P) nuevo elemento
{Actualizar el contador de elementos del vector}
n n+1
fin

c) Borrar elementos (Elimina elementos de un vector)

Algoritmo de Borrado

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

91
Inicio
{se utilizar una variable auxiliar AUX, que contendr el valor del elemento que se desea
borrar}
AUX NOM(i)
desde i j hasta N-1 hacer
{llevar elemento j+1 hacia arriba}
NOM(i) NOM(i+1)
fin_desde
{actualizar contador de elementos}
{ahora tendr un elemento menos, N-1}
N N-1
Fin

Ejercicio:

Se desea la lectura y desplegado de 5 nombres. Resuelva el problema por cada uno de los
siguientes criterios:
a) Lectura y desplegado alternados.
b) Todas las lecturas, todos los desplegados.

a) variables:
string : nom
entero : x

Inicio
Para x 1 hasta 5 hacer
escribir(Nombre ? )
leer(nom)
escribir( La persona nmero, x, se llama : ,nom)
Fin
Nota: No se utilizaron arreglos porque no se requera de almacenamiento mltiple.
b) variables :
nom : Arreglo[1..5] de string
x : Entero

Inicio
para x 1 hasta 5 hacer
escribir(Dame el nombre nmero,x, ?)
leer(nom[x])
para x 1 hasta 5 hacer
escribir(La persona nmero , x, se llama : ,nom[x])

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

92
Fin

EJERCICIOS RESUELTOS
EJERCICIO 7.1:
Ingresar n nmeros dentro de un arreglo y luego imprimirlos.
DIAGRAMA N/S:







EJERCICIO 7.2:
Calcular la media aritmtica de un conjunto de datos.
DIAGRAMA N/S:




















CAPITULO 8: MTODOS DE
BSQUEDAS Y

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

93
ORDENAMIENTOS EN ARREGLOS
4.3. Algoritmos de ordenamientos
4.3.1. Qu es ordenamiento?
Es la operacin de arreglar los elementos de vector en algn orden secuencial de acuerdo a un
criterio de ordenamiento.
El ordenamiento se efecta con base en el valor de algn campo en un registro.
El propsito principal de un ordenamiento es el de facilitar las bsquedas de los miembros del
conjunto ordenado.
Ejemplo de ordenamientos
Directorio telefnico, tablas de contenido, bibliotecas y diccionarios, etc.
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.
Cundo conviene usar un mtodo de ordenamiento?
Cuando se requiere hacer una cantidad considerable de bsquedas y es importante el factor
tiempo.

4.3.2. Tipos de ordenamientos:
Los 2 tipos de ordenamientos que se pueden realizar son: los internos y los externos.
4.3.2.1. Los internos:
Son aquellos en los que los valores a ordenar estn en memoria principal, por lo que se
asume que el tiempo que se requiere para acceder cualquier elemento sea el mismo
(a[1], a[500], etc.).
4.3.2.2. Los externos:
Son aquellos en los que los valores a ordenar estn en memoria secundaria (disco,
cinta, cilindro magntico, etc.), por lo que se asume que el tiempo que se requiere para
acceder a cualquier elemento depende de la ltima posicin accesada (posicin 1,
posicin 500, etc.).

Algoritmos de ordenamiento:
Internos:
1. Insercin directa.
1. Insercin directa.
2. Insercin binaria.
2. Seleccin directa.
1. Seleccin directa.
3. Intercambio directo.
1. Burbuja.

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

94
2. Shake.
4. Insercin disminucin incremental.
1. Shell.
5. Ordenamiento de rbol.
1. Heap.
2. Tournament.
6. Sort particionado.
1. Quick sort.
7. Merge sort.
8. Radix sort.
9. Clculo de direccin.
Externos:
1. Straight merging.
2. Natural merging.
3. Balanced multiway merging.
4. Polyphase sort.
5. Distribution of initial runs.
4.3.3. Clasificacin de los algoritmos de ordenamiento de informacin:
El hecho de que la informacin est ordenada, nos sirve para poder encontrarla y accesarla
de manera ms eficiente ya que de lo contrario se tendra que hacer de manera secuencial.

A continuacin se describirn 4 grupos de algoritmos para ordenar informacin:

4.3.3.1. Algoritmos de insercin:
En este tipo de algoritmo los elementos que van a ser ordenados son considerados uno a la
vez. Cada elemento es INSERTADO en la posicin apropiada con respecto al resto de los
elementos ya ordenados.
Entre estos algoritmos se encuentran el de INSERCION DIRECTA, SHELL SORT,
INSERCIN BINARIA y HASHING.
4.3.3.2. Algoritmos de intercambio:
En este tipo de algoritmos se toman los elementos de dos en dos, se comparan y se
INTERCAMBIAN si no estn en el orden adecuado. Este proceso se repite hasta que se ha
analizado todo el conjunto de elementos y ya no hay intercambios.
Entre estos algoritmos se encuentran el BURBUJA y QUICK SORT.
Algoritmos de seleccin:
En este tipo de algoritmos se SELECCIONA o se busca el elemento ms pequeo (o
ms grande) de todo el conjunto de elementos y se coloca en su posicin adecuada.
Este proceso se repite para el resto de los elementos hasta que todos son analizados.
Entre estos algoritmos se encuentra el de SELECCION DIRECTA.
Algoritmos de enumeracin:

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

95
En este tipo de algoritmos cada elemento es comparado contra los dems. En la
comparacin se cuenta cuntos elementos son ms pequeos que el elemento que se
est analizando, generando as una ENUMERACION. El nmero generado para cada
elemento indicar su posicin.
Los mtodos simples son: Insercin (o por insercin directa), seleccin, burbuja y shell,
en dnde el ltimo es una extensin al mtodo de insercin, siendo ms rpido. Los
mtodos ms complejos son el quick-sort (ordenacin rpida) y el heap sort.
A continuacin solo se mostrar el mtodo de ordenamiento ms simple.
Mtodo burbuja.
El bubble sort, tambin conocido como ordenamiento burbuja, funciona de la siguiente
manera: Se recorre el arreglo intercambiando los elementos adyacentes que estn
desordenados. Se recorre el arreglo tantas veces hasta que ya no haya cambios.
Prcticamente lo que hace es tomar el elemento mayor y lo va recorriendo de posicin
en posicin hasta ponerlo en su lugar.
Const MAX = 100
A = arreglo[1..MAX] de enteros
Variable N:entero

Ordenamiento directo. Mtodo de burbuja.
Ordena los elementos del arreglo usando el mtodo de burbuja. Transporta en cada
pasada el elemento ms pequeo a la parte izquierda del arreglo A de N elementos.














Ordenamiento directo. Mtodo de la burbuja. Contrario al anterior.
La lgica de este algoritmo cambia con el anterior, en el hecho de que en cada pasada
se lleva el valor ms grande a hacia la parte derecha del arreglo A de N elementos.
Burbuja1(A,N)
Inicio
Declarar i,j,aux:entero
Para i 2 hasta N haga
Para j i hasta 2 inc (1) haga
Si (A[j-1]>A[j]) entonces
Aux A[j-1]
A[j-1] A[j]
A[j] aux
Fin si
Fin para
Fin para
Fin

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

96















4.3.4. Mtodos de bsqueda interna (bsqueda en memoria principal)
Para todos los algoritmos se cuenta con la siguiente estructura de datos

Const MAX = 100
V = arreglo[1..MAX] de enteros
Variable N:entero

Existen 4 mtodos principales de bsqueda interna:
- Secuencial lineal
- Binaria
- Por transformacin de Claves (Solo se menciona, despus se aadirn los
algoritmos)
- rboles de bsqueda (no se tratan aqu)

Bsqueda secuencial lineal.
Consiste en la revisin elemento por elemento del arreglo hasta encontrar el dato
buscado, o hasta llegar al final del arreglo, sin haberlo encontrado. Se puede diferenciar
entre buscar en un arreglo desordenado y buscar en un arreglo ordenado.
Bsqueda en arreglos desordenados.
Algoritmo que busca secuencialmente el elemento X en el arreglo desordenado V, con
N elementos.

Burbuja2(A,N)
Inicio
Declarar i,j,aux:entero
Para i 1 hasta N-1 haga
Para j 1 hasta N-i haga
Si (A[j]>A[j+1]) entonces
Aux A[j]
A[j] A[j+1]
A[j+1] aux
Fin si
Fin para
Fin para
Fin
Secuencialdesordenado(V, N, X)
Inicio
Declarar i:entero

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

97


















Bsqueda en arreglos ordenados
Este algoritmo es similar al anterior, pero se agrega una nueva condicin basada en el
orden de los elementos. Busca secuencialmente un elemento X en un arreglo ordenado
V de N elementos. El orden de V es creciente. {V[1]V[2] ...V[N]}
Declarar bandera: booleano

i 1
Bandera FALSO
Mientras Que ((i<=N) y (Bandera=FALSO)) haga
Si (V[i]=X) entonces
Bandera VERDADERO
Sino
i i+1
Fin si
Fin MQ
Si (bandera=VERDADERO) entonces
Imprimir(El elemento est en la posicin i);
Sino
Imprimir(El elemento no est en el arreglo)
Fin si
Fin
Secuencialordenado(V, N, X)
Inicio
Declarar i:entero
Declarar bandera: booleano

i 1
Bandera FALSO
Mientras Que ((i<=N) y (Bandera=FALSO) y (X>=V[i]) haga
Si (X=V[i]) entonces
Bandera VERDADERO
Sino
i i+1
Fin si
Fin MQ
Si (bandera=VERDADERO) entonces
Imprimir(El elemento est en la posicin i);
Sino
Imprimir(El elemento no est en el arreglo)

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

98



Bsqueda binaria
La bsqueda binaria, sirve exclusivamente para arreglos ordenados, consiste en dividir el
intervalo de bsqueda en dos partes, comparando el elemento buscado con el central, en
caso de no ser iguales se redefinen los extremos del intervalo (segn si el elemento
central es mayor o menor que el buscado). El proceso termina cuando se encuentra el
elemento o cuando se anula el intervalo de bsqueda.
Algoritmo que busca el elemento X mediante bsqueda binaria en el arreglo ordenado V
con N elementos.






























Fin si
Fin
binaria(V, N, X)
Inicio
Declarar izq, cen, der: entero
Declarar bandera: booleano

Izq 1
Der N
Bandera FALSO
Mientras Que ((izq<=der) y (Bandera=FALSO)) haga
Cen parteentera((izq+der)/2)
Si (X=V[cen]) entonces
Bandera VERDADERO
Sino
Si (X>V[cen]) entonces
izq cen+1
Sino
der cen-1
Fin si
Fin si
Fin MQ
Si (bandera=VERDADERO) entonces
Imprimir(El elemento est en la posicin cen);
Sino
Imprimir(El elemento no est en el arreglo)
Fin si
Fin

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

99
EJERCICIOS RESUELTOS

EJERCICIO 4.1:
Diga si un elemento se encuentra en un arreglo, utilice la bsqueda secuencial.

DIAGRAMA N/S:
















EJERCICIO
4.2.
Ordenar un conjunto de datos de menor a mayor por el mtodo de la burbuja.
DIAGRAMA N/S:












Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

100

Lecturas recomendadas

Documento 1: " Ejemplo de vectores en JAVA"
Direccin: Ver carpeta de lectura: 4_Ejemplo de vectores en JAVA.pdf
Breve Descripcin: Javier Garca comparte con la comunidad de internet ejemplo de
cmo declarar vectores en java, como recorrerlos utilizando la estructura repetitiva FOR y
cmo utilizar sentencias de decisin dentro de las repetitivas.

Documento 2: "Introduccin a los sistemas de Bases de Datos "
Direccin: Ver carpeta de lectura: 4_Ejemplo de vectores en JAVA 2.pdf
Breve Descripcin: www.javaya.com.ar, esta pgina presenta ejemplos de cmo trabajar
con vectores, explicando paso a paso la implementacin en lenguaje JAVA, tiene tres
problemas propuestos y resueltos utilizando vectores unidimensionales.

Conclusiones
En esta semana de estudio se presentaron los diferentes tipos y modelos de base de datos
que fueron apareciendo en el transcurso del desarrollo de estas herramientas que tienen como
finalidad, aclarar y tener conceptos claros sobre las bases de datos utilizadas actualmente y en
particular tratar de entender la complejidad de este tema.
Tambin se sabe que la Normalizacin se debe realizar de manera correcta para realizar una
buena planificacin y organizacin de los datos que van a almacenarse, el analista debe prever
la necesidad de accesar los datos para cumplir con requerimientos inesperados, objetivo que
se puede alcanzar mediante la normalizacin ya mencionada.
Un Sistema Gestor de Base de Datos no es ms que un programa que permitir que los
usuarios almacenen, realicen consultas y recuperen los datos a tratar, por tanto permitir la
manipulacin de la base de datos para un fin determinado


Metacognicin de la cuarta semana
Las siguientes preguntas te ayudarn a reflexionar sobre tus propios aprendizajes, es un ejercicio
recomendado para razonar e identificar nuestro esfuerzo intelectual, la finalidad es regular nuestras
acciones y procesos mentales
De la temtica abordada que te llam ms la atencin?
Consideras que aprendiste con los contenidos abordados? Qu parte te tom ms tiempo?
Tuviste dificultad con algn tema o actividad? Cmo los solucionaste?

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

101
Qu acciones realizaste para aprender?

Control de lectura cuarta semana

Muy bien! Hemos llegado al final de la cuarta semana, ahora, para comprobar tus logros y nivel
de aprendizaje alcanzado en relacin a la temtica estudiada, responde a las siguientes
preguntas:
Elabore el Diagrama de Flujo, seudocdigo y programacin en Java de las siguientes estructuras:
Vectores

1. Elaborar un programa en JAVA para ingresar 20 nmeros en un arreglo y mostrar luego,
primero la lista de todos los nmeros pares que fueron ingresados y luego la lista de los
nmeros negativos.
Alternativas Fundamenta tu respuesta (Cdigo de la solucin)
Solucin
package semana4;
import java.util.Scanner;
public class Ejercicio1 {

public static void main(String args[])
{
int arreglo[]=new int [20];
ingresa(arreglo);
imprime_pares(arreglo);
imprime_negativos(arreglo);
}

private static void imprime_negativos(int[] arreglo) {
int i;
System.out.println("Los valores negativos del arreglo son");
for(i=0;i<arreglo.length;i++)
if (arreglo[i] < 0)
System.out.println(arreglo[i]);
}

private static void ingresa(int[] arreglo) {
int i;
Scanner teclado=new Scanner(System.in);

for(i=0;i<arreglo.length;i++){
System.out.println("Ingresa 20 nmeros al arreglo - Numero "+(i+1)+ "
==>");
arreglo[i]=teclado.nextInt();
}

}

private static void imprime_pares(int[] arreglo) {
int i;
System.out.println("Los valores pares del arreglo son");
for(i=0;i<arreglo.length;i++)
if (arreglo[i] % 2 == 0)
System.out.println(arreglo[i]);
}

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

102
}

2. Elaborar un programa en JAVA para que calcule y devuelva la suma al cuadrado de las
componentes de un vector:


Alternativas Fundamenta tu respuesta (Cdigo de la solucin)
Solucin
package semana4;
import java.util.Scanner;
public class Ejercicio2 {
public static void main(String[] args) {
int arreglo[]=new int [10];
ingresa(arreglo);
suma(arreglo);

}

private static void suma(int[] arreglo) {
int i;
int suma = 0;
for(i=0;i<arreglo.length;i++)
suma = (int) (suma + Math.pow(arreglo[i],2));

System.out.println("la suma al cuadrado de los componentes del vector son:
"+ suma );
}

private static void ingresa(int[] arreglo) {
int i;
Scanner teclado=new Scanner(System.in);

for(i=0;i<arreglo.length;i++){
System.out.println("Ingresa 10 numeros al arreglo - Numero "+(i+1)+ " ==>");
arreglo[i]=teclado.nextInt();
}
}
}

3. Elaborar un programa en JAVA para ingresar N enteros en un arreglo (como mximo 30) y
luego de calcular el promedio, muestra la diferencia de cada entero ingresado con relacin
al promedio.
Alternativas Fundamenta tu respuesta (Cdigo de la solucin)
Solucin
package semana4;

import java.util.Scanner;
public class Ejercicio4 {

public static void main(String[] args) {

int arreglo[] = null;
int n = tama();
arreglo = new int [n];
ingresa(arreglo);
double promedio = promediar(arreglo);
diferencias(arreglo,promedio);
}

private static void diferencias(int[] arreglo, double promedio) {
int i;

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

103
System.out.println("Diferencias ==> ");
double diferencia;
for(i=0;i<arreglo.length;i++){
if( promedio>arreglo[i])
diferencia = promedio-arreglo[i];
else
diferencia = arreglo[i]-promedio;
System.out.println(arreglo[i] + " ==> " + diferencia);
}
}

private static double promediar(int[] arreglo) {
int i;
double suma = 0;
for(i=0;i<arreglo.length;i++)
suma = (int) (suma + arreglo[i]);

double promedio = suma / arreglo.length;
System.out.println("Promedio ==> "+ promedio);
return promedio;
}

private static void ingresa(int[] arreglo) {
int i;
Scanner teclado=new Scanner(System.in);

for(i=0;i<arreglo.length;i++){
System.out.println("Ingresa "+arreglo.length+" numeros al arreglo - Numero
"+(i+1)+ " ==>");
arreglo[i]=teclado.nextInt();
}

}

private static int tama() {

Scanner teclado=new Scanner(System.in);
int n;
do{
System.out.println("Ingrese el tamao del Vector mximo 30 ==>");
n= (int) teclado.nextInt();
}while(n > 30 || n <0);
return n;
}
}


4. Se tienen almacenados en la memoria dos vectores M y N de 10 elementos cada uno.
Elaborar un programa en JAVA que escriba la palabra Iguales si ambos vectores son
iguales y Diferentes si no lo son. Sern iguales cuando en la misma posicin de ambos
vectores se tenga el mismo valor para todos los elementos.
Alternativas Fundamenta tu respuesta (Cdigo de la solucin)
Solucin
package semana4;
import java.util.Scanner;
public class Ejercicio8 {

public static void main(String[] args) {

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

104
int arregloM[]=new int [10];
int arregloN[]=new int [10];
ingresa(arregloM,"M");
ingresa(arregloN,"N");
igualdad(arregloM,arregloN);
}

private static void igualdad(int[] arregloM, int[] arregloN) {
int i;
boolean indicador=true;
for(i=0;i<arregloM.length;i++){
if(arregloM[i]!=arregloN[i]){
indicador=false;
break;
}
}
if(indicador){
System.out.println("SON IGUALES");
}else{
System.out.println("NO SON IGUALES");
}


}

private static void ingresa(int[] arreglo, String nom) {
int i;
@SuppressWarnings("resource")
Scanner teclado=new Scanner(System.in);

System.out.println("Vector"+nom);

for(i=0;i<arreglo.length;i++){
System.out.println("Ingresa "+arreglo.length+" numeros al arreglo "+nom+" -
Numero "+(i+1)+ " ==>");
arreglo[i]=teclado.nextInt();
}
}
}


5. Elaborar un programa en JAVA que lea un nmero cualquiera y lo busque en el vector X, el
cual tiene almacenados 10 elementos. Escribir la posicin donde se encuentra almacenado
el nmero en el vector o el mensaje NO si no lo encuentra. Bsqueda secuencial.
Alternativas Fundamenta tu respuesta (Cdigo de la solucin)
Solucin
package semana4;
import java.util.Scanner;
public class Ejercicio10 {


public static void main(String[] args) {
int arreglo[]=new int [10];
ingresa(arreglo);
buscar(arreglo);

}

private static void buscar(int[] arreglo) {

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

105
int i;
boolean indicador=true;

Scanner teclado=new Scanner(System.in);
System.out.print("Ingrese el numero a buscar ==>");
int busca = teclado.nextInt();

for(i=0;i<arreglo.length;i++){
if(arreglo[i]==busca){
System.out.println("Se encontro en la posicion ==> "+i);
indicador=false;
break;
}
}

if(indicador){
System.out.println("NO");
}
}

private static void ingresa(int[] arreglo) {
int i;

Scanner teclado=new Scanner(System.in);

for(i=0;i<arreglo.length;i++){
System.out.println("Ingresa 10 numeros al arreglo - Numero "+(i+1)+ "
==>");
arreglo[i]=teclado.nextInt();
}
}

}






















Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

106







La tarea del programador no es slo escribir un programa, sino que su tarea principal es dar una prueba formal de
que el programa que propone cumple la especificacin funcional.

Edsger Dijkstra














Bienvenida

Estimados estudiantes bienvenidos! a la quinta semana del curso, En la cual conoceremos el uso de
vectores con datos de tipo carcter o cadenas de caracteres, sus operaciones y su desarrollo en tcnicas
algortmicas y llevndolo a un lenguaje de programacin.

Ruta de aprendizaje

Durante la quinta semana que corresponde del 03 al 09 de junio realizaremos las siguientes actividades,
emprendiendo la siguiente ruta:

- Cadena de Caracteres
- Operaciones y funciones de cadenas.

Es preciso recordarte que para que cumplas los objetivos planteados debes planificar tu tiempo, pues
estas actividades demandan 10 horas de estudio semanales.
Cordialmente
Ing. Luis Alberto Vives Garnique
Docente experto de la asignatura


Quinta Semana
Explicaremos el uso de vectores con datos de tipo carcter o
cadenas de caracteres, sus operaciones y su desarrollo en tcnicas
algortmicas y llevndolo a un lenguaje de programacin
(03 al 09 de junio)
F
u
e
n
t
e
:

I
m
a
g
e
n

e
x
t
r
a

d
a

d
e


i
n
t
e
r
n
e
t



Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

107
Tema 5

Cadenas de Caracteres















Introduccin al tema

La manipulacin de cadenas est presente en todos los lenguajes de programacin, se utiliza para
procesar la informacin con significado para el usuario que utiliza el lenguaje natural representado
por caracteres para representar el significado al mundo real.

Se necesita conocer los conceptos, mtodos y reglas para manipular cadena de caracteres en el
desarrollo de nuestro cdigo, la comparacin, concatenacin, conteo son algunas de las funciones
que estudiaremos esta semana.


Aprendizajes esperados
Conozcamos ahora las capacidades y actitudes a desarrollar en este segundo tema:
Capacidad
- Utiliza eficientemente estructuras de datos estticas en la solucin de problemas.
- Aplica adecuadamente algoritmos y programas recursivos para resolver problemas especficos.
- Implementa apropiadamente archivos de datos para su aplicacin en problemas de nivel
intermedio.
- Comprende el manejo de memoria de las estructuras estticas.
- Resuelve problemas asociados a la manipulacin de cadenas

Actitudes
- Asume una actitud de respeto ante sus semejantes, mostrndose responsable en las diversas
actividades.

- Demuestra solidaridad en el trabajo cooperativo y tolerancia en la resolucin de discrepancias
en las opiniones y actitudes de los dems.
- Asume una actitud de respeto ante sus semejantes, mostrndose responsable en las diversas
actividades.
F
u
e
n
t
e
:

I
m
a
g
e
n

e
x
t
r
a

d
a

d
e


i
n
t
e
r
n
e
t



Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

108
Mapa conceptual referido al tema

Observa detenidamente el siguiente esquema, en el encontrars de un vistazo de manera sintetizada los
principales concepto de la temtica que abordaremos. Qu conceptos o categoras te llaman la atencin?





Fuente: elaboracin propia







Esquema1: Mapa conceptual sobre cadena de caracteres

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

109
Desarrollo de los contenidos de aprendizaje

5.1. Definicin de cadena
Una cadena (string) de caracteres es un conjunto de caracteres (incluido el blanco), que se
almacenan en un rea contigua de la memoria. Pueden ser entradas o salidas a/desde una
computadora.

La longitud de una cadena es el nmero de caracteres que contiene. La cadena que no contiene
ningn carcter se le denomina cadena vaca o nula y su longitud es cero; no se debe confundir con
una cadena compuesta de solo espacios en blanco.

La representacin de las cadenas suele ser con comillas simples o dobles, las comillas actan como
separadores, algunos ejemplos:
12 de Octubre de 1492
Hola, cmo ests?

MEXICO ES GRANDE

La cadena puede contener entre sus separadores, cualquier carcter vlido del cdigo aceptado por
el lenguaje y la computadora; el blanco es uno de los caracteres ms utilizado.

Una Subcadena es una cadena de caracteres que ha sido extrada de otra de mayor longitud.

12 de es una subcadena de 12 de Octubre de 1492
como ests es una subcadena de Hola, cmo ests?
XI? es una subcadena de MEXICO ES GRANDE

5.2. Datos Tipo Carcter
Anteriormente se analizaron los diferentes tipos de datos y entre ellos exista el dato tipo carcter
(char) que se incorpora en diferentes lenguajes de programacin, bien con este nombre, o bien como
datos tipo cadena.

5.3. Constantes
Una constante tipo carcter es un conjunto de caracteres vlidos encerrados entre comillas, para
evitar confundirlos con nombres de variables, operadores, enteros, etc.




Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

110
5.4. Variables
Una variable de cadena o tipo carcter es una variable cuyo valor es una cadena de caracteres. Las
variables de tipo carcter se deben declarar en el algoritmo y segn el lenguaje tendrn una notacin
u otra.
var NOMBRE, DIRECCION, PAIS: carcter

5.4.1. Cadenas de Longitud Fija
Se consideran vectores de la longitud declarada, con blancos a izquierda o derecha si la cadena no
tiene la longitud declarada. As el ejemplo siguiente:

E S T A C A S A E S U N A R U I N A /// ///
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24

Se declar con una dimensin de 24 caracteres y los dos ltimos se rellenan con blancos.

5.4.2. Cadenas de Longitud Variable con un Mximo
Se considera un puntero, con dos campos que contienen la longitud mxima y la longitud actual.

20 17 E S T A C A S A E S G U A Y /// /// ///
Dnde:
20 = Longitud mxima
17 = Longitud actual

5.4.3. Instrucciones Bsicas con Cadenas
Las instrucciones bsicas: asignar y entrada/salida (leer/escribir) se realizan de un modo similar al
tratamiento de dichas instrucciones con datos numricos.

Asignacin
Si la variable NOMBRE ha sido declarada como carcter.

var NOMBRE : caracter
La instruccin de asignacin debe contener en el lado derecho de la asignacin una constante tipo
carcter (una cadena) o bien otra variable tipo carcter. As:

NOMBRE Juan Gonzlez
Significa que la variable NOMBRE toma por valor la cadena Juan Gonzlez


Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

111
Entrada/Salida
La entrada/salida desde una computadora se puede realizar en modo carcter, para ello se
asignar una cadena de caracteres a una variable tipo cadena.

var A,B,C,D: carcter
las instrucciones:
leer A,B
escribir C,D

Asignarn a A y B las cadenas introducidas por el teclado y visualizar o imprimirn en el
dispositivo de salida las cadenas que representan las variables C y D.

5.4.4. Funcin de cadenas de caracteres
El tratamiento de cadenas es un tema importante, debido esencialmente a la gran cantidad
de informacin que se almacena en ellas. Segn el tipo de lenguaje de programacin
elegido se tendr mayor o menor facilidad para la realizacin de operaciones.
Las operaciones con cadenas ms usuales son:

- Clculo de la longitud
- Comparacin
- Concatenacin
- Extraccin de subcadenas
- Bsqueda de informacin


Clculo de la longitud de una cadena
La longitud de una cadena, como ya se ha comentado, es el nmero de caracteres de
la cadena. As:

'Hola' Tiene 4 caracteres

La operacin de determinacin de la longitud de una cadena se
representar por la funcin Longitud, cuyo formato es:

Longitud (cadena)
La funcin longitud tiene como argumento una cadena, pero su resultado es un valor
numrico entero.
Ejemplo:
longitud('Cmo ests?') Proporciona 11.
longitud(' ') Cadena de un blanco, proporciona 1.

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

112
longitud('Hola') Cadena 'Hola' rellenada de un blanco a la izquierda para
tener longitud de 5.

Comparacin
Es una operacin muy importante sobre todo en la clasificacin de datos tipo carcter, que se
utiliza con mucha frecuencia en aplicaciones de proceso de datos (clasificaciones de listas,
tratamiento de textos, etc.).
Los criterios de comparacin se basan en el orden numrico del cdigo o juego de caracteres que
admite la computadora o el propio lenguaje de programacin. En nuestro lenguaje algortmico
utilizaremos el cdigo ASCII como cdigo numrico de referencia.
En la comparacin de cadenas se pueden considerar dos operaciones ms elementales: igualdad
y desigualdad.
Ejemplos:
'LUIS' < 'LUISITO' verdadera
'ANA' < 'MARTA' verdadera
'BARTOLO' >= 'BARTOLOME' falsa

Concatenacin
La concatenacin es la operacin de reunir varias cadenas de caracteres en una sola, pero
conservando el orden de los caracteres en cada una de ellas. El smbolo que representa la
concatenacin vara de unos lenguajes a otros. Los ms utilizados son:
+ // & o
Las cadenas para concatenarse pueden ser constantes o variables.

Ejemplos:
'Mayo ' + 'de 1999' = 'Mayo de 1999'
x 'Lenguaje'
y 'Ensamblador'
z x+' '+y z= 'Lenguaje Ensamblador'

Subcadenas
Esta operacin permite la extraccin de una parte especfica de una cadena: subcadena.
Subcadena (cadena, inicio, longitud)
Cadena: Es la cadena de la que debe extraerse una subcadena.

Inicio: Es un nmero o expresin numrica entera que corresponde a la posicin inicial de la
subcadena.
Longitud: Es la longitud de la subcadena.

Ejemplos:
subcadena ('abcdefgh',3,6) Equivale a 'cdef'

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

113
subcadena ('Tecnolgico',1,3) Equivale a 'Tec'
subcadena ('Mxico',5,2) Equivale a 'co'

Bsqueda
Esta operacin localiza si una determinada cadena forma parte de otra cadena ms grande o
buscar la posicin en que aparece un determinado carcter o secuencia de caracteres en un texto.
El resultado de la funcin es un valor entero

Posicin (cadena, subcadena)
subcadena: Es el texto que se trata de localizar.

Ejemplo:
nombre 'Marielena'
Posicin (nombre, 'elena') Produce 5.

La funcin Posicin, al tomar tambin un valor numrico entero se puede utilizar en expresiones
aritmticas o en instrucciones de asignacin a variables numricas.
5.4.5. Funciones internas
Las operaciones que se requieren en los programas exigen en numerosas ocasiones, adems de las
operaciones aritmticas bsicas, ya tratadas, un nmero determinado de operaciones especiales que
se denominan funciones internas, incorporadas o estndar. Por ejemplo la funcin ln se puede
utilizar para determinar logaritmo de un n se puede utilizar para determinar logaritmo de un nmero y
la funcin sqrt calcula la raz cuadrada de un nmero positivo. Existen otras funciones que se utilizan
para determinar las funciones trigonomtricas.

La siguiente tabla muestra las funciones internas ms usuales, siendo x el argumento de la funcin.
Funcin Descripcin Tipo de Argumento Resultado
abs(x) Valor absoluto de x Entero o real igual que
argumento
arctan(x) Arcotangente de x Entero o real real
cos(x) Coseno de x Entero o real real
exp(x) Exponencial de x Entero o real real
ln(x) Logaritmo de x Entero o real real
log10(x) Logaritmo decimal de x Entero o real real
round(x) Redondeo de x Real entero
sin(x) Seno de x Entero o real real
sqr(x) Cuadrado de x Entero o real igual que
argumento
sqrt(x) Raz cuadrada de x Entero o real real
trunc(x) Truncamiento de x real entero



Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

114
EJERCICIOS RESUELTOS

Ejercicio 10.1
Contar el nmero de letras 'i' de una frase terminada en un punto. Se supone que las letras
pueden leerse independientemente.

Algoritmo letras_i
var
N: entera
Letra: carcter
Inicio
N 0
repetir
leer(Letra)
si Letra = 'i' entonces
N N+1
fin si
hasta que Letra = '.'
escribir('La frase tiene :', N,' letras i')
Fin

Ejercicio 10.2.
Aceptar un nombre y proporcionar la cantidad de caracteres que contiene.

Inicio
escribir('Cul es el nombre : ')
Leer(nom)
escribir('Tu nombre tiene ', Longitud(nom),' letras')
Fin

Ejercicio 10.3.
Pedir una cadena que contenga una vez la letra F ('F'). Deber informarse la posicin donde
fue encontrada, el carcter previo y el siguiente.

Inicio
escribir('Dame cadena que contenga [F] ')
leer(cad)
x Posicin('F', cad)
escribir('La letra 'F' se encuentra en la posicin : ',x)
escribir('El carcter anterior es : ' , Subcadena(cad, x-1,1))
escribir('El carcter siguiente es : ', Subcadena(cad, x+1, 1))

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

115
Fin

Ejercicio 10.4.
Leer dos caracteres y deducir si estn en orden alfabtico.
variables:
CAR1, CAR2 : carcter.
Algoritmo Comparacin
Inicio
Leer CAR1, CAR2
Si CAR1 <= CAR2 entonces
escribir('Si se encuentran en orden')
sino
escribir('Desordenados')
Fin_si
Fin

Ejercicio 10.5:
Se desea eliminar los blancos de una frase dada terminada en un punto. Se supone que es
posible leer los caracteres de la frase de uno a uno.

Anlisis del problema
Para poder efectuar la lectura de la frase, almacena sta en un arreglo de caracteres (F), de
modo que F(1) contiene el primer caracter i-simo del a frase dada. Construiremos una frase
nueva sin blancos en otro arreglo G.

Algoritmo
Los pasos a dar para la realizacin del algoritmo son:
- Inicializar contador de letras de la nueva frase G.
- Leer el primer carcter.
- Repetir

Si el primer carcter no es en blanco, entonces escribir en el lugar siguiente del arreglo F leer
carcter siguiente de la frase dada.
Hasta que el ltimo carcter se encuentre.

- Escribir la nueva frase (G), ya sin blancos.

Variables:
F : array de caracteres de la frase dada.
G : array de caracteres de la nueva frase dada.
i : Constador del array F.

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

116
j : Constador del array G.

Algoritmo Blanco
Inicio
i 1
j 0
leer F(i)
Repetir
Si F(i) <> ' ' entonces
j j+1
G(j) F(i)
Fin si
i i+1
leer F(i)
Hasta que F(i) = '.'
{escritura de la nueva frase G}
Desde i 1 a j hacer
escribir G(i)
Fin Desde
Fin

Ejercicio 10.6.
Encontrar un espacio en blanco en una cadena.
Inicio
variables:
x: entero
nom,a,b : cadena
Inicio
leer(nom)
x=Posicin (' ',nom)
a= Subcadena (nom,1,x-1)
b= Subcadena (nom, x+1, x)
Fin

Ejercicio 10.7.
Solicitar un nombre y mostrarlo con la inicial en mayscula.
variables:
nom,a,b: cadena
x,y : carcter
z : entero
Inicio

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

117
escribir('Introduce nombre : ')
leer(nom)
x= Subcadena(nom,1,1)
y= MAYUSCULA(x)
z= Longitud (nom)
a = Subcadena (nom, 2, z-1)
Concatenacin y+a
Escribir('Te llamas : ' , concatenacin)
Fin
Nota: MAYSCULA es una funcin para convertir letras minsculas a maysculas.


Lecturas recomendadas

Documento 1: " Cadena de caracteres en JAVA"
Direccin: ver carpeta de lecturas: Ejemplos de cadena de caracteres en JAVA.pdf
Breve Descripcin: www.javaya.com.ar, esta pgina presenta ejemplos de cmo trabajar
en JAVA con cadena de caracteres, explicando paso a paso la implementacin en lenguaje
tiene tres problemas propuestos y resueltos utilizando los mtodos para el manejo de
cadenas.

Conclusiones
En esta semana de estudio se present como manipular los caracteres y su formacin en
cadenas que nos permite conocer si son iguales, la longitud, la unin o si se encuentra un
conjunto de caracteres dentro de otro conjunto de caracteres
Lo presentado en esta semana se aplica a cualquier lenguaje de programacin imperativo,
claro que en cada lenguaje el nombre las funciones pude cambiar pero el principio de manejo
es el mismo.
Algunas funciones especiales tales como bsqueda de subcadenas dentro de otro conjunto,
estn sostenidas en la comparacin de caracteres, que es la base de las bsquedas en un
conjunto ms grande de grupos de cadenas, que permiten implementar buscadores de internet,
de documentos, de archivos entre otras aplicaciones.

Metacognicin de la quinta semana
Las siguientes preguntas te ayudarn a reflexionar sobre tus propios aprendizajes, es un ejercicio
recomendado para razonar e identificar nuestro esfuerzo intelectual, la finalidad es regular nuestras
acciones y procesos mentales
De la temtica abordada que te llam ms la atencin?

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

118
Consideras que aprendiste con los contenidos abordados? Qu parte te tom ms tiempo?
Tuviste dificultad con algn tema o actividad? Cmo los solucionaste?
Qu acciones realizaste para aprender?

Control de lectura quinta semana

Muy bien! Hemos llegado al final de la quinta semana, ahora, para comprobar tus logros y nivel
de aprendizaje alcanzado en relacin a la temtica estudiada, responde a las siguientes
preguntas:
1. Elaborar un programa en JAVA que contenga una funcin que convierta una cadena de caracteres a maysculas y
otra que convierta una cadena de caracteres a minsculas. Escribir una funcin que reciba como parmetros 2
cadenas de caracteres y determinar si son iguales o si no son diferentes cul de ellas es la mayor.
Alternativas Fundamenta tu respuesta (Cdigo de la solucin)
Solucin
package Ejercicios;
import javax.swing.JOptionPane;
public class Ejercicio1 {
public static void main(String[] args) {


String cMenu = " Elija una de las opciones\n"
+ " \n"
+ " 1----Convertir una cadena de caracteres a maysculas\n"
+ " 2----Convertir una cadena de caracteres a minsculas\n"
+ " 3----Comparar tamao de cadenas\n"
+ " ---------------------------------------------------\n"
+ " \n"
+ " *Escriba el nmero del men, de la funcin que desee ejecutar";

JOptionPane.showMessageDialog(null, cMenu, "Conversiones con
Cadenas",JOptionPane.INFORMATION_MESSAGE);

int option_menu;

do{
option_menu = Integer.parseInt(JOptionPane.showInputDialog(null,"Ingrese la opcin
a operar","Sistema",JOptionPane.QUESTION_MESSAGE ));
if(option_menu != 1 && option_menu!=2 && option_menu!=3){
JOptionPane.showMessageDialog(null, "Opcin no Vlida, intente
nuevamente","Sistema",JOptionPane.ERROR_MESSAGE);
}
}while(option_menu != 1 && option_menu!=2 && option_menu!=3);


switch(option_menu){

case 1:
cMayusculas();
break;

case 2:
cMinusculas();
break;


Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

119
case 3:
cComparation();
break;

default:
JOptionPane.showMessageDialog(null,
"Gracias","Sistema",JOptionPane.INFORMATION_MESSAGE);
break;
};

}

public static void cMayusculas(){

String cCadena;
cCadena = JOptionPane.showInputDialog(null, "Ingrese su
cadena","Maysculas",JOptionPane.QUESTION_MESSAGE);
JOptionPane.showMessageDialog(null, "Cadena Ingresada antes de la
conversin\n\n"+cCadena,"Conversiones",JOptionPane.INFORMATION_MESSAGE);
JOptionPane.showMessageDialog(null, "Cadena Convertida a
Maysculas\n\n"+cCadena.toUpperCase(),"Sistema",JOptionPane.INFORMATION_MESSAGE);
}

public static void cMinusculas(){
String cCadena;
cCadena = JOptionPane.showInputDialog(null, "Ingrese su
cadena","Minsculas",JOptionPane.QUESTION_MESSAGE);
JOptionPane.showMessageDialog(null, "Cadena Ingresada antes de la
conversin\n\n"+cCadena,"Conversiones",JOptionPane.INFORMATION_MESSAGE);
JOptionPane.showMessageDialog(null, "Cadena Convertida a
Minsculas\n\n"+cCadena.toLowerCase(),"Sistema",JOptionPane.INFORMATION_MESSAGE);
}

public static void cComparation(){
String c1Cadena;
String c2Cadena;

c1Cadena = JOptionPane.showInputDialog(null, "Ingrese su primera
cadena","Comparacin",JOptionPane.QUESTION_MESSAGE);
c2Cadena = JOptionPane.showInputDialog(null, "Ingrese su segunda
cadena","Comparacin",JOptionPane.QUESTION_MESSAGE);

if (c1Cadena.compareTo(c2Cadena) == 0)
JOptionPane.showMessageDialog(null, "Ambas cadenas tienen la misma
longitud","Sistema",JOptionPane.INFORMATION_MESSAGE);
else
if (c1Cadena.compareTo(c2Cadena) < 0)
JOptionPane.showMessageDialog(null, "La cadena 1 es mayor que la cadena
2","Sistema",JOptionPane.INFORMATION_MESSAGE);
else
if (c1Cadena.compareTo(c2Cadena) > 0)
JOptionPane.showMessageDialog(null, "La cadena 2 es mayor que la cadena
1","Sistema",JOptionPane.INFORMATION_MESSAGE);
}
}

2. Elaborar un programa en JAVA que contenga una funcin que reciba como parmetros 2 cadenas
de caracteres y determine si son iguales o si son diferentes cul de ellas es el mayor.

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

120
Alternativas Fundamenta tu respuesta (Cdigo de la solucin)
Solucin
package Ejercicios;
import javax.swing.JOptionPane;
public class Ejercicio3 {
public static void main(String[] args) {

String c1Cadena;
String c2Cadena;

c1Cadena = JOptionPane.showInputDialog(null, "Ingrese su primera
cadena","Comparacin",JOptionPane.QUESTION_MESSAGE);
c2Cadena = JOptionPane.showInputDialog(null, "Ingrese su segunda
cadena","Comparacin",JOptionPane.QUESTION_MESSAGE);

if (c1Cadena.equals(c2Cadena))
JOptionPane.showMessageDialog(null, "Ambas cadenas son
iguales","Sistema",JOptionPane.INFORMATION_MESSAGE);
else
if (c1Cadena.compareTo(c2Cadena) < 0)
JOptionPane.showMessageDialog(null, "No son iguales, pero la cadena 1
es mayor que la cadena 2","Sistema",JOptionPane.INFORMATION_MESSAGE);
else
if (c1Cadena.compareTo(c2Cadena) > 0)
JOptionPane.showMessageDialog(null, "No son iguales, pero la cadena 2
es mayor que la cadena 1","Sistema",JOptionPane.INFORMATION_MESSAGE);
}
}

3. Elaborar un programa en JAVA que lea una lista de n nombres de personas (1 nombre y 1 o 2
apellidos) y presente la lista ordenada alfabticamente pero por apellidos.
Alternativas Fundamenta tu respuesta (Cdigo de la solucin)
Solucin
package Ejercicios;
import javax.swing.JOptionPane;
import java.util.Arrays;
import java.util.Comparator;
public class Ejercicio5 {
public static void main(String[] args) {

int n;
n = Integer.parseInt(JOptionPane.showInputDialog(null, "Cuntas personas
ingresara?","Sistema",JOptionPane.QUESTION_MESSAGE));

String lista[][] = new String[n][3];

for(int i=0;i<n;i++){
JOptionPane.showMessageDialog(null, "Persona ["+(i+1)+"]");
lista[i][0]= JOptionPane.showInputDialog(null, "Ingrese Nombre
["+(i+1)+"]","Sistema",JOptionPane.QUESTION_MESSAGE);
lista[i][1]= JOptionPane.showInputDialog(null, "Ingrese Apellido Paterno
["+(i+1)+"]","Concatenacin por Posicin",JOptionPane.QUESTION_MESSAGE);
lista[i][2]= JOptionPane.showInputDialog(null, "Ingrese Apellido Materno
["+(i+1)+"]","Concatenacin por Posicin",JOptionPane.QUESTION_MESSAGE);
}

String conc="Lista de Personas Ingresadas\n"
+ "-------------------------------------\n\n";
for(int i=0;i<n;i++){
String result="";

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

121
result="["+(i+1)+"] --> "+ lista[i][0]+" "+lista[i][1]+" "+lista[i][2]+"\n";
conc=conc+result;
}

JOptionPane.showMessageDialog(null, conc, "Sistema",
JOptionPane.INFORMATION_MESSAGE);


Arrays.sort(lista, new Comparator<String[]>() {

public int compare(String[] entry1, String[] entry2) {
final String apell1 = entry1[1];
final String apell2 = entry2[1];
return apell1.substring(0,1).compareTo(apell2.substring(0,1));
}
});

conc="Lista de Personas Ordenadas Alfabticamente "
+ "\npor Apellido Paterno\n"
+ "-------------------------------------\n\n";

for(int i=0;i<n;i++){
String result="";
result="["+(i+1)+"] --> "+ lista[i][0]+" "+lista[i][1]+" "+lista[i][2]+"\n";
conc=conc+result;
}

JOptionPane.showMessageDialog(null, conc, "Sistema",
JOptionPane.INFORMATION_MESSAGE);
}
}

4. Elaborar un programa en JAVA que lea los nombres y notas de n alumnos y presenta en pantalla la
lista en orden de mritos y la lista de alumnos aprobados en orden alfabtico.
Alternativas Fundamenta tu respuesta (Cdigo de la solucin)
Solucin
package Ejercicios;
import javax.swing.JOptionPane;
import java.util.Arrays;
import java.util.Comparator;
public class Ejercicio8 {
public static void main(String[] args) {

int n;
n = Integer.parseInt(JOptionPane.showInputDialog(null, "Cuntas alumnos
ingresara?","Sistema",JOptionPane.QUESTION_MESSAGE));

String lista[][] = new String[n][2];

for(int i=0;i<n;i++){
JOptionPane.showMessageDialog(null, "Alumno ["+(i+1)+"]");
lista[i][0]= JOptionPane.showInputDialog(null, "Ingrese Nombre
["+(i+1)+"]","Sistema",JOptionPane.QUESTION_MESSAGE);
lista[i][1]= JOptionPane.showInputDialog(null, "Ingrese Nota de Alumno
["+(i+1)+"]","Sistema",JOptionPane.QUESTION_MESSAGE);
}

String conc="Lista de Alumnos y sus Notas\n"
+ "-------------------------------------\n\n";

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

122
for(int i=0;i<n;i++){
String result="";
result="["+(i+1)+"] --> "+ lista[i][0]+" --->["+lista[i][1]+"]\n";
conc=conc+result;
}

JOptionPane.showMessageDialog(null, conc, "Sistema",
JOptionPane.INFORMATION_MESSAGE);

Arrays.sort(lista, new Comparator<String[]>() {

public int compare(String[] entry1, String[] entry2) {
final String nota1 = entry1[1];
final String nota2 = entry2[1];
return -nota1.compareTo(nota2);
}
});

conc="Lista de Alumnos y sus Notas en Orden de Mrito\n"
+ "-------------------------------------\n\n";
for(int i=0;i<n;i++){
String result="";
result="["+(i+1)+"] --> "+ lista[i][0]+" --->["+lista[i][1]+"]\n";
conc=conc+result;
}

JOptionPane.showMessageDialog(null, conc, "Sistema",
JOptionPane.INFORMATION_MESSAGE);

Arrays.sort(lista, new Comparator<String[]>() {

public int compare(String[] entry1, String[] entry2) {
final String nombre1 = entry1[0];
final String nombre2 = entry2[0];
return nombre1.substring(0,1).compareTo(nombre2.substring(0,1));
}
});

conc="Lista de Alumnos Aprobados en Orden Alfabtico\n"
+ "-------------------------------------\n\n";
for(int i=0;i<n;i++){
if(Double.parseDouble(lista[i][1])>=10.5){
String result="";
result="["+(i+1)+"] --> "+ lista[i][0]+" --->["+lista[i][1]+"]\n";
conc=conc+result;
}

}

JOptionPane.showMessageDialog(null, conc, "Sistema",
JOptionPane.INFORMATION_MESSAGE);
}
}

5. Elaborar un programa en JAVA que lea una lista de n nombres de personas (1 nombre y 1 o 2
apellidos) y presente la lista ordenada alfabticamente pero por apellidos.
Alternativas Fundamenta tu respuesta (Cdigo de la solucin)
Solucin package Ejercicios;

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

123
import javax.swing.JOptionPane;
import java.util.Arrays;
import java.util.Comparator;
public class Ejercicio10 {
public static void main(String[] args) {

int n;
n = Integer.parseInt(JOptionPane.showInputDialog(null, "Cuntas personas
ingresara?","Sistema",JOptionPane.QUESTION_MESSAGE));

String lista[][] = new String[n][3];

for(int i=0;i<n;i++){
JOptionPane.showMessageDialog(null, "Persona ["+(i+1)+"]");
lista[i][0]= JOptionPane.showInputDialog(null, "Ingrese Nombre
["+(i+1)+"]","Sistema",JOptionPane.QUESTION_MESSAGE);
lista[i][1]= JOptionPane.showInputDialog(null, "Ingrese Apellido Paterno
["+(i+1)+"]","Concatenacin por Posicin",JOptionPane.QUESTION_MESSAGE);
lista[i][2]= JOptionPane.showInputDialog(null, "Ingrese Apellido Materno
["+(i+1)+"]","Concatenacin por Posicin",JOptionPane.QUESTION_MESSAGE);
}

String conc="Lista de Personas Ingresadas\n"
+ "-------------------------------------\n\n";
for(int i=0;i<n;i++){
String result="";
result="["+(i+1)+"] --> "+ lista[i][0]+" "+lista[i][1]+" "+lista[i][2]+"\n";
conc=conc+result;
}

JOptionPane.showMessageDialog(null, conc, "Sistema",
JOptionPane.INFORMATION_MESSAGE);


Arrays.sort(lista, new Comparator<String[]>() {

public int compare(String[] entry1, String[] entry2) {
final String apell1 = entry1[1];
final String apell2 = entry2[1];
return apell1.substring(0,1).compareTo(apell2.substring(0,1));
}
});

conc="Lista de Personas Ordenadas Alfabticamente "
+ "\npor Apellido Paterno\n"
+ "-------------------------------------\n\n";

for(int i=0;i<n;i++){
String result="";
result="["+(i+1)+"] --> "+ lista[i][0]+" "+lista[i][1]+" "+lista[i][2]+"\n";
conc=conc+result;
}

JOptionPane.showMessageDialog(null, conc, "Sistema",
JOptionPane.INFORMATION_MESSAGE);
}
}


Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

124


















































Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

125







Una computadora puede ser llamada inteligente si logra engaar a una persona hacindole creer que es un
humano.
Alan MathisonTuring













Bienvenida

Estimados estudiantes bienvenidos! a la sexta semana del curso, En la cual Analizaremos los flujos de
datos dentro de un algoritmo y un programa de forma modular, llevando a introducir al estudiante a la
programacin orientada a Objetos.

Ruta de aprendizaje

Durante la sexta semana que corresponde del 10 al 16 de junio realizaremos las siguientes actividades,
emprendiendo la siguiente ruta:

- Modularizacin
- Programacin con mtodos

Es preciso recordarte que para que cumplas los objetivos planteas debes planificar tu tiempo, pues estas
actividades demandan 10 horas de estudio semanales.




Cordialmente
Ing. Luis Alberto Vives Garnique
Docente experto de la asignatura

Sexta Semana
Analizaremos los flujos de datos dentro de un algoritmo y un
programa de forma modular, llevando a introducir al estudiante a la
programacin orientada a Objetos
(10 al 16 de junio)
F
u
e
n
t
e
:

I
m
a
g
e
n

e
x
t
r
a

d
a

d
e


i
n
t
e
r
n
e
t



Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

126
Tema 6

Introduccin a mtodos (modularizacin)
















Introduccin al tema

Cuando comenzamos a codificar la solucin de un problema con algoritmos, poco a poco nos damos
cuenta que tenemos muchas lneas de cdigo y que de vez en cuando debemos repetir el cdigo,
porque hay rutinas que se repiten con frecuencia, entonces surge la idea de especializar la labor de
ciertas partes del cdigo que realiza un mismo clculo pero con datos distintos, a este proceso de
agrupar en procedimientos o funciones lo llamaremos modularizacin.

Aprendizajes esperados
Conozcamos ahora las capacidades y actitudes a desarrollar en este segundo tema:
Capacidad
- Utiliza eficientemente la especializacin de porciones de cdigo en funciones y procedimientos.
- Comprende los diferentes tipos de funciones utilizados en la modularizacin.

Actitudes
- Asume una actitud de respeto ante sus semejantes, mostrndose responsable en las diversas
actividades.
- Demuestra solidaridad en el trabajo cooperativo y tolerancia en la resolucin de discrepancias
en las opiniones y actitudes de los dems.
- Asume una actitud de respeto ante sus semejantes, mostrndose responsable en las diversas
actividades.
F
u
e
n
t
e
:

I
m
a
g
e
n

e
x
t
r
a

d
a

d
e


i
n
t
e
r
n
e
t



Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

127
Mapa conceptual referido al tema

Observa detenidamente el siguiente esquema, en el encontrars de un vistazo de manera sintetizada los
principales concepto de la temtica que abordaremos. Qu conceptos o categoras te llaman la atencin?





Fuente: elaboracin propia





Esquema1: Mapa conceptual sobre mtodos

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

128
Desarrollo de los contenidos de aprendizaje
6.1. Concepto
Es aquel que est constituido por una o varias instrucciones fsicamente contiguas y lgicamente
encadenadas, las cuales se pueden referenciar mediante un nombre y pueden ser llamadas desde
diferentes puntos de un programa.

Un mdulo puede ser:
- Un Programa
- Una Funcin
- Una Subrutina (o Procedimiento)
6.2. Caractersticas de un mdulo
Los mdulos deben tener la mxima cohesin y el mnimo acoplamiento. Es decir, deben tener la
mxima independencia entre ellos.
La salida del mdulo debe ser funcin de la entrada, pero no de ningn estado interno. En la
creacin de los mdulos deben cumplirse tres aspectos bsicos: descripcin, rendimiento y
diseo.

En la descripcin se definen las funciones y objetivos del programa. Para obtener el mximo
rendimiento se ha de comprobar que el programa realice el proceso aprovechando al mximo
todos los recursos de los que dispone. En cuanto al diseo, se debe comprobar la estructura
que sigue el mdulo, as como la estructura de los datos y la forma de comunicaciones entre los
diversos y diferentes mdulos.

Conforme se extiende el tamao de los algoritmos, se hace ms difcil su revisin, actualizacin
y/o correccin.

Una poltica comn para solventar este problema consiste en la modularizacin. Esto significa
que el algoritmo se fragmenta en partes llamadas mdulos. En realidad, es un mtodo de
diseo que tiende a dividir el problema, de forma lgica, en partes perfectamente diferenciadas
que pueden ser analizadas, programadas y puestas a puntos independientes.

Realmente la programacin modular es un intento para disear programas, de forma tal que
cualquier funcin lgica pueda ser intercambiada sin afectar a otras partes del programa.

Algunas ventajas de utilizar mdulos son:
- Un programa modular es fcil de mantener y modificar.
- Un programa modular es ms fcil de escribir y depurar (ejecutar, probar y poner a punto).
- Un programa modular es ms fcil de controlar. El desglose de un problema en mdulos
permite encomendar los mdulos ms complejos a los programadores ms experimentados
y los ms sencillos a los programadores nveles.

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

129
- Posibilita el uso repetitivo de las rutinas en el mismo o en diferentes programas.

Desventajas del uso de mdulos:
- No se dispone de algoritmos formales de modularidad, por lo que a veces los
programadores no tienen claras las ideas de los mdulos.
- La programacin modular requiere ms memoria y tiempo de ejecucin.

Objetivos de la programacin modular:
- Disminuir la complejidad.
- Aumentar la claridad y fiabilidad.
- Disminuir el coste.
- Aumentar el control del proyecto.
- Facilitar la ampliacin del programa mediante nuevos mdulos.
- Facilitar las modificaciones y correcciones al quedar automticamente localizadas en un
mdulo.

6.3. Clasificacin de los mdulos
Pueden ser de dos tipos:
- Funciones
- Procedimientos

Estas funciones y procedimientos se escriben solamente una vez, pero pueden ser
referenciados (invocadas) en diferentes puntos de un programa, tantas veces como se requiera
de modo que se puede evitar la duplicacin innecesaria del cdigo.

Funciones
Las funciones son bloques de instrucciones que tienen por objeto el alcanzar un resultado que
sustituir a la funcin en el punto de invocacin (las funciones devuelven un resultado).
Cada funcin se invoca utilizando su nombre en una expresin con los argumentos actuales o
reales encerrados entre parntesis.

Para hacer una referencia a una funcin se invoca mediante un nombre y en caso de existir, una
lista de parmetros actuales necesarios (argumentos). Los argumentos deben coincidir en
cantidad, tipo y orden con los de la funcin que fue definida. La funcin devuelve un valor nico.

Las funciones a que se hace referencia, se conocen como funciones de usuario puesto que son
definidas por l mismo y permiten su uso en forma idntica a las funciones estndares. Para
coordinar e iniciar el procesamiento, se utiliza un mdulo principal que es colocado al final del
algoritmo.


Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

130
Declaracin de funciones

funcin nombre_funcin (par1, par2,par3,...) : tipo_del_resultado

Inicio
accin1
accin2
:
nombre_funcin Resultado_Obtenido
Fin

Donde:
par1,par2 .... : Lista de parmetros formales o argumentos.
nombre_funcin : Nombre asociado de la funcin, que ser un nombre de identificador
vlido.

accin1, accin2: Instrucciones que constituyen la definicin de la funcin, y que debe
contener una accin sola de asignacin que asigne un valor al nombre de la funcin.

Ejemplo:
Obtener el sexto carcter de un nombre y si dicho carcter no existe, se asumir un
asterisco como tal.

Funcin SEXTO(n : string) : carcter
Inicio
si longitud(n) >= 6 entonces
SEXTO Subcadena(n,6,1)
en caso contrario
SEXTO *
Fin

Invocacin a las funciones
Una funcin puede ser llamada slo mediante referencia de la forma siguiente:
nombre_funcin (lista de parmetros actuales)

Donde:
nombre_funcin : Funcin que llama.
Lista de parmetros actuales: Constantes, variables, expresiones, valores de funciones, nombres
de funciones o procedimientos.


Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

131
Una llamada a la funcin implica los siguientes pasos:
- A cada parmetro formal se le asigna el valor real de su correspondiente parmetro actual
(esta correspondencia se ver ms tarde y se denomina llamada por valor).
- Se ejecuta el cuerpo de acciones de la funcin.
- Se devuelve el valor de la funcin y se retorna al punto de llamada.

Ejercicio:
Calcular la potencia de un nmero.

funcion POTENCIA(x,n :entero): entero
Inicio
y 1
Desde i 1 hasta abs(n) hacer
y y*x
fin Desde
si n < 0 entonces
y 1/y
Fin si
POTENCIA y
Fin

6.4. Operacin de mdulos y sus parmetros
6.4.1. Paso de parmetros
Existen diferentes mtodos para el paso de parmetros a subprogramas, un mismo programa puede
producir diferentes resultados bajo diferentes sistemas de paso de parmetros.

Los parmetros se clasifican de la siguiente manera:

1. Entradas: Las entradas proporcionan valores desde el programa que llama y que se utilizan
dentro de un procedimiento. En los subprogramas funcin las entradas son los argumentos en el
sentido tradicional.
2. Salidas: Las salidas producen los resultados del subprograma; de nuevo si se utiliza el caso una
funcin, mientras que con procedimientos pueden calcularse cero, una o varias salidas.
3. Entradas/Salidas: Un solo parmetro se utiliza para mandar argumentos a un programa y para
devolver resultados.

Los mtodos ms empleados para realizar el paso de parmetros son:
- Paso por valor (parmetro valor).
- Paso por referencia o direccin (parmetro variable).

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

132

6.4.1.1. Paso por valor
Se utiliza en muchos lenguajes de programacin (pascal, basic, modula-2, algol, etc.), debido a su
analoga con los argumentos de una funcin, donde los valores se proporcionan en el orden de
clculo de resultados. Los parmetros se tratan como variables locales y los valores iniciales se
proporcionan copiando los valores de los correspondientes argumentos.
Los parmetros formales (locales a la funcin), reciben como valores iniciales los valores de los
parmetros actuales y con ello se ejecutan las acciones descritas en el subprograma.
La llamada por valor no devuelve informacin al programa que llama.

6.4.1.2. Paso por referencia
Se utiliza cuando se requiere que ciertos parmetros sirvan como parmetros de salida, es decir,
devuelvan los resultados a la unidad o programas que llama. La unidad que llama pasa a la unidad
llamada la direccin del parmetro actual (que est en el mbito de la unidad llamante). Una
referencia al correspondiente parmetro formal se trata como una referencia a la posicin de
memoria, cuya direccin se ha pasado. Entonces una variable pasada como parmetro real es
compartida, es decir, se puede modificar directamente por el subprograma. Si el parmetro actual es
una expresin, el subprograma recibe la direccin de la posicin temporal que contiene el valor de la
expresin.

3.5. Criterios de modularizacin
Criterios de la programacin modular
Con independencia de las tcnicas, los requisitos que debe cumplir la programacin modular
son:

- Establecimiento de un organigrama modular: Se realiza mediante bloques, en el que cada
bloque corresponde a un mdulo y muestra grficamente la comunicacin entre el mdulo
principal y los secundarios.

- Descripcin del mdulo principal: Debe ser claro y conciso, reflejando los puntos
fundamentales del programa.

- Descripcin de los mdulos bsicos o secundarios: Los mdulos bsicos deben resolver
partes bien definidas del problema. Solo pueden tener un punto de entrada y un punto de
salida. Si un mdulo es complejo de resolver, conviene ser subdivida en submdulos. Ningn
mdulo puede ser llamado desde distintos puntos del mdulo principal.


Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

133
- Normas de la programacin: Dependern del anlisis de cada problema y de las normas
generales o particulares que haya recibido el programador.

Ejercicios Resueltos

Problema 01:
Usando funciones encuentre los divisores comunes de dos nmeros.

Solucin:

Definicin de variables:
a: primer nmero a inspeccionar
b: segundo nmero a inspeccionar
i: posibles divisores

El bloque principal leemos los dos nmeros (a y b) cuyos divisores deseamos y los pasamos
como argumento a la funcin comunes ( ), la cual evala los posibles probando cada i, desde
i=1, y mientras i sea menor o igual a ambos nmeros, preguntamos si i los divide en cuyo caso
imprimiremos i.



Diagrama N/S












Problema.2:

Usando funciones. Escriba un algoritmo que diga si un nmero es primo o no.

Solucin:


Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

134
Definicin de variables:
n: nmero a evaluar
i: posible divisor

Una vez ledo el nmero que deseamos saber si es o no primo, invocamos a la funcin EsPrimo
( ) con el argumento n para su evolucin. EsPrimo ( ), comienza tomando como posible divisor a
i = n / 2 y mientras i sea mayor que 1, preguntar si i divide exactamente a n, en cuyo caso
retornar el valor de 0, indicando que no es primo. En caso contrario, tomar el siguiente i para
su evolucin. Si el bucle mientras llega a terminar significa que ningn i, divide exactamente a n,
por lo que n ser primo retornando el valor de 1.
De regreso al bloque principal en if ( ), el 0 es considerado como falso y por lo tanto se imprimir
no es primo, mientras que un 1 significar verdadero imprimiendo el mensaje Es primo.

Diagrama N/S
















Problema 3:

Usando funciones, calcula el promedio ponderado de un conjunto de datos.

Solucin:

Definicin de variables:
n: nmero de elementos
i: subndice del trmino actual
valores [ ]: conjunto de elementos
pesos [ ]: pesos de los valores[i]

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

135
sv: suma de los valores[i]
sp: suma de los pesos[i]
array [ ]: variable local a LeerArray ( )





EL bloque principal se encarga de Leer n e invocar a la funcin LeerArray ( ) con argumentos n
y valores [ ]. En esta llamada se leern n elementos correspondientes al array valores [ ].
Seguidamente se vuelve a invocar LeerArray ( ), pero ahora con argumentos n y pesos [ ]. En
esta llamada se leern n elementos correspondientes al array pesos [ ]. Observe que la funcin
LeerArray ( ), es invocada dos veces, pero ha sido definida una nica vez. Aqu usted puede
notar una de las ventajas de definir funciones: puede invocarlas varias veces, sin necesidad de
volver a escribirlas, ahorrndonos considerable trabajo.
Luego de leer valores [ ] y pesos [ ], invocamos a la funcin PromPonderado ( ), en donde se
calcular el promedio ponderado mediante la frmula mostrada.

Diagrama N/S



















Problema 4:
Usando funciones, ordene un conjunto de datos de menor a mayor por el mtodo de la burbuja.
Solucin:
+ valores[i] * pesos[i]
P. ponderado=
+ pesos[i]

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

136

Definicin de variables:
n: nmero de elementos.
i: indica los elementos no ordenados
j: elementos a comparar e intercambiar
x [ ]: arreglo unidimensional
temp: utilizada para el intercambio
array[ ]: variable local

Comenzamos leyendo n e invocando a LeerArray ( ), esta funcin es la misma utilizada en el
ejemplo anterior. Observe otra de las ventajas de definir funciones: las escribimos para una
aplicacin, pero podemos usarlas en otras.
Esto es una propiedad importante conocida como Reusabilidad del cdigo.

Una vez ledos los elementos del arreglo x[ ], invocamos a la funcin Burbuja( ), en donde se
procede al ordenamiento; despus de ordenar x [ ] y de regreso al bloque principal, slo nos
queda imprimir los elementos ordenados, labor que delegamos a la funcin MuestraArray ().
Diagrama N/S


























Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

137
Lecturas recomendadas

Documento 1: Funciones en JAVA
Direccin: Ver carpeta de lecturas: 6_ Funciones en JAVA.pdf
Breve Descripcin: El departamento de matemticas de la universidad del cauca, publica
en su blog Foro de Matemticas una entrada sobre el uso de Funciones en JAVA,
mostrando de forma sencilla como implementar este concepto en el lenguaje de
programacin.

Documento 2: "Programacin Fcil - Procedimientos "
Direccin: Ver carpeta de lecturas: 6_ Procedimiento en JAVA.pdf
Breve Descripcin: La pgina www.programacinfacil.com/java:procedimientos, tiene una
publicacin sobre el uso de procedimientos en JAVA, mostrando de forma sencilla como
implementar este concepto en el lenguaje de programacin.

Conclusiones
En esta semana de estudio se present un tema muy importante en este proceso de aprender
a programar computadoras, la modularizacin permite que el algoritmo sea fragmentado para
ser programados, analizados y modificados con mayor facilidad.
Con la divisin del cdigo se logra disminuir la complejidad del algoritmo, aumentando la
claridad y fiabilidad del mismo, as mismo los costes por la reutilizacin del cdigo y su
mantenibilidad ms rpida.
Dependiendo del algoritmo aprendimos a utilizar una funcin o un procedimiento que tiene
diferencias establecidas de acuerdo a la necesidad del algoritmo de solucin.

Metacognicin de la sexta semana
Las siguientes preguntas te ayudarn a reflexionar sobre tus propios aprendizajes, es un ejercicio
recomendado para razonar e identificar nuestro esfuerzo intelectual, la finalidad es regular nuestras
acciones y procesos mentales
De la temtica abordada que te llam ms la atencin?
Consideras que aprendiste con los contenidos abordados? Qu parte te tom ms tiempo?
Tuviste dificultad con algn tema o actividad? Cmo los solucionaste?
Qu acciones realizaste para aprender?


Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

138
Control de lectura sexta semana

Muy bien! Hemos llegado al final de la sexta semana, ahora, para comprobar tus logros y nivel de
aprendizaje alcanzado en relacin a la temtica estudiada, responde a las siguientes preguntas:

1. Elaborar un programa en JAVA que contenga un mtodo que acepte como parmetros un
numero entero y devuelva su factorial (No existe factorial de nmeros negativos. N!=1, si N
es cero; n!=1*2*3..(N-1),*N, si N>0).
Alternativas Fundamenta tu respuesta (Cdigo de la solucin)
Solucin
package Ejercicio1;
import java.io.*;
public class Factorial {
public static void main(String args[]) throws IOException{
InputStreamReader in = new InputStreamReader(System.in);
BufferedReader b =new BufferedReader(in);
System.out.println("Ingrese Nmero:");
int num = Integer.parseInt(b.readLine());
factorial(num);
}

public static void factorial(int n){
int fact =1;
int i;
if (n==0)
fact=1;
else
for(i=1;i<=n;i++)
{fact=fact*i;}
System.out.println("El factorial es: "+fact);
}
}

2. Elaborar un programa en JAVA que contenga un mtodo que acepte como parmetros una
base real y un exponente entero positivo y calcule su potencia.
Alternativas Fundamenta tu respuesta (Cdigo de la solucin)
Solucin
package Ejercicio3;
import java.io.*;
public class Potencia {
public static void main(String args[]) throws IOException {
InputStreamReader in = new InputStreamReader(System.in);
BufferedReader b =new BufferedReader(in);
System.out.println("Ingrese Base");
double base = Double.parseDouble(b.readLine());

System.out.println("Ingrese Exponente");
int expo = Integer.parseInt(b.readLine());
System.out.println("Resultado: "+potencia(base,expo));
}


public static double potencia(double base,int expo){
double Resultado=1;
for(int i=0;i<expo;i++) {
Resultado=Resultado*base;
}
return Resultado;

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

139
}
}

3. Elaborar un programa en JAVA que contenga un mtodo que acepte como parmetros 3
nmeros y determine el mayor y el menor.
Alternativas Fundamenta tu respuesta (Cdigo de la solucin)
Solucin
package Ejercicio4;
import java.io.*;
public class MayorMenor {
public static void main(String args[]) throws IOException {
InputStreamReader in = new InputStreamReader(System.in);
BufferedReader b =new BufferedReader(in);
System.out.println("Ingrese Primer Nmero");
int n1 = Integer.parseInt(b.readLine());

System.out.println("Ingrese Segundo Nmero");
int n2 = Integer.parseInt(b.readLine());

System.out.println("Ingrese Tercer Nmero");
int n3 = Integer.parseInt(b.readLine());

Evaluar(n1,n2,n3);
}

public static void Evaluar(int n1, int n2, int n3){
int mayor=n1, menor=n1;
if (n2>mayor)
mayor=n2;
if (n3>mayor)
mayor=n3;
if (n2<menor)
menor=n2;
if(n3<menor)
menor=n3;
System.out.println("El mayor es: " + mayor);
System.out.println("El menor es: " + menor);
}
}

4. Elaborar un programa en JAVA que contenga un mtodo que calcule el promedio de tres
nmeros enteros positivos
Alternativas Fundamenta tu respuesta (Cdigo de la solucin)
Solucin
package Ejercicio6;
import java.io.*;
public class Promedio {
public static void main(String args[]) throws IOException {
InputStreamReader in = new InputStreamReader(System.in);
BufferedReader b =new BufferedReader(in);

System.out.println("Ingrese Primer Nmero");
int num1 = Integer.parseInt(b.readLine());

System.out.println("Ingrese Segundo Nmero");
int num2 = Integer.parseInt(b.readLine());

System.out.println("Ingrese Tercer Nmero");
int num3 = Integer.parseInt(b.readLine());

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

140

System.out.println("El Promedio es: "+Calculo(num1,num2,num3));

}
public static double Calculo(int num1, int num2, int num3){
double Resultado=1;

Resultado=(num1+num2+num3)/3;

return Resultado;
}
}

5. Desarrollo un programa en JAVA para registrar los datos de un alumno (apellido paterno,
apellido materno y edad), desarrolle mtodos para registrar, para ordenar por apellido
paterno, mtodo para ordenar por edad y un mtodo que imprima los resultados.
Alternativas Fundamenta tu respuesta (Cdigo de la solucin)
Solucin
package Ejercicio10;
import java.util.Scanner;
public class ListaAlumnos {
public static Scanner teclado;
private static String[][] mat;

public static void main(String[] ar) {
Registrar();
imprimir();
}

public static void Registrar() {
teclado=new Scanner(System.in);
System.out.print("Cuantas fila tiene la matriz:");
int filas=teclado.nextInt();
mat=new String[filas][4];
System.out.print("---------------Registrando personas----------------- ");
for(int f=0;f<mat.length;f++) {
for(int c=0;c<mat[f].length;c++) {
if (c==0)
System.out.print("Ingrese Apellido Paterno: ");
if (c==1)
System.out.print("Ingrese Apellido Materno: ");
if (c==2)
System.out.print("Ingrese Apellido Nombre: ");
if (c==3)
System.out.print("Ingrese Edad: ");
mat[f][c]=teclado.next();
}
}
}

public static void imprimir() {
System.out.print("---------------Reporte----------------- ");
for(int f=0;f<mat.length;f++) {
for(int c=0;c<mat[f].length;c++) {
System.out.print(mat[f][c]+" ");
}
System.out.println();
}
}

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

141
}






















La imaginacin es ms importante que el conocimiento. El conocimiento es limitado,
mientras que la imaginacin no
Albert Einstein


Bienvenida

Estimados estudiantes bienvenidos! a la sptima semana del curso, En la cual Analizaremos las
estructuras de datos e iniciaremos explicando los arreglos bidimensionales, llamados matrices, sus
operaciones y los mtodos de ordenamiento y bsqueda de datos, desarrollando algoritmos y llevndolo
a un lenguaje de programacin.

F
u
e
n
t
e
:

I
m
a
g
e
n

e
x
t
r
a

d
a

d
e


i
n
t
e
r
n
e
t


Stima Semana
Analizaremos las estructuras de datos e iniciaremos explicando los arreglos
bidimensionales, llamados matrices, sus operaciones y los mtodos de
ordenamiento y bsqueda de datos, desarrollando algoritmos y llevndolo a un
lenguaje de programacin.
Del 17 al 23 de junio

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

142
Ruta de aprendizaje
Durante la stima semana que corresponde del 17 al 23 de junio realizaremos las siguientes actividades:

- Arreglos bidimensionales
- Operaciones con arreglos bidimensionales
- Exposiciones Finales

Es preciso recordarte que para que cumplas los objetivos planteados debes planificar tu tiempo, pues
estas actividades demandan 10 horas de estudio semanales.



Cordialmente
Ing. Luis Alberto Vives Garnique
Docente experto de la asignatura

Tema 7
Arreglos dimensionales



Introduccin al tema

Los datos se organizan de acuerdo a estructuras, tales como las matrices que agrupan datos
relacionados bajo una misma denominacin, dichos datos deben ser manipulados
realizndose insercin, bsqueda, ordenamiento, tambin es posible realizar operaciones
sobre los datos de dichas estructuras.

Muchas soluciones a problemas del mundo real se implementan con arreglos dimensionales
es por ello que en esta semana estudiaremos como manipular las estructuras.

Aprendizajes esperados
Conozcamos ahora las capacidades y actitudes a desarrollar en este cuarto tema:
F
u
e
n
t
e
:

I
m
a
g
e
n

e
x
t
r
a

d
a

d
e


i
n
t
e
r
n
e
t



Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

143

Capacidades
- Utiliza eficientemente estructuras de datos estticas en la solucin de problemas.
- Aplica adecuadamente algoritmos y programas recursivos para resolver problemas
especficos.
- Implementa apropiadamente archivos de datos para su aplicacin en problemas de nivel
intermedio.
- Resuelve problemas asociados a la manipulacin de matrices
Actitudes
- Asume una actitud de respeto ante sus semejantes, mostrndose responsable en las
diversas actividades.
- Demuestra solidaridad en el trabajo cooperativo y tolerancia en la resolucin de
discrepancias en las opiniones y actitudes de los dems.
- Asume una actitud de respeto ante sus semejantes, mostrndose responsable en las
diversas actividades.

Mapa conceptual referido al tema

Observa detenidamente el siguiente esquema, en el encontrars de un vistazo de manera
sintetizada los principales concepto de la temtica que abordaremos. Qu conceptos o categoras te
llaman la atencin?

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

144


Fuente: Elaboracin propia







Desarrollo de los contenidos de aprendizaje
7.1. Matrices:
Se puede considerar como un vector de vectores. Es, por consiguiente, un conjunto de elementos,
todos del mismo tipo, en el cual el orden de los componentes es significativo y en el que se necesitan
especificar dos subndices para poder identificar a cada elemento del arreglo.

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

145

Tambin se les llama arreglos Bidimensionales, ya que una tabla ser utilizada cuando se requiere
de establecer relaciones por renglones y columnas entre datos de un tipo comn.

1 2 3 4 . . . J . . . N



B(I,J)



Se considera que este arreglo tiene dos dimensiones (una dimensin por cada subndice) y necesita
un valor para cada subndice, y poder identificar un elemento individual. En notacin estndar,
normalmente el primer subndice se refiere a la fila del arreglo, mientras que el segundo subndice se
refiere a la columna del arreglo. Es decir, B(I,J), es el elemento de -b que ocupa la I
a
y la J
a
columna
como se muestra en la figura anterior.
7.1.1. Representacin grfica de una matriz.


Una matriz de 2 x 5 seria: entero x [2] [5] // filas y columnas
Los elementos se numeran y referencia con un ndice.

Un ejemplo tpico de un arreglo Bidimensional es un tablero de ajedrez. Se puede
representar cada posicin o casilla del tablero mediante un arreglo, en el que cada elemento
es una casilla y en el que su valor ser un cdigo representativo de cada figura del juego.
Ejemplo:
Cada elemento puede contener un nmero de tipo entero. Grficamente esta matriz M se puede
definir as:

M[3][4]

FILAS
COLUMNAS
Columnas

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

146

0 1 2 3
0
0,0 0,1 0,2 0,3
1
1,0 1,1 1,2 1,3
2
2,0 2,1 2,2 2,3

7.2. Inicializacin de una matriz

Veamos la siguiente sentencia:

for (i=0; i<5; i++)
{
for (j=0; j<5; j++)
{
m [ i ][ j ] = 10;
}
}

En esta sentencia se est variando un ndice i desde 0 hasta 4 y un ndice j desde 0 hasta 4. En
cada variacin se est asignando al elemento m [ i ] [ j ] el nmero 10. El efecto es asignar a cada
elemento de una matriz 5 por 5 el nmero 10.

7.3. Consulta
El acceso a un elemento de una matriz se realiza mediante el nombre de sta y dos ndices (uno
para cada dimensin) entre corchetes. El primer ndice representa la fila y el segundo la columna
en que se encuentra dicho elemento. Tal como muestra la figura 7.2, el ndice de las filas tomar
valores entre 0 y el nmero de filas menos 1, mientras que el ndice de las columnas tomar
valores entre 0 y el nmero de columnas menos 1. Es responsabilidad del programador
garantizar este hecho.
Nombre_matriz[ndice 1][ndice 2];



7.4. Asignacin
Comentaremos nicamente la inicializacin de una matriz en la propia declaracin. El siguiente
ejemplo declara una matriz de tres filas y cuatro columnas y la inicializa. Por claridad, se ha usado
identacin en los datos, aunque hubiesen podido escribirse todos en una sola lnea.

Filas

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

147
int mat[3][4] = 24, 12, 6, 17,15, 28, 78, 32,0, 44, 3200 , -34 ;

La inicializacin de matrices, y en general de tablas multidimensionales, puede expresarse de
forma ms clara agrupando los valores mediante llaves ({}) siguiendo la estructura de la matriz.

Ejemplo 7.1:
Se desea registrar las edades de 4 grupos de personas, cada uno de ellos con 5 elementos.
Los datos debern ser mostrados en forma posterior.

variables:
edad: arreglo(1..4,1..5) de entero
g,p: enteros

Inicio
para g = 1 hasta 4 hacer
escribir(Grupo : ,g)
para p =1 hasta 5 hacer
escribir(Edad de la persona ,p)
leer(edad[g,p])
para g =1 hasta 4 hacer
escribir(Grupo ,g)
para p = 1 hasta 5 hacer
escribir(?persona ,p, Tiene,edad[g,p],?aos?)
Fin

Ejemplo 7.2:

Ingresar los siguientes datos en una matriz de 3 x 5.

4 7 1 3 5
2 0 6 9 7
3 1 2 6 4

Y luego mostrar sus valores en la siguiente forma:

4 2 3
7 0 1
1 6 2
3 9 6
5 7 4


Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

148
DIAGRAMA N/S:














Lecturas recomendadas

Documento 1: Matriz en JAVA
Direccin: Ver carpeta de lecturas: 7_ Matriz en JAVA.pdf
Breve Descripcin: Javier Garca escribe un interesante artculo en GarBedo.es, con un
ejemplo en JAVA del uso de matriz, mostrando de forma sencilla como implementar este
concepto en el lenguaje de programacin.

Documento 2: "Ordenamiento para ordenar una matriz en JAVA "
Direccin: Ver carpeta de lecturas: 7_Ordenamiento de datos de una Matriz en java.pdf
Breve Descripcin: Sergio Palay publica en su pgina persona
sergiopalay.wordpress.com un ejemplo en JAVA, de ordenamiento de valores almacenados
en una matriz mostrando de forma sencilla como implementar este concepto en el lenguaje
de programacin.




Conclusiones
En esta semana de estudio se presentaron los conocimientos base, de cmo trabajar
con matrices, la realizacin de consultas y asignacin son cuestiones bsicas en la
manipulacin de datos en este tipo de estructuras.

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

149
Tambin en este tema nos hemos dedicado a mostrar ejemplos de cmo manipular
datos organizados en una matriz, que como se habrn dado cuenta es sencillo, claro
que para ello es necesario dominar la temtica desarrollada en las semanas anteriores,
tales como estructuras de control y estructuras repetitivas.
Es importante graficar la matriz para tener mayor facilidad en su comprensin de la
manipulacin de datos en la memoria, dicha representacin es una abstraccin que
nos facilita la comprensin.

Metacognicin de la sptima semana
Las siguientes preguntas te ayudarn a reflexionar sobre tus propios aprendizajes, es un
ejercicio recomendado para razonar e identificar nuestro esfuerzo intelectual, la finalidad
es regular nuestras acciones y procesos mentales
De la temtica abordada que te llam ms la atencin?
Consideras que aprendiste con los contenidos abordados? Qu parte te tom ms tiempo?
Tuviste dificultad con algn tema o actividad? Cmo los solucionaste?
Qu acciones realizaste para aprender?
Control de lectura sptima semana

Muy bien! Hemos llegado al final de la sptima semana, ahora, para comprobar tus logros y
nivel de aprendizaje alcanzado en relacin a la temtica estudiada, responde a las siguientes
preguntas:

1. Elaborar un programa en JAVA que llene una matriz de 3 * 4 y determine la posicin [fila,
columna] del nmero mayor almacenado en la matriz. Los nmeros son diferentes.
Alternativas Fundamenta tu respuesta (Cdigo de la solucin)
Solucin
package semana7;
import java.util.Scanner;
public class Ejercicio1 {

public static void main(String[] args) {

int matriz[][] = new int[3][4];

ingresar(matriz);
mayor(matriz);

}

private static void mayor(int[][] matriz) {
int mayor=matriz[0][0],i = 0,j = 0;

for (int x=0; x < matriz.length; x++) {
for (int y=0; y < matriz[x].length; y++) {
if(matriz[x][y]>mayor){
mayor=matriz[x][y];
i=x;
j=y;
}

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

150
}
}

System.out.print("el nmero mayor es ==> "+mayor+"[" + i + "," + j + "]");

}

private static void ingresar(int[][] matriz) {

Scanner teclado=new Scanner(System.in);

for (int x=0; x < matriz.length; x++) {
for (int y=0; y < matriz[x].length; y++) {
System.out.print("Introduzca el elemento [" + x + "," + y + "] ==>");
matriz[x][y] = teclado.nextInt();
}
}
}
}

2. Elaborar un programa en JAVA que llene una matriz de 3 * 3. Sumar las columnas e
imprimir que columna tuvo la mxima suma y la suma de esa columna.
Alternativas Fundamenta tu respuesta (Cdigo de la solucin)
Solucin
package semana7;
import java.util.Scanner;
public class Ejercicio3 {

public static void main(String[] args) {
int matriz[][] = new int[3][3];
ingresar(matriz);
sumar(matriz);
}

private static void sumar(int[][] matriz) {
int columnas[] = new int[3];


for (int x=0; x < matriz.length; x++) {
columnas[x]=0;
for (int y=0; y < matriz[x].length; y++) {
columnas[x] = columnas[x] + matriz[y][x];
}
}
mayor_vector(columnas);
}

private static void mayor_vector(int[] columnas) {
int mayor=columnas[0],i=0;
for (int x=0; x < columnas.length; x++) {
if(mayor<columnas[x]){
mayor=columnas[x];
i=x;
}

}

System.out.println("el mayor es la columna ==> "+i+" con la cantidad de ==>
"+mayor);

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

151

}

private static void ingresar(int[][] matriz) {

Scanner teclado=new Scanner(System.in);

for (int x=0; x < matriz.length; x++) {
for (int y=0; y < matriz.length; y++) {
System.out.print("Introduzca el elemento [" + x + "," + y + "] ==>");
matriz[x][y] = teclado.nextInt();
}
}
}
}

3. Elaborar un programa en JAVA que llene una matriz de 3 * 3 y que almacene toda la matriz
en un vector. Imprimir el vector resultante.
Alternativas Fundamenta tu respuesta (Cdigo de la solucin)
Solucin
package semana7;
import java.util.Scanner;
public class Ejercicio6 {
public static void main(String[] args) {
int matriz[][] = new int[3][3];
ingresar(matriz);
almacenar(matriz);
}

private static void almacenar(int[][] matriz) {
int vector[] = new int [9];
int cont=0;
System.out.println("VECTOR");
for (int x=0; x < matriz.length; x++) {
for (int j = 0; j < 3; j++) {
vector[cont]=matriz[x][j];
System.out.println("[" + cont + "] ==> "+vector[cont]);
cont++;
}
}
}

private static void ingresar(int[][] matriz) {

Scanner teclado=new Scanner(System.in);

for (int x=0; x < matriz.length; x++) {
for (int y=0; y < matriz.length; y++) {
System.out.print("Introduzca el elemento [" + x + "," + y + "] ==>");
matriz[x][y] = teclado.nextInt();
}
}
}
}

4. Elaborar un programa en JAVA que dada una matriz de filas F y C Columnas, de nmeros
enteros, permita: Borrar una Fila determinada, Borrar una Columna determinada.
Alternativas Fundamenta tu respuesta (Cdigo de la solucin)

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

152
Solucin
package semana7;
import java.util.Scanner;
public class Ejercicio9 {

static int fila;
static int col;
public static void main(String[] args) {
int matriz[][] = null;
fila = tama("filas");
col = tama("columnas");
matriz = new int[fila][col];
ingresar(matriz);
mostrar(matriz);
eliminar_fila(matriz);
mostrar(matriz);
eliminar_columna(matriz);
mostrar(matriz);

}

private static void eliminar_columna(int[][] matriz) {
Scanner teclado=new Scanner(System.in);
System.out.println("ELIMINAR COLUMNA");
int c=-1;
do{
System.out.print("Ingrese el numero de columna ==> ");
c = teclado.nextInt();
}while(c<0||c>=col);

for (int i = 0; i < fila; i++) {
for (int j = c; j < col-1; j++) {
matriz[i][j]=matriz[i][j+1];
}
}

if(c == col-1){
for (int j = 0; j < fila; j++) {
matriz[j][c]=0;
}
}

col--;
}

@SuppressWarnings("resource")
private static void eliminar_fila(int[][] matriz) {
Scanner teclado=new Scanner(System.in);
System.out.println("ELIMINAR FILA");
int f=-1;
do{
System.out.print("Ingrese el numero de fila ==> ");
f = teclado.nextInt();
}while(f<0||f>=fila);

for (int i = f; i < fila-1; i++) {
for (int j = 0; j < col; j++) {
matriz[i][j]=matriz[i+1][j];
}

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

153
}

if(f == fila-1){
for (int j = 0; j < col; j++) {
matriz[f][j]=0;
}
}

fila--;
}

private static void mostrar(int[][] matriz) {
System.out.println("Presentacion de la matriz");
for (int i = 0; i < fila; i++) {
for (int j = 0; j < col; j++) {
System.out.print("[" + i + "," + j + "]"+matriz[i][j] + "\t");
}
System.out.print("\n");
}

}

private static void ingresar(int[][] matriz) {

Scanner teclado=new Scanner(System.in);

for (int x=0; x < fila; x++) {
for (int y=0; y < col; y++) {
System.out.print("Introduzca el elemento [" + x + "," + y + "] ==>");
matriz[x][y] = teclado.nextInt();
}
}
}

private static int tama(String nom) {
Scanner teclado=new Scanner(System.in);
int n;

do{
System.out.print("Ingrese la cantidad de "+nom+" ==> ");
n= (int) teclado.nextInt();
}while(n <1);
return n;

}
}

5. Elaborar un programa en JAVA, que dada una matriz de filas F y C Columnas, de nmeros
enteros, permita: Determinar si la Matriz es escalar o no (Es escalar si los elementos de la
diagonal principal son todas iguales).
Alternativas Fundamenta tu respuesta (Cdigo de la solucin)
Solucin
package semana7;
import java.util.Scanner;
public class Ejercicio10 {
static int fila;
static int col;

public static void main(String[] args) {

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

154
int matriz[][] = null;
fila = tama("filas");
col = tama("columnas");
matriz = new int[fila][col];
ingresar(matriz);
mostrar(matriz);
diagonal(matriz);

}
private static void diagonal(int[][] matriz) {
boolean indicador=true;
for (int x=0; x < matriz.length-1; x++) {
for (int y=0; y < matriz.length-1; y++) {
if(x==y){
if(matriz[x][y] != matriz[x+1][y+1]){
indicador = false;
break;
}
}
}
}
if(indicador){
System.out.println("Es escalar");
}else{
System.out.println("NO es escalar");
}
}

private static void mostrar(int[][] matriz) {
System.out.println("Presentacion de la matriz");
for (int i = 0; i < fila; i++) {
for (int j = 0; j < col; j++) {
System.out.print("[" + i + "," + j + "]"+matriz[i][j] + "\t");
}
System.out.print("\n");
}

}

private static void ingresar(int[][] matriz) {

Scanner teclado=new Scanner(System.in);

for (int x=0; x < fila; x++) {
for (int y=0; y < col; y++) {
System.out.print("Introduzca el elemento [" + x + "," + y + "] ==>");
matriz[x][y] = teclado.nextInt();
}
}
}

private static int tama(String nom) {

Scanner teclado=new Scanner(System.in);
int n;

do{
System.out.print("Ingrese la cantidad de "+nom+" ==> ");

Gua temtica de aprendizajes para entorno virtuales
Fundamentos de programacin

155
n= (int) teclado.nextInt();
}while(n <1);
return n;
}
}