Unidad 1

Fundamentos del lenguaje

0 comentarios:

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
 Analizar y solucionar problemas informáticos y representar su solución mediante herramientas de software orientado a objetos

0 comentarios:

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 );

0 comentarios:

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. 

0 comentarios:

Copyright © 2013 Blog para POO - BTemplate by SoraTemplates and Blogger Themes.