You are on page 1of 40

Unidad 2. Algoritmos.

2.1 Análisis de problemas.
2.2 Representación de algoritmos: gráfica y pseudocódigo.
2.3 Diseño de algoritmos aplicados a problemas.
2.4 Diseño algorítmico de funciones
Competencia específica de la unidad
Criterios de evaluación
de la Unidad
Analizar problemas y representar su solución mediante
algoritmos.
Reporte de prácticas de
Programación (2):
30%
Desarrollo de Algoritmos:
70%

Actividades de aprendizaje

• Reporte de prácticas de programación: Aplicar en el Laboratorio de Cómputo los diferentes
métodos para representar un algoritmo: diagrama de flujo y Pseudocódigo.

• Desarrollo de Algoritmos: Resolver y analizar problemas cotidianos y representarlos a través
de un algoritmo: diagrama de flujo, N-S (Nassi-Shneiderman), Pseudocódigo y/o Descripción
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: Introducción a la Programación

3.1 Características del lenguaje de programación
3.2 Estructura básica de un programa.
3.3 Traducción de un programa: compilación, enlace de un programa, errores en
tiempo de compilación.
3.4 Ejecución de un programa.
3.5 Elementos del lenguaje: datos, literales y constantes, identificadores,
variables, parámetros, operadores, entrada y salida de datos.

Competencia específica de la unidad
Criterios de evaluación
de la Unidad
Conocer las características principales de un lenguaje
de programación.
Codificar algoritmos en un lenguaje de programación.
Compilar y ejecutar programas.
Reporte de prácticas de
Programación(3):
45%
Desarrollo de programas:
55%

Actividades de aprendizaje

• Reporte de prácticas de programación: Realizar la práctica para Instalar y configurar el
compilador del lenguaje de programación a utilizar, realizar cambios en expresiones lógicas 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 enseñar 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 Características del lenguaje de programación
Un lenguaje de programación es un idioma artificial diseñado para
expresar procesos que pueden ser llevadas a cabo por máquinas como
las computadoras. Pueden usarse para crear programas que controlen el
comportamiento físico y lógico de una máquina, para expresar algoritmos con
precisión, o como modo de comunicación humana. Está formado por un conjunto
de símbolos y reglas sintácticas y semánticas 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 código fuente de un programa
informático se le llama programación.

También la palabra programación se define como el proceso de creación de
un programa de computadora, mediante la aplicación de procedimientos lógicos, a
través de los siguientes pasos:
 El desarrollo lógico del programa para resolver un problema en particular.
 Escritura de la lógica del programa empleando un lenguaje de
programación específico (codificación del programa).
 Ensamblaje o compilación del programa hasta convertirlo en lenguaje de
máquina.
 Prueba y depuración del programa.
 Desarrollo de la documentación.
Existe un error común que trata por sinónimos los términos 'lenguaje de
programación' y 'lenguaje informático'. Los lenguajes informáticos engloban a los
lenguajes de programación y a otros más.

Un estándar de lenguaje de programas es un grupo de reglas que describen como
deben escribirse las sentencias y comandos de programación. La regla de que los
nombres variables tienen que comenzar con una letra es un ejemplo de un
estándar. Una variable es un elemento que puede tomar diferentes valores.
3.2 Estructura básica de un programa.
Como ya se ha visto, cuando se escribe un programa lo que se trata de hacer es indicarle
a la computadora cómo 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 intérprete.
Definición de los datos - la mayoría de los programas operan con datos y por lo tanto en el
código 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 definición de datos simplemente al utilizar los
datos. Veremos esto en la próxima sección.
Instrucciones - son la parte central del programa. Las instrucciones manipulan los datos
que hemos definido, realizan cálculos, muestran los resultados, etc.
La Mayoría de programas siguen una de dos estructuras:

1.- Programas de lotes
Estos se ejecutan típicamente desde una línea de comando o automáticamente desde
otra aplicación y tienden al siguiente patrón
Inicialización interna de los datos
Lectura de los datos ingresados
Procesamiento de los datos
Visualización o ejecución 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í:
Inicialización interna de los datos
Espera de los eventos
Identificación de los eventos y actuación en consecuencia
Estructura Básica de un programa en C/C++:

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

1. Componentes lógicos se refiere a los diversos elementos que componen una
aplicación, desde los más complejos hasta los más simples. Si comparamos un programa
con un edificio, los elementos irían desde el edificio como un todo, a los ladrillos (sus
elementos más pequeños).

