Translate

martes, 25 de noviembre de 2014

la cicla

En la construccion se hace necesaria la ejecucion de bloques de instrucciones un numero especifico de veces o  según   se   siga   cumpliendo    una       determinada condicion. las estructuras  vistas   hacen       la ejecucion de uno  u otro bloque de instrucciones, pero no posibilitan    la    ejecucion  reiterativa de un determinado conjunto        de    instrucciones.         el proposito de este tema es fundamentar las estructuras de control repetitivas,    analizar   su    formato   y   lograr  una mayor comprension de   su uso    mediante la    presentación       de     ejemplos resueltos mostrados acontinuacion en los diferentes link.
por favor les recuerdo que estos archivos   dados  a   ustedes   por   medio de esta pagina es para que cada codigo sea comprendido    de manera eficaz y si por algun motivo no tienes  claro algo háznoslos    llegar    por medio     de los comentarios que nosotros gratamente te   ayudaremos;  aquí unos    link para que distraigas un rato con los códigos y los  edites   y   les agregues         lo que quieras y si quieres nos compartes lo nuevo que   aprendisteis.


miércoles, 19 de noviembre de 2014

ERRORES COMUNES DE PROGRAMACIÓN

1. Si al utilizar funciones de la biblioteca matemática no incluye el archivo de encabezado matemático, se
producirá un error de sintaxis. Por cada función de la biblioteca estándar que utilice en un programa, debe
indicar un archivo de encabezado estándar.
2. La omisión de la clase de valor devuelto de una definición de función es un error de sintaxis si el prototipo
especifica una clase devuelto distinto de int.
3. No devolver un valor desde una función que supuestamente debe hacerlo es un error de sintaxis.
4. La devolución de un valor desde una función cuya clase de devolución se ha declarado como void es un error
de sintaxis.
5. La declaración de parámetros de función de la misma clase como float x, y, en lugar de float x, float y, causará
un error de compilación debido a que para cada parámetro de la lista de parámetros se requiera una clase de
datos.
6. Un punto y coma después del paréntesis derecho de la lista de parámetros de una definición de función es un
error de sintaxis.
7. Volver a definir un parámetro de función como variable local en la función es un error de sintaxis.
8. El ( ) de una llamada de función de hecho es un operador de C++. Provoca que se invoque a la función. Omitir
el () de una llamada de función que no tiene argumentos no es un error de sintaxis. Sin embargo si pretendía
que se llamara a la función, esto no sucederá.
9. Definir una función dentro de otra es un error de sintaxis.
10. Sucede un error de sintaxis si el prototipo de función, el encabezado de la función y las llamadas de la función
no coinciden en el número, clase de datos y orden de los argumentos y parámetros, así como en el tipo de valor
devuelto.
11. La omisión del punto y coma al final de un prototipo de función es un error de sintaxis.
12. Las llamadas de función que no sean iguales a su prototipo provocan errores de sintaxis.
13. Cuando el prototipo de función y la definición de la función no son iguales, sucede un error de sintaxis.
14. La conversión de una clase de datos más alto en la jerarquía de promoción a un tipo menor puede cambiar su
valor.
15. Omitir el prototipo de una función cuando esta no ha sido definida antes de ser llamada por primera vez es un
error de sintaxis.
16. El intento por generar números aleatorios con srand() en lugar de rand() es un error de sintaxis, debido a que
la función srand() no devuelve un valor.
17. Asignarle el equivalente entero de una constante de enumeración a una variable del tipo de la enumeración es
un error de sintaxis.
18. Si después de definir una constante de enumeración intenta asignarle otro valor, provocará un error de sintaxis.
19. Indicar varios especificadores de clase de almacenamiento para un identificador es un error de sintaxis. Sólo se
le puede aplicar un especificador de clase de almacenamiento a un identificador. Por ejemplo, si incluye
register, no incluya también auto.
20. Por lo general es un error de lógica utilizar el mismo nombre para un identificador dentro de un bloque interno
que para un identificador que es parte de un bloque externo cuando, de hecho, el programador quiere que el
identificador del bloque externo esté activo en el bloque interno.
21. El no devolver un valor desde una función recursiva cuando sea necesario, causará que casi todos los
compiladores generen un mensaje de advertencia.
22. La omisión del estado primitivo o la escritura incorrecta del paso de recursión de modo que no converja al
estado primitivo, provocará una recursión infinita y agotará tarde o temprano la memoria. Esto es análogo al
problema de los ciclos infinitos en las soluciones iterativas (no recurrentes) La recursividad infinita también
puede ser provocada al proveer una entrada no esperada.
23. La codificación de programas que dependen del orden de evaluación de los operandos de los operadores que no
sean &&, ||, ?: ni coma (,) puede generar errores, pues los compiladores no necesariamente evaluarán los
operandos en el orden que el programador espera. MIGUEL Á. TOLEDO MARTÍNEZ
SUGERENCIAS, OBSERVACIONES Y CONSEJOS: SEGUNDA PARTE SUGERENCIAS-3
24. Es un error de lógica que una función no recursiva se llame a sí misma, ya sea directa o indirectamente, a
través de otra función.
25. Los programas en C++ no se compilan a menos que se indiquen prototipos de función para todas las funciones o
que se definan las funciones antes de usarlas.
26. Debido a que los parámetros de referencia se mencionan sólo por nombre en el cuerpo de la función llamada, el
programador podría tratarlos inadvertidamente como parámetros de una llamada por valor. Esto puede provocar
efectos secundarios inesperados si el invocador modifica las copias originales de las variables.
27. Declarar múltiples referencia en una instrucción suponiendo que el & se distribuye a través de una lista de
nombres de variables separada por comas. Para declarar las variables x, y y z como referencias a un entero
emplee la notación int &x = a, &y = b, &z = c; en lugar de la notación incorrecta int& x = a, y = b, z = c; o la
otra notación incorrecta común int &x, y, z;
28. No inicializar una variable de referencia al declararla es un error de sintaxis.
29. Intentar reasignar una referencia declarada previamente como alias de otra variable es un error de lógica. El
valor de la otra variable simplemente se le asigna a la localidad para la que la referencia es un alias.
30. Devolver un apuntador o referencia a una variable automática en una función llamada es un error de lógica.
Algunos compiladores presentarán un mensaje de aviso al encontrar esto en un programa.
31. Especificar e intentar utilizar un argumento predeterminado que no sea el de más a la derecha (último) sin tomar
los predeterminados de todos los argumentos a su derecha es un error de sintaxis.
32. Intentar acceder a una variable no global desde un bloque exterior por medio del operador unario de resolución
de alcance es un error de sintaxis si no existe una variable global con el mismo nombre que la variable del
bloque exterior, y es un error de lógica si es que existe.
33. La creación de funciones sobrecargadas con listas de parámetros idénticas y diferentes tipos de devolución es un
error de sintaxis.
34. Una función a la que se le han omitido los argumentos predeterminados podría ser llamada de manera idéntica a
otra función sobrecargada; esto es un error de sintaxis. Por ejemplo, cuando un programa tiene tanto una
función que explícitamente no recibe argumentos como otra con el mismo nombre que contiene sólo
argumentos predeterminados, sucede un error de sintaxis cuando se intenta utilizar dicho nombre de función
en una llamada que no pasa argumentos.
35. No poner la palabra clave class antes de cada parámetro de tipo de una plantilla de función es un error de
sintaxis.
36. No emplear todos los parámetros de tipo de una plantilla de función en la firma de la función es un error de

