Si necesitamos repetir un grupo de acciones un número conocido de veces la mejor opción es la sentencia repetitiva for().
for() es una de las sentencias repetitivas más usadas en los lenguajes de programación, esta sentencia inicializa una variable, evalúa una condición y luego realiza una operación sobre una variable.
Modo de uso:
for(inicialización;condición;operacion)
{
//Acciones
}
Secuencia:
Ejemplos:
Escriba un programa en lenguaje C que solicite el ingreso de dos números (valor inicial y un valor final) y que muestre por pantalla los números que pertenecen al intervalo dado.
Solución:
#include <stdio.h> void main() { //Declaración de variables int inicial, final, i; //Solicitando y leyendo el ingreso de datos desde el teclado printf("Ingrese el valor inicial: "); scanf("%d",&inicial); printf("Ingrese el valor final: "); scanf("%d",&final); for(i=inicial;i<=final;i++) { printf("%d\n",i); //mostrando por pantalla los números desde //el valor inicial hasta el valor final } }
Ejemplos:
Escriba un programa en lenguaje C que solicite el ingreso un número entero y que muestre la tabla de multiplicar del mismo.
Solución:
#include <stdio.h> void main() { //Declaración de variables int numero, i, producto; //Solicitando y leyendo el ingreso de datos desde el teclado printf("Ingrese un numero: "); scanf("%d",&numero); for(i=0;i<=12;i++) { producto=i*numero; printf("%d x %d = %d\n",numero,i,producto); } }
La sentencia switch() en Lenguaje C es una sentencia de selección. Esta sentencia permite seleccionar las acciones a realizar de acuerdo al valor que tome una variable.
Modo de uso:
switch(variable) { case valor_1: //acciones break; case valor_2: //acciones break; . . . case valor_n: //acciones break; defalut: //acciones break; } Si el valor que toma la variable no coincide con los valores especificados en los casos, se realizarán las acciones definidas en la etiqueta default.
Ejemplos:
1. Escriba un programa en Lenguaje C que solicite el ingreso de un número del 1 al 9 y que muestre por pantalla el número seleccionado en letras.
Solución:
#include <stdio.h> void main() { int opcion; printf("Ingrese un numero entero: "); scanf("%d",&opcion); switch(opcion) { case 1: printf("Ha ingresado el numero uno\n"); break; case 2: printf("Ha ingresado el numero dos\n"); break; case 3: printf("Ha ingresado el numero tres\n"); break; case 4: printf("Ha ingresado el numero cuatro\n"); break; case 5: printf("Ha ingresado el numero cinco\n"); break; case 6: printf("Ha ingresado el numero seis\n"); break; case 7: printf("Ha ingresado el numero siete\n"); break; case 8: printf("Ha ingresado el numero ocho\n"); break; case 9: printf("Ha ingresado el numero nueve\n"); break; defalut: printf("Ha ingresado un numero no valido\n"); break; } }
2. Escriba un programa en Lenguaje C que solicite el ingreso de dos números enteros y que luego permita seleccionar si se sumarán, restarán dividirán o multiplicarán y muestre el resultado por pantalla.
Solución:
#include <stdio.h> void main() { int opcion,a,b,resultado; printf("Ingrese un numero entero [a]: "); scanf("%d",&a); printf("Ingrese un numero entero [b]: "); scanf("%d",&b); printf("Menu\n"); printf("1. Sumar\n"); printf("2. Restar\n"); printf("3. Dividir\n"); printf("4. Multiplicar\n"); printf("Elija una operacion: "); scanf("%d",&opcion); switch(opcion) { case 1: resultado=a+b; printf("%d + %d = %d\n",a,b,resultado); break; case 2: resultado=a-b; printf("%d - %d = %d\n",a,b,resultado); break; case 3: resultado=a/b; printf("%d / %d = %d\n",a,b,resultado); break; case 4: resultado=a*b; printf("%d x %d = %d\n",a,b,resultado); break; defalut: printf("Opcion no valida\n"); break; } }
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:
#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: #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 #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); }
El lenguaje C permite manejar una gran variedad de operadores como lo son: Operadores aritméticos, lógicos, de asignación, relacionales.
Operadores Aritméticos
Operador | Nombre | Descripción | Sentido |
+ | Suma | Suma dos números | De izquierda a derecha |
– | Resta | Resta dos números | De izquierda a derecha |
/ | División | Divide dos números | De izquierda a derecha |
* | Producto | Multiplica dos números | De izquierda a derecha |
% | Resto | Calcula el resto de una división | De izquierda a derecha |
Operadores Lógicos
Operador | Nombre | Descripción | Sentido |
! | No lógico | Realiza la operación lógica NOT | De izquierda a derecha |
&& | Y lógico | Realiza la operación lógica AND | De izquierda a derecha |
|| | Ó lógico | Realiza la operación lógica OR | De izquierda a derecha |
Operadores Relacionales
Operador | Nombre | Descripción | Sentido |
== | Igual a | Compara dos valores y devuelve verrdadero (1) si son iguales. | De izquierda a derecha |
!= | Diferente de | Compara dos valores y devuelve verrdadero (1) si son diferentes. | De izquierda a derecha |
> | Mayor que | Compara dos valores y devuelve verrdadero si el izquierdo es mayor que el derecho. | De izquierda a derecha |
>= | Mayor o igual que | Compara dos valores y devuelve verrdadero si el izquierdo es mayor o igual que el derecho. | De izquierda a derecha |
< | Menor que | Compara dos valores y devuelve verrdadero si el izquierdo es menor que el derecho. | De izquierda a derecha |
<= | Menor o igual que | Compara dos valores y devuelve verrdadero si el izquierdo es menor o igual que el derecho. | De izquierda a derecha |
Operadores de asignación
Operador | Nombre | Descripción | Sentido |
++ | Incremento | Incrementa en uno al valor actual de una variable | |
— | Decremento | Decrementa en uno al valor actual de una variable | |
= | Asignación | Asigna un valor dado a una variable | De derecha a izquierda |
+= | Incremento de | Incrementa en una cantidad dada al valor de una variable | De derecha a izquierda |
-= | Decremeto de | Decrementa en una cantidad dada al valor de una variable | De derecha a izquierda |
*= | Asignación del producto | Multiplica al valor de una variable con un número dado y se lo asigna a la misma. | De derecha a izquierda |
/= | Asignación de la división | Divide al valor de una variable para un número dado y se lo asigna a la misma. | De derecha a izquierda |
En el caso de los operadores incremento y decremento, se los puede colocar a la derecha
de la variable (operación post-incremento/decremento) o a la izquierda (operación
pre-incremento/decremento). Al usar estos operadores en modo post-incremento/decremento
primero se evalúa la variable y luego se le suma o resta 1. En el caso de los operadores
pre-incremento/decremento primero se le suma o resta 1 al valor de la variable y luego
se evalúa la misma.
Ejemplos:
Post-Incremento #include <stdio.h> void main(){ int a,b; a=10; b=a++; //A la variable b se le asigna el valor de a; luego el valor //de la variable a se incrementa en 1 }
Pre-Incremento
#include <stdio.h> void main() { int a,b; a=10; b=++a; //El valor de a es incrementado en 1 y luego este valor es asignado a //la variable b }
En el lenguaje C el ingreso de datos por teclado se hace mediante la función scanf()
scanf() es una función que lee datos ingresados por teclado y se los asigna a una variable indicada. Esta función también maneja caracteres de sustitución como lo hace printf(), con el fin de especificar los datos que se están leyendo.
Modo de uso:
scanf("%d",&variableEntera); scanf("%c",&variableCaracter); scanf("%f",&variableReal); Veamos un ejemplo: #include <stdio.h> void main() { int numero; //Declarando variable entera printf("Ingrese un numero: "); //Solicitando al usuario que ingrese un numero scanf("%d"&numero); //Leyendo el número solicitado printf("El numero que ingreso es %d", numero); //Mostrando el número ingresado por teclado } En esta función aparece un "nuevo componente" del lenguaje c, el operador "&", llamado operador de dirección. Este operador devuelve la dirección de memoria en la que se alojan los datos de una variable, la función scanf() usa esta dirección para insertar directamente en este espacio de memoria los datos leidos desde el teclado. Veamos algunos ejemplos de la apliación de la función scanf(): 1. Escriba un programa que solicite por teclado la longitud del radio de un círculo y que muestre por pantalla el área y perímetro del mismo. Solución: #include <stdio.h> #define PI 3.14 void main() { //Declaración de variables float radio, perimetro, area; printf("Ingrese el valor del radio del circulo: "); scanf("%f",&radio); //leyendo datos desde el teclado perimetro = 2*PI*radio; //Calculando el perímetro del círculo area = PI*r*r; //Calculando el área del círculo //Mostrando en pantalla los resultados printf("El area del circulo es : %.2f\n",area); printf("El perimetro del circulo es: %.2f",perimetro); } 2. Escriba un programa que solicite por teclado las longitudes de la base y altura de un rectángulo y que muestre por pantalla el área y perímetro del mismo. Solución: #include <stdio.h> void main() { //Declaración de variables float base, altura, perimetro, area; printf("Ingrese el valor de la base del rectangulo: "); scanf("%f",&radio); //leyendo datos desde el teclado printf("Ingrese el valor de la altura del rectangulo: "); scanf("%f",&radio); //leyendo datos desde el teclado perimetro = 2*base + 2*altura; //Calculando el perímetro del rectángulo area = base*altura; //Calculando el área del rectángulo //Mostrando en pantalla los resultados printf("El area del rectangulo es : %.2f\n",area); printf("El perimetro del rectangulo es: %.2f",perimetro); }
En lenguaje C la función más usada para mostrar información por pantalla se llama printf().
Si solo queremos mostrar un mensaje por pantalla (cadena de caracteres) lo hacemos de la siguiente manera:
printf(«mensaje»);
Pero printf() no se limita a sólo mostrar cadenas de caracteres, sino que con esta función podemos mostrar valores de variables mediante el uso de caracteres conocidos como «caracteres de sustitución».
¿Qué son los caracteres de sustitución?
Son caracteres que serán sustituidos por valores de variables al momento de mostrar el mensaje por pantalla.
En la siguiente tabla se muestran algunos caracteres de sustitución:
Carácter de sustitución |
Tipo de dato representado |
%d |
int |
%c |
char |
%f |
float |
%s |
cadena de caracteres |
¿Cómo se usan los caracteres de sustitución?
Veamos el uso en el siguiente programa:
#include <stdio.h> void main() { //Declarando variables int a,b,suma; //Asignando valores a las variables a=10; b=15; suma=a+b; // Calculando la suma de a y b printf("La suma de %d + %d = %d",a,b,suma); // Mostrando en pantalla el resultado }
Los carácteres de sustitución serán reemplazados por los valores de las variables en el orden que se las coloquen.
Por pantalla se mostrará
La suma de 10 + 15 = 25
Si queremos mostrar en pantalla el símbolo %, sólo debemos escribir %%
También se le puede mostrar por pantalla los valores de variables con un formato, como por ejemplo un número flotante con un número determinado de decimales
Ejemplo:
#include <stdio.h> void main() { //Declarando variables float a,b,division; //Asignando valores a las variables a=10; b=3; division=a/b; // Calculando la división entre a y b printf("%f dividido para %f = %f",a,b,division); // Mostrando en pantalla el resultado sin // formato /*Se mostrará por pantalla 10.000000 dividido para 3.000000 = 3.333333 */ printf("%.2f dividido para %.2f = %.2f",a,b,division); // Mostrando en pantalla el resultado // con un formato de 2 decimales /*Se mostrará por pantalla 10.00 dividido para 3.00 = 3.33 */ } Como hemos visto en este ejemplo, en el caso de los números flotantes se puede mostrar un número de decimales deseado colocando entre el %f un punto con un número que representa el número de decimales a mostrar. También es posible mostrar tabulaciones, retornos de carro, etc, gracias a otro tipo de caracteres conocidos como secuencias de escape. En La siguiente tabla se muestran algunas secuencias de escape.
Secuencia | Carácter | Acción |
\n | Nueva línea | Mueve el cursor a una nueva línea |
\t | Tabulador horizontal | Mueve el cursor hacia la siguiente posición de tabulador |
\\ | Barra Invertida | Muestra el carácter de barra invertida “\” |
\” | Comilla doble | Muestra el carácter de comilla doble “ |
Las variables en el lenguaje c pueden ser de diferentes tipos de datos, de acuerdo a la necesidad de almacenar datos que surja al momento del desarrollo del programa.
El lenguaje C diferencia MAYUSCULAS y minúsculas, por lo que no es lo mismo VARIABLE1 que variable1 ni que VariAble1.
La declaración de variables en C se realiza de la siguiente manera:
tipo_dato nombre;
Ejemplos:
char letra; int edad; float costo; También se pueden declarar varias variables de un mismo tipo en una sola línea de la siguiente forma: tipo_dato variable1,variable2, variable3 , ... , variableN; Ejemplos: int hora, minutos, segundos, numero; float radio, perimetro, area, costo; char letra1, letra2, letra3; También podemos asignarle un valor a la variable al momento de declararla: tipo_dato variable1=valor1; Ejemplos: int hora=19, minutos=0, segundos=11; char letraConocida='a', letraDesconocida; float precioPizza=10.75, precioSoda=1.25; Constantes Las constantes en lenguaje C se definen de la siguiente forma: #define NOMBRE valor Ejemplos: #define PI 3.14 #define TAMANIO 100 #define CARACTER 'u' A diferencia de las variables, sólo se puede crear una cosntante por línea de código y debe asignársele un valor al momento de definirse la misma, ya que las constantes jamás cambian su valor. Ubicación de las variables y constantes en un programa en C Las constantes se definen despúes de la inclusión de los archivos cabecera, y las variables deben ser declaradas al inicio de la función principal (main()). Ejemplo: //Inclusión de cabeceras #include <stdio.h> //Definición de constantes #define CONSTANTE1 16 #define CONSTANTE2 20 void main() { //Declaración de variables int variable1=123, variable2=456; char caracter1='a'; float f; }
El lenguaje de programación C maneja 3 tipos de datos primitivos que son: enteros, reales y carácteres
A continuación se muestran los detalles de los tipos de datos soportados:
Enteros
Nombre |
Rango |
Espacio en memoria |
int |
Máximo = 2,147,483,647 Mínimo = -2,147,483,648 Unsigned (sin signo) Máximo = 4294967295 Mínimo = 0 |
4 bytes |
|
Máximo = 32767
Mínimo = -32768 Unsigned (sin signo) Máximo = 65,535 Mínimo = 0 |
2 bytes |
|
Máximo = 9,223,372,036,854,775,807 Mínimo = 9,223,372,036,854,775,808 Unsigned (sin signo) Máximo = 18,446,744,073,709,551,616 Mínimo = 0 |
8 bytes |
Reales (coma flotante)
Nombre |
Rango |
Espacio en memoria |
float |
Exponente Máximo = 10^37 Exponente Mínimo = 10^-37 |
4 bytes |
|
Exponente Máximo = 10^308 Exponente Mínimo = 10^-308 |
8 bytes |
Carácteres
Nombre |
Rango |
Espacio en memoria |
char |
Máximo = 255 Mínimo = 0 |
1 byte |
C es un lenguaje de programación de propósito general creado en 1972 por Ken Thompson y Dennis M. Ritchie en los Laboratorios Bell como evolución del anterior lenguaje B, a su vez basado en BCPL, que ofrece economía sintáctica, control de flujo y estructuras sencillas y un buen conjunto de operadores. No es un lenguaje de muy alto nivel y más bien un lenguaje pequeño, sencillo y no está especializado en ningún tipo de aplicación. Esto lo hace un lenguaje potente, con un campo de aplicación ilimitado y sobre todo, se aprende rápidamente. En poco tiempo, un programador puede utilizar la totalidad del lenguaje.
Convierte el programa fuente en otro archivo fuente, durante este proceso se eliminan los comentarios, se incluyen los contenidos de los ficheros declarados con» #include <archivo>» (cabeceras) y se sustituye las instrucciones declaradas con #define
Transforma el código fuente proveniente del precompilador, en un archivo en lenguaje de máquina (fichero objeto).
El fichero objeto es un archivo en lenguaje de máquina que no puede ser ejecutado, sino que necesita ser enlazado con las bibliotecas del sistema operativo; el enlazador genera un archivo binario que puede ejecutarse.
Las bibliotecas son archivos que contienen el código de funciones precompilados que realizan operaciones requeridas en nuestro programa.
Nuestro primer programa
La sintaxis del lenguaje de programación C es sencilla, cuando programemos en C sólo debemos recordar:
Ejemplo de un programa en C:
//Incluyendo la cabecera en la que se encuentra definido el procedimiento printf() #include <stdio.h> /*Función principal, todas las instrucciones encontradas en esta función se ejecutarán directamente*/ void main() { printf("Hola Mundo"); //Procedimiento que muestra en pantalla un mensaje }
1. Escriba un algoritmo que pida el ingreso por teclado de dos números enteros y que muestre por pantalla la suma, resta, producto y división de los mismos.
Solución
inicio
//Declarando variables a usar
var entero A var entero B var entero suma var entero resta var entero producto var entero division escribir("Ingrese un numero: ") //Solicitando ingreso de datos por teclado leer(A) //Leyendo el primer número desde el teclado escribir("Ingrese un numero: ") //Solicitando ingreso de datos por teclado leer(B) // Leyendo el segundo número desde el teclado // Realizando operaciones suma = A +B resta = A - B producto = A*B division = A/B //mostrando resultados escribir("La suma es: ") escribir(suma) escribir("La resta es: ") escribir(resta) escribir("El producto es:") escribir(producto) escribir("La division es: ") escribir(division) fin
2. Escriba un algoritmo que muestre por pantalla un menú y que solicite el ingreso por teclado de una opción del mismo; cuando se haya elegido dicha opción le indique al usuario su elección.
Solución:
inicio //Declarando las variables var entero opcion //Mostrando el menú escribir("1. Opción 1") escribir("2. Opción 2") escribir("3. Opción 3") escribir("4. Salir") escribir("Ingrese una opción: ") //Solicitando el ingreso de datos por teclado leer(opcion) //Leyendo la opción ingresada por teclado segun_sea (opcion) caso 1: //opción 1 escribir("Usted ha elegido la opción 1") interrumpir caso 2: //opción 2 escribir("Usted ha elegido la opción 2") interrumpir caso 3: //opción 3 escribir("Usted ha elegido la opción 3") interrumpir caso 4: //opción 4 escribir("Usted ha elegido la opción Salir") interrumpir otros: //Si no coincide con los casos anteriores escribir("Opcion no válida") interrumpir fin_segun fin
En este algoritmo se utilizó una estructura de selección que nos permite relacionar un conjunto de acciones al valor de la variable dada como parámetro, este menú está constituido de 4 opciones (opción 1, opción 2, opción 3 y salir), las cuales están definidas en cada caso; además cuando se ingresa un valor que nocoincide con los casos definidos, se realizan las acciones descritas en «otros«.
3. Escriba un algoritmo que repita una cadena de caracteres un número de veces dado.
Solución:
Existen muchas formas de realizar esto:
inicio //declarando variables var cadena cadena1 var entero veces var entero contador escribir("Ingrese una cadena de caracteres") leer(cadena1) escribir("Ingrese el número de veces que desea que se repita la cadena") leer(veces) contador = 0 //Inicializando el contador mientras(contador < veces ) //Repitiendo mientras el contador sea menor que el número escribir(cadena1) //de veces contador++//incrementando el contador fin_mientras fin Otra forma inicio //declarando variables var cadena cadena1 var entero veces var entero contador escribir("Ingrese una cadena de caracteres") leer(cadena1) escribir("Ingrese el número de veces que desea que se repita la cadena") leer(veces) /*La estructura "para" asigna el un valor al contador, evalúa una condición y si esta se cumple, se realizan las acciones indicadas, luego se incrementa el contador */ para contador=0 hasta contador<veces contador++ escribir(cadena1) fin_para fin