martes, 25 de noviembre de 2014


ESTRUCTURAS CÍCLICAS 
Son problemas repetitivos o  aquellos en cuya solución es necesario utilizar un mismo conjunto de acciones que se puedan ejecutar una cantidad específica de veces Esta cantidad puede ser fija  o puede ser variable.
La Estructura Cíclica debe cumplir con tres elementos al momento del diseño y la implementación que son obligatorios y hacen parte del esquema a cumplir.
1.      Inicio
2.      Fin
3.      Incremento o contador
Con el siguiente ejemplo, entraremos en el detalle de la estructura, con el fin de entenderla fácilmente:
Realizamos una vaca (Recolecta de Dinero), para comprar realizar una compra “cualquier cosa”, en la vaca hay 6 integrantes y cada uno aporta un determinado valor, para comenzar con el ciclo, le pregunta a la primera persona cuánto va a aportar a la vaca, posteriormente suma lo que tenía que era Cero (0) más lo que recogió con la primera persona, y este proceso lo sigue realizando hasta llegar a la sexta (ultima) persona,  seguidamente se suma lo que ha recolectado de las cinco anteriores personas más lo aportó la sexta persona; cómo ve que ya no hay a quien más preguntarle, entonces puede realizar un informe a los integrantes de la vaca sobre cuánto dinero se recogió en total entre las 6 personas.
Esta es la estructura para el ejercicio anterior, con el ciclo “Mientras”
(Do-While).Así se visualiza la estructura en PSeInt
De esta forma se ve el proceso en PSeInt:

Esta es la estructura para el ejercicio anterior, con el ciclo “Para” (for)
·         Variable de control: prácticamente un mandato impuesto por el uso habitual es utilizar la letra i Iterador como variable de control.
·         Inicialización de la variable de control: en pseudolenguaje se pide explicitarlo (es la sección := ValorInicial).
·         Condición de control(Hasta): en pseudolenguaje se ve representado por el valor final que puede tomar la variable de control (la sección A ValorFinal).
·         Incremento: en pseudolenguaje se toma por defecto el valor 1, aunque puede explicitarse por medio de la sentencia PASO = ValorPaso cualquier número entero.
·         Cuerpo(hacer): es lo que se hará en cada iteración, pueden ser una o más instrucciones.
Así se visualiza la estructura en PSeInt
De esta forma se ve el proceso en PSeInt:

A continuación se realizarán algunos ejercicios para practicar teniendo en cuenta las estructuras anteriores:
Ejercicio 1: Realizar un ejercicio que reciba 5 notas y como resultado del promedio final

 Ejercicio 2: Un programa que imprima la tabla del 3
Ejercicio 3: Un programa que imprima la tabla del 2
Ejercicio 4: Como tarea… Un programa que de 5 letras imprima cuantas son vocales

miércoles, 12 de noviembre de 2014

programa de arreglo

