Introduccion
Caracterización de la
asignatura.
En esta asignatura aporta al
perfil del egresado los conceptos de la metodología orientada a objetos que
permiten la creación y optimización de aplicaciones basadas en clases. Se
estudian aquí los mecanismos que permitan un desarrollo ágil a través de la
reutilización de tipos de objetos y control de errores.
Intención didáctica.
El temario está organizado en
seis unidades. Las primeras dos unidades, están centradas en los conceptos
básico de los lenguajes de programación; Las unidades tres, cuatro y cinco, se
tratan los conceptos de la programación orientada a objetos y en la unidad
seis, lo referente a archivos.
La importancia de la materia se
centra en la solución de problemas en un lenguaje de programación orientado a
objetos, por lo que se recomienda desarrollar programas demostrativos en cada
unidad de la aplicación de los conceptos vistos en clase, poniendo atención en
los avances de los estudiantes.
OBJETIVO(S) GENERAL(ES) DEL
CURSO (competencias específicas a desarrollar en el curso)
• Utilizar técnicas de modelado
para la solución de problemas.
• Aplicar la sintaxis de un
lenguaje orientado a objetos.
• Aplicar un lenguaje orientado a
objetos para la solución de problemas.
COMPETENCIAS PREVIAS
1.11 Estructuras de Control
En todos los algoritmos
realizados hasta este punto, cada instrucción se ha ejecutado exactamente una
vez en el orden en que aparecería. Sin embargo, con frecuencia, se encuentran
situaciones en las que se deben proporcionar instrucciones alternativas que pueden
o no ejecutarse dependiendo de los datos de entrada, reflejado el cumplimiento
o no de una determinada condición.
Una sentencia puede
constar de una de las siguientes:
Una sentencia única o un
bloque de sentencias o ninguna sentencia (sentencia vacía).
Se pueden dividir las
sentencias de control de programa principalmente en 3 categorías:
a) Secuenciales
b) Selectivas
c) Repetitivas
a) SECUENCIALES
Las instrucciones se
ejecutarán en el orden en que ellas aparecen en el programa, a menos de que se
indique lo contrario, el sistema ejecutará automáticamente los enunciados en
una secuencia.
b) SELECTIVAS
Con este tipo de secuencia se
toman decisiones lógicas. Con éstas se evalúa una condición y en función del
resultado de la misma se realiza una opción u otra. La
condición puede resultar verdadera o falsa, así es como se decide si la
condición se ejecuta o no.
Las condiciones se especifican
utilizando expresiones lógicas y relacionales.
Existen tres tipos de
estructuras de selección.
Simple
Se ejecuta una acción si la
condición es verdadera, si la condición es falsa pasa por alto la condición.
Se utiliza la estructura if
(condicion) en este tipo de secuencia.
Bicondicional
La ejecución de la acción de
esta secuencia depende del valor de esta. La acción de diferente en cada valor.
Se utiliza la estructura if (condicion) else en este
tipo de secuencia.
Condición múltiple
Depende del valor de una
expresión la acción que se ejecutara, pero en esta secuencia se decidirá entre
diferentes acciones. Se utiliza la estructura switch (expresion) en
esta secuencia.
Repetitivas
Repiten una secuencia de
instrucciones un número determinado de veces, en tanto cierta condición se
mantenga verdadera.
Esta secuencia proporciona 3
tipos de estructuras repetitivas:
- While
- For
-Do while
En las estructuras selectivas
y en las estructuras repetitivas se utilizan expresiones lógicas y
relacionales.
Operaciones Relacionales
Las expresiones relacionales
pueden tomar la siguiente forma:
operando1 operador
relacional operando2
Los operandos son
variables, valores constantes o expresiones de algún tipo de dato que deben ser
del mismo tipo y el operador relacional determina la relación que existe
entre dos valores.
Los operadores relacionales
son los siguientes:
· <
· >
· <=
· >=
· ==
· !=
Ejemplo:
· 4<5
· x<=y
· z==89
Operaciones Lógicas
Las expresiones lógicas se
forman relacionando operandos booleanos mediante operadores lógicos, de la
siguiente manera:
Operando 1 operador
lógico operando 2
Donde los operandos son
expresiones relacionales que proporcionan dos únicos valores el valor de verdad
y falso y operador lógicocorresponde a los operadores
lógicos.
Los operadores lógicos son los
siguientes:
· &&
· ||
· !
Ejemplo:
{(num<34)
&&(num>=345)} || {num<=214}
PRESEDENCIA Y ASOCIATIVIDAD DE OPERADORES
1 ( )
2 * / %
3 + -
4 > , < , >= , <= , ==
, ! =
5 && , || , !
6 =
SENTENCIA IF
Dado que las expresiones
lógicas toman el valor verdadero o falso, se necesita una sentencia de control
que dirija a las computadoras para ejecutar una sentencia si la expresión es
verdadera, en caso contrario no se toma ninguna acción.
La forma general de la
sentencia if es:
if (condición) sentencia;
La sentencia if funciona
de la siguiente manera:
1. Se evalúa la expresión
lógica
2. Si la expresión toma
el valor verdadero, se ejecutará la sentencia y sino sigue con la siguiente
sentencia.
Ejemplo:
If (num<20)
Cout<<”el valor esta dentro del rango”;
SENTENCIA IF/ELSE
La sentencia if/else se
ejecuta una acción cuando toma un valor de verdad y cuando el valor es falso o
no cumple con la condición cumple con otra acción.
La forma general de la
sentencia if/else es:
if (condición)
sentencia;
else
sentencia;
La sentencia if funciona
de la siguiente manera:
1. Se evalúa la expresión lógica
2. Si la expresión toma el valor verdadero, se
ejecutará la sentencia y sino sigue con la siguiente sentencia.
3. Si la expresión toma el valor de
falso entonces se ejecutara la sentencia.
4. El control pasa de nuevo inmediatamente a
la siguiente sentencia del programa.
Ejemplo:
If (num<44)
Cout<<”esta dentro del rango”;
Else
Cout<<”esta fuera del rango”;
SENTENCIA IF/ELSE
ANIDADAS
La sentencia que sigue de la
palabra else puede ser cualquiera, incluso otra sentencia de este mismo tipo.
Cuando una o más sentencias otra sentencia, se dice que dicha sentencia esta
anidada y al proceso anidamiento.
Una sentencia if anidad se
puede utilizar para construir decisiones con diferentes alternativas.
if (condición)
sentencia;
else if (condición)
sentencia;
else if (condición)
sentencia;
if (condición)
sentencia;
else
if (condición)
sentencia;
else
if (condición)
sentencia;
else
sentencia;
Ejemplo:
If (num<=56)
Cout<<”Esta dentro del rango”;
Else
If
(num>=115)
Cout<<”Esta
fuera del rango”;
Else
If
(num<=0)
Cout<<”Valor no
Valido”;
SWITCH-CASE
La sentencia múltiple switch
( ) está formada por una serie de etiquetas case que
solamente cumplen con una condición determinada y un caso opcional default en
el que están contemplados todos los valores que no se encuentran en los case.
La forma general de las
sentencias switch ( ) es:
switch (expresion)
{
case constante1:
sentencia1;
break;
case constante2:
sentencia2;
break;
case constante_n:
sentencia_n;
break;
default:
sentencias;
break;
En esta sentencias el case solamente
evalúa una expresión y no mas aunque puede llevar n numero de case, pero
son un gran numero se recomienda usar ciclos. Estas expresiones solo puede ser
de tipo entero y de un solo carácter, al igual las constantes que se colocan.
Si el valor de la expresión es
igual a alguna de las constantes, se ejecutará el bloque de instrucciones hasta
encontrar la instrucción break, de lo contrario pasa al siguiente
bloque y si no cumple ninguno de los bloques entonces se ejecuta las sentencias
del default.
Ejemplo:
Switch (confiabilidad_del_producto) {
Case A:
Cout<<”perfecta”;
Break;
Case B:
Cout<<”Muy Buena”;
Break;
Case C:
Cout<<”Regular”;
Default:
Cout<<”Fuera de rango”;
Break ;
CICLO FOR
La estructura de repetición for maneja
de manera automática todos los detalles de la repetición controlada por
contador.
Funciona de la siguiente
manera:
1. El valor inicial de la variable
solo se ejecuta una vez al inicio del ciclo.
2. Se ejecuta la condición.
3. Si es verdadera pasará a ejecutar
el cuerpo del for.
4. Se ejecuta el incremento o
decremento de la variable.
5. Pasa a preguntar por la condición,
resultando así un proceso recursivo.
6. Si la condición fuera falsa la
ejecución pasará a la siguiente instrucción.
La forma general de la
sentencia for es:
for (inicialización;
condición; incremento/decremento)
sentencia;
Esta formada por lo siguiente:
· inicialización es
una sentencia de asignación que el compilador usa para establecer la variable
de control del ciclo.
· condición es
una expresión que comprueba la variable de control del ciclo cada vez para
determinar cuándo debe salir del ciclo.
· incremento/decremento define
la manera en que cambia la variable de control de ciclo cada vez que la
computadora repite el mismo.
El ciclo for continuará
la ejecución mientras la condición sea verdadera. Una vez que es
falsa, la ejecución del programa continuará en la sentencia que sigue en el
programa.
Ejemplo:
Int x
for ( x = 0; x <= 100;
x++){
cout<<x+1;
}
WHILE
Permite que se repita cierta
acción en cuanto la condición evaluada sea verdadera y en el momento en que la
condición sea falsa saldrá del ciclo y continuara con la siguiente instrucción.
La forma general de la
sentencia while es:
while (
condición )
sentencia;
Dentro del cuerpo del while se
incluye la condición para aumentar la variable de control y asi puede
ejecutarse correctamente el ciclo.
{
char
c;
ch
= ‘ \0 ‘;
while
(ch ! = ‘A’ )
ch
= getche ( );
}
El ciclo for funciona de la
siguiente manera:
1.-Comienza comprobando la
condición con la inicialización de la variable.
2.- Determina si es verdadera
y el ciclo comienza.
3.-si la condición llega a
ser falsa el bucle termina.
DO – WHILE
El funcionamiento de la
estructura es sililar a while, la diferencia es que la
condiccion se evalua al final de la estructura.
Así que en esta estructura se
ejecuta por lo menor una sola vez la(s) sentencia(s).
La forma general de la
sentencia do-while es:
do {
sentencia;
}while (condición);
Ejemplo:
int num;
do{
cin
>> num;
}while ( num >
100 );
1.10 Conversiones de Tipos de Datos (cast)
Para que el resultado sea el esperado hay muchas
ocasiones que es necesario realizar alguna conversión de tipos.
Java emplea siempre que puede la representación en forma
int de 32 bits, por razones de eficacia, por lo tanto permite la conversión
automática o promoción donde el tipo más pequeño puede ser colocado en el
espacio compatible más grande, así un tipo byte, puede ser colocado
perfectamente en una variable int, la cual tiene espacio para contener el
valor. Lo contrario no siempre es cierto y se hace necesaria una conversión
explícita, estrechamiento o casting:
Int a=100;
byte b= (byte) a;
El casting se utiliza
cuando Java no puede realizar automáticamente la conversión de tipo,
generalmente dado que el receptor tiene menos espacio que el tipo de origen,
por lo que se hace necesario un casting.
El casting, pues, es la
conversión explícita y se realiza anteponiendo al tipo origen el nombre del
tipo al que se desea realizar la conversión entre paréntesis:
int intValue= (int)
floatValue;
El casting es automático
desde los tipos de pequeña ocupación a los de gran ocupación:
longValue=intValue; /**
Permitido. El tipo convertido es menor que el tipo hacia el que se convierte.*/
longValue= (int)
intValue; /** Escrito de forma explícita, no necesario para este
caso, pero correcto */
Sin embargo si se quiere
hacer la conversión a un tipo más pequeño:
intValue=longValue; /**
El compilador nos lanzaría un error*/
intValue=(int)
longValue; /** Esta permitido, sin embargo corremos el riesgo de
perdida de datos*/
En las operaciones
pueden entremezclarse cualesquiera tipos decimales, pero el resultado se promociona
a un tipo que no dé problemas de desbordamiento:
–
Si solo intervienen tipos byte, short, int el resultado es int.
–
Si interviene un tipo long el resultado es long.
–
Si interviene un tipo float el resultado es float.
–
Si interviene un tipo double el resultado es double.
Ejemplo: Creamos un
programa llamado ConversionImplicita en la que se declaren variables de tipo
byte, char, short, int, float, y double, y se realizan las siguientes
operaciones:
1.-Resul1 = Multiplicamos
el valor float con el valor byte.
2.-Resul2 =Dividimos el
valor int con el valor char.
3.-Resul3 =Multiplicamos el
valor double con el valor short.
4.-Resul4 =Dividimos el
valor int con el valor char.
5.-ResulTotal = Resul1 +
Resul2 + Resul3 + Resul4
6.-Y lo mostramos por
pantalla.
class
ConversionImplicita {
public static void main(String[] args){
byte sByte=50;
char sChar=”a”;
short sShort=1024;
int sInt=50000;
float sFloat=5.57f;
double sDouble=.1234;
// Conversión Implicita
o Automática
float Result1= sFloat*sByte;
int Result2= sInt/sChar;
double Result3= sDouble*sShort;
// Conversion Explicita
o Forzada
double Result4= (double) (sInt/schar);
double ResultTotal= Result1 + Result2+ Result3+ Result4;
system.out.print(“el valor
total es: “);
system.out.println(Result4);
}}
Cabe destacar en este
ejercicio el uso de la variable char como entero. Esto es debido a que una
variable char es equivalente al valor entero de dicho carácter en la tabla
ASCII, en este caso la letra ‘a’ corresponde con el valor 97.
Suscribirse a:
Entradas (Atom)
0 comentarios: