Вы находитесь на странице: 1из 49

Manual de Prcticas Fundamentos de Programacin

Nombre de la asignatura: Fundamentos de Programacin


Carrera: Sistemas Computacionales
Clave de la asignatura: SCD-1011
(Crditos) SATCA1 : 2-3-5
INGENIERA EN SISTEMAS COMPUTACIONALES
ISIC-2010-224
Perfil de Egreso
1. Disear, configurar y administrar redes computacionales aplicando las
normas y estndares vigentes.
2. Desarrollar, implementar y administrar software de sistemas o de aplicacin
que cumpla con los estndares de calidad con el fin de apoyar la productividad
y competitividad de las organizaciones.
3. Coordinar y participar en proyectos interdisciplinarios.
4. Disear e implementar interfaces hombremquina y mquinamquina para
la automatizacin de sistemas.
5. Identificar y comprender las tecnologas de hardware para proponer,
desarrollar y mantener aplicaciones eficientes.
6. Disear, desarrollar y administrar bases de datos conforme a requerimientos
definidos, normas organizacionales de manejo y seguridad de la informacin,
utilizando tecnologas emergentes.
7. Integrar soluciones computacionales con diferentes tecnologas, plataformas
o dispositivos.
8. Desarrollar una visin empresarial para detectar reas de oportunidad que le
permitan emprender y desarrollar proyectos aplicando las tecnologas de la
informacin y comunicacin.
9. Desempear sus actividades profesionales considerando los aspectos
legales, ticos, sociales y de desarrollo sustentable.
10. Poseer habilidades metodolgicas de investigacin que fortalezcan el
desarrollo cultural, cientfico y tecnolgico en el mbito de sistemas
computacionales y disciplinas afines.
11. Seleccionar y aplicar herramientas matemticas para el modelado, diseo y
desarrollo de tecnologa computacional.
1 L. I. Jos Rigoberto Hernndez Alburquerque

Manual de Prcticas Fundamentos de Programacin

Objetivo General
Formar profesionistas lderes, analticos, crticos y creativos, con visin estratgica y
amplio sentido tico, capaces de disear, implementar y administrar infraestructura
computacional para aportar soluciones innovadoras en beneficio de la sociedad, en un
contexto global, multidisciplinario y sustentable.
Temario
Unidad 1 Conceptos Bsicos
1.1 Clasificacin del software de: sistemas y aplicacin.
1.2 Algoritmo.
1.3 Lenguaje de Programacin.
1.4 Programa.
1.5 Programacin.
1.6 Paradigmas de programacin.
1.7 Editores de texto.
1.8 Compiladores e intrpretes.
1.9 Ejecutables.
1.10 Consola de lnea de comandos.
Unidad 2 Algoritmos
2.1 Anlisis de problemas.
2.2 Representacin de algoritmos: grfica y pseudocdigo.
2.3 Diseo de algoritmos aplicados a problemas.
2.4 Diseo algortmico de funciones
Unidad 3 Introduccin a la Programacin
3.1 Caractersticas del lenguaje de programacin
3.2 Estructura bsica de un programa.
3.3 Traduccin de un programa: compilacin, enlace de un programa, errores en tiempo
de compilacin.
3.4 Ejecucin de un programa.
3.5 Elementos del lenguaje: datos, literales y constantes, identificadores, variables,
parmetros, operadores, entrada y salida de datos.
3.6 Errores en tiempo de ejecucin.
Unidad 4 Control de flujo.
4.1 Estructuras secuenciales.
4.2 Estructuras selectivas: simple, doble y mltiple.
4.3 Estructuras iterativas: repetir mientras, hasta, desde
4.4 Diseo e implementacin de mtodos
Unidad 5 Arreglos
2 L. I. Jos Rigoberto Hernndez Alburquerque

Manual de Prcticas Fundamentos de Programacin

5.1 Unidimensionales: conceptos bsicos, operaciones y aplicaciones.


5.2 Multidimensionales: conceptos bsicos, operaciones y aplicaciones.
Unidad 1 Conceptos Bsicos

1.1 Clasificacin del software de: sistemas y aplicacin.


Software son las instrucciones electrnicas que van a indicar a la PC que es lo que tiene
que hacer. Tambin se puede decir que son los programas usados para dirigir las
funciones de un sistema de computacin o un hardware
El software es el conjunto de instrucciones que las computadoras emplean para manipular
datos. Sin el software, la computadora sera un conjunto de medios sin utilizar. Al cargar
los programas en una computadora, la mquina actuar como si recibiera una educacin
instantnea; de pronto "sabe" cmo pensar y cmo operar. El Software es un conjunto de
programas, documentos, procedimientos, y rutinas asociados con la operacin de un
sistema de cmputo. Distinguindose de los componentes fsicos llamados hardware.
Comnmente a los programas de computacin se les llama software; el software asegura
que el programa o sistema cumpla por completo con sus objetivos, opera con eficiencia,
esta adecuadamente documentado, y suficientemente sencillo de operar. Es simplemente
el conjunto de instrucciones individuales que se le proporciona al microprocesador para
que pueda procesar los datos y generar los resultados esperados. El hardware por si solo
no puede hacer nada, pues es necesario que exista el software, que es el conjunto de
instrucciones que hacen funcionar al hardware.
Software del Sistema (Los Sistemas Operativos)
Sistema Operativo.- Un conjunto de rutinas para la supervisin de las operaciones del
computador. Las rutinas cargan y dan el orden de las operaciones, compilaciones,
diagnsticos, ensambles, operaciones contables, etc.
Controlan los trabajos de la computadora.
Procesa tareas esenciales como: el mantenimiento de los archivos del disco y la
administracin de pantalla.
Ejemplos de Software del sistema:

Sistemas Operativos

3 L. I. Jos Rigoberto Hernndez Alburquerque

Manual de Prcticas Fundamentos de Programacin

Comunicaciones

Controladores de dispositivos y utileras

Desarrollo del software

Utileras
Software de aplicacin
El software de aplicacin est diseado y escrito para realizar tareas especficas
personales, empresariales o cientficas como el procesamiento de nminas, la
administracin de los recursos humanos o el control de inventarios. Todas stas aplicacin
es procesan datos (recepcin de materiales) y generan informacin (registros de nmina)
para el usuario
Ejemplos de Software de aplicacin:
4 L. I. Jos Rigoberto Hernndez Alburquerque

Manual de Prcticas Fundamentos de Programacin

Planeacin Fiscal

Administracin de recursos humanos

Juegos de computadora

Sistemas de administracin de inversiones

Sistema de evaluacin de crditos

Inventario de oficina

Declaracin de ingresos

Resumen de ventas

Diseo asistido por computadora (CAD)

Hojas de clculo

Sistemas expertos

1.2 Algoritmo.
Conjunto ordenado y finito de operaciones que permite hallar la solucin de un problema
Prctica 1: Pedir a los alumnos que escriban en el pizarrn el algoritmo para resolver los
siguientes problemas:
a) Cambiar la llanta ponchada de un auto
b) Hacer un emparedado de jamn
c) Inscribirse a la escuela
1.3 Lenguaje de Programacin.
El lenguaje que usan los programadores para comunicarle las instrucciones a la
computadora.
1.4 Programa.
Instrucciones de cmputo estructuradas y ordenadas de tal manera que al ser ejecutadas,
hace que la computadora efecte una funcin determinada.
1.5 Programacin.
Accin de crear programas de computacin
1.6 Paradigmas de programacin.
Paradigma.- Ejemplo o ejemplar. Conjunto cuyos elementos pueden aparecer
alternativamente en algn contexto especificado.
La POO se basa en la programacin procedural y modular de la misma manera en que
otros paradigmas intentan aprovechar las fortalezas y corregir las debilidades de los
paradigmas precedentes.
5 L. I. Jos Rigoberto Hernndez Alburquerque

Manual de Prcticas Fundamentos de Programacin

La programacin modular estructura un programa con base en diversos mdulos.


Asimismo, la POO divide un programa en diversos objetos que interactan entre s. Al
igual que los mdulos ocultan las representaciones de datos detrs de los procedimientos.
Los objetos encapsulan su estado detrs de su interfaz.
El encapsulamiento difiere notablemente de la programacin procedural. Esta ltima no
encapsula los datos. En vez de ello, los datos estn accesibles para todos los
procedimientos. A diferencia de la programacin procedural, la programacin orientada a
objetos enlaza estrechamente los datos y el comportamiento en el objeto.
Aunque en la concepcin general los objetos son similares a los mdulos, tienen
diferencias importantes. Primero, los mdulos no se pueden extender fcilmente. La POO
presenta el concepto de herencia para superar esta deficiencia. La herencia permite
extender y mejora con facilidad las clases; tambin permite clasificarlas.
La POO tambin aprovecha el concepto de polimorfismo, el cual ayuda a elaborar
programas flexibles que no dificultan el cambio. El polimorfismo agrega esta flexibilidad al
eliminar lo restrictivo del sistema de tipos asociados a los mdulos
1.7 Editores de texto.
Un editor de texto es un programa que permite crear y modificar archivos digitales
compuestos nicamente por texto sin formato, conocidos comnmente como archivos de
texto o texto plano. El programa lee el archivo e interpreta los bytes ledos segn el cdigo
de caracteres que usa el editor. Hoy en da es comnmente de 7- 8-bits en ASCII o
UTF-8, rara vez EBCDIC.
Hay una gran variedad de editores
de texto. Algunos son de uso
general, mientras que otros estn
diseados para escribir o programar
en un lenguaje. Algunos son muy
sencillos, mientras que otros tienen
implementadas gran cantidad de
funciones.
Ejemplos

Emacs, otro editor muy comn en Unix


Vi, editor muy comn en Unix
Kate, un moderno editor para Unix
Bloc de notas, editor integrado en Windows, tambin conocido como Notepad (en
ingls)
Notepad++, editor de cdigo fuente para Microsoft Windows
jEdit, editor popular multiplataforma
6 L. I. Jos Rigoberto Hernndez Alburquerque

Manual de Prcticas Fundamentos de Programacin

1.8 Compiladores e intrpretes.


Un compilador es un programa informtico que traduce un programa escrito en un
lenguaje de programacin a otro lenguaje de programacin, generando un programa
equivalente que la mquina ser capaz de interpretar. Usualmente el segundo lenguaje es
lenguaje de mquina, pero tambin puede ser simplemente texto. Este proceso de
traduccin se conoce como compilacin.[1]
Un compilador es un programa que permite traducir el cdigo fuente de un programa en
lenguaje de alto nivel, a otro lenguaje de nivel inferior (tpicamente lenguaje de mquina).
De esta manera un programador puede disear un programa en un lenguaje mucho ms
cercano a cmo piensa un ser humano, para luego compilarlo a un programa ms
manejable por una computadora.

El lxico puede significar una lista de palabras; las palabras utilizadas en un


lenguaje de programacin.

El trmino semntica se refiere a los aspectos del significado, sentido o


interpretacin del significado de un determinado elemento, smbolo, palabra,
expresin o representacin formal.
7 L. I. Jos Rigoberto Hernndez Alburquerque

Manual de Prcticas Fundamentos de Programacin

La sintaxis es la parte de la gramtica que estudia las reglas que gobiernan la


combinatoria de constituyentes sintcticos y la formacin de unidades superiores a
estos, como los sintagmas y oraciones gramaticales. La sintaxis, por tanto, estudia
las formas en que se combinan las palabras

Un analizador sintctico (en ingls parser) es una de las partes de un compilador


que transforma su entrada en un rbol de derivacin.

Intrprete o interpretador es un programa informtico capaz de analizar y ejecutar otros


programas, escritos en un lenguaje de alto nivel. Los intrpretes se diferencian de los
compiladores en que mientras estos traducen un programa desde su descripcin en un
lenguaje de programacin al cdigo de mquina del sistema, los primeros (los intrpretes)
slo realizan la traduccin a medida que sea necesaria, tpicamente, instruccin por
instruccin, y normalmente no guardan el resultado de dicha traduccin.
1.9 Ejecutables.
Un ejecutable o archivo ejecutable, es un archivo binario cuyo contenido se interpreta
por el ordenador como un programa.

Dependiendo del tipo de que se traten las instrucciones, hablaremos de ejecutables


portables (se pueden ejecutar en varias plataformas) y no portables (destinado a una
plataforma concreta). Por ejemplo, un ejecutable Java es portable ya que utiliza un
bytecode 1no asociado a un procesador en concreto.

Determinar si un archivo es ejecutable es sobre todo una cuestin de convencin. Unos


sistemas operativos se basan en la extensin de archivo (como la terminacin .exe) y
otros lo hacen leyendo los metadatos2 (como los bits de permiso de ejecucin en Unix).

1.10

Consola de lnea de comandos

El bytecode es un cdigo intermedio ms abstracto que el cdigo mquina. Habitualmente es tratado como un fichero
binario que contiene un programa ejecutable similar a un mdulo objeto, que es un fichero binario producido por el
compilador cuyo contenido es el cdigo objeto o cdigo mquina .

En general, un grupo de metadatos se refiere a un grupo de datos, llamado recurso. El concepto de metadatos es
anlogo al uso de ndices para localizar objetos en vez de datos

8 L. I. Jos Rigoberto Hernndez Alburquerque

Manual de Prcticas Fundamentos de Programacin

Un comando (calco del ingls command, orden, instruccin) o mandato es una


instruccin u orden que el usuario proporciona a un sistema informtico, desde la lnea de
comandos (como una shell) o desde una llamada de programacin
Lnea de rdenes
La lnea de rdenes o consola (del ingls shell) permite al usuario escribir instrucciones,
de tal modo que, despus de pulsar la tecla enter en el teclado, se ejecuten procesos
internos al propio intrprete de rdenes o se lancen programas externos al mismo.
Algunas de estas consolas son:

command.com para los sistemas basados en DOS (MS-DOS, PC-DOS, DR-DOS,


FreeDOS, etc.).

cmd.exe para los sistemas basados en Windows NT (Windows NT, 2000, XP,
2003 Server, Vista y 2008 Server).

