9.-Arreglos unidimensionales

Arreglos unidimensionales
Un arreglo es un conjunto de celdas de memoria relacionadas entre si ya que todos tienen el mismo nombre y almacenan el mismo tipo de datos para referirse a una celda en particular algún elemento dentro del arreglo y entre corchetes [] el numero de posición del elemento dentro del arreglo.
El primer elemento se almacena en la posición 0 del arreglo, es decir el primer elemento del arreglo se conoce como a[0], el segundo como a[1], el séptimo como a[6] y en general el elemento de orden i del arreglo a se conoce como a[i-1].
El número de posición que aparece dentro de los corchetes se conoce como índice y debe ser un número entero o una expresión entera, por ejemplo:
 printf ("%i", a[0]+a[5]+a[10]);

 x=a[7]/2;

 x=a[4]=12;
Para declarar un arreglo se emplea la siguiente sintaxis:
 tipo_de_dato nombre_del_arreglo [número de elementos];

 int a[12];

 float f[10];

 char nom_emp [30];

Ejemplo:
 #include <stdio.h>
 #include <conio.h>
 
 #define MAX 12
 
 void main(){
 
 int a[MAX], b[MAX], c[MAX], i, j=0, k=0;
 
 clrscr();
 
 printf ("Programa que almacena 12 numeros en un arreglo ");
 printf ("y luego los separa en dos de acuerdo a su valor.\n");
 
 for (i=0; i < MAX; i++){
  printf ("Introduce el valor %i: ", i+1);
  scanf ("%i", &a[i]);
 }
 
 for (i=0; i < MAX; i++)
 
  if (a[i] < MAX){
  
   b[j] = a[i];
   j++;
  }

  else {
  
   c[k] = a[i];
   k++;
  }

 printf ("\nLos numeros quedan asi:\n\n");
 
  for (i=0; i < j; i++)
   printf ("%i\n", b[i]);

  for (i=0; i < k; i++)
   printf ("\t%i\n", c[i]);

 getch();
 }

8.-Estructuras de repetición

Estructuras de repetición
Las computadoras están diseñados especialmente para aquellas aplicaciones en las cuales una operación o conjunto de ellas deben de repetirse varias veces. A las estructuras que repiten una secuencia de instrucciones un número determinado de veces se les denomina bucles y se llama iteración al acto de repetir la ejecución de una secuencia de acciones.

Estructuras de control de repetición while y do/ while
En estas estructuras el conjunto de instrucciones que forman parte del bucle se repite mientras se cumple una determinada condición.
La diferencia entre ellas es que la estructura while checa la condición de continuación del ciclo al principio de este, antes de ejecutar las condiciones del bucle.
La estructura do/ while prueba la condición después de ejecutar las instrucciones del bucle y por lo tanto esta se ejecutará por lo menos una vez.
La sintaxis de la estructura while es:
 while (condición) {
 
  Instrucciones que se repetirán mientras la condición sea verdadera;

  Instrucciones adicionales;
 }

Ejemplo:
 #include <stdio.h>
 #include <conio.h>

 void main(){
 
 int b = 99;
 
 while ( b > 0 ){

  printf ("\n%i bottle(s) of beer on the wall,", b);
  printf ("\n%i bottle(s) of beer.", b);
  printf ("\nTake one down, pass it around,");
  printf ("\n%i bottle(s) of beer on the wall.\n", b-1);

  b--;
 }
 
 getch();
    }

La sintaxis de la estructura do/ while es:
 do {
 
  Instrucciones que se repetirán al menos una vez mientras la condición 
  sea verdadera;
  
  Instrucciones adicionales:  
 }

 while (condición);

Ejemplo:
 #include <stdio.h>
 #include <conio.h>
 #include <math.h>
 
 void main(){
 
 float a, b, c, raiz, x1, x2;
 char resp;
 
 do{ 
  clrscr();
  
  printf ("Programa para calcular las raices de una ecuacion cuadratica");
  printf ("de la forma ax^2+bx+c=0");
  
  printf ("\n\nIntroduce el valor de las variables a, b y c en orden: \n");
  
  scanf ("%f%f%f", &a,&b,&c);
  
  raiz=(b*b)-4*a*c;
  
  if (raiz>=0){
  
   x1=(-b+sqrt(raiz))/(2*a);
   x2=(-b-sqrt(raiz))/(2*a);
   
   printf ("\nLas raices son x1: %.2f y x2: %.2f", x1, x2);
  }
  
  else
   printf ("\nLos valores que introdujiste regresan raices imaginarias");

  printf ("\n\nDeseas resolver otra ecuacion? (s/n) ");
  
  resp = getche();
 }
 while (resp=='s' || resp=='S');
    
 getch();
 }

Estructura de control de repetición for y for anidados
La estructura for maneja de manera automática todos los detalles de repetición controlada por un contador. La sintaxis de la estructura for es:
 for (contador; condición; variación) 

  Secuencia de instrucciones que se desean repetir;