#include <iostream> 
using namespace std; 
int main() { 
const int TOTAL = 5;
int limitePasajeros, vagones[TOTAL], total = 0; 
cout<<"Cuanto es el maximo de pasajeros por vagon?: "; 
cin>>limitePasajeros; 
cout<<endl; 
for(int i = 0; i < TOTAL; i++){ 
cout<<"Cuantos pasajeros hay en el "<<i+1<<" vagon?: "; 
cin>>vagones[i]; 

cout<<"\nVAGONES CON SOBRECUPO\n"; 
for(int i = 0; i < TOTAL; i++){ 
if(vagones[i] > limitePasajeros){ 
cout<<"Vagon: "<<i + 1; 
cout<<"\tPasajeros: "<<vagones[i]<<endl; 
total++; 

}
cout<<"\nTotal: "<<total; 
cin.get(); 
return 0; 
}

arreglos y apuntadores

¿QUÉ ES UN ARREGLO?
 Un arreglo es un conjunto de variables que son del mismo tipo de datos. A cada parte de un arreglo se le denomina “elemento”. Los cuales se hacen referencia con el mismo nombre y se almacenan en posiciones consecutivas.

DECLARACIÓN DE ARREGLOS

  • Tipo_datos nombre[tamaño]
  •  Donde [ ] – operador de subíndices del arreglo.
  •  Ejemplo
  •  Float arreglo[500]
 Nota: en C el arreglo se debe declarar en forma explícita antes de utilizarlo como cualquier variable.

INDEXACIÓN DE ARREGLOS
Para poder hacer referencia a los elementos del arreglo se utilizan los índice los cuales comienzan desde cero.
 Ejemplo
 Días de la semana
 Arreglo
 char Día[6] entonces

 Día[0], Día[1],…Día[6]

INICIALIZACIÓN DE ARREGLOS

  • Elemento por elemento
  •  Día[0] =„L‟;
  •  Todos los elementos al mismo tiempo
  •  Float arreglo[3]={.0123, 3.1416,.000236}


 Ejercicio : escribe un programa que inicialice una arreglo (tipo entero, usando for)

TAMAÑO DEL ARREGLO
Para calcular el número total de bytes de un arreglo es:
Total_bytes=sizeof(tipo_datos)*Tamaño(# elementos)

Ejemplo:
int a[10]
Tamaño del tipo entero = 2 bytes
Total_bytes=20
Dirección a[0] =0x1806
Dirección a[9]= 0x1818
La distancia entre el primer y el último elemento
es:
0x1818- 0x1806+2=20 bytes
Agrega estó último al programa anterior


ARREGLOS Y APUNTADORES
En c los arreglos y apuntadores tienen una relación estrecha.
Se puede hacer que un apuntador haga referencia al primer elemento de un arreglo de la siguiente forma:
int *p;
Int A[10];
p=A; Nota: es como si apuntara a todo el A
La dirección de inicio del arreglo
El valor del primer elemento
La dirección, contenido y valor del apuntador (1er elemento)
Escribe un programa que muestre esto.


CÓMO DESSPLEGAR UNA CADENA DECARACTERES
Una cadena de caracteres se define en C como una secuencia continua de caracteres que termina con el caracter nulo („\0‟). Programa Despliege un arreglo de caracteres en 3 formatos:
 1. imprimiendo elemento por elemento considerando el fin del arreglo como el caracternulo („\0‟).
 2. imprimiendo en la misma línea
 3. imprimiendo como cadena (%s) ACERCA DE LA FUNCIÓN PRINTF()
 Está función tiene incluido el comando que indica que siga imprimiendo los datos de la cadena (%s) hasta que encuentre el caracter nulo.
 Esto se comprobo en el primer formato de
impresión o despliegue en pantalla del programa
anterior.EL CARÁCTER NULO („\0‟)
 Este es un carácter especial que indica el fin de la
cadena y para esta unida el último elemento del
arreglo.
 El carácter nulo se evalua con un valor de cero,
así que se puede usar para una prueba lógica en
una instrucción de control de flujo.
 Programa
 Define un arreglo de caracteres donde el últimoelemento es el carácter nulo y usa este valor paraevaluar el for es decir:
for(i=0;a[i];i++)
ARREGLOS MULTIDIMENSIONALES
 Hasta ahora solo hemos vistos arreglos de una sola dimensión la cual esta dada por el número de corchetes ,[ ].
Sintaxis:
Tipo_dato nombre[tamaño-arreglo1] [tamaño-arreglo2]… [tamaño-arregloN]
Ejemplo
int a[2][3]={1,2,3,4,5,6}
int a[2][3]={{1,2,3},{4,5,6}}
Programa; un arreglo bidimensional con dos ciclos anidados donde en el ciclo externo imprima una nueva línea.
ARREGLOS SIN ESPECIFICACIÓN DETAMAÑO
 Ejemplo
 int a[ ]={1,2,3,4,5,6, ….,100}
 Otro ejemplo
 int a[ ][2]={1,2,
 3,4
 ,5,6}
 Programa
 Dos ejemplos sin especificar el tamaño como vimos, y imprime el tamaño del los arreglos.





miércoles, 8 de octubre de 2014


sentencia do while

En lenguaje C, para escribir una instrucción do while (repetitiva hacer mientras) se utiliza la sintaxis:
do
{
   <bloque_de_instrucciones>
} while ( <expresión_lógica> );
Cuando el <bloque_de_instrucciones> sólo contiene una instrucción, los caracteres abrir llave ({) ycerrar llave (}) son opcionales.

Además, como se puede apreciar, la instrucción repetitiva 
do while, también hace uso de una condición.

En un 
bucle do while, primero se ejecuta el bloque de instrucciones y, después, se evalúa la condición. En el caso de que ésta sea verdadera, se vuelve a ejecutar el bloque de instrucciones. Y así sucesivamente, hasta que, la condición sea falsa.

Por consiguiente, cuando el 
flujo de un programa llega a un bucle do while, existen dos posibilidades:
  1. Se ejecuta el bloque de instrucciones y, después, si la condición se evalúa a falsa, el bloque de instrucciones no se vuelve a ejecutar, de manera que, el bucle do while finaliza, habiendo realizado una sola iteración.
  2. Se ejecuta el bloque de instrucciones y, a continuación, si la condición se evalúa a verdadera, el bloque de instrucciones se vuelve a ejecutar. Y así sucesivamente, hasta que la condición sea falsa.
El <bloque_de_instrucciones> de un bucle do while puede ejecutarse una o más veces (iteraciones). También hay que prevenir que el bucle no sea infinito.

En resumen, una instrucción repetitiva 
do while permite ejecutar repetidamente (una o más veces) un bloque de instrucciones, mientras que, una determinada condición sea verdadera.

Ejemplo 1: De modo que, utilizando un bucle do while, el problema del ejemplo 1 del apartado anterior, Instrucción while en C, se puede resolver con el código:
#include <stdio.h>

int main()
{
   int contador;

   printf( "\n   " );

   contador = 1; /* Inicialización del contador */
   do
   {
      printf( "%d ", contador );   /* Salida */
      contador++;                 /* Incremento */
   } while ( contador <= 10 );     /* Condición */

   return 0;
}
Como ya se ha dicho, el bucle do while puede iterar una o más veces, por tanto, cuando un bloque de instrucciones debe iterar al menos una vez, generalmente, es mejor utilizar un bucle do whileque un bucle while, como por ejemplo, en el siguiente problema.

Ejemplo 2: Se quiere escribir un programa que:

1º) Pida por teclado un número (dato entero).
2º) Pregunte al usuario si desea introducir otro o no.
3º) Repita los pasos 1º y 2º, mientras que, el usuario no responda 'n' de (no).
4º) Muestre por pantalla la suma de los números introducidos por el usuario.

En pantalla:

   Introduzca un numero entero: 7

   ¿Desea introducir otro (s/n)?: s

   Introduzca un numero entero: 16

   ¿Desea introducir otro (s/n)?: s

   Introduzca un numero entero: -3

   ¿Desea introducir otro (s/n)?: n

   La suma de los numeros introducidos es: 20
El código propuesto es:
#include <stdio.h>

int main()
{
   char seguir;
   int acumulador, numero;

   /* En acumulador se va a guardar la suma de
      los números introducidos por el usuario. */

   acumulador = 0;
   do
   {
      printf( "\n   Introduzca un numero entero: " );
      scanf( "%d", &numero);

      acumulador += numero;

      printf( "\n   Desea introducir otro numero (s/n)?: " );
      fflush( stdin );
      scanf( "%c", &seguir);
   } while ( seguir != 'n' );

   /* Mientras que el usuario desee introducir
      más números, el bucle iterará. */

   printf( "\n   La suma de los numeros introducidos es: %d",
           acumulador );

   return 0;
}


programas de c++









martes, 30 de septiembre de 2014

sentecias for, swit case y if

SENTENCIAS CONDICIONALES
C posee dos sentencias condicionales: if y switch.
Además, el operador ? es una posible alternativa para
if en ciertas situaciones.
Sentencia if

SINTAXIS
if (expresión)
sentencia
o
if (expresión)
sentencia_1
else
sentencia_2

DESCRIPCION
Si expresión es cierta se ejecuta la sentencia
correspondiente al if. Si expresión es falsa se
ejecuta la sentencia correspondiente al else si
lo hay.

En la segunda sintaxis se ejecuta sentencia_1 o
sentencia_2, pero nuna ambas.

EJEMPLOS
if (contador < 50) if (x < y) if (ch == '\n')
contador++; z = x; {
else numero_de_lineas++;
z = y; numero_de_caracteres++;
}

OBSERVACIONES
1) Lo siguiente es incorrecto:
if (expresión)
{
sentecias
};
else
sentencia
puesto que entre el if y el else sólo puede haber
una sentencia y aquí hay dos: { } y ;.
borrar_ventana

2) Al ser la sentencia if una sentencia simple,
la sentencias if se pueden anidar:
/*
a la variable numero_menor se le asigna la
variable con menor valor entre x, y, z
*/
if (x <= y)
if (x <= z)
numero_menor = x;
else
numero_menor = z;
else
if (y <= z)
numero_menor = y;
else
numero_menor = z;
borrar_ventana

3) El else siempre está asociado al if más cercano.
Los dos siguientes ejemplos son distintos:
/* Ejemplo 1: */
if (n > 0)
if (a > b)
z = a;
else
z = b;
/* Ejemplo 2: */
if (n > 0)
{

if (a > b)
z = a;
}
else
z = b;
borrar_ventana

4) Un constructor común en programación es la
escala if-else-if. Tiene la forma siguiente:
if (expresión_1) /* Ejemplo: numero_menor
sentencia_1 toma el valor de la variable
else if (expresión_2) menor entre x, y, z */
sentencia_2 if (x <= y && x <= z)
. numero_menor = x;
. else if (y <= z && y <= z)
. numero_menor = y;
else else
sentencia_n numero_menor = z;
Las condiciones se evalúan de arriba hacia abajo.
Sólo se ejecuta la sentencia correspondiente a la
primera expresión que sea cierta, si la hay. Si
ninguna expresión es cierta, se ejecuta el else final
si existe, sino no se ejecuta ninguna sentencia.
borrar_ventana
5) El operador ? se puede utilizar para reemplazar
las sentencias if-else. Este operador ternario se
ha visto en la lección 2.
/* Ejemplo 1 con if-else */ /* Ejemplo 1 con ?: */
if (x <= y) z = x <= y ? x : y;
z = x;
else
z = y;
/* Ejemplo 2 con if-else */ /* Ejemplo 2 con ?: */
if (n == 1) n == 1 ?
printf ("Mensaje 1"); printf ("Mensaje 1"):
else printf ("Mensaje 2");
printf ("Mensaje 2");
Sentencia switch

FORMA GENERAL
switch (expresión)
{
case expresión_constante_1:
sentencias_1
break;
case expresión_constante_2:
sentencias_2
break;
case expresión_constante_3:
sentencias_3
break;
.
.
.
default:
sentencias_n

DESCRIPCION
En muchas ocasiones es más elegante utilizar
la sentencia switch que la escala
if-else-if.
Una expresión constante es una expresión
en la que todos los operandos son constantes.
El switch evalúa expresión. A continuación
evalúa cada una de las expresiones
constantes hasta que encuentra una que
coincida con expresión. Cuando la encuentra
ejecuta las sentencias correspondientes
a ese case. Si no hay ninguna expresión
case que coincida con expresión, se
ejecuta las sentencias correspondientes
al default.

EJEMPLO
switch (operando)
{
case 1:
x *= y;
break;
case 2:
x /= y;
break;
case 3:
x += y;
break;
case 4:
x -= y;
break;
default:
printf ("ERROR!");
}


OBSERVACIONES
1) La sentencia default es opcional. Si
fallan todas las comprobaciones de los
case y no hay default, no se ejecuta
ninguna acción en el switch. Incluso el
default puede ir en cualquier posición
y no obligatoriamente al final.