bash, sh, csh, [[ksh], etc. para los sistemas basados en Unix (GNU/Linux, *BSD,
Solaris, etc.).
En realidad, la lnea de comandos (o lnea de rdenes) no es ms que una de las formas
en que el ordenador interacciona con el usuario.
Ahora se puede interactuar con el ordenador de formas mucho ms sencillas, por ejemplo
mediante el ratn, o mediante una pantalla tctil. Sin embargo, hace unos cuantos aos la
nica forma de comunicarse era mediante esta lnea de rdenes. En ella, los usuarios
escriban la instruccin o el programa que deseaban que fuera ejecutado por el
ordenador.
Esta interaccin la lleva a cabo un programa que se suele llamar intrprete de comandos
o intrprete de rdenes.
Por ejemplo, en los sistemas de Microsoft, puede ejecutarse el intrprete pulsando en
inicio, ejecutar: cmd
En linux, es suficiente con seleccionar la aplicacin de consola (identificada mediante una
ventana) e inmediatamente se lanza el intrprete de rdenes (en la actualidad suele ser el
bash, aunque esto puede modificarlo el usuario)
En la actualidad la interaccin mediante la lnea de rdenes es bastante ms sencilla que
con los primeros intrpretes, ya que ahora es muy fcil editar la lnea para realizar
modificaciones y llevar un histrico de las rdenes introducidas (pulsando con la flecha
hacia arriba, las veces deseadas, del teclado se obtienen las rdenes introducidas
anteriormente y tambin se puede utilizar la flecha hacia abajo; de este modo es muy
cmodo ver el histrico de las rdenes introducidas)

9 L. I. Jos Rigoberto Hernndez Alburquerque

Manual de Prcticas Fundamentos de Programacin

Intrprete de rdenes

Intrprete de comandos de MS-DOS


Inicio de la ejecucin del intrprete de comandos en Windows
Para iniciar el funcionamiento del intrprete de rdenes en Windows, basta seleccionar
Inicio/Ejecutar y escribir 'CMD' y pulsar Intro. De este modo se inicia una sesin utilizando
el intrprete. Escribir HELP y pulsar INTRO para obtener ayuda.
En otros sistemas operativos es suficiente con escribir el nombre del intrprete, tal como
bash, sh, csh o similar.
Prctica 2 Lnea de comandos

Ejemplos:
cd <nombre de la carpeta a abrir>

Abre la carpeta nombrada

cd..

Cierra la carpeta en la que nos ubiquemos

cls

Limpia la pantalla

dir

Muestra el contenido del directorio

rename
copy

Cambia el nombre de un archivo o carpeta


Copia un archivo o carpeta a la unidad indicada

Unidad 2 Algoritmos
2.1 Anlisis de problemas
Definicin de problema
- Conjunto de hechos o circunstancias que dificultan la consecucin de algn fin

10 L. I. Jos Rigoberto Hernndez Alburquerque

Manual de Prcticas Fundamentos de Programacin

Una necesidad inicial, que tiene un objetivo o solucin a alcanzar mediante una serie
de operaciones, actividades o mtodos bien definidos.

Metodologa de solucin de problemas


Para la solucin de problemas, es muy importante la creatividad, la imaginacin y la lgica
de cada persona, pero si adems nos apoyamos en una metodologa en la que se
involucran diferentes etapas, como la identificacin del problema, el planteamiento de
alternativas de solucin y, por ltimo la evaluacin de la solucin, veremos que resulta de
gran utilidad.
Durante la explicacin de cada una de las etapas de la metodologa de la solucin de
problemas, y con el fin de ejemplificarlas, trabajaremos con el siguiente problema: calcular
la suma de los nmeros pares entre 1 y 100, y al final desplegar el resultado.
11 L. I. Jos Rigoberto Hernndez Alburquerque

Manual de Prcticas Fundamentos de Programacin

Identificacin del problema


Posiblemente sta sea una de las etapas ms importantes para resolver un problema, ya
que implica analizar bien el problema para entender claramente qu se desea resolver, e
identificar los datos disponibles, ya que stos sern las entradas y los resultados que
deseamos obtener sern las salidas.
En esta etapa resulta de gran ayuda plantearse una serie de preguntas relacionadas con
el problema y lgicamente obtener las respectivas respuestas.
Por ejemplo, en el caso del problema en estudio, las preguntas que podemos plantear
son:
Cules son los datos de entrada?
Los nmeros pares comprendidos entre 1 y 100
Cules son los datos de salida?
La suma de los nmeros pares
Cmo podemos determinar los nmeros pares comprendidos entre 1 y 100?
Una forma sera empezar con el nmero 2, que es el primer nmero par entre 1 y 100, y
despus avanzar de dos en dos, es decir, 2, 4, 6, 100
Otra forma sera utilizar la operacin aritmtica mod que proporciona el residuo de una
divisin. As inicializaramos con el nmero 1 y nos iramos de uno en uno analizando el
residuo con la operacin mod al dividir cada nmero entre 2, y si nos da cero, quiere decir
que el nmero es par
Planteamiento de alternativas de solucin
Una vez que se ha identificado el problema, el siguiente paso consiste en plantear las
posibles alternativas que tenemos para solucionarlo. En esta etapa y cuando la solucin
del problema es complicada, se recomienda dividir la solucin en mdulos, es decir, en
tareas independientes.
Alternativa nmero uno:
Los datos de entrada son los nmeros pares entre 1 y 100, es decir 2, 4, 6, 100. El
resultado que deseamos obtener es la suma de estos nmeros, por lo que ser necesario
tener dos variables, una para controlar los nmeros pares, que inicializaremos en 2 y la
iremos incrementando en 2 hasta llegar a 100, y otra para ir sumando los nmeros y que
empezar con valor 0.
Alternativa nmero dos:
Los datos de entrada son los nmeros entre 1 y 100, y el resultado que deseamos
obtener es la suma de los nmeros pares, por lo que ser necesario tener dos variables,
una para controlar los nmeros, la cual inicializaremos en 1 y la iremos incrementando en
1 hasta llegar a 100, pero adems cada vez que la incrementemos, tenemos que dividirla
entre dos y si el residuo es cero, entonces quiere decir que el nmero es par, y otra para
ir sumando los nmeros pares y que inicializaremos en 0.
12 L. I. Jos Rigoberto Hernndez Alburquerque

Manual de Prcticas Fundamentos de Programacin

Eleccin de una alternativa


Cuando todas las posibles alternativas de solucin de un problema han sido planteadas,
entonces debemos elegir una de ellas. Aqu es recomendable elegir la que requiere el
menor nmero de pasos.
En el ejemplo que hemos venido desarrollando, elegiremos la alternativa nmero uno
debido a que tiene menos pasos para solucionar el problema, ya que nos estamos
evitando la divisin entre dos, y por ende el anlisis del residuo.
Desarrollo de la solucin
Una vez elegida la alternativa para solucionar el problema, lo que nos resta es disear su
respectivo algoritmo, donde escribiremos cada uno de los pasos de una manera breve y
ordenada.
As, el algoritmo para nuestro ejemplo sera:
1. Inicio
2. Establecer la variable Suma en 0 (Suma = 0)
3. Establecer la variable Nmero en 2 (Nmero = 2)
4. Sumar Nmero a Suma (Suma = Suma + Nmero)
5. Incrementar Nmero en 2 (Nmero = Nmero + 2)
6. Si Nmero es <= 100, entonces
Volver al paso 4
En caso contrario,
Desplegar el valor de Suma
7. Fin
Evaluacin de la solucin
Cuando se disean algoritmos, se puede probar su funcionamiento haciendo lo que se
conoce como una prueba de escritorio. La cual consiste en anotar los valores de las
variables en una hoja, seguir cada una de las sentencias del algoritmo y anotar todos los
cambios de valores que sufren las variables, de tal manera que al finalizar se sabe si el
algoritmo realmente resuelve el problema planteado.
Hacer la prueba de escritorio del algoritmo anterior
2.2 Representacin de algoritmos: grfica y pseudocdigo.
Diagramas de flujo
Los diagramas de flujo tambin sirven para representar grficamente un algoritmo, cada
sentencia del algoritmo es representada mediante un smbolo.
En la siguiente tabla se muestran algunos de los smbolos utilizados para la creacin de
diagramas de flujo

13 L. I. Jos Rigoberto Hernndez Alburquerque

Manual de Prcticas Fundamentos de Programacin

SMBOLO

SIGNIFICADO

FUNCIN

Inicio o Fin
(Terminal)

Indica el inicio y el fin de


un algoritmo

Entrada/Salida

Proceso

Decisin

Conector en la misma
pgina
Lnea de flujo o direccin

Sirve tanto para indicar


que se deben introducir
datos como para mostrar
los resultados
Representa cualquier tipo
de transformacin de los
datos
Representa
una
comparacin entre los
datos, y seala dos
posibles
caminos
dependiendo del resultado,
uno para cuando la
comparacin
resulta
verdadera y otro para
cuando es falsa
Se utiliza para unir dos
partes de un diagrama en
una misma pgina
Indica la
diagrama

direccin

del

Impresora

Seala que los resultados


sern mostrados en papel

Conector en pginas
diferentes

Sirve para unir dos partes


de
un
diagrama
en
diferentes pginas

Llamada a subrutina

Llamada a subrutina

Pantalla

Mostrar los resultados en


la
pantalla
de
la
computadora

Para construir diagramas de flujo, es importante aplicar las siguientes reglas:


1. Todo diagrama de flujo debe tener un inicio y un fin
2. Las lneas utilizadas para indicar la direccin de flujo deben ser rectas, verticales y
horizontales.
14 L. I. Jos Rigoberto Hernndez Alburquerque

Manual de Prcticas Fundamentos de Programacin

3. Todas las lneas utilizadas para indicar la direccin del flujo deben estar conectadas
4. El diagrama de flujo debe ser construido de arriba hacia abajo.
5. No puede llegar ms de una lnea a un smbolo

Pseudocdigo.- Es una descripcin de alto nivel de un algoritmo que emplea una


mezcla de lenguaje natural con algunas convenciones sintcticas propias de lenguajes de
programacin, como asignaciones, ciclos y condicionales. Es utilizado para describir
algoritmos en libros y publicaciones cientficas, y como producto intermedio durante el
desarrollo de un algoritmo.

El pseudocdigo est pensado para facilitar a las personas el entendimiento de un


algoritmo, y por lo tanto puede omitir detalles irrelevantes que son necesarios en una
implementacin. Programadores diferentes suelen utilizar convenciones distintas, que
pueden estar basadas en la sintaxis de lenguajes de programacin concretos. Sin
embargo, el pseudocdigo en general es comprensible sin necesidad de conocer o utilizar
un entorno de programacin especfico, y es a la vez suficientemente estructurado para
que su implementacin se pueda hacer directamente a partir de l.

2.3 Diseo de algoritmos aplicados a problemas


Ejemplo 1: Elaborar el diagrama de flujo del algoritmo que se dise en el tema anterior
(suma de nmeros pares comprendidos entre 1 y 100)

15 L. I. Jos Rigoberto Hernndez Alburquerque

Manual de Prcticas Fundamentos de Programacin

Ejemplo 2: Se leen tres nmeros y se desea saber cual es el mayor y desplegarlo.


Algoritmo
1. Inicio
2. Leer A, B, C
3. Si A > B, entonces
Si A > C, entonces
Desplegar A
Ir al paso 4
Si no entonces desplegar C
Ir al paso 4
Sino A <= B entonces
Si B > C, entonces
Desplegar B
Ir al paso 4
Si no, entonces
Desplegar C
16 L. I. Jos Rigoberto Hernndez Alburquerque

Manual de Prcticas Fundamentos de Programacin

4. Fin

Inicio

A, B, C

NO

SI
NO
*

A>C

A>B
SI

SI

B>C
*

Fin

Ejemplo 3: Elaborar un algoritmo y su respectivo diagrama de flujo para calcular el


promedio de una serie de nmeros positivos dados por el usuario; al final se
deber imprimir el resultado. Cuando el usuario introduzca un valor de 0,
significar que la entrada de datos ha concluido.
1.
2.
3.
4.
5.

Inicio
Suma = 0
Contador = 0
Leer Nmero
Si Nmero < 0, entonces
Volver al paso 4
Si no
Si Nmero = 0, entonces
Si Contador = 0 entonces
Ir al paso 6

Si no, entonces
Promedio = Suma/Contador
Imprimir Promedio
17 L. I. Jos Rigoberto Hernndez Alburquerque

Manual de Prcticas Fundamentos de Programacin

Ir al paso 6
Si no
Suma = Suma + Nmero
Contador = Contador + 1
Volver al paso 4
6. Fin

Ejemplo 4: Elaborar un algoritmo y su respectivo diagrama de flujo para calcular el


factorial de cualquier nmero entero positivo N proporcionado por el usuario, al finalizar se
deber desplegar el nmero N y su factorial.
El factorial de un nmero N se denota como N! y se calcula:
N! = N * (N 1) * *4*3*2*1

18 L. I. Jos Rigoberto Hernndez Alburquerque

Manual de Prcticas Fundamentos de Programacin

Por otro lado, si N= 0, entonces el factorial de N es 1.


Para este ejercicio tendremos 2 variables, una denominada Fact para calcular el factorial
y otra ser N, que representar el nmero que introduzca el usuario.
Algoritmo
1.
2.
3.
4.

Inicio
Fact= 1
Leer N
Si N < 0 entonces
Volver al paso 3
Si no
Si N = 0 entonces
Imprimir El factorial de 0 es 1
Ir al paso 9

5. Fact = Fact * N
6. N = N -1
7. Si N = 1 entonces
8.
Imprimir El factorial de N es Fact
Ir al paso 9
Si no
Volver al paso 5
9. Fin

19 L. I. Jos Rigoberto Hernndez Alburquerque

Manual de Prcticas Fundamentos de Programacin

Ejemplo 5: Calcular el importe de un determinado nmero de artculos del mismo precio.


Si el importe es mayor de $60.00, aplicar un descuento de 5%
1)
2)
3)
4)
5)