sintaxis.

jueves, 13 de noviembre de 2014

Arreglo de punteros


Arreglos de punteros NO es lo mismo que puntero a arreglos.
Son arreglos en los que cada uno de sus elementos es un puntero.
Cada uno de los punteros puede apuntar a cualquier ubicación en memoria que pueda ser tratada como entero.
int *px[5];
int x;
px[0] = &x;
*px[0] = 10;
cout << x; //10
En este caso, px[0] lo estamos haciendo que apuntea la dirección donde se encuentra x.
px
x
px[1]
px[2]
px[3]
px[4]
px[0]
10
Memoria


ejemplo de arreglos en c++

Ejemplos:
int arregloEntero[10];
//Declaracion de un arreglo de 10 elementos, sin inicializar. 
arregloEntero[5] = 45; //Asignacion de 45 al elemento 6 del arreglo.


double arrPuntoFlotante[3] = {1.1,1.2,1.3};
//Declaracion y asignacion en un arreglo de 3 elementos double.

int a[4], b[5];
//Declaracion de dos arreglos enteros, de 4 y 5 elementos.
Ahora veamos un ejemplo, donde se trata un arreglo de 10 elementos con ciclos for:
//Uso de arreglos en C++
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
int main()
{
  int arregloEntero[10] = {0};
  //Arreglo entero de 10 elementos inicializados todos en 0.
  cout << "Arreglo recien declarado: " << endl;
  for (int i = 0 ; i < 10 ; i++)
    //Notar el menor estricto (<) para ir desde 0 hasta 9
    cout << "arregloEntero["<<i<<"]="<<arregloEntero[i] << endl;
  cout << "Introduzca 10 nuevos valores " << endl;
  for (int i = 0 ; i < 10 ; i++)
    //Notar el menor estricto (<) para ir desde 0 hasta 9
    {
      cout << " Introduzca nuevo valor para
arregloEntero["<<i<<"]" << endl;
      cin >> arregloEntero[i];
    }
  cout << "Luego de los valores introducidos, el arreglo quedo asi: " << endl;
  for (int i = 0 ; i < 10 ; i++)
    //Notar el menor estricto (<) para ir desde 0 hasta 9
    cout << "arregloEntero["<<i<<"]="<<arregloEntero[i] << endl;
  return 0;
}