2) La sentencia switch se diferencia de
la escala if-else-if en dos cosas:

1§) En la sentencia switch sólo se
puede comprobar la igualdad entre las
expresiones constantes y expresión.



2§) Las expresiones de los case han
de ser constantes.
borrar_ventana

3) Las sentencias break en el switch son
opcionales. El break hace que se produzca
una salida inmediata de la instrucción
switch. Si no hay una sentencia break en
un case, al ejecutarse las sentencias que
corresponden a ese case, también se ejecutarían
las sentencias correspondientes
al siguiente case y así sucesivamente
hasta encontrar un break o llegar al final
del switch. La sentencia break puede
ir en cualquier sitio, no forzosamente
al final de las sentencias de los case.
case 1: /* Ejemplo de case sin break */
x++; /* Después de ejecutarse x++, */
case 2: /* se ejecuta siempre y++ */
y++;
break;
borrar_ventana

4) Asociado a cada case puede haber
ninguna, una o varias sentencias.
case 1: /* case sin sentencias directas*/
case 2: /* case con dos sentencias */
++x;
break;
case 3:
x++;
break;
y++;/*esta sentencia nunca se ejecuta*/
case 4: /* case con tres sentencias */
x++;
y++;
break;

SENTENCIAS ITERATIVAS
Los bucles o sentencias iterativas
permiten que un conjunto de instrucciones
sea ejecutado hasta que
se alcance una cierta condición.
Las sentencias iterativas son:
while, for y do.
Sentencia while
SINTAXIS
while (expresión)
sentencia


DESCRIPCION
Se evalúa expresión. Si es cierta, se ejecuta
sentencia y se vuelve a evaluar expresión. El
ciclo continúa hasta que expresión es falsa,
momento en que la ejecución continúa con lo
que está después de sentencia.
EJEMPLOS
/* /* /*
el bucle termina imprime los cinco pri- al ; del while no
cuando encuentra meros números naturales se llega nunca ya
un carácter dis- */ que el bucle no
to de blanco en i = 1; nace ninguna iteravector
s while (i <= 5) ción.
*/ { */
i = 0; printf ("\ni = %d", i); int condicion = 0;
while (s[i] == ' ') i++; while (condicion)
i++; } ;
Sentencia for

FORMA GENERAL
for (expresión_1; expresión_2; expresión_3)
sentencia