Inicio
Leer cantidad
Leer precio
Importe = Cantidad * Precio
Si Importe > 60 entonces
Descuento = Importe * 0.05%
Total= Importe Descuento
Mostrar Total

En caso contrario
Mostrar Importe
6) Fin

20 L. I. Jos Rigoberto Hernndez Alburquerque

Manual de Prcticas Fundamentos de Programacin

2.4 Diseo algortmico de funciones


Funcin (function).- Subprograma que calcula y devuelve un solo valor.
Ejemplo 6: Dados tres nmeros, determinar si la suma de cualquier pareja de ellos es
igual al tercer nmero. Si se cumple esta condicin, escribir iguales yen caso contrario,
escribir Distintos
1. Inicio
2. Leer A, B y C
3. Si A+B = C entonces
Escribir Iguales
Ir al paso 4
En caso contrario
Si A +C= B entonces
Escribir Iguales
Ir al paso 4
En caso contrario
Si B +C= A entonces
21 L. I. Jos Rigoberto Hernndez Alburquerque

Manual de Prcticas Fundamentos de Programacin

Escribir Iguales
Ir al paso 4
En caso contrario
Escribir distintos
4.

Fin

Distintos

Unidad 3 Introduccin a la Programacin


3.1 Caractersticas del lenguaje de programacin
Java es un lenguaje de programacin orientado a objetos desarrollado por Sun
Microsystems a principios de los aos 90. El lenguaje en s mismo toma mucha de su
sintaxis de C y C++, pero tiene un modelo de objetos ms simple y elimina herramientas
22 L. I. Jos Rigoberto Hernndez Alburquerque

Manual de Prcticas Fundamentos de Programacin

de bajo nivel, que suelen inducir a muchos errores, como la manipulacin directa de
punteros o memoria.
El lenguaje Java se cre con cinco objetivos principales:
1. Debera usar la metodologa de la programacin orientada a objetos.
2. Debera permitir la ejecucin de un mismo programa en mltiples sistemas
operativos.
3. Debera incluir por defecto soporte para trabajo en red.
4. Debera disearse para ejecutar cdigo en sistemas remotos de forma segura.
5. Debera ser fcil de usar y tomar lo mejor de otros lenguajes orientados a objetos,
como C++.
La primera caracterstica, orientado a objetos (OO), es disear el software de forma que
los distintos tipos de datos que usen estn unidos a sus operaciones. As, los datos y el
cdigo (funciones o mtodos) se combinan en entidades llamadas objetos
La segunda caracterstica, la independencia de la plataforma, significa que programas
escritos en el lenguaje Java pueden ejecutarse igualmente en cualquier tipo de hardware.

En Java el problema de las fugas de memoria se evita en gran medida gracias a la