que es un arreglo de c++

Un arreglo en C++ es un conjunto de datos que se almacenan en memoria de manera contigua con el mismo nombre. Para diferenciar los elementos de un arreglo se utilizan índices detrás del nombre del arreglo y encerrados por []. El elemento 5° (quinto) de un arreglo, es representado por el índice [4], ya que los índices comienzan en 0. Esto significa que un arreglo de 10 elementos tendría los índices del 0 al 9: [0...9]

miércoles, 12 de noviembre de 2014

juego en c++

El juego de “Adivinar el número” consiste ni más ni menos en que el computador elige un número aleatorio entre el 0 y el 100 y nos empieza a solicitar valores, nosotros debemos introducir números hasta dar con la solución.

Es un ejercicio muy sencillo, que no requiere de conocimientos avanzados y que no ofrece demasiada complicación en comparación a otros ejercicios.

El código del juego es el siguiente:

#include <stdio.h>

int main(int argc, char *argv[])
{
    int num, num2, opc=0;
   
    printf("\n Adivinar numero");
    printf("\n 1 - Comenzar.");
    printf("\n 2 - Salir.\n");
    printf("\n Introduce una opcion:");
    scanf("%d",&opc);
   
    while (opc!=2)
    {
        num = rand() % 100;//Origina aleatoriamente numeros entre 0 y 99
       
        printf("\n Introduce numero: ");
        scanf("%d",&num2);
       
        while(num!=num2)
        {
            if (num>num2)
               printf("Es mayor");
            else
                 printf("Es menor");
                
            printf("\n Introduce numero: ");
            scanf("%d",&num2);
        }
       
        printf("\n Has acertado! \n");
       
        printf("\n 1 - Jugar de nuevo.");
        printf("\n 2 - Salir.");
        printf("\n Introduce una opcion:");
       
        scanf("%d",&opc);
    }
     
    system("PAUSE");     
    return 0;
    }

- See more at: http://programavideojuegos.blogspot.mx/2013/05/juego-adivinar-el-numero-en-c.html#sthash.S9U8svfU.dpuf

martes, 28 de octubre de 2014

errores de sintaxis