DESCRIPCION
En la sentencia for, a expresión_1 se le llama inicialización, a expresión_2
se le llama condición, y a expresión_3 se le llama incremento.
La forma general descrita de la sentencia for es equivalente a:
expresión_1
while (expresión_2)
{ La forma de actuar del bucle for se observa
sentencia claramente en su equivalente del while.
expresión_3;
}
Las tres expresiones de la sentencia for son opcionales, aunque los puntos y
coma siempre deben aparecer. Si no aparece expresión_2 se asume que es 1.
EJEMPLOS
#include <stdio.h> #include <stdio.h>
void main (void) void main (void)
{ {
printf ("Lista de los 100 primeros" int i, s;

"números naturales:\n); for (s = 0, i = 1; i < 100; i++)
int x; s += i;
for (x = 1; x <= 100; x++) printf ("La suma de los primeros "
printf ("%d ", x); "100 números naturales es %d.",s);
} }
Nota: (s = 0, i = 1) es una expresión, más concretamente, es una expresión
formada por el operador coma, cuyo operandos son expresiones de asignación.

OBSERVACION
La instrucción
for (;;)
sentencia
es un bucle infinito.
Sin embargo, aunque en este bucle no nos podamos
salir por la condición del for, nos podemos salir
por otros medio (por ejemplo, mediante la sentencia
break, que estudiaremos un poco más adelante en
esta misma lección).

sentencia if


 En la programación es escencial el manejo de bifurcaciones (si-entonces), en el Lenguaje C se usa la sentencia if().
Modo de Uso
if(condicion)
{
Acciones
}
Las acciones dentro de las llaves {} se ejecutarán siempre y cuando se cumpla la condición especificada entre los peréntesis (). También es posible omitir las llaves si se fuera a ejecutar una sola acción.
La condición puede ser cualquier expresión lógica como por ejemplo a<=b ó x!=0 ó z+10<a&&b>0, etc.
Ejemplos:
1. Escriba un programa en Lenguaje C que solicite el ingreso de un número entero e indique si es mayor que cero y si es par.
Solución: titulo: mayorquecerooespar.cpp
#include <stdio.h>
void main()
{
        int a;
        printf("Ingrese un numero: ");
        scanf("%d",&a);
        if(a>0)
                printf("El numero es mayor que cero\n");
        if(a%2==0)
                printf("El numero ingresado numero es par\n");
}
2. Escriba un programa en Lenguaje C que solicite el ingreso de un número entero por teclado,
si el número es menor que 12 lo incremente en uno y lo multiplique por diez; si el número
ingresado es mayor o igual que 12 lo multiplique por diez y luego lo incremente en uno. Mostrar
el resultado por pantalla.

Solución:mayoromeno.cpp

#include <stdio.h>
void main()
{
        int a;
        printf("Ingrese un numero: ");
        scanf("%d",&a);
        if(a<12)
        {
                a++;
                a*=10;
        }
        if(a>=12)
        {
                a*=10;
                a++;
        }
        printf("El resultado es: %d\n",a);
//Nótese que el orden es importante XD
}
El lenguaje C también soporta el uso de una estructura si-entonces, sino.Para esto se usa la
sentencia else.

Veamos otra variante del ejemplo 2 usando la sentencia else
Título: funciónelse.cpp

#include <stdio.h>
void main()
{
        int a;
        printf("Ingrese un numero: ");
        scanf("%d",&a);
        if(a<12)
        {
                a++;
                a*=10;
        }
        else     //Si un número no es menor que 12, entonces es  mayor o igual al mismo
        {
                a*=10;
                a++;
        }
        printf("El resultado es: %d\n",a);
}

Titulo: calificación.cpp
#include <stdio.h>

int main()
{
   float nota;

   printf( "\n   Introduzca nota (real): " );
   scanf( "%f", &nota );

   if ( nota >= 5 )
      printf( "\n   APROBADO" );
   else
      printf( "\n   SUSPENDIDO" );

   return 0;
}

EJERCICIOS EN TURBO C++
Ejercicio: 01
Algoritmo que lea tres números y los muestre de forma descendente. Solución: titulo: numerosordenados.cpp
#include<stdio.h>
#include<conio.h>
void main()
{
int a,b,c;
clrscs();
printf(Ingrese el primer número:);
scanf(%d,&a);
printf(Ingrese el segundo número:);
scanf(%d,&b);
printf(Ingrese el tercer número:);
scanf(%d,&c);
if((a>b)&&(a>c))
if(b>c)
printf(\n Los números son:%d %d %d, a,b,c );
else
printf(\n Los números son:%d %d %d, a,c,b);
if((b>a)&&(b>c))
if(a>c)
printf(\n Los números son:%d %d %d, b,a,c );
else
printf(\n Los números son:%d %d %d, b,c,a);
if((c>a)&&(c>b))
if(a>b)
printf(\n Los números son:%d %d %d, c,a,b );
else
printf(\n Los números son:%d %d %d, c,b,a);
getch();
}