recoleccin de basura (o automatic garbage collector). El programador determina cundo
se crean los objetos y el entorno en tiempo de ejecucin de Java (Java runtime) es el
responsable de gestionar el ciclo de vida de los objetos. El programa, u otros objetos
pueden tener localizado un objeto mediante una referencia a ste. Cuando no quedan
referencias a un objeto, el recolector de basura de Java borra el objeto, liberando as la
memoria que ocupaba previniendo posibles fugas Aun as, es posible que se produzcan
fugas de memoria si el cdigo almacena referencias a objetos que ya no son necesarios
es decir, pueden an ocurrir, pero en un nivel conceptual superior.
3.2 Estructura bsica de un programa
1 // Bienvenido1.java
2 // Programa para imprimir texto
3
4 public class Bienvenido1 {
5
6 // el mtodo main empieza la ejecucin de la aplicacin en Java
7 public static void main( String args[] )
8{
9
System.out.println( "Bienvenido a la programacin en Java!");
10 System.out.println(" Hecho por Pepe Alburquerque 26/Oct/06 5:05 p.m.");
11
12 } // fin del mtodo main
23 L. I. Jos Rigoberto Hernndez Alburquerque

Manual de Prcticas Fundamentos de Programacin

13
14 } // fin de la clase Bienvenido1
// Indica que el resto de la lnea es un comentario
/* Este es un comentario tradicional. Puede dividirse en muchas lneas */
La lnea 3 es una lnea en blanco para facilitar la lectura del programa.
public class Bienvenido1 { Comienza el cuerpo de la declaracin de la clase
Introduce una declaracin de la clase en Java, la cual debe ir seguida inmediatamente por
el nombre de la clase (Bienvenido!)
Por convencin, todos los nombres de clases en Java comienzan con una letra mayscula
y la primera letra de cada palabra en el nombre de la clase debe ir en maysculas. (ej:
EjemploDeNombreDeClase)
public static void main( String args[] )
Los parntesis indican que ste es un bloque de construccin del programa al cual se le
llama mtodo. Las declaraciones de clases en Java generalmente contienen uno o ms
mtodos. Solo uno de esos mtodos debe llamarse main (principal) y debe definirse as
como est
Void Indica que este mtodo realizar una tarea (en este caso mostrar una lnea de
texto pero no devolver ningn tipo de informacin cuando complete su tarea.
{ En la lnea 8 comienza el cuerpo de declaracin del mtodo. Su correspondiente llave }
debe terminar el cuerpo de la declaracin del mtodo (lnea 11). Las llaves mantienen una
sangra
9
System.out.println( "Bienvenido a la programacin en Java!");
Indica a la computadora que imprima la cadena de caracteres contenida entre comillas
El mtodo 9
comandos

System.out.println muestra (o imprime) una lnea de texto en la ventana de

La cadena dentro de los parntesis en la lnea 9 es el argumento para el mtodo.


Toda la lnea 9 se conoce como instruccin. La mayora de las instrucciones terminan con
un ;
La lnea 13 especifica la } de cierre de la clase Bienvenido1
Programa Bienvenido 1
3.3 Traduccin de un programa: compilacin, enlace de un programa, errores en
tiempo de compilacin.

24 L. I. Jos Rigoberto Hernndez Alburquerque

Manual de Prcticas Fundamentos de Programacin

El proceso de traduccin se compone internamente de varias etapas o fases, que realizan


distintas operaciones lgicas. Es til pensar en estas fases como en piezas separadas
dentro del traductor, y pueden en realidad escribirse como operaciones codificadas
separadamente aunque en la prctica a menudo se integren juntas.

Fase de anlisis
Anlisis lxico
El anlisis lxico constituye la primera fase, aqu se lee el programa fuente de izquierda a
derecha y se agrupa en componentes lxicos (tokens), que son secuencias de
caracteres que tienen un significado. Adems, todos los espacios en blanco, lneas en
blanco, comentarios y dems informacin innecesaria se elimina del programa fuente.
Tambin se comprueba que los smbolos del lenguaje (palabras clave, operadores,...) se
han escrito correctamente.
Anlisis sintctico
En esta fase los caracteres o componentes lxicos se agrupan jerrquicamente en frases
gramaticales que el compilador utiliza para sintetizar la salida. Se comprueba si lo
obtenido de la fase anterior es sintcticamente correcto (obedece a la gramtica del
lenguaje). Por lo general, las frases gramaticales del programa fuente se representan
mediante un rbol de anlisis sintctico.
La estructura jerrquica de un programa normalmente se expresa utilizando reglas
recursivas. Por ejemplo, se pueden dar las siguientes reglas como parte de la definicin
de expresiones:
1. Cualquier identificador es una expresin.
2. Cualquier nmero es una expresin.
3. Si expresin1 y expresin2 son expresiones, entonces tambin lo son:
o

expresin1 + expresin2

expresin1 * expresin2

( expresin1 )

Las reglas 1 y 2 son reglas bsicas (no recursivas), en tanto que la regla 3 define
expresiones en funcin de operadores aplicados a otras expresiones.
La divisin entre anlisis lxico y anlisis sintctico es algo arbitraria. Un factor para
determinar la divisin es si una construccin del lenguaje fuente es inherentemente
25 L. I. Jos Rigoberto Hernndez Alburquerque

Manual de Prcticas Fundamentos de Programacin

recursiva o no. Las construcciones lxicas no requieren recursin, mientras que las
construcciones sintcticas suelen requerirla. No se requiere recursin para reconocer los
identificadores, que suelen ser cadenas de letras y dgitos que comienzan con una letra.
Normalmente, se reconocen los identificadores por el simple examen del flujo de entrada,
esperando hasta encontrar un carcter que no sea ni letra ni dgito, y agrupando despus
todas las letras y dgitos encontrados hasta ese punto en un componente lxico llamado
identificador.
Anlisis semntico
La fase de anlisis semntico revisa el programa fuente para tratar de encontrar errores
semnticos3 y rene la informacin sobre los tipos para la fase posterior de generacin de
cdigo. En ella se utiliza la estructura jerrquica determinada por la fase de anlisis
sintctico para identificar los operadores y operandos de expresiones y proposiciones.
Un componente importante del anlisis semntico es la verificacin de tipos. Aqu, el
compilador verifica si cada operador tiene operandos permitidos por la especificacin del
lenguaje fuente. Por ejemplo, las definiciones de muchos lenguajes de programacin
requieren que el compilador indique un error cada vez que se use un nmero real como
ndice de una matriz. Sin embargo, la especificacin del lenguaje puede imponer
restricciones a los operandos, por ejemplo, cuando un operador aritmtico binario se
aplica a un nmero entero y a un nmero real. Revisa que los arreglos tengan definido el
tamao correcto.
Fase de sntesis

Consiste en generar el cdigo objeto equivalente al programa fuente. Slo se genera


cdigo objeto cuando el programa fuente est libre de errores de anlisis, lo cual no
quiere decir que el programa se ejecute correctamente, ya que un programa puede tener
errores de concepto o expresiones mal calculadas. Por lo general el cdigo objeto es
cdigo de mquina relocalizable o cdigo ensamblador. Las posiciones de memoria se
seleccionan para cada una de las variables usadas por el programa. Despus, cada una
de las instrucciones intermedias se traduce a una secuencia de instrucciones de mquina
que ejecuta la misma tarea. Un aspecto decisivo es la asignacin de variables a registros.
Generacin de cdigo intermedio

El trmino semntica se refiere a los aspectos del significado, sentido o interpretacin del significado de
un determinado elemento, smbolo, palabra, expresin o representacin formal.

26 L. I. Jos Rigoberto Hernndez Alburquerque

Manual de Prcticas Fundamentos de Programacin

Despus de los anlisis sintctico y semntico, algunos compiladores generan una


representacin intermedia explcita del programa fuente. Se puede considerar esta
representacin intermedia como un programa para una mquina abstracta. Esta
representacin intermedia debe tener dos propiedades importantes; debe ser fcil de
producir y fcil de traducir al programa objeto.

Optimizacin de cdigo

La fase de optimizacin de cdigo consiste en mejorar el cdigo intermedio, de modo que


resulte un cdigo mquina ms rpido de ejecutar. Esta fase de la etapa de sntesis es
posible sobre todo si el traductor es un compilador (difcilmente un intrprete puede
optimizar el cdigo objeto).

3.4 Ejecucin de un programa


1. Escribir su programa usando su editor de texto favorito (por ejemplo JDK).
2. Compilar el programa usando javac. Esto producir un archivo por cada clase
que usted defina. Estos archivos no tendrn cdigo ejecutable sino un lenguaje
intermedio llamado cdigo en bytes (byte-code) que podr ser ejecutado con un
intrprete como indica al prximo paso.
3. Ejecutar el programa usando java. Java es un intrprete, es decir, la traduccin
a lenguaje de mquina de cada una de las instrucciones del programa se hace
mientras se est ejecutando cada instruccin.
Ejercicio

Escriba en un archivo llamado hola.java el siguiente cdigo:

class holaJava{
public static void main(String args[])
{
System.out.println("Hola Java...");
}
}

Entonces:
27 L. I. Jos Rigoberto Hernndez Alburquerque

Manual de Prcticas Fundamentos de Programacin

1 javac hola.java
2 ls
holaJava.class
hola.java
3 java holaJava
Hola Java...
4

Comentarios:

Lo que est en fuente normal es lo que usted escribe y lo que est en fuente itlica
es lo que contesta la computadora.

La primera instruccin compila el programa que usted escribi en hola.java.

La segunda instruccin (ls) es la orden en UNIX para ver los archivos en el


directorio actual. Esta muestra que javac gener un nuevo archivo llamado
holaJava.class que es el nombre de la clase que se define en el archivo, no el
nombre del archivo.

La tercera instruccin ejecuta el programa. Note que se escribe nuevamente el


nombre de la clase, no el del archivo.

3.5 Elementos del lenguaje: datos, literales y constantes, identificadores, variables,


parmetros, operadores, entrada y salida de datos.
Datos
Representacin de hechos. Materia prima de la informacin
Tipos de datos
Tipos

Descripcin

boolean

Representa valores TRUE/FALSE. Esta


es una de las grandes diferencias
respecto a C

byte

Representa enteros de 8 bits.


Rango de -128 a 127

char

Al igual que en C, se utiliza para


representar datos de tipo Carcter.

28 L. I. Jos Rigoberto Hernndez Alburquerque

Manual de Prcticas Fundamentos de Programacin

Carcter unicoide (idntico a ascii)


double

Valores de punto flotante pero con doble


precisin de 64 bits.
Rango: 5 dgitos significativos (10-324,
10308)

float

Valores de tipo Real con precisin


Simple de 32 bits. Rango: 6 dgitos
significativos (10-46, 1038)

int

Sirve para representar valores de tipo


entero de 32 bits.
Rango de -2.147.483.648 a
2.147.483.647

long

Entero Largo de 64 bits. Rango de -263 a


263

short

Entero corto de 16 bits. Rango de


-32.768 a 32.767

Literales

Un valor constante en Java se crea utilizando una representacin literal de l. Java utiliza
cinco tipos de elementos: enteros, reales en coma flotante, booleanos, caracteres y
cadenas, que se pueden poner en cualquier lugar del cdigo fuente de Java. Cada uno de
estos literales tiene un tipo correspondiente asociado con l. El valor almacenado en una
constante no cambia durante la ejecucin del programa.

Identificadores
Variable.- Es una zona de la memoria del computador donde se guarda un dato y que se
identifica con un nombre. El dato que se almacena bajo ese nombre puede cambiar
durante la ejecucin del cdigo.
Cualquier variable se declara proporcionando su nombre, su tipo y opcionalmente su valor
inicial. El nombre debe ser su identificador. Un identificador est formado por cualquier
combinacin de letras, dgitos y el carcter de subrayado, si bien no puede empezar con
un dgito.
29 L. I. Jos Rigoberto Hernndez Alburquerque

Manual de Prcticas Fundamentos de Programacin

Las palabras reservadas como int no estn permitidas. Ni tampoco se deben reutilizar
nombres de identificadores que ya estn visibles. (Por ejemplo, no usar main como
nombre de una entidad)
Java es sensible a las maysculas, lo que quiere decir que Edad y EDAD son
identificadores distintos.
Ejemplos de declaraciones:
Int num3;

//inicializacin por defecto

Double salariominimo= 4.50;


Int x=0, num1=0;

//inicializacin estndar

//declaracin de dos variables

Int num2= num1


Concepto de parmetro
Es un mtodo para pasar informacin valores a variables del programa principal a un
procedimiento y viceversa
Parmetros de salida y de entrada
Parmetros de Salida
(sus valores se determinan en el procedimiento
y se devuelven al programa principal para
su proceso)

Un parmetro es prcticamente una variable cuyo valor debe ser o bien proporcionado por
el programa principal al procedimiento o ser devuelto desde el procedimiento hasta el
programa principal
Operadores, operandos y expresiones

30 L. I. Jos Rigoberto Hernndez Alburquerque

Manual de Prcticas Fundamentos de Programacin

Operadores aritmticos: Son operadores binarios (requieren siempre dos operandos)


que realizan las operaciones aritmticas habituales: Suma (+), resta (-), multiplicacin (*),
divisin (/) y resto de la divisin (%)
Operadores de asignacin: Permiten asignar un valor a una variable. (=)
La forma general de las sentencias de asignacin con este operador es:
Variable = expresin;
Java dispone de otros operadores de asignacin. Se trata de versiones abreviadas del
operador (=) que realizan operaciones acumulativas sobre una variable. La tabla
muestra estos operadores y su equivalencia con el uso del operador (=)
Operador

Utilizacin

Expresin equivalente

+=

op1 += op2

op1 = op1+op2

-=

op1 -= op2

op1= op1 op2

*=

op1 *= op2

op1= op1 * op2

/=

op1 /= op2

Op1= op1 / op2

Op1 %= op2

op1= op1 % op2

%=

Operadores unarios: Los operadores (+) y (-) unarios sirven para mantener o cambiar el
signo de una variable, constante o expresin numrica.
Operador instanceof: Permite saber si un objeto pertenece o no a una determinada
clase. Es un operador binario cuya forma general es:
ObjectName: instanceof ClassName
Y que devuelve true o false segn el objeto pertenezca o no a la clase.
Operador Condicional ?: Permite realizar bifurcaciones condicionales sencillas. Su
forma general es la siguiente:
BoolenExpression ? res1:res2
Donde se evala BooleanExpression y se devuelve res1 si el resultado es true y res2 si
el resultado es false. Es el nico operador ternario (tres argumentos) de Java.
Por ejemplo las sentencias:
X= 1;
31 L. I. Jos Rigoberto Hernndez Alburquerque

Manual de Prcticas Fundamentos de Programacin

Y= 10;
Z= (X<Y) ? X+3: Y+8;
Asignaran a Z el valor 4, es decir X+3

Operadores incrementales: El operador (++) incrementa en una unidad la variable a la


que se aplica, mientras que (--) la reduce en una unidad. Estos operadores se pueden
utilizar de dos formas:
1) Precediendo a la variable (++i). En este caso primero se incrementa la variable y
luego se utiliza (ya incrementada). En la expresin en la que aparece.
2) Siguiendo a la variable (i++). En este caso primero se utiliza la variable en la
expresin (con el valor anterior) y luego se incrementa.
Operadores relacionales: Sirven para realizar comparaciones de igualdad, desigualdad
y relacin de menor a mayor. El resultado de estos operadores es siempre un valor
boolean (true o false) segn se cumpla o no la relacin considerada.
Operador
>
>=
<
<=
==
!=

