top of page

Extructuras  y  Funciones

Extructuras

Extructuras condicionales

 

Una estructura es un tipo de dato compuesto que permite almacenar un conjunto de datos de diferente tipo. Los datos que contiene una estructura pueden ser de tipo simple (caracteres, números enteros o de coma flotante etc.) o a su vez de tipo compuesto (vectores, estructuras, listas, etc.).

 

  • IF ( Tomar decisiones )

Se usa cuando queremos ejecutar un fragmento de código en función de los valores de unas variables.           

( Usando los operadores de comparación en la condición )

 

Estructura:

if ( condición )
{
código de programa en caso de que se cumpla la condición
}

 

Ejemplo:

#include <stdio.h>

#include <stdlib.h>

 

int main(void)

{

            int i;

            printf("Introduzca número del 1 al 5:");

    scanf("%d",&i);

 

    if (i!=4) {

       printf("Es primo.");

    }

    else

    {

       printf("No es primo.");

    }

 

    system("PAUSE");     

    return 0;

}

 

  • IF … else

 

Estructura:

if (condición) {
código del programa con la condición verdadera
}
else {
código del programa cuando la condición no se cumpla.
}

 

Ejemplo:

if(edad >=18
{
puede votar
}

else
{
no puede votar
}

  • FOR ( Búcles )

 

Estructura:

for valor inicial; condición; actualización )
{
instrucciones a ejecutar en el bucle
}

 

Ejemplo:

#include<stdio.h>
#include<stdlib.h>

void main()
{
int i;

for(i=0; i<=20; i++)
printf(“Soy la variable i, mi valor en esta iteracion es: %d\n”,i);

system(“pause”);
}

 

  • WHILE ( Búcle, puede que no “pase” )

Se ejecuta sucesivamente si se sigue cumpliendo la condición.

 

Estructura:

while ( condición )
{
instrucciones a ejecutar con el bucle
}

 

Ejemplo:

#include<stdio.h>
#include<stdlib.h>

void main()
{
int i=0;

while(i<=20)
{
printf(“Soy la variable i, mi valor en esta iteracion es: %d\n”,i);
i++;
}

system(“pause”);
}

  • DO WHILE ( búcle, ejecuta la instrucción al menos una vez )

 

Estructura:

do {
código a ejecutar para hacer en primera instancia
}
while (  condición   )
código a ejecutar;

 

Ejemplo:

#include<stdio.h>
#include<stdlib.h>

void main()
{
int i=0;

do
{
printf(“Soy la variable i, mi valor en esta iteracion es: %d\n”,i);
i++;
}
while(i<=20);

system(“pause”);
}

 

  • SWITCH CASE

La sentencia switch evalúa la expresión y dependiendo del valor de la expresión, así se llevará a cabo un "caso" u otro.

 

Extructura:

switch(expresión){

case 1:

sentencias a ejecutarse en caso de que expresión valga 1;

Break;

Case 2:

sentencias a ejecutarse en caso de que expresión valga 2;

break;

default:

sentencias a ejecutarse en caso de que expresión no cumpla con ninguno de los valores anteriores;

}

 

Ejemplo:

#include <stdio.h>
#include <conio.h>
int main ()
{

int a,b,menu,resultado;
printf("Ingrese dos n\numeros: \n");
scanf("%i",&a);
scanf("%i",&b);
printf("\n*******Calculadora 1.0*******\n");
printf("1-Suma\n");
printf("2-Resta\n");
printf("3-Division\n");
printf("4-Multiplicacion\n");
printf("*************Operacion*****)...
scanf("%i",&menu);
switch(menu)
{
case 1: resultado=a+b; break;
case 2: resultado=a-b; break;
case 3: resultado=a/b; break;
case 4: resultado=a*b; break;
}
printf("\nOperaci\xa2n: \n>%i",resultado);
getch();
return 0;
}

 

 

Funciones

La modularización, es una técnica usada por los programadores para hacer sus códigos más cortos, ya que consiste en reducir un gran problema complejo, en pequeños problemitas más sencillos, concentrándose en la solución por separado, de cada uno de ellos.

En C, se conocen como funciones aquellos trozos de códigos utilizados para dividir un programa con el objetivo que, cada bloque realice una tarea determinada.

En las funciones juegan un papel muy importe las variables, ya que como se ha dicho estas pueden ser locales o globales.

Variables Globales: Estas se crean durante toda la ejecución del programa, y son globales, ya que pueden ser llamadas, leídas, modificadas, etc; desde cualquier función. Se definen antes del main().

Variables Locales: Estas, pueden ser utilizadas únicamente en la función que hayan sido declaradas.

 

La sintaxis de una función es la siguiente:

Tipo_de_datos nombre_de_la_funcion(tipo y nombre de argumentos)

{

    acciones

}

 

Donde:

  • Tipo_de_datos: Es el tipo de dato que devolverá esa función, que puede ser real, entera, o tipo void(es decir que no devolverá ningún valor).

  • Nombre_de_la_funcion: Es el identificador que le damos a nuestra función, la cual debe cumplir las reglas que definimos en un principio para los identificadores.

  • Tipo y nombre de argumentos: son los parámetros que recibe la función. Los argumentos de una función no son más que variables locales que reciben un valor. Este valor se lo enviamos al hacer la llamada a la función. Pueden existir funciones que no reciban argumentos.

  • Acciones: Constituye el conjunto de acciones, de sentencias que cumplirá la función, cuando sea ejecutada. Entre ellas están:

    Asignaciones

    Lecturas

    Impresiones

    Cálculos, etc

 

Una función, termina con la llave de cerrar, pero antes de esta llave, debemos colocarle la instrucción return, con la cual devolverá un valor específico. Es necesario recalcar que si la función no devuelve ningún valor, es decir, es tipo void, no tiene que ir la sentencia return, ya que de lo contrario, nos dará un error.

 

Funciones Definidas Por El Usuario en C

Una función, como ya se ha dicho, es un bloque de código dentro del programa que se encarga de realizar una tarea determinada. Por lo tanto un  programa en c debe constar de una o más funciones, y por su puesto no puede faltar la función principal  main().

Si un programa, está constituido por más de una función, las llamadas a la misma, pueden realizarse desde cualquier parte del programa, y la definición de ellas debe ser independiente unas de otras.

Por lo tanto sería un grave error el tratar de definir una función dentro de otra.

Una función puede ser llamada desde cualquier parte del programa no sólo una vez, y cuando es llamada, empieza a ejecutar las acciones que están escritas en código.

Para mayor comodidad del lector vamos a ver varios ejemplos, del uso de funciones y a medida que vayamos avanzando se volverán más complejos.

El orden será el siguiente:

  • Funciones que no devuelven ningún valor

  • Funciones que devuelven un valor entero

  • Funciones que devuelven un valor Real

  • Funciones combinadas

  • Funciones en las que usamos Menú.

 

  1. Funciones que no devuelven ningún valor.

Cómo se ha dicho las funciones pueden o no devolver algún valor, para mi parecer, este tipo de funciones son las más sencillas, ya que cuando se llama la función, esta realiza lecturas, asignaciones, cálculos o impresiones, finaliza la ejecución de la función y el programa continúa normalmente.

 

Ejemplo:

Diseñe un programa que dados dos números enteros determine la suma y cual de ellos es mayor, usando dos funciones diferentes.

 

#include <stdio.h>

#include <conio.h>

void suma (int a, int b);                   /*Declaraci¢n de la funci¢n*/

void mayor (int a, int b);                 /*Tipo de dato, nombre de la funci¢n y el tipo y nombre de los argumentos*/

main()

   {

       int a, b;

       printf("Ingrese el valor de a:\n");

       scanf("%d", &a);

       printf("Ingrese el valor de b:\n");

       scanf("%d", &b);

       suma(a,b);                            /*Llamado de la funci¢n*/

       mayor(a,b);                          /*Unicamente el nombre de la funci¢n y de los par metros*/

       getch();

       return 0;

   }

   void suma(int a, int b)            /*Definici¢n de la funci¢n*/

   {                                             /*Abrimos llaves al inicio de la definici¢n*/

      int sum;                              /*Declaraci¢n de las variables locales*/

      sum=a+b;

      printf("El valor de la suma es %d:\n\n", sum);

   }                                              /*Fin de la funci¢n suma*/

   void mayor(int a, int b)

   {

      if(a==b)

      printf("Son iguales\n\n");

      else

      {

             if(a>b)

               printf("El valor de a es mayor que el de b\n\n");

             else

               printf("El valor de b es mayor que el de a\n\n");

      }

   }

 

    2.Funciones que devuelven un valor entero

Las funciones que devuelven algún valor, se les llama PROTOTIPOS DE FUNCIONES:

Antes de usar una función C debe tener conocimiento acerca del tipo de dato que regresara y el tipo de los parámetros que la función espera.

El estándar ANSI de C introdujo una nueva (mejor) forma de hacer lo anterior respecto a las versiones previas de C.

La importancia de usar prototipos de funciones es la siguiente:

Se hace el código mas estructurado y por lo tanto, más fácil de leer.

Se permite al compilador de C revisar la sintaxis de las funciones llamadas.

Lo anterior es hecho, dependiendo del alcance de la función. Básicamente si una función ha sido definida antes de que sea usada (o llamada), entonces se puede usar la función sin problemas.

Si no es así, entonces la función se debe declarar. La declaración simplemente maneja el tipo de dato que la función regresa y el tipo de parámetros usados por la función.

 

Ejemplo:

Diseñe un programa, que dado un número entero y mayor que cero, muestre su factorial. (El factorial de 5 es 120; 5x4x3x2x1=120)

#include <stdio.h>

#include <conio.h>

int factorial (int num);

main()

   {

      int num, ban=1;

      clrscr();

      while(ban==1)

      {

      printf("Ingrese el valor del nUmero por favor:\n");

      scanf("%d", &num);

      while(num<0)

           {

      printf("ERROR, el valor del nUmero debe ser mayor que cero:\n");

      scanf("%d", &num);

           }

      printf("El valor del factorial es %d\n\n", factorial (num));

      printf("¨Desea Realizar otro calculo?Si=1 y No=0\n");

      scanf("%d", &ban);

      }

   getch();

   return 0;

      }

   int factorial (int num)

      {

   int sum=1, i;

  for(i=2; i<=num; i++)

     {

      sum=sum*i;

     }

   return (sum);

     }

     3.Funciones que Devuelven un Valor Real

El lenguaje c, cuenta con una serie de funciones de bibliotecas que realizan operaciones y cálculos de uso frecuente.

Para acceder a una función, se realiza mediante el nombre seguido de los argumentos que le servirán a la función a realizar la tarea específica.

Nombre(arg1, arg2,...argn);

 

Ejemplo:

Se desea conocer el resultado de las siguientes operaciones:

  • RAIZ CUADRADA DE: a+b

  • |a-b|

  • ab

Las variables a y b, son de tipo real, y pueden ser positivas o negativas.

#include <stdio.h>

#include <conio.h>

#include <math.h>

double raiz(float a, float b);

double valor_absoluto(float a, float b);

double exponente (float a, float b);

main()

   {

       float a, b;

       clrscr();

       printf("\t\tBIENVENIDO\n\n");

       printf("Ingrese el valor de a, por favor:\n");

       scanf("%f", &a);

       printf("Ahora el valor de b:\n");

       scanf("%f", &b);

       printf("El resultado de la ra¡z cuadrada de %.2f + %.2f es %.2f\n\n", a,b,raiz(a,b));

       printf("|%.2f-%.2f| es igual a %.2f\n\n", a,b,valor_absoluto(a,b));

       printf("%.2f^%.2f es igual a %f\n\n", a,b,exponente(a,b));

       getch();

       return 0;

   }

   double raiz(float a, float b)

   {

    float x;

    double y;

    x=a+b;

    y=sqrt(x);

    return (y);

   }

   double valor_absoluto(float a, float b)

   {

     float x;

     double y;

     x=a-b;

     y=fabs(x);

     return (y);

   }

   double exponente (float a, float b)

   {

      double x;

      x=pow(a,b);

      return (x);

   }

    4.Funciones Combinadas

A continuación veremos un ejemplo de un programa en el cual utilizamos dos funciones de diferente tipo de dato.

 

Ejemplo:

El valor del número e se puede aproximar sumando n términos de la serie:  e = 1 + 1/1! + 1/2! + 1/3! + ...

Escribir un programa que solicite el número de términos de la serie a sumar e informe del valor aproximado de e. Téngase en cuenta que el termino i de la anterior serie se obtiene dividiendo por     (i-1). (La exclamación es el factorial).

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

 

void calculodatos(int numero);

double factorial(int dato);

 

void main(void)

{

   int numero;

   char respuesta;

 

   printf("\n\n\nINICIO DEL PROGRAMA\n\n\n");

   printf("\n\nEl programa te calcula el valor del numero e.");

 

   do {

 

      do {

         printf("\n\nIntroduzca un numero de terminos de la serie: ");

         scanf("%d",&numero);

      } while (numero<0);

 

      calculodatos(numero);

 

      printf("\n\n¨Desea introducir mas datos\?\n\n");

      respuesta=getch();

      system("cls");

   } while (respuesta=='s' || respuesta=='S');

   printf("\n\n\n\t\tÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ");

   printf("\n\t\tÛÛÛ    FIN DEL PROGRAMA    ÛÛÛ");

   printf("\n\t\tÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ\n\n\n");

}

 

void calculodatos(int numero)

{

   register int i;

   register double e=1.;

 

   for (i=1;i<=numero;i++) {

      e=e+1./factorial(i);

     

   }

   printf("\n\nEl valor de e para %d terminos es %f.",numero,e);

   }

 

double factorial(int dato)

{

   register int i;

   register double resultado=1;

 

   for (i=dato;i>0;i--) resultado=resultado*i;

   return resultado;

}

 

5  .Funciones en las que usamos Menú

En la práctica, muchas veces debemos diseñar programas, que nos permitan elegir la acción o acciones a realizar, es decir haciendo uso de un menú. El cual, no es más ni menos que la aplicación de un selector múltiple. Un switch

 

Ejemplo:

#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
int main(void) {
char letra;
printf("a. Presiona para un mensaje\n");
printf("b. Presiona para otro mensaje\n");
printf("Escoge una opcion: ");
scanf("%c",&letra);
switch(tolower(letra)){
case 'a':

printf("HOLAAAAAA\n");
break;
case 'b':

printf("ADIOSSSSSSS\n");
break;
default:

printf("Opcion incorrecta\n");
}
system("pause");
return 0;
}

 

Cuestionario                                                                 

  1. Diseñe un programa que lea un importe bruto y calcule su importe neto, si es mayor de 15.000 se le aplicará un 16% de impuestos, en caso contrario se le aplicará un 10%.

  2. Diseñe un programa, en el cual se introduzcan el nombre y el peso y de un alumno, y luego la muestre en pantalla. El Nombre debe incluir el apellido, y en el campo del peso, solo deben incluir valores numéricos.

  3. Diseñe un programe en C, en el cual después de haber introducido, una tabla de multiplicación cualquiera, imprima ésta en forma de tabla

  4. Diseñe un programa, que dada la nota de alumno, imprima en la pantalla un comentario sobre esa nota. El criterio para los comentarios es el siguiente:

    Si nota es mayor o igual a 9 “Excelente”

    Si nota es mayor o igual a 8 “Muy Bueno”

    Si nota es mayor o igual a 7 “Bueno”

    Si nota es mayor o igual a 6 “Regular”

    Si nota es menor que 6 “Necesita Mejorar”

  5. Diseñe un programa que dados tres números indique cual de ellos es el menor.

  6. En un cine se exhiben, películas para mayores de edad, diseñe un programa que dada la edad, indique si la persona puede o no ver la película.

  7. En un supermercado, se  realizan descuentos por las compras a partir de unas bolitas de colores. Si el cliente saca una bolita color azul, tiene un descuento del 20%, si la bolita es roja, se aplica un descuento del 30% y si saca una bolita color blanca, no se aplica ningún descuento. Diseñe un programa que a partir del importe de la compra y el color de la bolita, muestre lo que debe pagar dicho cliente.

  8. Se procesan las notas de 5, alumnos, de las cuales se desea saber cual es el promedio de esas 5 notas, y cual fue la nota mayor y menor, además de imprimir al final el nombre y la nota de cada alumno en forma de tabla.

  9. un estudiante desea saber cuál fue su promedio en matemática I, para ello dispone de la siguiente información: tiene 3 exámenes, con una ponderación del 20% cada uno y 2 laboratorios con una ponderación del 30% cada uno. Diseñe un programa que dadas las notas calcule el promedio del alumno y muestre en pantalla si el alumno esta reprobado o no (para aprobar esta  materia se requiere de una nota mayor o igual a 6.00).

  10. En un estacionamiento, se cobra de la siguiente manera: los primeros 10 minutos son gratis, los siguientes 30 minutos tiene un valor de $0.30 y la hora $0.60. diseñe un programa que reciba tanto minutos como horas y muestre lo que debe cancelar el cliente. Tomando en cuenta que si es Martes y Sábado se hace un descuento del 12.56% sobre el  monto total.

  11. Diseñe un pequeña calculadora que, al digitar un código realice una operación específica: si el código es 1, la operación es la suma, si es 2, Resta. 3, multiplicación y 4 división.  Si el usuario a escrito otro código inválido, mostrar un mensaje de error.

  12. Construya un programa que dado el salario de un empleado, permita aplicarle un aumento de 10% si el salario es inferior a $500, si es mayor se le aumentará un 8%. Luego debe aplicar una retención del 0.96% en concepto de Renta a ambos casos.

  13. Se desea calcular el sueldo de un trabajador, a partir de las horas trabajadas en la semana y la clase a la que pertenece: Trabajadores Clase “A”, se les paga $7 por hora. Trabajadores clase “B”, se paga $5 por hora. Trabajadores clase “C”, se les paga $4 por hora y los de clase “D”, $3.5 por hora.

  14. Un comerciante se dedica a la venta de sillas únicamente. Vende tres tipos de sillas: tipo A, tipo B y Tipo C los precios son $5.00, $7.00 y $10.00 respectivamente. Por cada cinco sillas compradas del tipo A, del tipo B o del tipo C los clientes reciben un descuento de 3%, 5% y 7%, las demás se cobran a precio normal. Diseñe un programa que imprima en forma de factura, con el nombre, precio unitario, precio total, nombre de la tienda, etc lo que debe cancelar cada cliente en concepto de la compra.

  15. Se desea conocer el promedio de los números mayores que cero, en una serie de números ingresados por el usuario. De los cuales no se sabe la cantidad, haciendo uso de una bandera, diseñe un programa en el cual el usuario ingrese los números que desee.

  16. Diseñe un programa en C, que calcule las compras totales, realizadas por un grupo de 20 amas de casa. Luego con esa información obtenga la media.

  17. Muestre un programa en c, que imprima en pantalla los números desde un valor inicial, hasta un valor final, ingresados por el usuario, tanto en forma descendente como ascendente.

  18. Diseñe un programa que imprima la serie de Fibonacci, así: 0 1 1 2 3 5 8 13.... hasta un número n dado por el usuario.

  19. Calcule el promedio de edades de un grupo de estudiantes, de los cuales no se conoce la cantidad.

  20. Diseñe un programa que obtenga, la calificación mayor y la calificación menor, de un grupo de 40 estudiantes, además de los nombres de dichos

bottom of page