ERRORES COMUNES DE PROGRAMACIÓN
1. Si al utilizar funciones de la biblioteca matemática no incluye el archivo de encabezado matemático, se
producirá un error de sintaxis. Por cada función de la biblioteca estándar que utilice en un programa, debe
indicar un archivo de encabezado estándar.
2. La omisión de la clase de valor devuelto de una definición de función es un error de sintaxis si el prototipo
especifica una clase devuelto distinto de int.
3. No devolver un valor desde una función que supuestamente debe hacerlo es un error de sintaxis.
4. La devolución de un valor desde una función cuya clase de devolución se ha declarado como void es un error
de sintaxis.
5. La declaración de parámetros de función de la misma clase como float x, y, en lugar de float x, float y, causará
un error de compilación debido a que para cada parámetro de la lista de parámetros se requiera una clase de
datos.
6. Un punto y coma después del paréntesis derecho de la lista de parámetros de una definición de función es un
error de sintaxis.
7. Volver a definir un parámetro de función como variable local en la función es un error de sintaxis.
8. El ( ) de una llamada de función de hecho es un operador de C++. Provoca que se invoque a la función. Omitir
el () de una llamada de función que no tiene argumentos no es un error de sintaxis. Sin embargo si pretendía
que se llamara a la función, esto no sucederá.
9. Definir una función dentro de otra es un error de sintaxis.
10. Sucede un error de sintaxis si el prototipo de función, el encabezado de la función y las llamadas de la función
no coinciden en el número, clase de datos y orden de los argumentos y parámetros, así como en el tipo de valor
devuelto.
11. La omisión del punto y coma al final de un prototipo de función es un error de sintaxis.
12. Las llamadas de función que no sean iguales a su prototipo provocan errores de sintaxis.
13. Cuando el prototipo de función y la definición de la función no son iguales, sucede un error de sintaxis.
14. La conversión de una clase de datos más alto en la jerarquía de promoción a un tipo menor puede cambiar su
valor.
15. Omitir el prototipo de una función cuando esta no ha sido definida antes de ser llamada por primera vez es un
error de sintaxis.
16. El intento por generar números aleatorios con srand() en lugar de rand() es un error de sintaxis, debido a que
la función srand() no devuelve un valor.
17. Asignarle el equivalente entero de una constante de enumeración a una variable del tipo de la enumeración es
un error de sintaxis.
18. Si después de definir una constante de enumeración intenta asignarle otro valor, provocará un error de sintaxis.
19. Indicar varios especificadores de clase de almacenamiento para un identificador es un error de sintaxis. Sólo se
le puede aplicar un especificador de clase de almacenamiento a un identificador. Por ejemplo, si incluye
register, no incluya también auto.
20. Por lo general es un error de lógica utilizar el mismo nombre para un identificador dentro de un bloque interno
que para un identificador que es parte de un bloque externo cuando, de hecho, el programador quiere que el
identificador del bloque externo esté activo en el bloque interno.
21. El no devolver un valor desde una función recursiva cuando sea necesario, causará que casi todos los
compiladores generen un mensaje de advertencia.
22. La omisión del estado primitivo o la escritura incorrecta del paso de recursión de modo que no converja al
estado primitivo, provocará una recursión infinita y agotará tarde o temprano la memoria. Esto es análogo al
problema de los ciclos infinitos en las soluciones iterativas (no recurrentes) La recursividad infinita también
puede ser provocada al proveer una entrada no esperada.
23. La codificación de programas que dependen del orden de evaluación de los operandos de los operadores que no
sean &&, ||, ?: ni coma (,) puede generar errores, pues los compiladores no necesariamente evaluarán los
operandos en el orden que el programador espera. MIGUEL Á. TOLEDO MARTÍNEZ
SUGERENCIAS, OBSERVACIONES Y CONSEJOS: SEGUNDA PARTE SUGERENCIAS-3
24. Es un error de lógica que una función no recursiva se llame a sí misma, ya sea directa o indirectamente, a
través de otra función.
25. Los programas en C++ no se compilan a menos que se indiquen prototipos de función para todas las funciones o
que se definan las funciones antes de usarlas.
26. Debido a que los parámetros de referencia se mencionan sólo por nombre en el cuerpo de la función llamada, el
programador podría tratarlos inadvertidamente como parámetros de una llamada por valor. Esto puede provocar
efectos secundarios inesperados si el invocador modifica las copias originales de las variables.
27. Declarar múltiples referencia en una instrucción suponiendo que el & se distribuye a través de una lista de
nombres de variables separada por comas. Para declarar las variables x, y y z como referencias a un entero
emplee la notación int &x = a, &y = b, &z = c; en lugar de la notación incorrecta int& x = a, y = b, z = c; o la
otra notación incorrecta común int &x, y, z;
28. No inicializar una variable de referencia al declararla es un error de sintaxis.
29. Intentar reasignar una referencia declarada previamente como alias de otra variable es un error de lógica. El
valor de la otra variable simplemente se le asigna a la localidad para la que la referencia es un alias.
30. Devolver un apuntador o referencia a una variable automática en una función llamada es un error de lógica.
Algunos compiladores presentarán un mensaje de aviso al encontrar esto en un programa.
31. Especificar e intentar utilizar un argumento predeterminado que no sea el de más a la derecha (último) sin tomar
los predeterminados de todos los argumentos a su derecha es un error de sintaxis.
32. Intentar acceder a una variable no global desde un bloque exterior por medio del operador unario de resolución
de alcance es un error de sintaxis si no existe una variable global con el mismo nombre que la variable del
bloque exterior, y es un error de lógica si es que existe.
33. La creación de funciones sobrecargadas con listas de parámetros idénticas y diferentes tipos de devolución es un
error de sintaxis.
34. Una función a la que se le han omitido los argumentos predeterminados podría ser llamada de manera idéntica a
otra función sobrecargada; esto es un error de sintaxis. Por ejemplo, cuando un programa tiene tanto una
función que explícitamente no recibe argumentos como otra con el mismo nombre que contiene sólo
argumentos predeterminados, sucede un error de sintaxis cuando se intenta utilizar dicho nombre de función
en una llamada que no pasa argumentos.
35. No poner la palabra clave class antes de cada parámetro de tipo de una plantilla de función es un error de
sintaxis.