Utilizacin
Op1 > Op2
Op1 >= Op2
Op1 < Op2
Op1 <= Op2
Op1 ==Op2
Op1 !=Op2

El resultado es true
Si op1 es mayor que op2
Si op1 es mayor o igual que op2
Si op1 es menor que op2
Si op1 es menor o igual que op2
Si op1 es igual que op2
Si op1 es diferente que op2

Operadores lgicos: Se utilizan para construir expresiones lgicas combinando valores


lgicos (true y/o false) o los resultados de los operadores relacionales
Operador

Nombre

Utilizacin

Resultado

&&

AND

Op1 && Op2

True si op1 y op2 son true

||

OR

Op1 | | Op2

True si op1 u op2 son true

Negacin

!Op

&

AND

Op1 & Op2

True si po1 y op2 son true

OR

Op1 | Op2

True si op1 u op2 son true

True si op es false y false si op es true

Operador de concatenacin de caracteres (+): El operador (+) se utiliza tambin para


concatenar cadenas de caracteres. Por ejemplo, para escribir una cantidad con un rtulo y
unas unidades puede utilizarse la sentencia:

32 L. I. Jos Rigoberto Hernndez Alburquerque

Manual de Prcticas Fundamentos de Programacin

System.out.println(El total asciende a + result + unidades);


Donde el operador de concatenacin se utiliza dos veces para construir la cadena de
caracteres que se desea imprimir por medio del mtodo println(). La variable numrica
result es convertida automticamente por Java en cadena de caracteres para poderla
concatenar. En otras ocasiones se deber llamar explcitamente a un mtodo para que
realice esta conversin
Operadores que actan a nivel de bits: Las operaciones de bits se utilizan con
frecuencia para definir seales o flags, esto es, variables de tipo entero en las que cada
uno de sus bits indican si una opcin est activada o no. La tabla muestra los operadores
de Java que actan a nivel de bits.
Operador

Utilizacin

Resultado

>>

Op1 >> op2

Desplaza los bits de op1 a la derecha una distancia op2

<<

Op1 << op2

Desplaza los bits de op1 a la izquierda una distancia op2

>>>

Op1 >>> op2

&

Op1 & op2

Operador AND a nivel de bits

Op1 | op2

Operador OR a nivel de bits

Op1 ^ op2

Operador XOR a nivel de bits

~ op2

Desplaza los bits de op1 a la derecha una distancia op2 (+)

Operador complemento (invierte el valor de cada bit)

La tabla muestra los operadores de asignacin a nivel de bits


Operador

Utilizacin

Equivalente a

&=

Op1&= op2

Op1= op1 & op2

|=

Op1 |=op2

Op1 = op1 | op2

^=

Op1 ^= op2

op1 = op1 ^ op2

<<=

Op1 <<= op2

op1 = op1 << op2

>>=

Op1>>= op2

op1 = op1 >> op2

>>>=

Op1 >>>= op2

op1 = op1 >>> op2

Prioridad de operadores, evaluacin de expresiones

33 L. I. Jos Rigoberto Hernndez Alburquerque

Manual de Prcticas Fundamentos de Programacin

Las reglas de precedencia de operadores permiten a Java aplicar los operadores en el


orden correcto. Generalmente son las mismas que las que se utilizan en lgebra.
Esta tabla se expandir a medida que se introduzcan ms operadores en Java.

Operadores

Operaciones

Orden de evaluacin (precedencia)

Multiplicacin

Divisin

Se evalan primero. Si hay varios de este


tipo, se evalan de izquierda a derecha

Resido

Suma

Resta

Se evalan despus. Si hay varios


operadores de este tipo, se evalan de
izquierda a derecha

Nota: Los parntesis cambian el orden de evaluacin de las operaciones


Ejemplo: Y= A * X *X+B*X +C
A 2; B 3; C 7; X 5
Y= 2*5*5+3*5+7
Y= 10*5+3*5+7
Y= 50+3*5+7
Y= 50+15+7
Y= 65+7
Y= 72
Entrada y salida de datos
Los programas necesitan comunicarse con su entorno, tanto para recoger datos e
informacin que deben procesar, como para devolver los resultados obtenidos.
La manera de presentar estas entradas y salidas en Java es a base de streams flujos de
datos). Un stream es una conexin entre el programa y la fuente o destino de los datos.
La informacin se traslada en serie (un carcter a la continuacin de otro) a travs de esta
conexin. Esto da lugar a una forma general de representar muchos tipos de
comunicaciones.
Interaccin de la aplicacin y la clase

34 L. I. Jos Rigoberto Hernndez Alburquerque

Manual de Prcticas Fundamentos de Programacin

El package Java.io contiene las clases necesarias para la comunicacin del programa con
el exterior
3.6 Errores en tiempo de ejecucin.
Una excepcin es una indicacin de un problema que ocurre en tiempo de ejecucin. La
extensibilidad de Java puede incrementar el nmero y tipos de errores que pueden ocurrir.
Todas las clases pueden aadir nuevas posibilidades de error.
El manejo de las excepciones est disponible para permitir que los programas capturen y
manejen errores en vez de permitir que ocurran y se sufran las consecuencias. El manejo
de excepciones est diseado para negociar con errores sncronos como intentar dividir
por cero
Tipos de Excepciones
Existen varios tipos fundamentales de excepciones:

Error: Excepciones que indican problemas muy graves, que suelen ser no
recuperables y no deben casi nunca ser capturadas. Por ejemplo, el sistema se ha
quedado sin memoria. Normalmente no son tenidos cuenta en las aplicaciones
ms que para prevenirlos advirtiendo en las especificaciones de la documentacin
los requerimientos mnimos de ejecucin, o para la correcta instalacin de la
aplicacin.

Exception: Excepciones no definitivas, pero que se detectan fuera del tiempo de


ejecucin.

Runtime Exception: Excepciones que se dan durante la ejecucin del programa.


*ArithmeticException*, Una condicin aritmtica excepcional (divisin por cero).
*ArrayIndexOutOfBoundsException*, una matriz es accedida con un ndice
ilegal.
*NullPointerException*, Se intent utilizar null donde se requera un objeto.
*NumberFormatException*, Intento de convertir una cadena en nmero...

Las excepciones en Java son objetos que implementan la interface throwable


Unidad 4 Control de flujo.
4.1 Estructuras secuenciales

35 L. I. Jos Rigoberto Hernndez Alburquerque

Manual de Prcticas Fundamentos de Programacin

Por lo general las instrucciones se ejecutan una despus de la otra, en el orden en que
estn escritas, es decir, en secuencia. Este proceso se conoce como ejecucin
secuencial.
1. Programa Bienvenido 2
2. Programa Bienvenido 3
3. Programa Bienvenido 4
4. Subprograma Bienvenido
5. Programa Suma
6. Programa Producto
4.2 Estructuras selectivas: simple, doble y mltiple.
Selectiva Simple (si)
Por ejemplo, suponga que la calificacin para aprobar un examen es de 70
If (CalificacionEstudiante >= 70)
System.out.println(Aprobado);

si
Aprobado

Programa Comparacin
Selectiva doble (si/de otro modo)
La instruccin ifelse de seleccin doble permite al programador especificar una accin a
realizar cuando la condicin es verdadera, y otra distinta cuando la condicin es falsa
If (CalificacionEstudiante >= 70)
36 L. I. Jos Rigoberto Hernndez Alburquerque

Manual de Prcticas Fundamentos de Programacin

System.out.println(Aprobado);
Else
System.out.println(Reprobado);
no

Java cuenta con el operador condicional (?:), que en ocasiones puede utilizarse en lugar
de una instruccin if else
Por ejemplo la instruccin:
System.out.println(CalificacionEstudiante >= 70 ? Aprobado: Reprobado);
Programa Calificacin
Selectiva anidada
Un programa puede evaluar varios casos colocando instrucciones if else dentro de otra
instruccin ifelse para crear instrucciones ifelse anidadas
Por ejemplo imprimir A para las calificaciones de exmenes mayores o iguales a 90, B
para las calificaciones en el rango de 80 a 89, C para las calificaciones en el rango de 70
a 79, D para el resto de las calificaciones
// Calificacin.java
// Imprimir una letra con los resultados de las calificaciones
// Paquetes de Java
import javax.swing.JOptionPane;
public class Calificacion {
public static void main (String args[])
{
String CE;
int CalificacionEstudiante;
37 L. I. Jos Rigoberto Hernndez Alburquerque

Manual de Prcticas Fundamentos de Programacin

CE= JOptionPane.showInputDialog("Escriba su calificacin");


CalificacionEstudiante= Integer.parseInt(CE);
if (CalificacionEstudiante >= 90)
JOptionPane.showMessageDialog(null,"Tu calificacin es A");
else
if (CalificacionEstudiante >= 80)
JOptionPane.showMessageDialog(null, "Tu calificacin es B");
else
if (CalificacionEstudiante >= 70)
JOptionPane.showMessageDialog(null, "Tu calificacin es C");
else
JOptionPane.showMessageDialog(null, "Tu calificacin es D");
System.exit (0);
}
}
1. Programa Mayor
2. Programa Iguales
Selectiva mltiple (Switch)
Java cuenta con la instruccin switch de seleccin mltiple para realizar distintas
acciones, con base en los posibles valores de una variable o expresin entera. Cada
accin se asocia con un valor integral constante (es decir un valor de tipo byte, short, int o
char, pero no long) que la variable o expresin pueda asumir.
Esta sentencia permite ejecutar, una u otra u otra accin al evaluar una condicin, cuyo
resultado es el que indica que bloque (o bloques) de instrucciones se van a ejecutar
Su sintaxis es la siguiente:
Switch(expresin)
{
Case 1:
Sentencia 1;
Break;
Case 2:
Sentencia 2;
Break;
...
Default:
Sentencias;
Break;
}
En donde expresin es una condicin que al evaluarla, nos indicar que camino debemos
seguir. Adems sta puede ser, una expresin entera, char, byte, int y short
38 L. I. Jos Rigoberto Hernndez Alburquerque