2. Estructura lógica.Desde el punto de vista lógico, 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 manipulación. Su
representación codificada adopta dos formas: una entendible por la máquina (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:
•Aplicación :•Comprende ejecutables y datos. Puede haber múltiples ficheros de ambos
tipos (ficheros de datos y ejecutables)
•Programa : •Parte de una aplicación (código) que puede cargarse y ejecutarse
independientemente.
•Fichero fuente:•Se llaman así (abreviadamente) los ficheros que contienen el código
fuente (ficheros .C / .CPP) escrito por el programador
•Función: Una parte de un programa (subrutina) con un nombre, que puede ser invocada
(llamada a ejecución) 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 vacía, de sentencias delimitadas
•Sentencia: •Las sentencias se componen de una o varias expresiones y tienen sentido
computacional completo
•Expresión: •Las expresiones son secuencias de tokens (operadores, operandos y
elementos de puntuación) que especifican una computación; tienen sentido computacional
en sí mismas. Son los bloques de computación más 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 expresión es algo arbitraria.
3.3 Traducción de un programa: compilación, enlace de un programa, errores en
tiempo de compilación.
Un compilador es un programa informático que traduce un programa escrito en
un lenguaje de programación a otro lenguaje de programación, generando un programa
equivalente que la máquina será capaz de interpretar. Usualmente el segundo lenguaje
eslenguaje de máquina, pero también puede ser un código intermedio (bytecode), o
simplemente texto. Este proceso de traducción se conoce como compilación.
[]

Un compilador es un programa que permite traducir el código fuente de un programa
en lenguaje de alto nivel, a otro lenguaje de nivel inferior (típicamente lenguaje de
máquina). De esta manera un programador puede diseñar un programa en un lenguaje
mucho más cercano a cómo piensa un ser humano, para luego compilarlo a un programa
más manejable por una computadora.
Partes de un compilador
La construcción de un compilador involucra la división del proceso en una serie de fases
que variará con su complejidad. Generalmente estas fases se agrupan en dos tareas: el
análisis del programa fuente y la síntesis del programa objeto.
 Análisis: Se trata de la comprobación de la corrección del programa fuente, e
incluye las fases correspondientes al Análisis Léxico (que consiste en la
descomposición del programa fuente en componentes léxicos), Análisis
Sintáctico (agrupación de los componentes léxicos en frases gramaticales )
y Análisis Semántico (comprobación de la validez semántica de las sentencias
aceptadas en la fase de Análisis Sintáctico).
 Síntesis: Su objetivo es la generación de la salida expresada en el lenguaje
objeto y suele estar formado por una o varias combinaciones de fases de
Generación de Código (normalmente se trata de código intermedio o de código
objeto) y de Optimización de Código (en las que se busca obtener un código lo
más eficiente posible).
Alternativamente, las fases descritas para las tareas de análisis y síntesis se pueden
agrupar en Front-end y Back-end:
 Front-end: es la parte que analiza el código fuente, comprueba su validez, genera
el árbol de derivación y rellena los valores de la tabla de símbolos. 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 Análisis Léxico y
la Generación de Código Intermedio.
 Back-end: es la parte que genera el código máquina, específico de una plataforma,
a partir de los resultados de la fase de análisis, realizada por el Front End.
Esta división permite que el mismo Back End se utilice para generar el código máquina de
varios lenguajes de programación distintos y que el mismo Front End que sirve para
analizar el código fuente de un lenguaje de programación concreto sirva para
generar código máquina en varias plataformas distintas. Suele incluir la generación y
optimización del código dependiente de la máquina.
El código 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 líneas que comienzan con un símbolo #. Hay un conjunto de directivas que son
parte del estándar ANSI se comentan en el apéndice.

Compilación del programa.

Una vez que el programador acaba de escribir el programa en su terminal y lo almacena
en un archivo debe traducirlo a código ejecutable por la maquina. Este proceso se llama
en su conjunto compilación del código fuente en C.
#include<stdio.h>
Hace que se inserte el fichero stdio.h en el lugar donde aparece esa línea. 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 compilación.
Por lo tanto , esta etapa pasa normalmente desapercibida, aunque puede indicársele al
compilador que solo efectué el preproceso, para ver cómo queda el programa después de
èl. La forma de solicitárselo depende de cada compilador en concreto. Una vez finalizado
el preproceso , nuestro programa que da listo para que pueda comenzarse su traducción
a código ejecutable.
Enlace
La siguiente etapa de compilación es el enlace con las funciones presentes en las
librerías de funciones. Si nuestro programa utiliza solo funciones ANSI, no suele ser
necesario indicarle al compilador en que librerías están esas funciones. Sin embargo hay
excepciones. Por ejemplo si utilizamos funciones matemáticas de la librería estándar en
nuestro programa (es decir en el programa aparece #include <math.h>, opción –lm. Sin
embargo, si utilizamos funciones definidas en una librería propia o bien en una librería no
estándar, debemos indicárselo al compilador mediante algún parámetro.

Errores en tiempo de compilación
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 sintácticas relacionadas con el lenguaje. El compilador
enumera los errores que se encontraron, y luego detiene la compilación. El mensaje de
error que aparece siempre indica al menos tres cosas:
*El nombre del fichero en donde se ha encontrado el error.
*la línea del fichero en donde se ha detectado el error.
*un mensaje describiendo brevemente el error.
Las advertencias no indican errores, sino que llaman la atención al programador sobre los
posibles usos incorrectos del lenguaje. Las advertencias, a diferencia de los errores no
detienen el proceso de compilación, pero casi siempre señalan 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,
deteniéndose cuando le resulte imposible seguir.



3.4 Ejecución de un programa.
A un programa en ejecución se le suele llamar también proceso.
El proceso de ejecución de un programa escrito en un lenguaje de programación 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 máquina de escribir electrónica) 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 compilación.
5. Obtención 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 ejecución (runtime en inglés) 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 envía al
sistema operativo la señal de terminación, sea ésta una terminación normal, en que el
programa tuvo la posibilidad de concluir sus instrucciones satisfactoriamente, o una
terminación anormal, en el que el programa produjo algún error y el sistema debió forzar
su finalización.
Este término suele emplearse, en oposición a tiempo de compilacion, para indicar si una
acción o hecho sucede en uno u otro tiempo.
3.5 Elementos del lenguaje: datos, literales y constantes, identificadores,
variables, parámetros, operadores, entrada y salida de datos.
TIPOS DE DATOS
Todos los lenguajes de programación soportan algún 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
representación. Existe un número de operaciones asociadas con cada tipo, por ejemplo:
es posible realizara aritmética 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 descripción de sus instancias que indican al compilador
cosas como cuanta memoria se debe asignar para una instancia, cómo 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 programación incorpora una colección
de tipos de datos fundamentales, que incluyen normalmente enteros, reales, carácter etc.
Los lenguajes soportan también un número de constructores de tipos de datos
estructurados o compuestos, que son tipos más complejos
SIMPLES O PRIMITIVOS (Básicos, 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:
Numéricos:
Son aquellos que solamente aceptan caracteres numéricos 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 carácter (-), para asignarle el signo a los valores
negativos.
Carácter o char :
Ocupan 16 bits, con un rango de 0 a 65,536. Este rango tan amplio, le permite al lenguaje
representar cualquier carácter alfabético, numérico (sin signo) o especial de cualquier
lenguaje o idioma de cualquier parte del mundo, garantizando con esto la portabilidad. El
carácter debe estar delimitado por comillas simples (apostrofes).

NO PRIMITIVOS (Estructurados o compuestos):
Son aquellos que no están considerados por el lenguaje y tendrán que ser definidos por
el programador, empleando para ello los tipos de datos simples o básicos.
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 alfabéticos en mayúsculas o
minúsculas, numéricos, los caracteres de subrayado (guión bajo), el de dólar ($) 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 ejecución).
Variables
Una variable es una partida de datos cuyo valor puede cambiar en el programa (durante el
desarrollo y ejecución).

Los diferentes tipos de variables dependen del lenguaje de programación, por lo general
estas suelen ser enteras, reales, carácter, lógicas y de cadena.
Tanto las variables como las constantes tienen un nombre o identificador generalmente
conformado por caracteres alfanuméricos (ciertos lenguajes de programación admiten el
carácter de subrayado „_‟ como válido 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 línea 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 hubiéramos escrito:
int a;
int b;
int c;

Inicialización de variables

Cuando declaramos una variable local, su valor es indeterminado por defecto. Pero usted
podría querer que una variable almacene un valor en concreto al momento de su
declaración. Para hacer esto, usted tiene que anexar un signo igual seguido por el valor
deseado en la declaración 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, podríamos escribir:
int a = 0;

Adicionalmente a esta forma de inicialización de variables (conocida como c-like), C++ ha
añadido una nueva manera de inicializar una variable: encerrando el valor inicial entre
paréntesis ():

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

Ambas formas son validas y equivalentes en C++.

Constantes: Literales.

Una constante es cualquier expresión que tenga un valor arreglado. Estos pueden ser
divididos en números Enteros, números Punto-Flotante, Cadenas y símbolos.
Números Enteros

1776
707
-273

Estas son constantes numéricas que identifican números enteros decimales. Note que
para expresar una constante numéricas no necesitamos escribir comillas (") ni otro
símbolo 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 adición a los números decimales (esos que ya todos nosotros conocemos) C++
permite el uso de constantes literales de números octales (base 8) y números
hexadecimales (base 16). Si queremos expresar un número octal debemos precederlo
con un símbolo 0 (caracter cero). Y para expresar un número hexadecimal tenemos que
precederlo con los símbolos 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 número
base 10, octal y hexdecimal, respectivamente

Números Punto Flotante

Estos expresan números con decimales y/o exponentes. Estos pueden incluir un punto
decimal, un símbolo 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 números válidos con decimales expresados en C++. El primer número es
PI, el segundo es el numero de Avogadro, el tercero es la carga eléctrica de un electrón
(un número extremadamente pequeño) -todos ellos aproximados- y el último es el número
3 expresado como un literal numérico en punto flotante.
Constantes declaradas (const)
con el prefijo const usted puede declarar constantes con un tipo especifico exactamente
igual a como haría 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 ejecución.

Los errores en tiempo de ejecución son los que se producen durante la ejecución del
programa. Son los más difíciles de encontrar, no son detectados por el compilador, ya que
son errores de lógica, no de sintaxis.Aunque al compilar un programa no de errores, el
programa puede funcionar incorrectamente y/o a dar errores durante su ejecución. Por
ejemplo:
• Un programa puede producir resultados erróneos, al equivocarnos (errores lógicos) al
programar el algoritmo (sumar en vez de restar, etc.).
• Un programa puede interrumpirse bruscamente, por ejemplo si tenemos que hacer una
división y el divisor es cero,etc.
Los errores que se pueden producir en la fase de compilación son:
− Errores fatales: Son raros. Indican errores internos del compilador.Cuando ocurren la
compilación se detiene inmediatamente.
− Errores de sintaxis: Son los errores típicos de sintaxis. No detienen la compilación 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 líneas de código sospechosas que a
pesar de no infringir ninguna regla sintáctica, el
compilador las encuentra susceptibles de provocar un error. Cuando se detecta un
warning la compilación no se detiene. Si en un programa
fuente sólo 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, razón por la
cual los EID
(Entornos Integrados de Desarrollo,) nos proporcionan una herramienta llamada
Depurador que nos ayuda a encontrar los errores lógicos y demás errores producidos en
tiempo de ejecución.
Un depurador (debugger), es un programa diseñado específicamente para la detección,
verificación y corrección 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 ejecución del programa.
Además permiten alterar el flujo de ejecución del mismo, cambiar los valores de las
variables e introducir puntos de parada.







Unidad 3(ENFOCADO EN JAVA)
LENGUAJES DE PROGRAMACIÓN

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 pseudocódigo o el diagrama de flujo no son comprensibles por la
computadora, aunque pueda entenderlos cualquier programador. Un programa se escribe en un
lenguaje de programación y las operaciones que conducen a expresar un algoritmo en forma de
programa se llaman programación. Así pues, los lenguajes utilizados para escribir programas de
computadoras son los lenguajes de programación y programadores son los escritores y
diseñadores de programas. El proceso de traducir un algoritmo en pseudocódigo a un lenguaje de
programación se denomina codificación, y el algoritmo escrito en un lenguaje de programación se
denomina código fuente.

En la realidad la computadora no entiende directamente los lenguajes de programación sino que se
requiere un programa que traduzca el código fuente a otro lenguaje que sí entiende la máquina
directamente, pero muy complejo para las personas; este lenguaje se conoce como lenguaje
máquina y el código correspondiente código máquina. Los programas que traducen el código
fuente escrito en un lenguaje de programación a código máquina se denominan traductores.

Hoy en día, la mayoría de los programadores emplean lenguajes de programación como C++, C,
C#, Java, Visual Basic, XML, HTML, Perl, PHP, JavaScript..., aunque todavía se utilizan, sobre
todo profesionalmente, los clásicos COBOL, FORTRAN, Pascal o el mítico 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
programación.

ESTRUCTURA BÁSICA DE UN PROGRAMA
Un programa de computadora es un conjunto de instrucciones –órdenes dadas a la máquina- que
producirán la ejecución de una determinada tarea. En resumen es un medio para conseguir un fin.
El proceso de programación es, por consiguiente un proceso de solución 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 resolución, que incluirán las técnicas para obtener las salidas a
partir de las entradas.

El programador debe establecer de donde provienen las entradas al programa; que en cualquier
caso, procederán de un dispositivo de entrada. El proceso de introducción de datos en la memoria
de la computadora se denomina entrada de datos, operación de lectura o acción de leer.
Las salidas se deben presentar en dispositivos periféricos de salida: pantalla, impresoras, discos,
etc.





INSTRUCCIONES

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

TIPOS DE INSTRUCCIONES

Las instrucciones disponibles en un lenguaje de programación dependen del tipo de lenguaje, pero
las instrucciones básicas independientes de cualquier lenguaje se clasifican en:
 Instrucciones de inicio/fin
 Instrucciones de asignación
 Instrucciones de lectura
 Instrucciones de escritura
 Instrucciones de bifurcación

En programación se debe diferenciar entre el diseño del algoritmo y su implementación en un
lenguaje específico. Los lenguajes de programación tienen elementos básicos 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 básicos 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

Además de estos elementos básicos existen otros elementos que forman parte de los programas:
 Bucles
 Contadores
 Acumuladores
 Interruptores
 Estructuras
 Secuencias selectivas o repetitivas

Representación de textos

La información en formato de texto se representa mediante un código en el que cada uno de los
distintos símbolos del texto (tales como letras del alfabeto o signos de puntuación) se asignan a un
único patrónde bits. El texto se representa como una cadena larga de bits en la cual los sucesivos
patrones representan los sucesivos símbolos del texto original.
En resumen, se puede representar cualquier información escrita (texto) mediante caracteres. Los
caracteres que se utilizan en computación suelen agruparse en cinco categorías:
1. Caracteres alfabéticos (letras mayúsculas y minúsculas, en una primera versión del abecedario
inglés).

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

2. Caracteres numéricos (dígitos del sistema de numeración).

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

3. Caracteres especiales (símbolos ortográficos y matemáticos no incluidos en los grupos
anteriores).

{ } Ñ ñ ! ? & > # ç ...

4. Caracteres geométricos y gráficos (símbolos o módulos con los cuales se pueden representar
cuadros, figuras geométricas, iconos, etc.

5. Caracteres de control (representan órdenes de control como el carácter para pasar a la
siguiente

línea [NL] o para ir al comienzo de una línea [RC, retorno de carro, «carriage return, CR»]
emitir un pitido en el terminal [BEL], etc.).
Al introducir un texto en una computadora, a través de un periférico, los caracteres se codifican
según un código de entrada/salida de modo que a cada carácter se le asocia una determinada
combinación de n bits.

Los códigos más utilizados en la actualidad son: EBCDIC, ASCII y Unicode.
• Código EBCDIC (Extended Binary Coded Decimal Inter Change Code).
Este código utiliza n = 8 bits de forma que se puede codificar hasta m = 28 = 256 símbolos
diferentes. Éste fue el primer código utilizado para computadoras, aceptado en principio por IBM.

• Código ASCII (American Standard Code for Information Interchange).
El código ASCII básico utiliza 7 bits y permite representar 128 caracteres (letras mayúsculas
y minúsculas del alfabeto inglés, símbolos de puntuación, dígitos 0 a 9 y ciertos controles de
información tales como retorno de carro, salto de línea, tabulaciones, etc.). Este código es el más
utilizado en computadoras, aunque el ASCII ampliado con 8 bits permite llegar a 28 (256)
caracteres distintos, entre ellos ya símbolos y caracteres especiales de otros idiomas como el
español.

• Código Unicode
Aunque ASCII ha sido y es dominante en los caracteres se leen como referencia, hoy día se
requiere de la necesidad de representación de la información en muchas otras lenguas, como el
portugués, español, chino, el japonés, el árabe, etc. Este código utiliza un patrón único de 16 bits
para representar cada símbolo, que permite 216 bits o sea hasta 65.536 patrones de bits
(símbolos) diferentes.
Desde el punto de vista de unidad de almacenamiento de caracteres, se utiliza el archivo (fichero).
Un archivo consta de una secuencia de símbolos 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 más 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 carácter a carácter, el archivo de texto producido por un
procesador de textos contiene números, códigos que representan cambios de formato, de tipos de
fuentes de letra y otros, e incluso pueden utilizar códigos propietarios distintos de ASCII o Unicode.

Representación de valores númericos

El almacenamiento de información como caracteres codificados es ineficiente cuando la
información se registra como numérica pura. Veamos esta situación con la codificación del número
65; si se almacena como caracteres ASCII utilizando un byte por símbolo, se necesita un total de
16 bits, de modo que elnúmero mayor que se podía almacenar en 16 bits (dos bytes) sería 99. Sin
embargo, si utilizamos notación binaria para almacenar enteros, el rango puede ir de 0 a 65.535
(216 – 1) para números de 16 bits.
Por consiguiente, la notación binaria (o variantes de ellas) es la más utilizada para el
almacenamiento de datos numéricos codificados.
La solución que se adopta para la representación de datos numéricos es la siguiente: al introducir
un número en la computadora se codifica y se almacena como un texto o cadena de caracteres,
pero dentrodel programa a cada dato se le envía un tipo de dato específico 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 método práctico realizado por la computadora es que una vez definidos los datos numéricos de
un programa, una rutina (función interna) de la biblioteca del compilador (traductor) del lenguaje de
programación se encarga de transformar la cadena de caracteres que representa el número en su
notación binaria.

Existen dos formas de representar los datos numéricos: números enteros o números reales.

Representación de enteros
Los datos de tipo entero se representan en el interior de la computadora en notación 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

Representación de reales

Los números reales son aquellos que contienen una parte decimal como 2,6 y 3,14152. Los reales
se representan en notación científica o en coma flotante; por esta razón en los lenguajes de
programación.
Existen dos formas de representar los números reales. La primera se utiliza con la notación del
punto decimal.
Ejemplos
12.35 99901.32 0.00025 9.0
La segunda forma para representar números en coma flotante en la notación científica o
exponencial,conocida también como notación E. Esta notación es muy útil para representar
números muy grandes o muy pequeños.
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

Representación de caracteres

Un documento de texto se escribe utilizando un conjunto de caracteres adecuado al tipo de
documento.
En los lenguajes de programación se utilizan, principalmente, dos códigos de caracteres. El más
comúnes ASCII (American Standard Code for Information Interchange) y algunos lenguajes, tal
como Java, utilizan Unicode (www.unicode.org). Ambos códigos se basan en la asignación de un
código numérico a cada uno de los tipos de caracteres del código.
El código ASCII básico que utiliza 7 bits (128 caracteres distintos) y el ASCII ampliado a 8 bits (256
caracteres distintos) son los códigos más utilizados. Así se pueden representar caracteres tales
como 'A','B', 'c', '$', '4', '5', etc.

JAVA



3.1 CARACTERÍSTICAS DEL LENGUAJE DE PROGRAMACIÓN JAVA

Este lenguaje de programación creado por Sun Microsystems a mediados de la década de los 90
es el lenguaje de programación más 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 programación. El
índice reparte 100 puntos entre todos los lenguajes de programación existentes.

Java lidera dicho índice; y lo lleva liderando desde principios del 2001; otro de los méritos que
puede atribuirse es el liderar el ranking de Sourceforge de número de proyectos desarrollados en
un determinado lenguaje. En abril del 2005 superó al actual tercer lenguaje de programación, 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 más parecido a un
lenguaje de programación estándar. Proporciona una sintaxis para un lenguaje de programación,
un entorno de ejecución para las aplicaciones creadas en dicho lenguaje y un extenso conjunto de
librerías en las cuales se pueden apoyar dichas aplicaciones.

Java ME es una edición de Java orientada a programación de dispositivos móviles y empotrados.
En esta categoría encajan desde las tarjetas inteligentes (como las que se emplean en los DNI
electrónicos, en las tarjetas prepago o en las SIM de los teléfonos celulares) hasta terminales
móviles de última generación, pasando por los reproductores del formato de video de alta
definición BlueRay, o software de control de coches. Java ME proporciona un subconjunto de las
librerías y de las características del lenguaje de Java SE.

Este subconjunto puede variar dependiendo de para qué dispositivos estemos programando; si
estamos programando para terminales móviles de última generación están disponibles
prácticamente todas las características de Java SE. Sin embargo, si estamos programando para
tarjetas inteligentes el conjunto de librerías está considerablemente reducido, y el lenguaje de
programación soporta menos características; por ejemplo, no soporta tipos de datos reales ya que
estos dispositivos sólo tienen hardware para realizar aritmética de enteros.
Java ME es muy popular en la actualidad en dispositivos móviles, aunque a menudo pase
desapercibido. Para darse una idea de la presencia de esta tecnología, basta mencionar que se
han manufacturado 3.500.000.000 de tarjetas inteligentes basadas en la tecnología Java, y más de
1.400.000.000 de teléfonos 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
ningún modo el lenguaje de programación. Se añade un conjunto amplio de librerías y una serie de
contenedores de aplicaciones (contenedores web y de EJB). Estos contenedores proporcionan
servicios, de un modo automático y transparente para el programador, a las aplicaciones que
contienen, servicios como transaccionalidad, persistencia, autenticación, autorización, etcétera.
Nuevamente, muchas de las web que visitamos diariamente están hechas en Java: el propio GMail
es un ejemplo.

CARACTERÍSTICAS DE JAVA

 Se dice que Java es un lenguaje sencillo de aprender (para mí no lo es tanto).
 Java es completamente independiente de la máquina y el sistema operativo en el que se
ejecuta. El código generado por el compilador Java es independiente de la arquitectura: podría
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 código generado por el
compilador mediante una máquina virtual.
 Java es portable a nivel de código fuente.
 Java es un lenguaje de programación robusto y seguro. Estas características surgen en
buena medida de ser un lenguaje que no es ejecutado directamente por la CPU, sino que es
ejecutado por la máquina virtual. Esta máquina virtual puede controlar los permisos que se le
otorgan a una determinada aplicación y garantizar que dichos permisos no son violados.
 Java proporciona soporte para la creación de Applets. Estos son programas diseñados
para ser ejecutados de modo automático cuando un usuario visita una página 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 código máquina para una determinada
CPU, código que no precisa de la máquina virtual para ser ejecutado, y guardan el resultado de
dicha conversión, volviéndolo a llamar en caso de volverlo a necesitar, con lo que se evita la
sobrecarga de trabajo asociada a la interpretación del bytecode.
No obstante, por norma general el programa Java consume bastante más memoria, ya que no sólo
ha de cargar en memoria los recursos necesarios para la ejecución del programa, sino que además
debe simular un sistema operativo y hardware virtuales (la máquina 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 funcionarán del mismo modo.
Es bien sabido que el entorno JDK no es el más adecuado para el desarrollo de aplicaciones Java,
debido a funcionar única y exclusivamente mediante comandos.
Hoy en día la programación 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 símbolo 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 después al leer los
elementos de este lenguaje y sus características, nos será más fácil entenderle, (al menos así
sucedió conmigo).

//**Programa "hola mundo"
public class HolaMundo
{
public static void main(String[] args)
{
//La siguiente instrucción 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 instrucción public class.
A cada línea se le llama sentencia y todas las sentencias que inician con // son comentarios y, por
tanto, serán ignorados por el compilador.

La línea 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 paréntesis, 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 después 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 extensión
java y otro con extensión class.

ELEMENTOS DEL LENGUAJE

DATO

Es la representación formal de hechos, conceptos o instrucciones adecuada para su interpretación
y procesamiento.

TIPO DE DATO
• Constantes
• Variables
Especificación de un dominio (rango de valores) y de un conjunto válido de operaciones a los que
los compiladores y traductores asocian un esquema de representación 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 través de dispositivos de entrada (el teclado por ejemplo) o de valores que se van
calculando dentro de un programa.

CLASIFICACIÓN DE LOS TIPOS DE DATO
a. En función de quien los define:

 Tipos de datos estándar
 Tipos de datos definidos por el usuario
b. En función de su representación 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 númerico:

 Numéricos enteros byte short int long
 Numéricos en coma flotante float double
ENTEROS
Almacenan, como su propio nombre indica, números enteros; esto es, números sin parte decimal.
En Java hay cuatro tipos de enteros, como se muestra a continuación. Esta tabla también nos
muestra el rango (valores mínimos y máximos) de cada tipo y el espacio que ocupan en memoria,
medido en bytes.



Para indicar que un literal entero es de tipo long debemos añadirle una L al final: el número 23 es
un int y el número 23L es un long.
Es importante que en el momento de definir los tipos de datos dentro de la edición del programa,
se escriban con minúsculas los tipos de dato.
.
REALES
Almacenan números reales, es decir, números con parte decimal. Como se muestra en la tabla 2,
hay dos tipos diferentes de número real; se diferencian tanto en la precisión (el número 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 añadir una F después
de él: 2.3F, sino por defecto será double.

DATOS DE TIPO CARÁCTER

Java está codificado en un formato denominado Unicode. Unicode es una extensión de ASCII, ya
que éste último sólo tenía capacidad para representar 256 símbolos distintos. Para poder
representar todos los alfabetos (chino, japonés, ruso...) y una mayor cantidad de símbolos 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 carácter 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 LÓGICOS: BOOLEAN
Se trata de un tipo de dato que solo puede tomar dos valores: true y false

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

DEFINICIÓN 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 compilación. Se puede declarar e inicializar valor a una variable en una misma línea:
int i = 0;
En Java, después de cada línea de código siempre debe ir un ";".
Declaración e inicialización pueden hacerse en líneas diferentes:
int i ;
i = 0;
Es posible declarar e iniciar varias variables en una línea:
int i=3, j,k=2;
Los caracteres aceptados en el nombre de una variable son los comprendidos entre AZ, az
, _, $ y cualquier carácter que sea una letra en algún idioma. En Java, al igual que en todo lenguaje
depr ogramación, 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 CONVERSIÓN ENTRE DISTINTOS TIPOS NUMÉRICOS
Las normas de conversión entre tipos numéricos son las habituales en un lenguaje de
programación: si en una operación se involucran varios datos numéricos de distintos tipos todos
ellos se convierten al tipo de dato que permite una mayor precisión y rango de representación
numérica; así, por ejemplo:
• Si cualquier operando es double todos se convertirán en double
• Si cualquier operando es float y no hay ningún doublé todos se convertirán a float
• Si cualquier operando es long y no hay datos reales todos se convertirán en long
• Si cualquier operando es int y no hay datos reales ni long todos se convertirán en int
• En cualquier otro caso el resultado será también un int
.
Java sólo tiene dos tipos de operadores para operar números enteros: uno que aplica para operar
datos de tipo long, y otro que emplea para operar datos de tipo int (esto también 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 operación el operador de
los datos tipo int, por lo que el resultado de dicha operación será un int siempre.
Estas conversiones son importantes a la hora de determinar en qué tipo de variable guardamos el
resultado de la operación; ésta ha de tener un rango de representación mayor o igual al rango de
representación de la variable con mayor rango de representación involucrada en la operación. Si
es de rango superior no habrá problemas. Si no respetamos esta regla, el compilador generará un
error.

Es posible convertir un dato de jerarquía “superior” a uno con jerarquía “inferior”, arriesgándonos a
perder información en el cambio. Este tipo de operación (almacenar el contenido de una variable
de jerarquía superior en una de jerarquía inferior) se denomina cast o molde. Para llevar a cabo un
cast debemos poner delante de la variable cuyo tipo queremos cambiar, entre paréntesis, el tipo de
la variable al cual queremos realizar el cambio.

En Java cuando "se suma" un valor numérico 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 aritméticos, relacionales y lógicos con los que cuenta Java.
Operadores aritméticos
Los operadores aritméticos de Java son:







El módulo de la división de dos enteros puede obtenerse mediante el operador %. Por ejemplo,
7/4= 1; 7% 4=3
.
Además, existen los operadores decremento e incremento:

-- Decremento
++ Incremento

La operación que realizan son incrementar y decrementar en una unidad a la variable a la que se
aplican. Su acción es distinta según se apliquen antes (preincremento, ++a) o después
(postincremento a++) de la variable. En el caso del operador preincremento, si la variable sobre la
que se aplica forma parte de una expresión primero se incrementará el valor de la variable, y a
continuación se evaluará la expresión. En el caso del operador postincremento, si la variable sobre
la que se aplica forma parte de una expresión, primero se evaluará la expresión y a continuación
se incrementará el valor de la variable.

Operadores relacionales

Los operadores relacionales son operadores que comprueban si se cumple una determinada
relación, de igualdad, desigualdad, mayor que... entre dos valores numéricos. El resultado de la
aplicación de cualquier operador relacional es siempre un boolean, es decir, la expresión que surge
de comparar dos variables o literales mediante un operador relacional sólo puede tomar dos
valores: true y false.






Operadores lógicos
Estos operadores se aplican sobre valores lógicos, es decir, sobre datos de tipo
boolean. En Java hay tres operadores lógicos: la negación, el AND (Y) lógico y el OR (O) lógico.




























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 numéricos
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 sería doble
System.out.println("i: "+i+" j: "+j);
k=(int)j;//empleo de un cast una constante de jerarquía superior se almacena en una de
tipo inferior, perdiendo parte de la información
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;provocaría un error
System.out.println("m: "+m);
}
}

_________________________________________________________________________
Programa para calcular el área de un círculo, y poder practicar operaciones
matemáticas 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 círculo: ");
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 círculo 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 utilización de la clase Math, utilizando algunas
funciones trigonometricas y potencias.


public class Ejemplo_3
{
//Ejemplo del método 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 números 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 tamaño 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 dirección dentro del vector.


public class Ejemplo_5b
{
//Definimos un tipo enumerado fuera del main y fuera de cualquier método
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 comparación, 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 instrucción 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 instrucción 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 carácter 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 instrucción 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 instrucción DO-WHILE

public class Ejemplo_9
{
public static void main(String[] args)
{
double r;
//Igual al Ejemplo_8 pero ahora la condición 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 instrucción FOR

public class Ejemplo_10
{
public static void main(String[] args)
{
//Aquí definimos el array que tendra los elementos de la iteracción
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 ejecución del método principal
public static void main(String[] args)
{

// Creación del Scanner
Scanner input = new Scanner (System.in);

int number1;//primer núnero a sumar
int number2;//segundo número a sumar
int sum;//resultado de la suma de los dos números
System.out.println("Introduce el primer entero:");
number1 = input.nextInt();//lee el primer número entero

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

sum = number1 + number2;

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


}// fin del método principal
}//fin de la clase Addition
_________________________________________________________________________
___________
Programa para almacenar y cambiar 20 números en un arreglo
unidimensional

package matriz_20;

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

/**
*
* @author Xochitl Meza Vázquez

*/
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 Vázquez

*/
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 número 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 instrucción 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 número: ");
cadena = br.readLine();
n= Integer.parseInt(cadena);
for(i=1; i<=10 ;i++ )
System.out.println(i+" * "+ n + " = "+ i*n);
}
}