36. No emplear todos los parámetros de tipo de una plantilla de función en la firma de la función es un error de sintaxis.

La sentencia do-while

La sentencia do-while se caracteriza porque permite repetir un bloque de instrucciones varias veces, ejecutándose obligatoriamente al menos 1 vez. Por lo que se puede ver que es muy similiar a la sentencia while, con la diferencia del número mínimo de veces que se ejecuta el bloque de instrucciones que contiene.
La condición que se establece se evalúa después de ejecutar el bloque de instrucciones que contiene la instruccióndo-while.
Se debe utilizar el siguiente formato:
do {
   BloqueDeSentencias;
} while (condición);
 
Como siempre, si el bloque de sentencias está formado por una única sentencia, se puede prescindir de las llaves, y hay que destacar que termina con un punto y coma, a diferencia de la sentencia while.
El orden de ejecución de una sentencia do-while es la siguiente:
1.   Ejecutar el bloque de sentencias.
2.   Evaluar la condición.
o    Si el resultado es true, volver al punto 1.
o    Si el resultado es false ir al punto 3.
3.   Continuar la ejecución del programa.
Ejemplo: Generar la secuencia de números siguiente: 1 2 4 7 11 16 22 etc. En ella, se va incrementando cada vez una unidad más respecto a la anterior. La secuencia se debe generar hasta que se alcance el valor máximo que indique el usuario:

{code}
    private void botónGenerarActionPerformed(java.awt.event.ActionEvent evt)
    {
        int numMax = Integer.valueOf(campoMáximo.getText());
        int numActual = 1;
        int incremento = 1;
      
        areaMensajes.setText("");
        do
        {
            areaMensajes.append(String.valueOf(numActual) + " ");
            numActual+=incremento;
            incremento++;
        }while (numActual <= numMax);
    }
{/code}
En este ejemplo conviene observar que si el usuario introduce el valor 0 o cualquier valor negativo, el programaentrará una vez en el bloque de sentencias de la instrucción do-while, mostrando el valor 1.


La sentencia do-while

La sentencia do-while se caracteriza porque permite repetir un bloque de instrucciones varias veces, ejecutándose obligatoriamente al menos 1 vez. Por lo que se puede ver que es muy similiar a la sentencia while, con la diferencia del número mínimo de veces que se ejecuta el bloque de instrucciones que contiene.
La condición que se establece se evalúa después de ejecutar el bloque de instrucciones que contiene la instruccióndo-while.
Se debe utilizar el siguiente formato:
do {
   BloqueDeSentencias;
} while (condición);
 
Como siempre, si el bloque de sentencias está formado por una única sentencia, se puede prescindir de las llaves, y hay que destacar que termina con un punto y coma, a diferencia de la sentencia while.
El orden de ejecución de una sentencia do-while es la siguiente:
1.   Ejecutar el bloque de sentencias.
2.   Evaluar la condición.
o    Si el resultado es true, volver al punto 1.
o    Si el resultado es false ir al punto 3.
3.   Continuar la ejecución del programa.
Ejemplo: Generar la secuencia de números siguiente: 1 2 4 7 11 16 22 etc. En ella, se va incrementando cada vez una unidad más respecto a la anterior. La secuencia se debe generar hasta que se alcance el valor máximo que indique el usuario:

{code}
    private void botónGenerarActionPerformed(java.awt.event.ActionEvent evt)
    {
        int numMax = Integer.valueOf(campoMáximo.getText());
        int numActual = 1;
        int incremento = 1;
      
        areaMensajes.setText("");
        do
        {
            areaMensajes.append(String.valueOf(numActual) + " ");
            numActual+=incremento;
            incremento++;
        }while (numActual <= numMax);
    }
{/code}
En este ejemplo conviene observar que si el usuario introduce el valor 0 o cualquier valor negativo, el programaentrará una vez en el bloque de sentencias de la instrucción do-while, mostrando el valor 1.