Ejemplo:
 #include <stdio.h>
 #include <conio.h>

 void main(){ 

 int x=1, y=1, z=0, a;
 
 clrscr ();

 printf("Serie de Fibonaci\n\n");
 printf("Escribe el numero final: ");

 scanf("%i",&a);

 printf("%6i",x);
 printf("%6i", y);

 for (; z < a ;){

  z=x+y;

        if(z <= a){
  
   printf("%6i",z);
   
   x = y;
   
   y = z;
  }
 }

 getch();
 }

Las 3 expresiones de la estructura for son opcionales, si se omite la condición el compilador de lenguaje C supone que esta es verdadera y crea un ciclo infinito; si se omite el contador, la variable de control se debe inicializar en otra parte del programa antes del ciclo; y si se omite la variación, la modificación de la variable de control se calcula mediante instrucciones dentro del bloque de la estructura for o bien se omite porque no se requiere.

7.-Estructuras de decisión

Estructuras de decisión

Estructura de decisión If-Else
Cuando el programador desea especificar en un algoritmo o programa 2 o más caminos alternativos se debe utilizar una estructura de decisión, la cual evalúa una condición y en función del resultado, realiza una parte de la estructura u otra. Las condiciones se especifican mediante expresiones lógicas. Una de las estructuras de decisión es la estructura if-else y su sintaxis es la siguiente:
 //Si se trata de dos o más instrucciones, estas van entre llaves { }
 if (condición)
 
  Instrucciones a ejecutar cuando la condición es verdadera;
  
 else
 
  Instrucciones a ejecutar cuando la condición es falsa;

Ejemplo:
 #include <stdio.h>
 #include <conio.h>

 void main(){
 
 int year;
 
 clrscr(); //Limpia la pantalla
 
 printf ("Progama para determinar si un año es bisiesto");
 printf ("\nIntroduce un numero de año\n");
 
 scanf ("%i", &year);
 
 if (year%4 == 0 && year%100 != 0 || year%400 == 0)

  printf ("\a\nEl año %i si es bisiesto", year);
  
 else
  
  printf ("\a\nEl año %i no es bisiesto", year);
  
 getch(); 
 }

If’s anidados
 if (condición) 
  
  if (condición)
  
   Instrucciones a ejecutar cuando la condición es verdadera;
   
  else 
  
   Instrucciones a ejecutar cuando la condición es falsa;
   
 else 
 
  Instrucciones a ejecutar cuando la condición es falsa;

Ejemplo:
 #include <stdio.h>
 #include <conio.h>

 void main(){
 
 int a, b, c, d, mayor;
 
 clrscr ();
 
 printf ("Programa que indica cual de 4 numeros es el mayor\n");
 printf ("Introduce 4 numeros enteros:\n");
 
 scanf ("%i%i%i%i", &a, &b, &c, &d);
 
 if (a > b)
  if (a > c)
   if (a > d)
    mayor = a;
    
   else
    mayor = d;

  else 
   if (c > d) 
    mayor = c;
    
   else
    mayor = d;
 else
  if (b > c)
   if (b > d)
    mayor = b;
    
   else 
    mayor = a;
    
  else 
   if (c > d)
    mayor = c;

   else 
    mayor = d;

 printf ("El mayor es %i", mayor);
 
 getch();
 }

Estructura de decisión múltiple (switch)
La estructura switch evalúa una expresión que puede tomar n valores distintos, según con cual de estos valores coincida, se ejecutaran ciertas acciones, es decir, el programa o algoritmo seguirá un determinado camino entre los n posibles.
La sintaxis de la estructura switch es:
 switch (expresión entera) {

 case exp_constante_1: 
  acciones a realizar cuando la expresión tiene el valor exp_constante_1;
 break;

 case exp_constante_2: 
  acciones a realizar cuando la expresión tiene el valor exp_constante_2;
 break;

 ...especificar todos los casos

 default: 
  acciones a realizar cuando la expresión no coincide con ninguno de los casos;
 break;
 
 }

6.-Entrada y salida de datos en C++

Entrada y salida de datos en C
Como se mencionó anteriormente, es necesario conocer las entradas y las salidas del problema para poder resolverlo. Para que C reciba estos datos utilizamos las funciones de biblioteca scanf para la entrada y printf para la salida. Su sintaxis es la siguiente:
 //Lee el valor y lo guarda en una variable
 scanf ("%d", &variable);
 
 //Imprime en pantalla el texto y el valor
 printf ("El valor es %d", variable);
Ejemplo:
 #include <stdio.h>
 #include <conio.h>
 #include <math.h>

 void main() {
 
 int r, a, p;
 
 printf ("Programa que calcula el área y perímetro de un circulo");
 printf ("\nIntroduce el radio: ");
 
 scanf ("%d", &r);
 
 a = M_PI * pow(r,2);
 
 p = M_PI * (r+r);
 
 printf ("\nEl área es: %d", a);
 printf ("\nEl perímetro es: %d", p);
 
 getch(); 
 }
En ocasiones, queremos que el programa reciba una entrada de tipo caracter. Para lograr esto podemos declarar una variable de tipo carácter y guardarla en getch() o getche(). La diferencia entre ellos es que getche() muestra en pantalla el carácter introducido, mientras que getch() lo mantiene oculto. Su sintaxis es la siguiente:
 char opc;
 
 opc=getch();
 
 opc=getche();