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

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
Competencia especfica de la unidad
Criterios de evaluacin
de la Unidad
Analizar problemas y representar su solucin mediante
algoritmos.
Reporte de prcticas de
Programacin (2):
30%
Desarrollo de Algoritmos:
70%

Actividades de aprendizaje

Reporte de prcticas de programacin: Aplicar en el Laboratorio de Cmputo los diferentes
mtodos para representar un algoritmo: diagrama de flujo y Pseudocdigo.

Desarrollo de Algoritmos: Resolver y analizar problemas cotidianos y representarlos a travs
de un algoritmo: diagrama de flujo, N-S (Nassi-Shneiderman), Pseudocdigo y/o Descripcin
Narrada.

NOTA: INTEGRAR TODAS LAS ACTIVIDADES EN EL PORTAFOLIO DE
EVIDENCIAS INIDAD 1 Y 2 (YA QUE ESTA UNIDAD SE REVISO EL DIA 30 DE
AGOSTO Y SE ENTREGARIA EL 6 DE SEPTIEMBRE)









TAREA UNIDAD 3
Unidad: 3 Tema: 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.

Competencia especfica de la unidad
Criterios de evaluacin
de la Unidad
Conocer las caractersticas principales de un lenguaje
de programacin.
Codificar algoritmos en un lenguaje de programacin.
Compilar y ejecutar programas.
Reporte de prcticas de
Programacin(3):
45%
Desarrollo de programas:
55%

Actividades de aprendizaje

Reporte de prcticas de programacin: Realizar la prctica para Instalar y configurar el
compilador del lenguaje de programacin a utilizar, realizar cambios en expresiones lgicas y
algebraicas de un programa modelo. (INSTALAR NETBEANS Y GENERAR UN REPORTE DE
INSTALACION)

Desarrollo de programas: Mostrar al estudiante programas completos de menor a mayor
grado de dificultad y con base en cada una de las instrucciones que los componen ensear la
sintaxis del lenguaje y que desarrollen ejercicios de los mismos.(ELABORAR 12 PROGRAMAS
QUE SE ENCUENTRAN AL FINAL DE ESTE DOCUMENTO)

NOTA: ANALIZAR LOS TEMAS DE LA UNIDAD Y REALIZAR LAS
ACTIVIDADES DE APRENDIZAJE PARA EVALUAR DICHA UNIDAD
RECUERDEN QUE TODO SE REALIZARA EN EL LENGUAJE JAVA



UNIDAD 3- INTRODUCCION A LA PROGRAMACION (ESTA INFORMACION
HABLA EN GENERAL)

3.1 Caractersticas del lenguaje de programacin
Un lenguaje de programacin es un idioma artificial diseado para
expresar procesos que pueden ser llevadas a cabo por mquinas como
las computadoras. Pueden usarse para crear programas que controlen el
comportamiento fsico y lgico de una mquina, para expresar algoritmos con
precisin, o como modo de comunicacin humana. Est formado por un conjunto
de smbolos y reglas sintcticas y semnticas que definen su estructura y el
significado de sus elementos y expresiones. Al proceso por el cual se escribe, se
prueba, se depura, se compila y se mantiene el cdigo fuente de un programa
informtico se le llama programacin.

Tambin la palabra programacin se define como el proceso de creacin de
un programa de computadora, mediante la aplicacin de procedimientos lgicos, a
travs de los siguientes pasos:
El desarrollo lgico del programa para resolver un problema en particular.
Escritura de la lgica del programa empleando un lenguaje de
programacin especfico (codificacin del programa).
Ensamblaje o compilacin del programa hasta convertirlo en lenguaje de
mquina.
Prueba y depuracin del programa.
Desarrollo de la documentacin.
Existe un error comn que trata por sinnimos los trminos 'lenguaje de
programacin' y 'lenguaje informtico'. Los lenguajes informticos engloban a los
lenguajes de programacin y a otros ms.

Un estndar de lenguaje de programas es un grupo de reglas que describen como
deben escribirse las sentencias y comandos de programacin. La regla de que los
nombres variables tienen que comenzar con una letra es un ejemplo de un
estndar. Una variable es un elemento que puede tomar diferentes valores.
3.2 Estructura bsica de un programa.
Como ya se ha visto, cuando se escribe un programa lo que se trata de hacer es indicarle
a la computadora cmo ha de resolver un problema. Estos programas siguen determinada
estructuras, que dependen del tipo de lenguaje que usemos y del entorno en el cual lo
creemos.
Principios generales:

Un cargador - todo programa necesita ser cargado en la memoria por el sistema
operativo. De esto se encarga el intrprete.
Definicin de los datos - la mayora de los programas operan con datos y por lo tanto en el
cdigo fuente debemos definir que tipo de datos vamos a utilizar en el programa. Esto se
realiza de manera diferente en los distintos lenguajes. Todos los lenguajes que usaremos
tienen la posibilidad de crear una nueva definicin de datos simplemente al utilizar los
datos. Veremos esto en la prxima seccin.
Instrucciones - son la parte central del programa. Las instrucciones manipulan los datos
que hemos definido, realizan clculos, muestran los resultados, etc.
La Mayora de programas siguen una de dos estructuras:

1.- Programas de lotes
Estos se ejecutan tpicamente desde una lnea de comando o automticamente desde
otra aplicacin y tienden al siguiente patrn
Inicializacin interna de los datos
Lectura de los datos ingresados
Procesamiento de los datos
Visualizacin o ejecucin de los resultados
2.- Programas controlados por eventos
La mayor parte de las interfaces responden a eventos
Los programas controlados por eventos son generalmente as:
Inicializacin interna de los datos
Espera de los eventos
Identificacin de los eventos y actuacin en consecuencia
Estructura Bsica de un programa en C/C++:

La estructura de un programa es una cuestin que puede ser abordada desde varios
puntos de vista, consideremos para su estudio solo este caso. .

1. Componentes lgicos se refiere a los diversos elementos que componen una
aplicacin, desde los ms complejos hasta los ms simples. Si comparamos un programa
con un edificio, los elementos iran desde el edificio como un todo, a los ladrillos (sus
elementos ms pequeos).

2. Estructura lgica.Desde el punto de vista lgico, puede considerarse que los
programas comprenden dos tipos de elementos diferentes: estructuras de datos y
algoritmos. O dicho en otras palabras: datos, e instrucciones para su manipulacin. Su
representacin codificada adopta dos formas: una entendible por la mquina (ejecutable y
ficheros de datos) y otra entendible por el humano (fuente). Para el conjunto de ambas
puede considerarse una escala conceptual que, si vamos de lo general a lo particular,
podemos representarla como sigue:
Aplicacin :Comprende ejecutables y datos. Puede haber mltiples ficheros de ambos
tipos (ficheros de datos y ejecutables)
Programa : Parte de una aplicacin (cdigo) que puede cargarse y ejecutarse
independientemente.
Fichero fuente:Se llaman as (abreviadamente) los ficheros que contienen el cdigo
fuente (ficheros .C / .CPP) escrito por el programador
Funcin: Una parte de un programa (subrutina) con un nombre, que puede ser invocada
(llamada a ejecucin) desde otras partes tantas veces como se desee. Opcionalmente
puede recibir valores (argumentos); se ejecuta y puede devolver un valor
Bloque: Lista, que puede estar vaca, de sentencias delimitadas
Sentencia: Las sentencias se componen de una o varias expresiones y tienen sentido
computacional completo
Expresin: Las expresiones son secuencias de tokens (operadores, operandos y
elementos de puntuacin) que especifican una computacin; tienen sentido computacional
en s mismas. Son los bloques de computacin ms simples con los que se construye un
programa [6 5] aunque no pueden ejecutarse separadamente sino cuando forman una
sentencia. Nota: la diferencia entre sentencia y expresin es algo arbitraria.
3.3 Traduccin de un programa: compilacin, enlace de un programa, errores en
tiempo de compilacin.
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
eslenguaje de mquina, pero tambin puede ser un cdigo intermedio (bytecode), o
simplemente texto. Este proceso de traduccin se conoce como compilacin.
[]

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.
Partes de un compilador
La construccin de un compilador involucra la divisin del proceso en una serie de fases
que variar con su complejidad. Generalmente estas fases se agrupan en dos tareas: el
anlisis del programa fuente y la sntesis del programa objeto.
Anlisis: Se trata de la comprobacin de la correccin del programa fuente, e
incluye las fases correspondientes al Anlisis Lxico (que consiste en la
descomposicin del programa fuente en componentes lxicos), Anlisis
Sintctico (agrupacin de los componentes lxicos en frases gramaticales )
y Anlisis Semntico (comprobacin de la validez semntica de las sentencias
aceptadas en la fase de Anlisis Sintctico).
Sntesis: Su objetivo es la generacin de la salida expresada en el lenguaje
objeto y suele estar formado por una o varias combinaciones de fases de
Generacin de Cdigo (normalmente se trata de cdigo intermedio o de cdigo
objeto) y de Optimizacin de Cdigo (en las que se busca obtener un cdigo lo
ms eficiente posible).
Alternativamente, las fases descritas para las tareas de anlisis y sntesis se pueden
agrupar en Front-end y Back-end:
Front-end: es la parte que analiza el cdigo fuente, comprueba su validez, genera
el rbol de derivacin y rellena los valores de la tabla de smbolos. Esta parte
suele ser independiente de la plataforma o sistema para el cual se vaya a
compilar, y est compuesta por las fases comprendidas entre el Anlisis Lxico y
la Generacin de Cdigo Intermedio.
Back-end: es la parte que genera el cdigo mquina, especfico de una plataforma,
a partir de los resultados de la fase de anlisis, realizada por el Front End.
Esta divisin permite que el mismo Back End se utilice para generar el cdigo mquina de
varios lenguajes de programacin distintos y que el mismo Front End que sirve para
analizar el cdigo fuente de un lenguaje de programacin concreto sirva para
generar cdigo mquina en varias plataformas distintas. Suele incluir la generacin y
optimizacin del cdigo dependiente de la mquina.
El cdigo que genera el Back End normalmente no se puede ejecutar directamente, sino
que necesita ser enlazado por un programaenlazador (linker).

Preproceso

Lo primero que el compilador de C hace es pasar nuestro programa por el
preprocesador.El preprocesador se encarga de interpretar cada una de las directivas que
aparecen en el programa y de expandir las macros. Respecto a las directivas, son todos a
aquellas lneas que comienzan con un smbolo #. Hay un conjunto de directivas que son
parte del estndar ANSI se comentan en el apndice.

Compilacin del programa.

Una vez que el programador acaba de escribir el programa en su terminal y lo almacena
en un archivo debe traducirlo a cdigo ejecutable por la maquina. Este proceso se llama
en su conjunto compilacin del cdigo fuente en C.
#include<stdio.h>
Hace que se inserte el fichero stdio.h en el lugar donde aparece esa lnea. Como el lector
puede ver si examina el fichero stdio.h, lo que hay en el son declaraciones de prototipos
de funciones y de tipos de datos, perfectamente validos en C.
El compilador se encarga de la etapa de preproceso, justo antes de iniciar la compilacin.
Por lo tanto , esta etapa pasa normalmente desapercibida, aunque puede indicrsele al
compilador que solo efectu el preproceso, para ver cmo queda el programa despus de
l. La forma de solicitrselo depende de cada compilador en concreto. Una vez finalizado
el preproceso , nuestro programa que da listo para que pueda comenzarse su traduccin
a cdigo ejecutable.
Enlace
La siguiente etapa de compilacin es el enlace con las funciones presentes en las
libreras de funciones. Si nuestro programa utiliza solo funciones ANSI, no suele ser
necesario indicarle al compilador en que libreras estn esas funciones. Sin embargo hay
excepciones. Por ejemplo si utilizamos funciones matemticas de la librera estndar en
nuestro programa (es decir en el programa aparece #include <math.h>, opcin lm. Sin
embargo, si utilizamos funciones definidas en una librera propia o bien en una librera no
estndar, debemos indicrselo al compilador mediante algn parmetro.

Errores en tiempo de compilacin
El compilador es capaz de detectar algunos errores que pueden cometerse en el
desarrollo de un programa escrito en C. Evidentemente, no puede detectar todos ya que
un programa puede funcionar perfectamente pero no hacer lo que se espera de l. Los
errores detectados por el compilador son de dos clases: errores propiamente dichos
(errors), y advertencias (warnings)
Los errores se deben a cuestiones sintcticas relacionadas con el lenguaje. El compilador
enumera los errores que se encontraron, y luego detiene la compilacin. El mensaje de
error que aparece siempre indica al menos tres cosas:
*El nombre del fichero en donde se ha encontrado el error.
*la lnea del fichero en donde se ha detectado el error.
*un mensaje describiendo brevemente el error.
Las advertencias no indican errores, sino que llaman la atencin al programador sobre los
posibles usos incorrectos del lenguaje. Las advertencias, a diferencia de los errores no
detienen el proceso de compilacin, pero casi siempre sealan un error oculto. En
general, si aparece un warning hay que intentar eliminarlo. Si el compilador encuentra el
error , intentara seguir compilando el programa para encontrar todos los errores posibles,
detenindose cuando le resulte imposible seguir.



3.4 Ejecucin de un programa.
A un programa en ejecucin se le suele llamar tambin proceso.
El proceso de ejecucin de un programa escrito en un lenguaje de programacin y
mediante un compilador tiene los siguientes pasos:
1. Escritura del programa fuente con un editor (programa que permite a una computadora
actuar de modo similar a una mquina de escribir electrnica) y guardarlo en un
dispositivo de almacenamiento.
2. Introducir el programa fuente en memoria.
3. Compilar el programa con el compilador.
4. Verficar y corregir errores de compilacin.
5. Obtencin del programa objeto
6. El enlazador (linker) obtiene el programa ejecutable.
7. Se ejecuta el programa y, si no existen errores, se tendr la salida del programa.
Se denomina tiempo de ejecucin (runtime en ingls) al intervalo de tiempo en el que un
programa de computadora se ejecuta en un sistema operativo. Este tiempo se inicia con
la puesta en memoria principal del programa, por lo que el sistema operativo comienza a
ejecutar sus instrucciones. El intervalo finaliza en el momento en que ste enva al
sistema operativo la seal de terminacin, sea sta una terminacin normal, en que el
programa tuvo la posibilidad de concluir sus instrucciones satisfactoriamente, o una
terminacin anormal, en el que el programa produjo algn error y el sistema debi forzar
su finalizacin.
Este trmino suele emplearse, en oposicin a tiempo de compilacion, para indicar si una
accin o hecho sucede en uno u otro tiempo.
3.5 Elementos del lenguaje: datos, literales y constantes, identificadores,
variables, parmetros, operadores, entrada y salida de datos.
TIPOS DE DATOS
Todos los lenguajes de programacin soportan algn conjunto de diferentes tipos de
datos. Un tipo de dato es un conjunto de valores y un conjunto de operaciones definidas
para esos valores. Un tipo de dato describe un conjunto de objetos con la misma
representacin. Existe un nmero de operaciones asociadas con cada tipo, por ejemplo:
es posible realizara aritmtica sobre tipos de datos enteros y reales, concatenar con los
datos de tipo cadena o recuperar o modificar el valor de un elemento de un arreglo. Un
tipo de dato proporciona una descripcin de sus instancias que indican al compilador
cosas como cuanta memoria se debe asignar para una instancia, cmo representar los
datos en memoria y qu operaciones son permisibles sobre esos datos.
Los tipos de datos que se construyen en el compilador, se conocen como tipos de datos
fundamentales o predefinidos. Cada lenguaje de programacin incorpora una coleccin
de tipos de datos fundamentales, que incluyen normalmente enteros, reales, carcter etc.
Los lenguajes soportan tambin un nmero de constructores de tipos de datos
estructurados o compuestos, que son tipos ms complejos
SIMPLES O PRIMITIVOS (Bsicos, Fundamentales o predefinidos): Son aquellos que
reconoce directamente el lenguaje, sirven de base para otros tipos de datos
(complejos),ocupan solo una localidad de memoria, para el almacenamiento de un valor
simple, no de objetos complejos. Por lo tanto la variable que lo identifica hace referencia a
un valor nico a la vez., este tipo de datos se clasifican de la siguiente manera:
Numricos:
Son aquellos que solamente aceptan caracteres numricos y el caracter puntoen el caso
de aquellos valores fraccionarios.
Enteros:
Son aquellos que consideran solamente valores enteros (sin fracciones decimales)
pudiendo ser precedidos por el carcter (-), para asignarle el signo a los valores
negativos.
Carcter o char :
Ocupan 16 bits, con un rango de 0 a 65,536. Este rango tan amplio, le permite al lenguaje
representar cualquier carcter alfabtico, numrico (sin signo) o especial de cualquier
lenguaje o idioma de cualquier parte del mundo, garantizando con esto la portabilidad. El
carcter debe estar delimitado por comillas simples (apostrofes).

NO PRIMITIVOS (Estructurados o compuestos):
Son aquellos que no estn considerados por el lenguaje y tendrn que ser definidos por
el programador, empleando para ello los tipos de datos simples o bsicos.
Identificadores, Variables y Constantes
Algunos de los principales componentes de un programa son los Identificadores, las
variables y las constantes.
Identificadores: Se emplean para asignarle un nombre a una clase, objeto, atributo, etc.
Y se puede emplear en el, cualquier secuencia de caracteres alfabticos en maysculas o
minsculas, numricos, los caracteres de subrayado (guin bajo), el de dlar ($) y no se
permiten los espacios en blanco como separadores de palabras.
Constantes
Una constante es una partida de datos que permanecen sin cambios en el programa
(durante el desarrollo y ejecucin).
Variables
Una variable es una partida de datos cuyo valor puede cambiar en el programa (durante el
desarrollo y ejecucin).

Los diferentes tipos de variables dependen del lenguaje de programacin, por lo general
estas suelen ser enteras, reales, carcter, lgicas y de cadena.
Tanto las variables como las constantes tienen un nombre o identificador generalmente
conformado por caracteres alfanumricos (ciertos lenguajes de programacin admiten el
carcter de subrayado _ como vlido en los identificadores), y el primero de stos debe
ser una letra.
Para poder usar una variable en C++, primero debemos declararla especificando cual de
los tipos de datos presentados arriba queremos que sea. La sintaxis para declarar una
nueva variable es escribir el especificador de tipo de dato que queremos (como int, short,
float...) seguido por un identificador de variable. Por ejemplo:

int a;
float mynumber;

Son declaraciones validas de variables. La primera declara una variable de tipo int con el
identificador a. La segunda declara una variable de tipo float con el identificador
mynumber. Una vez declaradas, las variables a y mynumber pueden ser usadas dentro
del resto de su contexto en el programa.

Si necesita declarar algunas variables del mismo tipo y quiere ahorrarse escritura, puede
declarar todas estas en la misma lnea separando los identificadores con comas ( , ). Por
ejemplo:
int a, b, c;
declara tres variables (a, b y c) de tipo int , y tiene exactamente el mismo significado que
si hubiramos escrito:
int a;
int b;
int c;

Inicializacin de variables

Cuando declaramos una variable local, su valor es indeterminado por defecto. Pero usted
podra querer que una variable almacene un valor en concreto al momento de su
declaracin. Para hacer esto, usted tiene que anexar un signo igual seguido por el valor
deseado en la declaracin de la variable:
type identifier = initial_value ;
Por ejemplo, si queremos declarar una variable entera int llamada a que contenga el valor
0 al momento en el cual es declarada, podramos escribir:
int a = 0;

Adicionalmente a esta forma de inicializacin de variables (conocida como c-like), C++ ha
aadido una nueva manera de inicializar una variable: encerrando el valor inicial entre
parntesis ():

type identifier (initial_value) ;
por ejemplo:
int a (0);

Ambas formas son validas y equivalentes en C++.

Constantes: Literales.

Una constante es cualquier expresin que tenga un valor arreglado. Estos pueden ser
divididos en nmeros Enteros, nmeros Punto-Flotante, Cadenas y smbolos.
Nmeros Enteros

1776
707
-273

Estas son constantes numricas que identifican nmeros enteros decimales. Note que
para expresar una constante numricas no necesitamos escribir comillas (") ni otro
smbolo especial. No hay duda de que es una constante dondequiera que se escriba 1776
en un programa, nos estaremos refiriendo a el valor 1776.

En adicin a los nmeros decimales (esos que ya todos nosotros conocemos) C++
permite el uso de constantes literales de nmeros octales (base 8) y nmeros
hexadecimales (base 16). Si queremos expresar un nmero octal debemos precederlo
con un smbolo 0 (caracter cero). Y para expresar un nmero hexadecimal tenemos que
precederlo con los smbolos 0x (cero, x). Por ejemplo, las siguientes constantes literales
son todas equivalentes entre si:
75 // decimal 0113 // octal 0x4b // hexadecimal

Todas representan el mismo numero: 75 (setenta y cinco ) expresado como un nmero
base 10, octal y hexdecimal, respectivamente

Nmeros Punto Flotante

Estos expresan nmeros con decimales y/o exponentes. Estos pueden incluir un punto
decimal, un smbolo e (que expresa "por 10 a la n-esima potencia", donde n es el
siguiente valor entero) o ambos.
3.14159 // 3.14159 6.02e23 // 6.02 x 1023 1.6e-19 // 1.6 x 10-19 3.0 // 3.0

estos son cuatro nmeros vlidos con decimales expresados en C++. El primer nmero es
PI, el segundo es el numero de Avogadro, el tercero es la carga elctrica de un electrn
(un nmero extremadamente pequeo) -todos ellos aproximados- y el ltimo es el nmero
3 expresado como un literal numrico en punto flotante.
Constantes declaradas (const)
con el prefijo const usted puede declarar constantes con un tipo especifico exactamente
igual a como hara con una variable:
const int width = 100;
const char tab = '\t';
const zip = 12440;
En caso de que el tipo no sea especificado (como en el ultimo ejemplo) el compilador
asume que es de tipo int.

3.6 Errores en tiempo de ejecucin.

Los errores en tiempo de ejecucin son los que se producen durante la ejecucin del
programa. Son los ms difciles de encontrar, no son detectados por el compilador, ya que
son errores de lgica, no de sintaxis.Aunque al compilar un programa no de errores, el
programa puede funcionar incorrectamente y/o a dar errores durante su ejecucin. Por
ejemplo:
Un programa puede producir resultados errneos, al equivocarnos (errores lgicos) al
programar el algoritmo (sumar en vez de restar, etc.).
Un programa puede interrumpirse bruscamente, por ejemplo si tenemos que hacer una
divisin y el divisor es cero,etc.
Los errores que se pueden producir en la fase de compilacin son:
Errores fatales: Son raros. Indican errores internos del compilador.Cuando ocurren la
compilacin se detiene inmediatamente.
Errores de sintaxis: Son los errores tpicos de sintaxis. No detienen la compilacin sino
que al finalizar sta se mostrar la lista con todos los errores encontrados. Algunos
errores suelen ser consecuencia de otros cometidos con anterioridad. Con este tipo de
errores no se puede obtener un programa objeto y por lo tanto tampoco el ejecutable.
Advertencias o avisos (warnings): Indican que hay lneas de cdigo sospechosas que a
pesar de no infringir ninguna regla sintctica, el
compilador las encuentra susceptibles de provocar un error. Cuando se detecta un
warning la compilacin no se detiene. Si en un programa
fuente slo se detectan warnings s que se podr obtener un programa objeto, que tras el
linkado dar lugar a un programa ejecutable.

Encontrar la causa que los provoca es una labor en ocasiones complicada, razn por la
cual los EID
(Entornos Integrados de Desarrollo,) nos proporcionan una herramienta llamada
Depurador que nos ayuda a encontrar los errores lgicos y dems errores producidos en
tiempo de ejecucin.
Un depurador (debugger), es un programa diseado especficamente para la deteccin,
verificacin y correccin de errores. Los depuradores nos permiten trazar el programa
(ejecutarlo sentencia a sentencia) y visualizar el contenido de las variables y direcciones
de memoria durante la ejecucin del programa.
Adems permiten alterar el flujo de ejecucin del mismo, cambiar los valores de las
variables e introducir puntos de parada.







Unidad 3(ENFOCADO EN JAVA)
LENGUAJES DE PROGRAMACIN

Para que un procesador realice un proceso se le debe suministrar en primer lugar un algoritmo
adecuado. El procesador debe ser capaz de interpretar el algoritmo, lo que significa:

Comprender las instrucciones de cada paso
Realizar las operaciones correspondientes.

Cuando el procesador es una computadora, el algoritmo se ha de expresar en un formato que se
denomina programa, ya que el pseudocdigo o el diagrama de flujo no son comprensibles por la
computadora, aunque pueda entenderlos cualquier programador. Un programa se escribe en un
lenguaje de programacin y las operaciones que conducen a expresar un algoritmo en forma de
programa se llaman programacin. As pues, los lenguajes utilizados para escribir programas de
computadoras son los lenguajes de programacin y programadores son los escritores y
diseadores de programas. El proceso de traducir un algoritmo en pseudocdigo a un lenguaje de
programacin se denomina codificacin, y el algoritmo escrito en un lenguaje de programacin se
denomina cdigo fuente.

En la realidad la computadora no entiende directamente los lenguajes de programacin sino que se
requiere un programa que traduzca el cdigo fuente a otro lenguaje que s entiende la mquina
directamente, pero muy complejo para las personas; este lenguaje se conoce como lenguaje
mquina y el cdigo correspondiente cdigo mquina. Los programas que traducen el cdigo
fuente escrito en un lenguaje de programacin a cdigo mquina se denominan traductores.

Hoy en da, la mayora de los programadores emplean lenguajes de programacin como C++, C,
C#, Java, Visual Basic, XML, HTML, Perl, PHP, JavaScript..., aunque todava se utilizan, sobre
todo profesionalmente, los clsicos COBOL, FORTRAN, Pascal o el mtico BASIC.
Estos lenguajes se denominan lenguajes de alto nivel y permiten a los profesionales resolver
problemas convirtiendo sus algoritmos en programas escritos en alguno de estos lenguajes de
programacin.

ESTRUCTURA BSICA DE UN PROGRAMA
Un programa de computadora es un conjunto de instrucciones rdenes dadas a la mquina- que
producirn la ejecucin de una determinada tarea. En resumen es un medio para conseguir un fin.
El proceso de programacin es, por consiguiente un proceso de solucin de problemas y el
desarrollo de un programa requiere de las siguientes fases:



PARTES CONSTITUTIVAS DE UN PROGRAMA

El programador debe establecer el conjunto de especificaciones que debe contener un programa:
entrada, salida y algoritmos de resolucin, que incluirn las tcnicas para obtener las salidas a
partir de las entradas.

El programador debe establecer de donde provienen las entradas al programa; que en cualquier
caso, procedern de un dispositivo de entrada. El proceso de introduccin de datos en la memoria
de la computadora se denomina entrada de datos, operacin de lectura o accin de leer.
Las salidas se deben presentar en dispositivos perifricos de salida: pantalla, impresoras, discos,
etc.





INSTRUCCIONES

Un programa puede ser lineal o no lineal en base a la secuencia de ejecucin de sus instrucciones.
Un programa lineal ejecuta las instrucciones sin bifurcaciones.
Un programa es no lineal cuando interrumpe la secuencia mediante instrucciones de bifurcacin.

TIPOS DE INSTRUCCIONES

Las instrucciones disponibles en un lenguaje de programacin dependen del tipo de lenguaje, pero
las instrucciones bsicas independientes de cualquier lenguaje se clasifican en:
Instrucciones de inicio/fin
Instrucciones de asignacin
Instrucciones de lectura
Instrucciones de escritura
Instrucciones de bifurcacin

En programacin se debe diferenciar entre el diseo del algoritmo y su implementacin en un
lenguaje especfico. Los lenguajes de programacin tienen elementos bsicos que se utilizan como
bloques constructivos, as como las reglas para las que esos elementos se combinan. Estas reglas
se denominan Sintaxis del lenguaje.
Los elementos bsicos constitutivos de un programa o algoritmo son:
Palabras reservadas
Identificadores (nombres de variables)
Caracteres especiales (coma, comillas, punto y coma, etc)
Constantes
Variables
Expresiones
Instrucciones

Adems de estos elementos bsicos existen otros elementos que forman parte de los programas:
Bucles
Contadores
Acumuladores
Interruptores
Estructuras
Secuencias selectivas o repetitivas

Representacin de textos

La informacin en formato de texto se representa mediante un cdigo en el que cada uno de los
distintos smbolos del texto (tales como letras del alfabeto o signos de puntuacin) se asignan a un
nico patrnde bits. El texto se representa como una cadena larga de bits en la cual los sucesivos
patrones representan los sucesivos smbolos del texto original.
En resumen, se puede representar cualquier informacin escrita (texto) mediante caracteres. Los
caracteres que se utilizan en computacin suelen agruparse en cinco categoras:
1. Caracteres alfabticos (letras maysculas y minsculas, en una primera versin del abecedario
ingls).

A, B, C, D, E, ... X, Y, Z, a, b, c, ... , X, Y, Z

2. Caracteres numricos (dgitos del sistema de numeracin).

0, 1, 2, 3, 4, 5, 6, 7, 8, 9 sistema decimal

3. Caracteres especiales (smbolos ortogrficos y matemticos no incluidos en los grupos
anteriores).

{ } ! ? & > # ...

4. Caracteres geomtricos y grficos (smbolos o mdulos con los cuales se pueden representar
cuadros, figuras geomtricas, iconos, etc.

5. Caracteres de control (representan rdenes de control como el carcter para pasar a la
siguiente

lnea [NL] o para ir al comienzo de una lnea [RC, retorno de carro, carriage return, CR]
emitir un pitido en el terminal [BEL], etc.).
Al introducir un texto en una computadora, a travs de un perifrico, los caracteres se codifican
segn un cdigo de entrada/salida de modo que a cada carcter se le asocia una determinada
combinacin de n bits.

Los cdigos ms utilizados en la actualidad son: EBCDIC, ASCII y Unicode.
Cdigo EBCDIC (Extended Binary Coded Decimal Inter Change Code).
Este cdigo utiliza n = 8 bits de forma que se puede codificar hasta m = 28 = 256 smbolos
diferentes. ste fue el primer cdigo utilizado para computadoras, aceptado en principio por IBM.

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

Cdigo Unicode
Aunque ASCII ha sido y es dominante en los caracteres se leen como referencia, hoy da se
requiere de la necesidad de representacin de la informacin en muchas otras lenguas, como el
portugus, espaol, chino, el japons, el rabe, etc. Este cdigo utiliza un patrn nico de 16 bits
para representar cada smbolo, que permite 216 bits o sea hasta 65.536 patrones de bits
(smbolos) diferentes.
Desde el punto de vista de unidad de almacenamiento de caracteres, se utiliza el archivo (fichero).
Un archivo consta de una secuencia de smbolos de una determinada longitud codificados
utilizandoASCII o Unicode y que se denomina archivo de texto. Es importante diferenciar entre
archivos de texto simples que son manipulados por los programas de utilidad denominados
editores de texto y los archivos de texto ms elaborados que se producen por los procesadores de
texto, tipo Microsoft Word.
Ambos constan de caracteres de texto, pero mientras el obtenido con el editor de texto, es un
archivo de texto puro que codifica carcter a carcter, el archivo de texto producido por un
procesador de textos contiene nmeros, cdigos que representan cambios de formato, de tipos de
fuentes de letra y otros, e incluso pueden utilizar cdigos propietarios distintos de ASCII o Unicode.

Representacin de valores nmericos

El almacenamiento de informacin como caracteres codificados es ineficiente cuando la
informacin se registra como numrica pura. Veamos esta situacin con la codificacin del nmero
65; si se almacena como caracteres ASCII utilizando un byte por smbolo, se necesita un total de
16 bits, de modo que elnmero mayor que se poda almacenar en 16 bits (dos bytes) sera 99. Sin
embargo, si utilizamos notacin binaria para almacenar enteros, el rango puede ir de 0 a 65.535
(216 1) para nmeros de 16 bits.
Por consiguiente, la notacin binaria (o variantes de ellas) es la ms utilizada para el
almacenamiento de datos numricos codificados.
La solucin que se adopta para la representacin de datos numricos es la siguiente: al introducir
un nmero en la computadora se codifica y se almacena como un texto o cadena de caracteres,
pero dentrodel programa a cada dato se le enva un tipo de dato especfico y es tarea del
programador asociar cada dato al tipo adecuado correspondiente a las tareas y operaciones que
se vayan a realizar con dicho dato.
El mtodo prctico realizado por la computadora es que una vez definidos los datos numricos de
un programa, una rutina (funcin interna) de la biblioteca del compilador (traductor) del lenguaje de
programacin se encarga de transformar la cadena de caracteres que representa el nmero en su
notacin binaria.

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

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

Representacin de reales

Los nmeros reales son aquellos que contienen una parte decimal como 2,6 y 3,14152. Los reales
se representan en notacin cientfica o en coma flotante; por esta razn en los lenguajes de
programacin.
Existen dos formas de representar los nmeros reales. La primera se utiliza con la notacin del
punto decimal.
Ejemplos
12.35 99901.32 0.00025 9.0
La segunda forma para representar nmeros en coma flotante en la notacin cientfica o
exponencial,conocida tambin como notacin E. Esta notacin es muy til para representar
nmeros muy grandes o muy pequeos.
Ejemplos
2.52 e + 8
8.34 E 4 equivale a 8.34/104 = 0.000834
7E5
18.35e15
5.95E25
9.11e 31 equivale a 0.000000000000000000000000000000911

Representacin de caracteres

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

JAVA



3.1 CARACTERSTICAS DEL LENGUAJE DE PROGRAMACIN JAVA

Este lenguaje de programacin creado por Sun Microsystems a mediados de la dcada de los 90
es el lenguaje de programacin ms popular en la actualidad. As lo demuestra el ndice TIOBE.
El ndice TIOBE trata de reflejar el "estado de salud" de los distintos lenguajes de programacin. El
ndice reparte 100 puntos entre todos los lenguajes de programacin existentes.

Java lidera dicho ndice; y lo lleva liderando desde principios del 2001; otro de los mritos que
puede atribuirse es el liderar el ranking de Sourceforge de nmero de proyectos desarrollados en
un determinado lenguaje. En abril del 2005 super al actual tercer lenguaje de programacin, C, y
en noviembre del 2005 super al actual segundo, C++.

La plataforma se divide en tres grandes bloques. Uno de ellos, Java SE es lo ms parecido a un
lenguaje de programacin estndar. Proporciona una sintaxis para un lenguaje de programacin,
un entorno de ejecucin para las aplicaciones creadas en dicho lenguaje y un extenso conjunto de
libreras en las cuales se pueden apoyar dichas aplicaciones.

Java ME es una edicin de Java orientada a programacin de dispositivos mviles y empotrados.
En esta categora encajan desde las tarjetas inteligentes (como las que se emplean en los DNI
electrnicos, en las tarjetas prepago o en las SIM de los telfonos celulares) hasta terminales
mviles de ltima generacin, pasando por los reproductores del formato de video de alta
definicin BlueRay, o software de control de coches. Java ME proporciona un subconjunto de las
libreras y de las caractersticas del lenguaje de Java SE.

Este subconjunto puede variar dependiendo de para qu dispositivos estemos programando; si
estamos programando para terminales mviles de ltima generacin estn disponibles
prcticamente todas las caractersticas de Java SE. Sin embargo, si estamos programando para
tarjetas inteligentes el conjunto de libreras est considerablemente reducido, y el lenguaje de
programacin soporta menos caractersticas; por ejemplo, no soporta tipos de datos reales ya que
estos dispositivos slo tienen hardware para realizar aritmtica de enteros.
Java ME es muy popular en la actualidad en dispositivos mviles, aunque a menudo pase
desapercibido. Para darse una idea de la presencia de esta tecnologa, basta mencionar que se
han manufacturado 3.500.000.000 de tarjetas inteligentes basadas en la tecnologa Java, y ms de
1.400.000.000 de telfonos celulares con soporte para aplicaciones Java ME.

Si Java ME puede considerarse como un subconjunto de Java SE, Java EE
puede considerarse como un superconjunto. En este caso, no se extiende ni se modifica de
ningn modo el lenguaje de programacin. Se aade un conjunto amplio de libreras y una serie de
contenedores de aplicaciones (contenedores web y de EJB). Estos contenedores proporcionan
servicios, de un modo automtico y transparente para el programador, a las aplicaciones que
contienen, servicios como transaccionalidad, persistencia, autenticacin, autorizacin, etctera.
Nuevamente, muchas de las web que visitamos diariamente estn hechas en Java: el propio GMail
es un ejemplo.

CARACTERSTICAS DE JAVA

Se dice que Java es un lenguaje sencillo de aprender (para m no lo es tanto).
Java es completamente independiente de la mquina y el sistema operativo en el que se
ejecuta. El cdigo generado por el compilador Java es independiente de la arquitectura: podra
ejecutarse en un entorno UNIX, Mac o Windows; en un procesador Sparc, x86, PowerPC, ARM, ...
tanto de 32 como de 64 bits. El motivo de esto es que realmente ejecuta el cdigo generado por el
compilador mediante una mquina virtual.
Java es portable a nivel de cdigo fuente.
Java es un lenguaje de programacin robusto y seguro. Estas caractersticas surgen en
buena medida de ser un lenguaje que no es ejecutado directamente por la CPU, sino que es
ejecutado por la mquina virtual. Esta mquina virtual puede controlar los permisos que se le
otorgan a una determinada aplicacin y garantizar que dichos permisos no son violados.
Java proporciona soporte para la creacin de Applets. Estos son programas diseados
para ser ejecutados de modo automtico cuando un usuario visita una pgina web.
Java es un lenguaje de alto rendimiento. Esto es as gracias al uso de compiladores just in
time, compiladores que traducen los bytecodes de Java en cdigo mquina para una determinada
CPU, cdigo que no precisa de la mquina virtual para ser ejecutado, y guardan el resultado de
dicha conversin, volvindolo a llamar en caso de volverlo a necesitar, con lo que se evita la
sobrecarga de trabajo asociada a la interpretacin del bytecode.
No obstante, por norma general el programa Java consume bastante ms memoria, ya que no slo
ha de cargar en memoria los recursos necesarios para la ejecucin del programa, sino que adems
debe simular un sistema operativo y hardware virtuales (la mquina virtual). Sin embargo, dado el
bajo precio de la memoria RAM en la actualidad y la gran cantidad de memoria que suele haber
disponible, el mayor consumo de memoria a menudo es irrelevante.

COMO SE UTILIZA EL KIT DE DESARROLLO JAVA, JDK

Para desarrollar aplicaciones Java es necesario un "Java Development Kit" o JDK que
distribuye Sun Microsystems, que se puede descargar gratuitamente desde:

http://java.sun.com

La portabilidad del lenguaje garantiza que todos funcionarn del mismo modo.
Es bien sabido que el entorno JDK no es el ms adecuado para el desarrollo de aplicaciones Java,
debido a funcionar nica y exclusivamente mediante comandos.
Hoy en da la programacin se suele ayudar de entornos visuales, como Eclipse y Netbeans, que
facilitan enormemente la tarea. En nuestro curso estamos manejando Netbeans que pueden
descargarse desde:

http://netbeans.org

En algunos libros recomiendan en un principio no utilizar el entorno IDE (Netbeans, en nuestro
caso) para familiarizarse con el JDK.
Una vez instalado en nuestro equipo se podr ejecutar aplicaciones Java. Sin embargo, es
necesario salir primero al smbolo del sistema y entrar a la carpeta Bin que se encuentra en la
siguiente ruta:

C:\Archivos de programa\Java\Jdk1.7.0\Bin


Al frente de toda esta ruta escribimos lo siguiente:

C:\Archivos de programa\Java\Jdk1.7.0\Bin> notepad Ejemplo_1
Esto nos crear un nuevo archivo en el block de notas

Este primer programa que lo utilizan en todas las explicaciones sobre java, nos da una idea de lo
que hace el jdk para compilar y correr el programa, al no tener conocimientos previos sobre este
lenguaje, al principio parece muy abstracto, pero copiemos tal cual aparece y despus al leer los
elementos de este lenguaje y sus caractersticas, nos ser ms fcil entenderle, (al menos as
sucedi conmigo).

//**Programa "hola mundo"
public class HolaMundo
{
public static void main(String[] args)
{
//La siguiente instruccin imprime en la pantalla lo que se encuentre encerrado
entre comillas
System.out.println("Hola Mundo estamos aprendiendo JAVA");
}
}

Cuando terminamos de escribirlo es muy importante guardarlo con el nombre HolaMundo.java, que
es el mismo nombre que aparece al final de la instruccin public class.
A cada lnea se le llama sentencia y todas las sentencias que inician con // son comentarios y, por
tanto, sern ignorados por el compilador.

La lnea public static void main(String[] args) define el main, el punto de entrada, del programa.
System.out.println es una sentencia que permite imprimir por la pantalla el texto que se se escribe
entre parntesis, rodeado de comillas.

Para compilar nuestro programa necesitamos escribir lo siguiente

C:\Archivos de programa\Java\Jdk1.7.0\Bin> javac Ejemplo_1.java
Si no encuentra errores, se termina de compilar el programa, y para verlo funcionar (correrlo),
ahora escribimos lo siguiente:

C:\Archivos de programa\Java\Jdk1.7.0\Bin> java Ejemplo_1

Los archivos .class contienen bytecode, una especie de "ensamblador" de la plataforma Java.
Estos archivos se generan despus de compilar al programa. Si buscamos en el directorio donde
acabamos de crearlos tenemos dos archivos con el nombre de Ejemplo_1, uno con la extensin
java y otro con extensin class.

ELEMENTOS DEL LENGUAJE

DATO

Es la representacin formal de hechos, conceptos o instrucciones adecuada para su interpretacin
y procesamiento.

TIPO DE DATO
Constantes
Variables
Especificacin de un dominio (rango de valores) y de un conjunto vlido de operaciones a los que
los compiladores y traductores asocian un esquema de representacin interna propia.
Los datos que recibe un programa pueden ser constantes o variables, las constantes se definen
con un valor dentro del programa y no pueden cambiar dicho valor; las variables van tomando
valores a travs de dispositivos de entrada (el teclado por ejemplo) o de valores que se van
calculando dentro de un programa.

CLASIFICACIN DE LOS TIPOS DE DATO
a. En funcin de quien los define:

Tipos de datos estndar
Tipos de datos definidos por el usuario
b. En funcin de su representacin interna:

Tipos de datos escalares o simples
Tipos de datos estructurados
TIPOS DE DATOS PRIMITIVOS EN JAVA

Java maneja 8 tipos de datos:



Datos de tipo nmerico:

Numricos enteros byte short int long
Numricos en coma flotante float double
ENTEROS
Almacenan, como su propio nombre indica, nmeros enteros; esto es, nmeros sin parte decimal.
En Java hay cuatro tipos de enteros, como se muestra a continuacin. Esta tabla tambin nos
muestra el rango (valores mnimos y mximos) de cada tipo y el espacio que ocupan en memoria,
medido en bytes.



Para indicar que un literal entero es de tipo long debemos aadirle una L al final: el nmero 23 es
un int y el nmero 23L es un long.
Es importante que en el momento de definir los tipos de datos dentro de la edicin del programa,
se escriban con minsculas los tipos de dato.
.
REALES
Almacenan nmeros reales, es decir, nmeros con parte decimal. Como se muestra en la tabla 2,
hay dos tipos diferentes de nmero real; se diferencian tanto en la precisin (el nmero de cifras
decimales que son capaces de representar) como en el rango de valores que permiten representar.
Datos reales en Java




Si queremos indicar que un literal o constante real es de tipo float debemos aadir una F despus
de l: 2.3F, sino por defecto ser double.

DATOS DE TIPO CARCTER

Java est codificado en un formato denominado Unicode. Unicode es una extensin de ASCII, ya
que ste ltimo slo tena capacidad para representar 256 smbolos distintos. Para poder
representar todos los alfabetos (chino, japons, ruso...) y una mayor cantidad de smbolos se cre
el formato Unicode.
Se les llama cadena de caracteres a los conjuntos de varias letras por ejemplo el Hola Mundo del
primer ejemplo es una cadena de caracteres, y se le llama carcter a cada una de las letras.
En java podemos tener constantes o variables de tipo char, que almacenan una sola letra.
Los char van entre comillas simples: char ch = R

Mientras que las cadenas de caracteres usan comillas dobles.

DATOS LGICOS: BOOLEAN
Se trata de un tipo de dato que solo puede tomar dos valores: true y false

Es decir representan los valores lgicos cierto y falso, respectivamente. Por ejemplo, la sentencia:
bolean b = true;
inicia la variable b con el valor lgico que representa una condicin que se cumple, esto es, una
condicin cierta. Es un tipo de dato til a la hora de realizar chequeos sobre condiciones.

DEFINICIN DE VARIABLES
Java requiere que se declaren los tipos de todas las variables empleadas.
Se requiere inicializar todas las variables antes de usarlas, si no el compilador genera un error y
aborta la compilacin. Se puede declarar e inicializar valor a una variable en una misma lnea:
int i = 0;
En Java, despus de cada lnea de cdigo siempre debe ir un ";".
Declaracin e inicializacin pueden hacerse en lneas diferentes:
int i ;
i = 0;
Es posible declarar e iniciar varias variables en una lnea:
int i=3, j,k=2;
Los caracteres aceptados en el nombre de una variable son los comprendidos entre AZ, az
, _, $ y cualquier carcter que sea una letra en algn idioma. En Java, al igual que en todo lenguaje
depr ogramacin, hay una serie de palabras reservadas que no pueden ser empleadas como
nombres de variables ( if, int, char, else, goto...); alguna de stas son empleadas en la sintaxis del
lenguaje.

REGLAS DE CONVERSIN ENTRE DISTINTOS TIPOS NUMRICOS
Las normas de conversin entre tipos numricos son las habituales en un lenguaje de
programacin: si en una operacin se involucran varios datos numricos de distintos tipos todos
ellos se convierten al tipo de dato que permite una mayor precisin y rango de representacin
numrica; as, por ejemplo:
Si cualquier operando es double todos se convertirn en double
Si cualquier operando es float y no hay ningn doubl todos se convertirn a float
Si cualquier operando es long y no hay datos reales todos se convertirn en long
Si cualquier operando es int y no hay datos reales ni long todos se convertirn en int
En cualquier otro caso el resultado ser tambin un int
.
Java slo tiene dos tipos de operadores para operar nmeros enteros: uno que aplica para operar
datos de tipo long, y otro que emplea para operar datos de tipo int (esto tambin sucede con la
mayor parte de las CPU actuales). De este modo cuando operemos un byte con un byte
, un short con un short o un short con un byte Java emplear para dicha operacin el operador de
los datos tipo int, por lo que el resultado de dicha operacin ser un int siempre.
Estas conversiones son importantes a la hora de determinar en qu tipo de variable guardamos el
resultado de la operacin; sta ha de tener un rango de representacin mayor o igual al rango de
representacin de la variable con mayor rango de representacin involucrada en la operacin. Si
es de rango superior no habr problemas. Si no respetamos esta regla, el compilador generar un
error.

Es posible convertir un dato de jerarqua superior a uno con jerarqua inferior, arriesgndonos a
perder informacin en el cambio. Este tipo de operacin (almacenar el contenido de una variable
de jerarqua superior en una de jerarqua inferior) se denomina cast o molde. Para llevar a cabo un
cast debemos poner delante de la variable cuyo tipo queremos cambiar, entre parntesis, el tipo de
la variable al cual queremos realizar el cambio.

En Java cuando "se suma" un valor numrico a una cadena de caracteres lo que sucede es que se
crea una nueva cadena de caracteres igual a la cadena de caracteres original concatenada con el
valor; es decir:
"Edad: "+ 23 da como resultado "Edad: 23"
Operadores

En esta parte veremos los operadores aritmticos, relacionales y lgicos con los que cuenta Java.
Operadores aritmticos
Los operadores aritmticos de Java son:







El mdulo de la divisin de dos enteros puede obtenerse mediante el operador %. Por ejemplo,
7/4= 1; 7% 4=3
.
Adems, existen los operadores decremento e incremento:

-- Decremento
++ Incremento

La operacin que realizan son incrementar y decrementar en una unidad a la variable a la que se
aplican. Su accin es distinta segn se apliquen antes (preincremento, ++a) o despus
(postincremento a++) de la variable. En el caso del operador preincremento, si la variable sobre la
que se aplica forma parte de una expresin primero se incrementar el valor de la variable, y a
continuacin se evaluar la expresin. En el caso del operador postincremento, si la variable sobre
la que se aplica forma parte de una expresin, primero se evaluar la expresin y a continuacin
se incrementar el valor de la variable.

Operadores relacionales

Los operadores relacionales son operadores que comprueban si se cumple una determinada
relacin, de igualdad, desigualdad, mayor que... entre dos valores numricos. El resultado de la
aplicacin de cualquier operador relacional es siempre un boolean, es decir, la expresin que surge
de comparar dos variables o literales mediante un operador relacional slo puede tomar dos
valores: true y false.






Operadores lgicos
Estos operadores se aplican sobre valores lgicos, es decir, sobre datos de tipo
boolean. En Java hay tres operadores lgicos: la negacin, el AND (Y) lgico y el OR (O) lgico.




























PROGRAMAS

Los primeros 12 programas presentan los diferentes tipos de datos y
operaciones con JAVA, EJECUTARLOS EN NetBeans Y GENERAR UN
REPORTE.

Programa sencillo para aprender a escribir mensajes en la pantalla

import java.io.*;
public class Hello
{
public static void main(String[] args) throws IOException
{
InputStreamReader reader=new
InputStreamReader(System.in);
BufferedReader Input=new BufferedReader (reader);
System.out.println("Introdece tu nombre: ");
String name=Input.readLine();
System.out.println("Hello "+name+"!");
}
}

________________________________________________________________________
Programa para manejar los diferentes tipos de datos numricos
public class Ejemplo_1
{
public static void main(String[] args)
{
int i=9,k;//Se declara una constante i=9 y la variable K de tipo int
float j=47.9F;//indicacion de que se trata de una constante flotante, si no sera doble
System.out.println("i: "+i+" j: "+j);
k=(int)j;//empleo de un cast una constante de jerarqua superior se almacena en una de
tipo inferior, perdiendo parte de la informacin
System.out.println("j: "+j+" k: "+k);
j=k;//no necesita cast
System.out.println("j: "+j+" k: "+k);
float m=2.3F;//float m=2.3;provocara un error
System.out.println("m: "+m);
}
}

_________________________________________________________________________
Programa para calcular el rea de un crculo, y poder practicar operaciones
matemticas con diferentes tipos de variables.

import java.io.*;
public class area
{
public static void main(String[] args) throws IOException
{
InputStreamReader reader= new InputStreamReader(System.in);
BufferedReader Input=new BufferedReader (reader);
System.out.println("Introduce el radio del crculo: ");
String radio=Input.readLine();
Double x=new Double(radio);
Double r=x.doubleValue();
Double a=3.1415*r*r;
System.out.println("El rea de un crculo de radio "+r+"es:"+ a);
}
}
________________________________________________________________________
Programa para observar el resultado de los operadores ++ y --


public class Ejemplo_2
{
//Manejo de operadores incremento y decremento ++ --
public static void main (String[] args)
{
int i=1;
prt("i: "+i);
prt("++1: "+ ++i);
//Pre-incremento, primero incrementa y luego lo muestra en pantalla
prt("i++: "+ i++);
//Post-incremento, primero muestra el 2 y luego incrementa a 3
prt("i: "+ i);//muestra el 3
prt("--i: "+ --i);
//Pre-decremento, primero decrementa i y luego lo muestra
prt("i-- : "+ i--);
//Post-decremento, primero muestra i y luego decrementa su valor en 1
prt("i : "+i);//Ahora i vale 1
}
static void prt(String s)
{
System.out.println(s);
//Estas ltimas instrucciones son para utilizar prt que nos permite mostrar cadenas de
caracteres
//en pantalla ahorrandonos el System.out.println
}
}
________________________________________________________________________
Programa para observar la utilizacin de la clase Math, utilizando algunas
funciones trigonometricas y potencias.


public class Ejemplo_3
{
//Ejemplo del mtodo de la clase Math
public static void main(String[] args)
{
int i=45, j=2;
//Imprime en la pantalla el Seno y el Coseno de 45
prt("i: "+ i + " Coseno de i: " + Math.cos(i));
prt("i: "+ i + " Seno de i: " + Math.sin(i));
prt("j: "+ j + " i: " + i + " i^j (i elevada a la j): "+ Math.pow(i,j));
}
static void prt(String s)
{
System.out.println(s);
}
}

_________________________________________________________________________
Programa para observar operadores binarios.

import java.util.*;
public class Ejemplo_4
{
public static void main(String[] args)
{
//Creacion de un objeto tipo Random almacenando un puntero a el en la variable rand
Random rand=new Random();
//Se generan dos nmeros aleatorio entre 0 y 100
int i= rand.nextInt() % 100;
int j= rand.nextInt() % 100;
prt("i = "+ i);
prt("j = "+ j);
//Imprime diversas operaciones binarias sobre i y j, junto con su resultado
prt("i = " + i+ " j = "+j);
prt("i > j es "+ (i>j));
prt("i < j es "+ (i<j));
prt("i >= j es " + (i>=j));
prt("i <= j es " + (i<=j));
prt("i == j es " + (i==j));
prt("i != j es " + (i!=j));
prt("(i < 10) && (j < 10) es " + ((i<10)&&(j<10)));
prt("(i < 10) || (j < 10) es " + ((i<10)||(j<10)));
}
static void prt(String s)
{
System.out.println(s);
}
}

_______________________________________________________________________
Programa para observar el resultado de los operadores aplicados a variables
de tipo String.

public class Ejemplo_5
{
public static void main(String[] args)
{
String saludo= "Hola";
String saludo2= "hola";
int n=5;
//Imprime en pantalla la subcadena formada por los caracteres 0 hasta 2 sin incluir el ltimo
prt("saludo ="+ saludo + "substring (0,2) :");
prt(saludo.substring(0,2));
prt(saludo + " " + n);
prt("Imprime el resultado del test de igualdad entre Hola y hola");
prt("saludo == saludo2 " + saludo.equals(saludo2));
}
static void prt(String s)
{
System.out.println(s);
}
}

_________________________________________________________________________
Programa para observar el manejo de vectores, mediante el manejo de un
vector de tamao igual a 10.
public class Ejemplo_5a
{
public static void main(String[] args)
{
int[] edades = new int[10];
for (int i=0; i<10; i++)
{
edades[i]=i*2;
System.out.println("Elemento "+ i + " tiene almacenada una edad igual a:
"+edades[i]);
}
int sum = 0;
for (int i=0; i<10; i++)
{
sum=sum+edades[i];
}
System.out.println("Suma de edades igual a: "+sum);
}
}
________________________________________________________________________
Programa para observar como podemos crear listas de datos y manejar a
sus elementos mediante su direccin dentro del vector.


public class Ejemplo_5b
{
//Definimos un tipo enumerado fuera del main y fuera de cualquier mtodo
public enum Semana {LUNES, MARTES, MIERCOLES, JUEVES, VIERNES, SABADO,
DOMINGO};
public static void main (String[] args)
{
//Definimos la variable hoy de tipo Semana y le asignamos un valor
Semana hoy=Semana.MARTES;
//Hacemos una comparacin, si la variable hoy es igual a SABADO o DOMINGO
//despliega el mensaje "Hoy no se trabaja"
if (hoy == Semana.SABADO || hoy == Semana.DOMINGO)
{
System.out.println("HOY NO SE TRABAJA");
} else
{
System.out.println("HOY SE TRABAJA");
}
}
}
_________________________________________________________________________
________
Programa para el funcionamiento de IF- ELSE

public class Ejemplo_6
{
//La siguiente instruccin test(int a, int b) devolver
// un -1 si a<b, +1 si a>b y 0 si a==b
static int test (int val, int val2)
{
int result=0;
if(val > val2)
result= +1;
else if (val < val2)
result= -1;
else
result= 0;
return result;
}
public static void main(String[] args)
{
System.out.println("Test (10,5) "+test(10,5));
System.out.println("Test (5,10) "+test(5,10));
System.out.println("Test (5,5) "+test(5,5));
}
}
_________________________________________________________________________
_________
Programa para observar el manejo de la instruccin CASE

public class Ejemplo_7
{
//Ejemplo de for con switch
public static void main(String[] args)
{
for(int i=0; i<100;i++)
{
char c= (char)(Math.random()*26 + 'a');
System.out.print(c + " : ");
switch (c)
{
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
//Si el carcter es a, e, i, o, u se imprimen
System.out.println("vocal: "+c);
break;
default:
//Si no era vocal, imprimimos consonante
System.out.println("consonante: "+c);
}
}
}
}
_________________________________________________________________________
_________
Programa para observar el resultado de la instruccin WHILE

public class Ejemplo_8
{
public static void main(String[] args)
{
double r=0;
//Mientras r<0.99 se ejecuta el cuerpo del bucle
while (r<0.99)
{
r=Math.random();
System.out.println("r es menor que 0.99, r="+r);
}
System.out.println("Aqu se detuvo porque r = "+ r);
}
}
_________________________________________________________________________
_________
Programa para observar el funcionamiento de la instruccin DO-WHILE

public class Ejemplo_9
{
public static void main(String[] args)
{
double r;
//Igual al Ejemplo_8 pero ahora la condicin esta al final
do
{
r=Math.random();
System.out.println(r);
}
while (r<0.99);
System.out.println("Aqu se detiene porque r = "+ r);
}
}
_________________________________________________________________________
_________
Programa para observar el funcionamiento de la instruccin FOR

public class Ejemplo_10
{
public static void main(String[] args)
{
//Aqu definimos el array que tendra los elementos de la iteraccin
int array[] = new int[10];
int suma=0, contador=0;
//Damos valores a la matriz por medio de este bucle
for (int i=0; i< array.length; i++)
{
array[i]=2*i;
System.out.println("array ["+i+"]"+" = "+ array[i]);
}
for (int e: array)
{
suma = suma + e;
System.out.println("Valores de suma = "+ suma);
}
System.out.println("Al final suma = "+suma);
}
}
_________________________________________________________________________
__________
Programa para observar las instrucciones FOR, IF y WHILE

public class Ejemplo_11
{
public static void main(String[] args)
{
for (int i=0; i< 100; i++)
{
if (i== 74) break; //Se sale del bucle cuando i=74
if (i%9 != 0) continue;//Si i es divisible entre 9 se imprime en pantalla
System.out.println("i = "+i);
}
int i=0;
while (true)
{
i++;
if(i == 120) break;
System.out.println("Valores i = "+ i);
}
}
}
_________________________________________________________________________
___________
Programa para convertir dolares a pesos.

import java.io.*;
public class Conversion
{
public static void main(String[] args) throws IOException
{
InputStreamReader reader= new InputStreamReader (System.in);
BufferedReader Input= new BufferedReader(reader);
System.out.println("Introduce la cantidad de dolares");
String cantidad_dolares = Input.readLine();
Double x = new Double(cantidad_dolares);
r=x.doubleValue();

InputStreamReader reader= new InputStreamReader (System.in);
BufferedReader Input= new BufferedReader(reader);
System.out.println("Introduce el valor del dolar");
String valor_dolar = Input.readLine();
Double y = new Double(valor_dolar);
s= y.doubleValue();
Double resultado = x*y;
System.out.println("El valor en pesos es de "+ resultado);
}
}
_________________________________________________________________________
___________
Programa que pide dos numeros, los suma y entrega el resultado.

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package addition;
import java.util.Scanner;
/**
*
* @author Xochitl Meza
*/
public class Addition
{
//empieza la ejecucin del mtodo principal
public static void main(String[] args)
{

// Creacin del Scanner
Scanner input = new Scanner (System.in);

int number1;//primer nnero a sumar
int number2;//segundo nmero a sumar
int sum;//resultado de la suma de los dos nmeros
System.out.println("Introduce el primer entero:");
number1 = input.nextInt();//lee el primer nmero entero

System.out.println("Introduce el segundo nmero entero:");
number2 = input.nextInt();//lee el segundo nmero entero

sum = number1 + number2;

System.out.println("La suma es %d\n" + sum);//muestra el resultado de la suma


}// fin del mtodo principal
}//fin de la clase Addition
_________________________________________________________________________
___________
Programa para almacenar y cambiar 20 nmeros en un arreglo
unidimensional

package matriz_20;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

/**
*
* @author Xochitl Meza Vzquez

*/
public class Matriz_20
{
public static void main(String[] args) throws IOException
{
int[] dato = new int[20];
for (int i=0; i<20; i++)
{
InputStreamReader reader = new
InputStreamReader (System.in);
BufferedReader Input=new BufferedReader (reader);
System.out.println("Introduce el dato "+ i+":");
String elemento =Input.readLine();
Integer x = new Integer(elemento);
dato[i]=x;
}
InputStreamReader reader = new
InputStreamReader (System.in);
BufferedReader Input=new BufferedReader (reader);
System.out.println("Los datos capturados fueron:");
for (int i=0; i<20; i++)
{
System.out.print(dato[i]+" ");
}
System.out.println("\nQue dato quieres cambiar: ");
String elemento =Input.readLine();
Integer x = new Integer(elemento);
System.out.println("El dato["+x+"]"+ " actual es:"+ dato[x]);
System.out.println("\nIntroduce el nuevo valor de dato["+x+"]"+ ":");
String elemento2 =Input.readLine();
Integer x2 = new Integer(elemento2);
dato[x]=x2;
System.out.println("\nLos datos nuevos datos de la matriz son:");
for (int i=0; i<20; i++)
{
System.out.print(dato[i]+" ");
}


}
}

_________________________________________________________________________
___________
Igual al anterior pero presenta los numeros de forma diferente
package matriz_modificacion1;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
/**
*
* @author X
*/
public class Matriz_modificacion1 {
public static void main(String[] args) throws IOException
{
int[] dato = new int[20];
for (int i=0; i<20; i++)
{
InputStreamReader reader = new
InputStreamReader (System.in);
BufferedReader Input=new BufferedReader (reader);
System.out.println("Introduce el dato "+ i+":");
String elemento =Input.readLine();
Integer x = new Integer(elemento);
dato[i]=x;
}
InputStreamReader reader = new
InputStreamReader (System.in);
BufferedReader Input=new BufferedReader (reader);
System.out.println("Los datos capturados fueron:");
for (int i=0; i<20; i++)
{
System.out.print("\n M["+i+"]: "+dato[i]);
}
System.out.println("\nQue dato quieres borrar: ");
String elemento =Input.readLine();
Integer x = new Integer(elemento);
System.out.println("El dato["+x+"]"+ " actual es:"+ dato[x]);
dato[x]=0;
System.out.println("\nLos datos nuevos datos de la matriz son:");
for (int i=0; i<20; i++)
{
System.out.print("\n M["+i+"]: "+dato[i]);
}


}
}
_________________________________________________________________________
__________
Programa para almacenar 20 nombre en un arreglo unidimensional
package matriz_nombres;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

/**
*
* @author Xochitl Meza Vzquez

*/
public class Matriz_nombres
{
public static void main(String[] args) throws IOException
{
String[] dato = new String[20];
for (int i=0; i<20; i++)
{
InputStreamReader reader = new
InputStreamReader (System.in);
BufferedReader Input=new BufferedReader (reader);
System.out.println("Introduce el dato "+ i+":");
String nombre =Input.readLine();
dato[i]=nombre;
}
InputStreamReader reader = new
InputStreamReader (System.in);
BufferedReader Input=new BufferedReader (reader);
System.out.println("Los datos capturados fueron:");
for (int i=0; i<20; i++)
{
System.out.print(dato[i]+" ");
}
System.out.println("\nQue dato quieres cambiar: ");
String elemento =Input.readLine();
Integer x = new Integer(elemento);
System.out.println("El dato["+x+"]"+ " actual es:"+ dato[x]);
System.out.println("\nIntroduce el nuevo valor de dato["+x+"]"+ ":");
String elemento2 =Input.readLine();
dato[x]=elemento2;
System.out.println("\nLos datos nuevos datos de la matriz son:");
for (int i=0; i<20; i++)
{
System.out.print(dato[i]+" ");
}


}
}
_________________________________________________________________________
__________
Programa para calcular si un nmero introducido por el teclado es primo
package numprimo;

/**
*17.10.11
* @author Xochitl
*/
import java.io.*;
public class NumPrimo
{
public static void main(String args[]) throws IOException
{
InputStreamReader isr = new InputStreamReader (System.in);
BufferedReader br = new BufferedReader (isr);
String cadena;
try
{
System.out.println("Dame un numero entero: ");
cadena = br.readLine();
int i= Integer.parseInt(cadena);
boolean primo = true;
int raiz2 = (int)Math.sqrt(i);
for (int d=2; primo && d<= raiz2; d++){
if (i%d == 0)
primo = false;
if (i==0 || !primo) System.out.println("El "+ i +" es compuesto");

else
System.out.println("El "+ i +"es primo");
}
}
catch (Exception e)
{
System.out.print("Cualquier tipo de error");
}
}
}
_________________________________________________________________________
___________
Programa para practicar la instruccin FOR mostrando una tabla de
multiplicaciones.
package tabla;

/**
*
* @author XOCHITL
*/
import java.io.*;
public class Tabla {

/**
* @param args the command line arguments
*/
public static void main(String[] args) throws IOException {
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
String cadena;
int n=0,i=0;
System.out.println("Escribe un nmero: ");
cadena = br.readLine();
n= Integer.parseInt(cadena);
for(i=1; i<=10 ;i++ )
System.out.println(i+" * "+ n + " = "+ i*n);
}
}

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