REPUBLICA BOLIVARIANA DE
VENEZUELA
MINISTERIO DE EDUCACION
SUPERIOR
UNIVERSIDAD DE LA FUERZA
ARMADA
ESCUELA DE SISTEMAS
LENGUAJE Y PROGRAMACION I
Lenguaje C
Introducción-condicionales
Ing.Ordoñez
1
1
2
1.- LENGUAJE C
Fue creado en los años 70 por Brian Kernighan y Dennis Ritchie,
proporciona una gran flexibilidad de programación. C es un lenguaje estructurado,
consta de funciones, por lo tanto es orientado a acciones, la función básica en C
es MAIN, es la primera en ejecutarse, desde ella llama al resto de las funciones
presente en nuestro programa.
Un programa en c puede estar compuesto por uno o más modulo, estos son
los ficheros fuentes, la estructura general de un fichero fuente es la siguiente:
#include <stdio.h> /// libreria controla entrada y salida
int main() { // function main, principal
// aqui escribiremos el código del programa ... CUERPO DEL
PROGRAMA
printf (" Hola este es mi primer programa");
return 0;
}
Los programas en c cada bloque abre y cierra con llaves {}, cada
sentencia finaliza con punto y coma ;.
2.- FLUJO DE ENTRADA Y SALIDA
En Lenguaje C contamos con las funciones PRINTF para la salida por
pantalla, y para la recolección de datos SCANF, también para la salida y capture
de datos tipo cadenas de caracteres (String), podemos utilizar GET(para leer una
cadena de caracteres por teclado), y PUT(para mostrar pantalla).
Ejemplo con PUTS y GETS Ejemplo con PRINTF y SCANF
#include <stdio.h> #include <stdio.h>
int main() { int main() {
char nombre[30]; char nombre[30];
// aqui escribiremos el codigo del // aqui escribiremos el codigo del
2
3
programa ... programa ...
puts (" Hola este es mi primer programa"); printf (" Hola este es mi primer programa");
puts("\n Escribe tu nombre: "); printf("\n Escribe tu nombre: ");
gets(nombre); scanf("%s",&nombre);
puts ("\nTu nombre es: \t"); printf ("\nTu nombre es: %s ", nombre);
puts (nombre); return 0;
return 0; }
}
Para trabajar con cadenas de caracteres o recomendable es trabajar con
PUTS y GETS, pero con el resto de los datos, se debe trabajar con PRINTF Y
SCANF, para ellos debemos tener ciertos parámetros. Para el printf, debemos
encerrar entre paréntesis y comillas dobles todo aquello que deseamos mostrar
por pantalla, en el caso del SCANF, debemos colocar entre comillas dobles el
formato del tipo de dato a leer (mas adelante se muestra la tabla) seguido de una
coma(,) el signo & y el nombre de la variable.
printf (" Hola este es mi primer programa");
scanf("%s",&nombre);
3.- VARIABLES
Una variable en c, debe ser declarada para poder ser usada, distingue entre
mayúsculas y minúsculas, no puede llamarse igual a ninguna palabra reservado,
puede estar compuesta por números y letras, no debería comenzar por numero,
acepta el carácter _ .
Para ser declarada debemos colocar TipoDeDato NombreVariable;
ejemplo:
Float cedula://cedula es de tipo float
Int edad=10; // podemos inicializarla al declararla.
3
4
3.1.- TIPOS DE DATOS EN C
TIPO FORMA
TO
char caracter %c
int entero %i o
%d
float real %f
double Real doble %f
Short int Entero corto %i
Long int Entero largo %i
Unsigned int Entero sin signo (por defecto) %i
Unsigned long int Entero largo sin signo %i
Signed int Entero con signo %i
Signed long int Entero largo con signo %i
En C no existe el tipo de Dato STRING, (cadena de caracteres), por lo tanto
las cadenas las manejamos como un arreglo de caracteres por lo tanto la
declaramos con CHAR, y le colocamos la longitud de la cadena, su formato es %s.
cada cadena finaliza en el carácter nulo (`\0`) Ejemplo:
Char cadena[30]; // cadena tiene una longitud de 30 caracteres
Char cadena[30]=”esto es una cadena”; // podemos inicializar.
3.2.- ALCANCE DE VARIABLES,
Variables locales: son aquellas las cuales solo son accesibles dentro del
función o bloque donde se declare.
Variables Globales: estas solo son declaradas al inicio del programa, y son
accesibles desde cualquier parte del programa.
4
5
Las variables pueden ser declaradas en lugares diferentes y dependiendo de
dónde se declaren tienen su alcance.
Fuera de todas las funciones: es decir en el bloque de declaraciones,
después de las librerías, son las llamadas variables GLOBALES.
Dentro de una función: se pueden acceder a ellas solo desde la función
donde son declaradas, son las variables LOCALES.
Como parámetro a función: solo accesibles dentro de la función.
Variables LOCALES.
Dentro de un bloque de código: solo se puede acceder a ellas dentro del
bloque en la cual fueron declaradas. Variables LOCALES.
#include <stdio.h>
int sum; /* Variable global, accesible desde cualquier parte */
/* del programa*/
void suma(int x) /* Variable local declarada como parámetro, */
/* accesible solo por la función suma*/
{
sum=sum+x;
return;
}
void intercambio(int *a,int *b)
{
if (*a>*b)
{
int inter; /* Variable local, accesible solo dentro del */
/* bloque donde se declara*/
inter=*a;
*a=*b;
*b=inter;
}
return;
}
int main(void) /*Función principal del programa*/
{
int contador,a=9,b=0; /*Variables locales, accesibles solo */
/* por main*/
sum=0;
intercambio(&a,&b);
for(contador=a;contador<=b;contador++) suma(contador);
printf("%d\n",&suma);
return(0);
5
6
}
4.-OPERADORES
Los caracteres de barra invertida se usan para introducir caracteres que es
imposible introducir por el teclado (tales como retorno de carro, etc.). Estos
caracteres de barra invertida son:
Códig Significado
o
\b Retroceso
\n Nueva línea
\r Retorno de carro
\t Tabulador horizontal
\” Doble comilla
\’ Simple comilla
\0 Nulo
\\ Barra invertida
\v Tabulador vertical
\a Alerta
\o Constante octal
\x Constante hexadecimal
OPERADORES
OPERADOR OPERADOR
++ Incremento = Asignar
-- Decremento == Comparar
* Multiplicación != No es igual
+ Sumar > Mayor que
- Restar < Menor que
/ División >= Mayor igual que
% Modulo <= Menor igual que
&& AND
6
7
! NOT || OR
5.- CONTROL DE FLUJO.
Antes de comenzar, debemos tomar en cuenta lo siguiente, en lenguaje C,
cualquier valor distinto de cero (0) es verdadero (true), y si es igual a cero(0) es
falso, entonces if (x), si el valor de x!=0, es verdadero, en caso de que x=0; es
falso.
5.1.- CONDICIONALES
IF~ELSE
La sintaxis es la siguiente:
IF (CONDICION) if (a>b)
{SENTENCIAS { printf(“A es mayor que B”):
} }
Tenemos el condicional IF sencillo, el indica si la variable a es mayor que la
variable b, entra dentro del bloque IF, e imprime en pantalla el mensaje “A es
mayor que B”. Ahora si necesitamos indicar en caso contrario que b fuera mayor
que a, efectuamos lo siguiente:
If (a>b)
{printf(“A es Mayor que B”);}
Else
{ printf(“B es mayor que A ”);}
En este caso hemos dado los dos mensajes utilizando en el IF un ELSE,
que indica entonces… por lo tanto si A es mayor que B, imprime “A es mayor que
B” en caso contrario imprime “B es mayor que A”. es decir evalua una condición,
sino se cumple entra en el ELSE. Pero que sucede si A no es mayor que B sino es
7
8
Igual, estaríamos dando información errada. Entonces necesitamos evaluar más
de una condición y lo podemos hacer de la siguiente manera.
if (a>b)
{printf("\nA es Mayor que B")}
else if (b>a)
{printf("\nB es Mayor que A")}
else
{printf("\nA y B tienen el mismo valor")}
Entonces veamos lo que sucede tenemos ahora una nueva condición, si se
cumple: if (a>b) entra en la primera condición, de lo contrario va a la segunda
else if (b>a), entra en la segunda, y en caso de que no se cumpla la condición
entra en el else.
Es decir podemos tener dentro de un IF, varias condiciones y al final si NO
SE CUMPLE ninguna de las condiciones podemos colocar el ELSE.
Ejemplos:
#include <stdio.h>
int main(void)
{
double s; // Distancia
int tiempo_espera; //tiempo de espera
scanf("%lf %d", &s, &tiempo_espera);
double costo;
if(s<=3 && s>0)// if con varias condicones
{costo= 10+tiempo_espera/5*2;}
else if (s>3 && s<=10)
{costo= 10 + (s-3)*2 + tiempo_espera/5*2;}
else
{costo= 10+14+(s-10)*3+tiempo_espera/5*2;}
int m = costo;
double r = costo - m;
if(r>=0.5) // if simple
{m = m+1;}
printf("\n%d",m);
return 0;
}
8
9
De igual manera podemos anidar los IF, es decir podemos tener un If dentro de otro:
if (edad<18)
{printf("\n Es mayor de edad")}
else if (edad>=18)
{if (edad>60){printf("\n ES ADULTO MAYOR")}
else{printf("\n es Mayor de Edad");}
}
else
{printf("\nValor Invalido")}
En el ejemplo de arriba estamos validando la variable edad, si la edad<18,
entra en la primera condición e imprime en pantalla “Es mayor de edad" , en caso
contrario pasa al ELSE IF, dentro de este se encuentra otra condición, e indic si
edad>60, imprime “ES ADULTO MAYOR”, de lo contrario imprime “es Mayor de
Edad”, ahora si no entra en la primera, ni en la segunda condición del if principal,
nos queda el ELSE, y nos va a imprimir en pantalla, “Valor Invalido”.
SWITCH
Nos permite tomar múltiples condiciones basada en una expresión que
puede tomar un determinado número de valores constantes enteros (los char son
un tipo de entero).
El valor de la variable se va comparando con las constantes por orden y
una vez que coincide con una de ellas se ejecutan todas las sentencias (incluidas
las de los cases siguientes) hasta que se encuentra la sentencia break.
Su estructura es la siguiente:
Switch(expresion)
{case const1: sentencias;
Break;
case const2: sentencias;
Break;
9
10
case const3: sentencias;
Break;
…
default: sentencias;
}
Podemos tener tantos case como necesitemos, DEFAULT funciona igual
que el ELSE en la sentencia IF, donde si no cumple con ninguno de los case,
podemos colocar instrucciones. Ejemplo:
Int dia=3;
switch(dia)
{ case 1: printf("\n ES Domingo");
break;
case 2: printf("\n ES LUNES");
break;
case 3: printf("\n ES MARTES");
break;
case 4: printf("\n ES MIERCOLES");
break;
case 5: printf("\n ES JUEVES");
break;
case 6: printf("\n ES VIERNES");
break;
case 7: printf("\n ES SABADO");
break;
default: printf("DIA INVALIDO");
}
Analicemos el ejemplo, estamo validando la variable dia, la cul es de
tipo INT y su valor predeterminado es 3. Int dia=3; , luego tenemos una serie de
case, donde indica el valor a indicar, es decir en el primero es: case 1: si dia es
igual a 1, entrara en este caso, y nos imprimirá en pantalla: “ES Domingo”, en
caso de que sea 2, nos imprime en pantalla “ES LUNES”, ya si sucesivamente,
en caso de que el valor de día NO SE ENCUENTRE en ningún CASE, se dirige al
DEFAULT: e imprime en pantalla "DIA INVALIDO".
NOTA MUY IMPORTANTE, siempre al finalizar las sentencia de cada case,
debemos colocar el BREAK; (cortar), debido a que de no hacerlos al entrar en el
primer case, entrara en los sucesivos, hasta encontrar un break o el fin del switch.
10
11
Ejercicios
1.- Hacer un programa en el cual, lea tu nombre y apellido y lo muestre en
pantalla.
2.- Efectué un programa que pida un número entero, lo multiplique por 3 y
muestre el resultado por pantalla
3.- se requiere pedir al usuario 3 valores e indicar, cual es mayor, cual es
menor.
4.- Dada la edad del usuario, indicar un mensaje en pantalla siguiendo los
siguientes criterios.
:
edad <1 BEBE
edad>1 y <12 NIÑO
edad >=12 y<18 Adolecente
Edad >= 18 y <65 Joven
Edad >=65 <79 Edad Media
Edad >=80 a <=99 Ancianos
Edad >100 Mayores de larga vida
5.- Dado un número del 1 al 12, indicar a cual mes pertenece.
6.- Dado un número ROMANO del 1 al 10, indicar en decimal que numero
es?.
Enviar ejercicios en un archivo TuNombre.txt a:
[email protected] 11