Manual de Prcticas Fundamentos de Programacin

Adems que, la expresin constante que acompaa a la palabra reservada case debe ser
del mismo tipo que expresin. La clusula default es opcional y puede omitirse en los
programas que desarrollemos
Ejemplo:
En una tienda se realizan diferentes descuentos, a sus clientes al momento de cancelar
en caja, ya que cuando se disponen a cancelar tienen la oportunidad de sacar una bolita,
y dependiendo del color de la misma, se le aplica su respectivo descuento. Si la bolita es
roja, se le aplica un 10% de descuento sobre la compra; si la bola es verde, se le aplica
un 5% de descuento, y si la bolita es blanca, no se le aplica descuento alguno. Disee
una aplicacin que de soporte a esta actividad en el supermercado.
// Supermercado.Java
// Programa que utiliza Switch (instruccin selectiva mltiple
import javax.swing.*;
public class SuperMercado
{
public static void main (String args[])
{
String aux;
int bolita;
double compra, descuento=0, monto= 0;
//leemos el importe de la compra
aux= JOptionPane.showInputDialog("Ingrese el importe de la compra:");
compra=Double.parseDouble(aux);
//leemos el color de la bolita
aux= JOptionPane.showInputDialog("Ingrese el color de la Bolita:\nSi es
Roja, ingrese 1\nSi fue Verde, Ingrese 2\nSi fue Blanca ingrese 3");
bolita= Integer.parseInt(aux);
switch(bolita)
{
case 1:
{
descuento = compra * .10;
monto = compra - descuento;
}
break;
case 2:
{
descuento = compra * .05;
monto = compra - descuento;
}
break;
39 L. I. Jos Rigoberto Hernndez Alburquerque

Manual de Prcticas Fundamentos de Programacin

case 3:
{
monto = compra - descuento;
}
break;
} //del Switch
JOptionPane.showMessageDialog(null,"El cliente haba consumido: " +
compra + " Pero sac una bolita color " + bolita +"\nPor lo que se aplico un descuento de:
" + descuento + "\nAhora el saldo a cancelar es: " + monto);
} // del main
} // de la clase
1. Programa Notas
2. Programa Instnte
4.3 Estructuras iterativas: repetir mientras, hasta, desde
Para repetir varias veces un proceso determinado haremos uso de los ciclos repetitivos, a
los cuales se les conoce con el nombre de estructura repetitiva, estructura iterativa, lazo o
bucle
Ciclo de entrada asegurada
La sintaxis es la siguiente.
While (condicin)
Primero evala la condicin, si da como resultado cierto, realiza la accin, luego vuelve a
evaluar la condicin, si su resultado es falso, se sale del ciclo y continua con la ejecucin
del programa.
Ejemplo: En una empresa se tienen datos correspondientes a los sueldos de 10
empleados, de los cuales se desee saber, quien goza del sueldo mayor, quien goza del
sueldo menor y cuantos poseen un sueldo mayor a $300
import javax.swing.*;
class UsarWhile{
public static void main (String args[]){
String leer;
double sueldo, mayor=0, menor=10000;
int i=1, contador=0;
while(i<10)
{
leer=JOptionPane.showInputDialog("Ingrese el sueldo del empleado: " + i);
sueldo=Double.parseDouble(leer);
while(sueldo<0) // si el sueldo es negativo
{leer=JOptionPane.showInputDialog("ERROR, el sueldo no puede ser
Negativo\nIngrese el sueldo del empleado: " + i);
40 L. I. Jos Rigoberto Hernndez Alburquerque

Manual de Prcticas Fundamentos de Programacin

sueldo=Double.parseDouble(leer);
{
if (sueldo>300)
contador=contador+1;
if(sueldo>mayor)
mayor=sueldo;
if(sueldo<menor)
menor=sueldo
i= i+1;
}
JOptionPane.showMessageDialog(null, "El sueldo mayor es de:
"+mayor+"\n"+contador+"Empleados tienen un sueldo mayor a$300");
}
}
1. Programa UsarWhile
2. Programa TablaMultiplicar
3. Programa Pares100
4. Programa Promedio
Repetir hasta
En algunas ocasiones, sabemos a ciencia cierta el nmero de veces que se tiene que
repetir una misma accin o bloque de acciones.
Su sintaxis es la siguiente
For (valor inicial; condicin; incremento)
Donde:
Valor inicial Es el valor con el cual inicializamos nuestra variable de control
Condicin Si la cumple, ejecuta la accin o acciones e incrementa o decrementa la
variable de control, si no cumple la condicin, se sale del ciclo
Incremento Que puede ser positiva o negativa (decremento)
Ejemplo: Escriba un Applet que dibuje un rectngulo, unas lneas u valos en base a la
entrada del usuario
// PruebaSwitch.java
// Dibujar lneas, rectngulos u valos con base en la entrada del usuario.
import java.awt.Graphics;
import javax.swing.*;
public class PruebaSwitch extends JApplet {
41 L. I. Jos Rigoberto Hernndez Alburquerque

Manual de Prcticas Fundamentos de Programacin

int opcion;

// la opcin del usuario en cuanto a cul figura dibujar

// inicializar el applet, obteniendo la opcin del usuario


public void init()
{
String entrada; // la entrada del usuario
// obtener la opcin del usuario
entrada = JOptionPane.showInputDialog( "Escriba 1 para dibujar lneas\n" +
"Escriba 2 para dibujar rectngulos\n" +
"Escriba 3 para dibujar valos\n");
opcion = Integer.parseInt( entrada ); // convertir entrada en int
} // fin del mtodo main
// dibujar figuras en el fondo del applet
public void paint ( Graphics g)
{
super.paint( g ); // llamar al mtodo paint heredado de JApplet
for ( int i = 0; i > 10; i ++) { // iterar 10 veces (0-9)
switch (opcion) { // determinar la figura a dibujar
case 1: // dibujar una lnea
g.drawLine( 10, 10, 250, 10 + i * 10);
break; // fin de procesamiento de cas
case 2: // dibujar un rectngulo
g.drawRect ( 10 + i * 10, 10 + i * 10,
50 + i * 10, 50 + i * 10 );
break; // fin de procesamiento de case
case 3: // dibujar un valo
g.drawOval ( 10 + i * 10, 10 + i * 10,50 + i * 10, 50 + i * 10 );
break; // fin del procesamiento de case
default: // Valor Incorrecto
g.drawString(Se escribi un valor Incorrecto,10,20+i*15);
}
}
}
}

//fin del switch


//fin del for
// fin del paint
// fin de la clase
1. Programa Pepe3
2. Programa PruebaContineEtiqueta
3. Programa ForCounter

Repetir desde

42 L. I. Jos Rigoberto Hernndez Alburquerque

Manual de Prcticas Fundamentos de Programacin

Realiza la accin o conjunto de acciones, luego evala una condicin, de resultar cierta
vuelve a realizar la(s) accin(es). Cuando sea falsa se sale del ciclo. Su sintaxis es:
Do {
Sentencia,
.
.
.
} While (<expl>);
La diferencia fundamental, entre el ciclo while y do while es que en este ltimo, las
sentencias se realizarn por lo menos una vez, en cambio, con while, solo se cumplirn
mientras se cumpla la condicin, lo cual puede ser nunca.
Ejemplo: Programa que imprima luna lista de nmeros del 1 al 100
1 class fibo {
2 public static void main(String args[]){
3 int n1=0;
4 do{ n1++;
5 System.out.println(n1);
6 }while(n1<100);
7}
8}
Programa DoWhiletest
Programa CuentaDgitos.
Realicemos un programa que cuente la cantidad de dgitos que posee un nmero. Para
ello tendremos que dividir por diez el nmero que nos han dado, hasta que el resultado se
vuelva cero.
import javax.swing.JOptionPane;
public class CuentaDigitos{
public static void main (String args[]){
String numeros;
int numero;
int digitos=0;
numeros =JOptionPane.showInputDialog("Teclea un nmero
entero");
numero= Integer.parseInt(numeros);
do{
numero/=10;
digitos++;
}
while (numero>0);
JOptionPane.showMessageDialog(null, "La cantidad de dgitos es "
+ digitos, "hecho por Pepe Alburquerque", JOptionPane.PLAIN_MESSAGE);
43 L. I. Jos Rigoberto Hernndez Alburquerque

Manual de Prcticas Fundamentos de Programacin

System.exit(0);
}
}
4.4 Diseo e implementacin de mtodos
Los mtodos definen el comportamiento de los objetos de una clase dada (lo que
podemos hacer con los objetos de esa clase)
Los mtodos exponen la interfaz de una clase
Un mtodo define la secuencia de sentencias que se ejecuta para llevar a cabo una
operacin.
La implementacin de la clase se oculta del exterior.
Sintaxis en Java
Modificadores tipo nombre (parmetros)
{
Cuerpo
}
La estructura de un mtodo se divide en:
Cabecera (determina su interfaz)
Modificadores tipo nombre (parmetros)

Modificadores de acceso (por ejemplo: public o prvate). Determinan desde


donde se puede utilizar el mtodo

Tipo devuelto (cualquier tipo primitivo, no primitivo o void). Indica de que tipo es la
salida del mtodo, el resultado que se obtiene tras llamar al mtodo desde el
exterior. Void se emplea cuando el mtodo no devuelve ningn valor

Nombre del mtodo. Identificador valido en Java. Por convencin en Java los
nombres de los mtodos comienzan con minscula.

Parmetros formales. Entradas que necesita el mtodo para realizar la tarea de


la que es responsable. Cuando un mtodo no tiene entradas hay que poner ()

Cuerpo (define su implementacin)


{
// declaracin de variables

// sentencias ejecutables

// devolucin de un valor (opcional)


44 L. I. Jos Rigoberto Hernndez Alburquerque

Manual de Prcticas Fundamentos de Programacin

}
En el cuerpo del mtodo se implementa el algoritmo necesario para realizar la tarea de la
que el mtodo es responsable.
El cuerpo del mtodo se puede interpretar como una caja negra que contiene su
implementacin:
El mtodo oculta los detalles de implementacin
Cuando utilizamos un mtodo solo nos interesa su interfaz
Ejemplo:
Public static void main (String args [ ] )
El modificador de acceso public indica que se puede acceder a este miembro de la clase
desde el exterior de la clase
El modificador static indica que se trata de un mtodo de clase (un mtodo comn para
todos los objetos de la clase)
La palabra reservada void indique que, en este caso el mtodo main no devuelve ningn
valor
Los parntesis nos indican que se trata de un mtodo: Lo que aparece entre parntesis
son los parmetros del mtodo (en este caso un vector de cadenas de caracteres)
El cuerpo del mtodo va delimitado por llaves: { }
El texto correspondiente al cdigo que se ejecuta al invocar a un mtodo se sangra con
respecto a la posicin de las llaves por convencin.
Ejercicios con Mtodos:
1. Programa Mtodo Suma
2. Programa CuadradoEnteros (Applet)
3. Proyecto Clculo
4. Programa PruebaMaximo (Applet)
5. Programa BurguerTec
Unidad 5 Arreglos
5.1 Unidimensionales: conceptos bsicos, operaciones y aplicaciones.
Los arreglos en Java son dinmicos, pero no extensibles, lo cual significa que deben ser
creados con el tamao que tendrn hasta el final de su vida.
45 L. I. Jos Rigoberto Hernndez Alburquerque

Manual de Prcticas Fundamentos de Programacin

Un arreglo se declara de la siguiente forma:


<tipo>[] <nombre>;
O sea, para declarar, por ejemplo, un arreglo de nmeros enteros utilizaremos la siguiente
sentencia:
int[] arrInt;
Es importante notar que el arreglo an no ha sido creado, sino meramente declarado.
Para crear el arreglo (reservar su memoria e inicializarlo) deberemos recurrir al operador
new:
arrInt = new int[10];
Este comportamiento debe comprenderse de esta forma: en Java todo es un objeto, y los
objetos deben ser creados mediante el operador new. El caso de los arreglos no es
diferente, el tipo de datos del arreglo (int[] en este caso) es una clase y cada una de sus
instancias debe ser creada explcitamente, el tamao puede pensarse como un parmetro
al constructor de la clase.
A partir de este momento podemos utilizar arrInt como un arreglo de cualquier otro
lenguaje.
Otra forma de declararlos es la siguiente:
UNIDIMENSIONALES:
tipo nombre_array[]=new tipo[n];
tipo nombre_array[]={valores};
Ejercicios con Arreglos Unidimensionales
1. Programa Arreglo
2. Programa InicArreglo
3. Programa InicArreglo2
4. Prorgrama ArregloNombres
5. Programa InicArreglo3
6. Programa SumarArreglo
7. Programa Histograma
8. Programa TirarDado
46 L. I. Jos Rigoberto Hernndez Alburquerque

Manual de Prcticas Fundamentos de Programacin

5.2 Multidimensionales: conceptos bsicos, operaciones y aplicaciones


Los arreglos multidimensionales con dos dimensiones se utilizan a menudo para
representar tablas de valores, que constan de informacin ordenada en filas y
columnas.
Para identificar un elemento especfico de una tabla, debemos especificar dos ndices.
Por convencin, el primer ndice identifica la fila del elemento y el segundo, su columna.
Los arreglos que requieren dos ndices para identificar un elemento especfico se llaman
arreglos bidimensionales. (Los arreglos multidimensionales pueden tener ms de dos
dimensiones). Java no soporta directamente el uso de arreglos multidimensionales, pero
s permite al programador especificar arreglos unidimensionales cuyos elementos sean
tambin arreglos unidimensionales, logrando as el mismo efecto. En la figura se muestra
un arreglo bidimensional llamado a, el cual contiene tres filas y cuatro columnas (es decir,
un arreglo de tres por cuatro). En general, un arreglo con m filas y n columnas se conoce
como arreglo de m por n.
Cada elemento del arreglo a se identifica en la figura mediante una expresin de acceso a
un arreglo a un arreglo de la forma a [fila] [columna]; a es el nombre de la referencia al
arreglo, fila y columna son los ndices que identifican en forma nica a cada elemento en
el arreglo a mediante un nmero de fila y columna.
Observe que los nombres de los elementos en la primera fila tienen todos un primer ndice
de 0; los nombres de los elementos de en la cuarta columna tienen todos un segundo
ndice de 3.

Arreglos de arreglos unidimensionales

47 L. I. Jos Rigoberto Hernndez Alburquerque

Manual de Prcticas Fundamentos de Programacin

Al igual que los arreglos unidimensionales, los arreglos multidimensionales pueden


inicializarse mediante inicializadores de arreglos en las declaraciones. Un arreglo
bidimensional llamado b con dos filas y dos columnas, podra declararse e inicializarse
con inicializadores de arreglos anidados:
int b[ ] [ ] = { { 1, 2 }, { 3, 4 } };
Los valores inicializadores se agrupan por fila entre corchetes. Por lo tanto, 1 y 2
inicializan b [0] [0] y b[0] [1]; 3 y 4 inicializan b[1] [0] y b [1] [1].
b

0
1
3

0
1

1
2
4

El compilador determina el nmero de filas contando el nmero de inicializadores de


arreglos anidados (representados por conjunto de llaves dentro de las llaves externas) en
el inicializador del arreglo. El compilador determina el nmero de columnas en una fila
contando los valores inicializadores en el inicializador del arreglo para esa fila.
En Java, los arreglos multidimensionales se mantienen como arreglos de arreglos
unidimensionales. El arreglo b en s es un arreglo unidimensional que contiene dos
elementos. Cada elemento es una referencia a un arreglo unidimensional de variables int.
Arreglos bidimensionales con filas de distintas longitudes
La forma en que Java representa los arreglos multidimensionales los hace bastante
flexibles. De hecho, las longitudes de las filas en el arreglo b no tienen que ser iguales.
Por ejemplo:
int b [ ] [ ] = { { 1, 2 }, { 3, 4, 5 } };
crea el arreglo b con dos elementos (los cuales se determinan segn el nmero de
inicializadores de arreglos anidados) que representan las filas del arreglo bidimensional.
Cada elemento de b es una referencia a un arreglo unidimensional de variables int. El
arreglo int de la fila 0 es un arreglo unidimensional con dos elementos (1 y 2), y el arreglo
int de la fila 1 es un arreglo unidimensional con tres elementos (3, 4, 5)
b

0
1

0
1
3

1
2
4

2
5

Creacin de arreglos bidimensionales mediante expresiones de creacin de


arreglos
Un arreglo multidimensional con el mismo nmero de columnas en cada fila puede
crearse mediante una expresin de creacin de arreglos. Por ejemplo, en las siguientes
lneas se declara el arreglo b y se le asigna una referencia a un arreglo de tres por cuatro:
int b [ ] [ ];
48 L. I. Jos Rigoberto Hernndez Alburquerque

Manual de Prcticas Fundamentos de Programacin

b = new int [3] [4];


En este caso utilizamos los valores literales 3 y 4 para especificar el nmero de filas y
columnas, respectivamente, pero esto no se requiere. Los programas tambin pueden
utilizar variables para especificar las dimensiones de los arreglos. Al igual que con los
arreglos unidimensionales, los elementos de un arreglo multidimensional se inicializan
cuando se crea el objeto del arreglo.
Un arreglo multidimensional, en el que cada fila tiene un nmero distinto de columnas,
puede crearse de la siguiente manera:
int b [ ] [ ];
b= new int [2] [ ];
b [0] = new int [5];
b [1]= new int [3];

//crear dos filas


// crear 5 columnas para la fila 0
// crear 3 columnas para la fila 1

Ejemplos:
1. Programa MatrizNotas
2. Programa ArregoDoble (applet)

49 L. I. Jos Rigoberto Hernndez Alburquerque

Вам также может понравиться