Documentos de Académico
Documentos de Profesional
Documentos de Cultura
. if sin else
La sentencia if sin else determina una evaluación donde se ejecutará un determinado número de
instrucciones si la condición se cumple. Si la condición no se cumple simplemente el programa no
ejecutará estas ordenes.
if (condición) instrucción ;
Si el número de instrucciones que se debe ejecutar es mayor a 1 en caso de que la condición sea
verdadera, dichas sentencias se deben asociar entre los símbolos { y }. Así:
if (condición)
{
instrucción 1 ;
instrucción n;
}
Ejemplo 1:
if (a==b) a++;
El computador determina el valor de la relación a==b. Nótese que esta relación no está estructurada
con el operador de asignación '=', ya que en este caso no existe ninguna 'asignación', existe una
'relación'. Si se encuentra que el contenido del campo a es igual al contenido del campo b, se
sumará el número 1 al campo a. Si, por el contrario, se determina que el contenido del campo a es
diferente al contenido del campo b, se sigue con la siguiente instrucción y no se suma el numero 1
al contenido del campo a.
Ejemplo 2:
if (a != b) a += b;
Ejemplo 3:
if (a< b) {
a +=1; b+=8; c + = b;
}
if (condición) instrucción;
else instrucción;
Cuando se desea que se ejecute más de una instrucción por parte verdadera o por parte falsa, éstas
deberán ir asociadas entre los símbolos { y }.
Ejemplo :
if (condición)
{
instrucción 1 ;
.
instrucción n ;
}
else
{
instrucción 1 ;
.
instrucción n ;
}
Ejemplo 1
if (a==b) x++;
else h +=3 ;
Al momento de ejecutar esta instrucción, inicialmente se evalúa si a es igual a b, en caso de ser
verdadero entonces se le suma un 1 a la variable x. Si a resulta ser diferente de b se le suma un 3 a
la variable h.
Ejemplo 2
if (a==b) x += 8;
else x -=3;
En el if anterior se evalúa la condición (a==b); si esta condición resulta ser verdadera se ejecuta la
instrucción x += 8; si la condición resulta ser falsa se ejecuta la instrucción
x -= 3;.
OJO Nunca se ejecutan las dos instrucciones, se ejecuta la una o la otra dependiendo del resultado
de la evaluación de la condición. En cualquier caso el programa continúa con la próxima instrucción.
Ejemplo 3;
if (a ==b)
{
a++ ;
b += 4;
}
else h++;
En la instrucción anterior si la condición (a==b) resulta ser verdadera entonces se ejecutan las
instrucciones que forman el bloque, a saber:
a++;
b+=4.
En caso de que la condición (a==b) resulte ser falsa se ejecutará la instrucción que está después de
la palabra else.
Ejemplo 4:
if (x==z) {
a += 3;
b++ ;
}
else {
x++ ;
a +=3;
}
En la instrucción anterior si el contenido del campo x es igual al contenido del campo z se ejecutan
las instrucciones del bloque superior:
a+= 3; b++;
Si el contenido del campo x es diferente al contenido del campo z entonces se ejecutan las
instrucciones del bloque inferior: x++; a+= 3;
. if anidado.
La estructura if anidado consiste en poder evaluar condiciones dentro de una parte verdadera o una
parte falsa ubicada en una evaluación superior, estas estructuras son muy comunes para los
programadores de lenguajes estructurados. C proporciona una forma fácil de manejo para este tipo
de estructura. Su forma general puede ser:
if (condición) /* if 1 */
if (condición) /* if 2 está dentro de la parte positiva de if1 */
{
instrucción 1 ;
instrucción n;
}
else instrucción; /* termina if 2 */
else
if (condición) instrucción; /* termina if 1*/
No se puede definir un formato general, ya que debido a las circunstancias que se deban analizar
determinan la estructura del if
Ejemplo :
#jnclude <stdio,h>
#jnclude <conio.h> // Prototipo de getche()
// Con el getch() no se ve lo que se tecleo.
// Con el getche() si se ve lo que se tecleo.
void main()
{
char a; int numero; //definición de variables
a = getche ();
if (a == '0') numero = 0;
else if (a = = '1') numero = 1;
else if (a == '2') numero = 2;
else if (a == '3') numero = 3;
else if (a == '4') numero = 4;
else if (a == '5') numero = 5;
else if (a == '6') numero = 6;
else if (a == '7') numero = 7;
else if (a == '8') numero = 8;
else if (a =='9') numero = 9;
else numero = 999;
printf (" %d \n" , numero ) ;
}
El programa anterior lee un carácter y lo almacena en la variable a. Luego, utilizando la instrucción
if anidada compara el contenido de la variable a con el carácter'0' y en caso de cumplirse la
igualdad, asigna el numero 0 a la variable numero. Después de esta asignación, el control del
programa pasa a la instrucción printf. Si la relación resultó ser falsa, se ejecuta el else asociado al
primer if. Este else está conformado por un if que compara el contenido de la variable a con el
carácter '1' y si la relación resulta ser verdadera, se asigna el numero 1 a la variable numero y el
control del programa pasa a la instrucción printf. Si la relación resulto ser falsa se ejecuta el else
asociado al segundo if y así sucesivamente. Si el contenido de la variable a, no es ninguno de los
caracteres: '0' '1' '2' '3' '4' '5' '6' '7' '8' '9' se ejecuta el último else, que tiene asociada una
instrucción que asigna a la variable número la cifra 999. Es decir, el programa anterior lee un dato
y si representa un carácter en el rango:
'0' <=a<='9'
INSTRUCCIÓN SWITCH
Cuando se necesita elegir entre varias alternativas, es incómodo utilizar varias sentencias if ; la
solución a esto es la sentencia switch, la cual permite definir la ejecución de una o más
instrucciones de acuerdo al valor que tome una variable en el programa.
La estructura general de esta instrucción es la siguiente:
case constante n :
secuencia de sentencias;
break;
default :
secuencia de sentencias;
}
La sentencia break permite romper la ejecución de un case, es obligatorio su uso.
Expresión : puede ser una expresión aritmética entera o una instrucción
variable : puede ser una variable de tipo entera o carácter
constante : puede ser una constante entera que esté entre -32768 y 32767 o una constante
carácter y no debe tener rangos, sólo valores específicos
Funcionamiento:
Compara la expresión o variable con la lista de constantes i. Cuando concuerda con alguna, ejecuta
el conjunto de sentencias hasta el final del cuerpo del switch o hasta que encuentre un break. Si no
concuerda con alguna, ejecuta las sentencias del default si lo tiene.
#include "stdio.h"
#include "conio.h"
void main ()
{
int x,c;
c = qetche();
switch(c)
{
case 'i': x = 1;
break ;
case 'x': x = 8;
break ;
case 'a': x=7;
break ;
default: x=0 ;
}
printf ("%d \n", x);
}
Diagrama:
Inicio
(" S. Sumar
Lea (Opción)
Mientras ( Opción != 'S' && Opción != 'R' && Opción != 'M' && Opción != 'D')
Lea (A)
Lea (B)
Caso (Opción)
("La suma es:" A+B) ("La resta es:" A - B) ("La multiplicación es:" A*B) Imprima Imprima
("No se puede ("La división
realizar") es:" A/B)
Programa :
Fin
#include <conio.h>
#include <stdio.h>
main ()
{
int A,B;
char Opción ;
clrscr();
gotoxy (20,5) ;
printf(" S Sumar \n R Restar \n M Multiplicar \n D Dividir \n") ;
do
{ gotoxy (20, 10) ;
printf ("Digite la letra de la operación a realizar : ") ;
Opción = toupper (getchar ()) ;
printf("\n") ;
} while (Opción != 'S '&& Opción != 'R'&& Opción != 'M'&& Opción !='D');
gotoxy (20,12) ;
printf ("Digite el 1° número: ") ;
scanf ("%d", &A) ;
gotoxy (20,13) ;
printf ("Digite el 2° número: ") ;
scanf ("%d", &B) ;
switch(Opción)
{ case 'S': gotoxy (20,20) ;
printf (" La suma es : %d", A+B) ;
break ;
case 'R': gotoxy (20,20) ;
printf (" La resta es : %d", A-B) ;
break ;
case 'M': gotoxy (20,20) ;
printf (" La multiplicación es : %d", A*B) ;
break ;
case 'D': if (B)
{ gotoxy (20,20) ;
printf (" La división es : %d", A / B) ;
}
else
{ gotoxy (20,20) ;
printf ("No se puede realizar") ;
}
break ;
}
gotoxy (35,22) ;
printf ("Pulse una tecla para terminar') ;
getch () ;
}
Switch if
SUBPROGRAMAS
Es un conjunto de instrucciones que cumplen una tarea específica, estas rutinas o subprogramas NO
se ejecutan por si solas, sino que deben ser llamadas desde cualquier parte del programa principal
(función main) o desde otro subprograma.
Tipo del parámetro de salida Nombre de la función (definición de c/u de los parámetros de entrada)
Definición de parámetros de salida ( si existe)
Definición de campos locales (si existen)
Instrucciones
Retorne ( si existe parámetro de salida)
Los parámetros de entrada son campos donde el subprograma recibe datos de quien lo llama.
Los parámetros de salida son campos donde el subprograma retorna datos a quien lo llama.
Un subprograma puede o no tener parámetros.
FUNCIONES EN LENGUAJE C
Una función es un subprograma que retorna máximo UN SOLO valor o no retorna nada al
programa o subprograma llamante.
Las funciones pueden recibir datos o direcciones de memoria (parámetros de entrada) y entregar o
no resultados (parámetros de salida).
Ahorran espacio cuando son llamadas múltiples veces dentro de una corrida; realmente NO hacen
más rápido el programa.
Tipos de funciones
Hay: 1. funciones propias del lenguaje C
2. funciones definidas por el usuario
Ejemplo :
Función Librería
clrscr() conio.h // NO necesita parámetros o argumentos
gotoxy( ) conio.h // necesita 2 argumentos o parámetros de entrada y no tiene
parámetro de salida o sea no retorna nada
sqrt( ) math.h // necesita 1 parámetro de entrada y tiene parámetro de salida, o
sea que retorna un dato
delay ( ) dos.h //necesita 1 parámetro de entrada y no tiene parámetro de
salida, o sea que no retorna nada
getchar() stdio.h //NO necesita parámetros de entrada, pero tiene un parámetro
de salida o sea que retorna un dato
Cuando no recordemos que librería se utiliza con determinada función, colocamos el cursor en el
nombre de la función y luego presionamos F1 (Ctrl F1), o botón derecho del Mouse, apareciendo la
ayuda que necesitamos
<stdio.h> librería estándar de entrada y salida; tiene entre sus funciones las siguientes:
scanf, printf, fopen, fflush, fclose, remove, rename, fprintf, fscanf, fgetc, fgets, fputc, getchar,
putchar, puts, etc. '
<ctype> tiene funciones para determinar la clase de un carácter: isalpha, iscntrl, isdigit, isgraph,
islower, isspace, isupper, isxdigit, etc.
<string.h> tiene funciones para manejo de cadenas (strings): strcpy strcat, strcmp, strchr, strlen,
etc.
<math.h> librería para funciones matemáticas (recuerde que entre los operadores de C
no hay ni siquiera exponenciales) : sin, cos, tan, asín, acos, atan, sinh, cosh, tanh, exp, log, log10,
sqrt, pow (esta se usa para elevar un número a una potencia), ceil, floor, fabs, etc.
<stdlib.h> funciones de utilería, para convertir entre tipos diferentes, para terminación,
etc. atoi, atol, strtod, strtol, rand, srand, calloc, malloc, free, exit, system (con esta función se
puede ejecutar cualquier comando del sistema operacional), qsort (clasifica arreglos), etc.
Formato de la función
Tipo nombre de la función (definición de cada uno de los parámetros de entrada) ojo no
lleva ;
{
Definición del parámetro de salida; //si existe
declaración de variables locales ;
instrucción 1 ;
instrucción 2 ;
instrucción n ;
return () ;
}
Tipo Es el tipo de dato que retorna la función (int, float,……) o void cuando no retorna nada.
Parámetros Son las variables que reciben los datos. Si son varias se separan por comas.
Instrucción return ( )
Existen dos formas para dar fin a una función. La primera es cuando se ha ejecutado la última
instrucción de ésta.
La segunda es utilizando la orden return( ). Esta orden se utiliza cuando la función retorna un dato o
sea cuando tiene parámetro de salida. La función retorna el dato en el lugar donde fue llamada.
Diseño de funciones
Para diseñar una función se deben seguir los siguientes pasos:
Ejemplo: Desarrollar una función que retorne la multiplicación de 2 números. La función recibe los
números
A
int multiplicardosnumeros ( int num1, int num2)
{
int pcto ;
pcto = num1 * num2 ;
return (pcto) ;
}
C
Int multiplicardosnumeros ( int num1, int num2)
{
return (num1 * num2) ;
}
Observemos el ejemplo A
int multiplicardosnumeros ( int num1, int num2)
En el parámetro de entrada o formal num1 se recibe el primer número a multiplicar y en el
parámetro de entrada o formal num2 se recibe el segundo número
El tipo de datos int, indica que la función retorna un dato del tipo entero. El tipo de dato que retorna
la rutina, siempre debe indicarse, si se omite asume por defecto que es de tipo int. Si la función no
retoma ningún dato, se debe escribir la palabra void.
Seguidamente se deben escribir las instrucciones que nos permitan multiplicar las variables num1 y
num2. Estas instrucciones deben ir encerradas en un bloque, es decir entre llaves:
La definición de la variable pcto es local a la función y no será reconocida fuera de ella, es decir, la
variable pcto no pertenece al programa principal, pertenece solamente a la función. La instrucción
return nos permite retornar al programa principal el dato pedido.
En el ejemplo A se utilizó una variable propia de la función (local) para guardar el resultado y
enviarlo en la orden return
En el ejemplo C se realizó la operación dentro de la función retum
A nivel local o sea después del fin del programa (}); en este caso es necesario colocar a nivel global
el prototipo de la función. El prototipo de la funcion se declara asi: tipo de dato que retorna,
nombre de la función, abre paréntesis, tipo de cada uno de los parámetros de entrada, cierra
paréntesis, punto y coma
Ejemplo :
A NIVEL GLOBAL
#indude "stdio.h"
void main ()
{
int a, b; // no se definió la función prototipo
clrscr() ;
puts (" Digite 2 números") ;
scanf ("%d %d", &a, &b) ;
printf (" La respuesta es : %d ", multiplicardosnumeros (a,b) ); // llamado de la función
/* 6 */
}
La instrucción /*6 */ se cambio por: printf (" La respuesta es : %d ", multiplicardosnumeros (a,b)) ;
o sea que la función se puede colocar dentro del printf () y así se ahorraría una variable, en este
caso resultado
A NIVEL LOCAL
#indude "stdio.h"
int multiplicardosnumeros ( int, int); /* El C++, exige el prototipo de las funciones construidas
por el programador */
void main ()
{
int a, b, resultado ;
clrscr() ;
puts (" Digite 2 números") ;
scanf ("%d %d", &a, &b) ;
resultado = multiplicardosnumeros (a,b) ; // llamado de la función
printf (" La respuesta es : %d ", resultado) ; /* 6 */
}
#include <stdio.h>
#include <conio.h>
#include "C:mia.h" //acá ya esta creada la función multiplicardosnumeros
void main ()
{
int a, b, resultado ;
clrscr() ;
cout<< " Digite el primer número a multiplicar"<<endl ;
cin >>a;
cout<< " Digite el segundo número a multiplicar"<<endl ;
cin >>b;
resultado = multiplicardosnumeros (a,b) ; // llamado de la función
cout<< a <<"*”<<b<<”=”<< resultado<<endl; /* 6 */
}
Ejemplo Realizar un programa en lenguaje C que realice la multiplicación de 2 números digitados por
el usuario
void main ()
{
int multiplicardosnumeros ( int, int) /* El C++, exige el prototipo de las funciones
construidas por el programador */
int a, b, resultado ;
clrscr() ;
puts (" Digite 2 números") ;
scanf ("%d %d", &a, &b) ;
resultado = multiplicardosnumeros (a,b) ; // llamado de la función
printf (" La respuesta es : %d ", resultado) ; /* 6 */
}
Dentro del return puede ir una constante, variable o cualquier expresión válida de C
Una función puede tener cero o más parámetros formales o de entrada. El máximo está
determinado por el compilador utilizado
La declaración de los tipos de los parámetros se pueden hacer antes de la llave { de la función o
dentro de la lista de los parámetros
Los parámetros actuales o argumentos deben ser iguales en número y en tipo que los parámetros
formales de la función, o sea debe haber una correspondencia 1 a 1. Normalmente C NO LOS
REVISA y produce resultados erróneos si hay errores.
Si los parámetros de la función tienen el mismo nombre que los argumentos del programa
llamante, estos serían otras variables DIFERENTES de la que tiene el main; si la función altera
sus variables, las variables del main NO serán. afectadas.
Las funciones en C son " recurrentes " o sea que se pueden llamar a sí mismas logrando una
insospechada potencia.
La función realizada por el usuario debe incorporarse al programa y compilarse como un todo.
Una función puede no tener parámetros de entrada ni de salida. (EJ la función clrscr ()).