Está en la página 1de 9

UNIVERSIDAD NACIONAL DE SAN ANTONIO ABAD DEL CUSCO

SISTEMAS DE OPERACIONES I
GUIA DE LABORATORIO
ecp 1 de 9

I. TEMA : LENGUAJE DE PROGRAMACION C

II. OBJETIVOS

El estudiante al finalizar la práctica será capaz de:

 Identificar las estructuras de control básicas del lenguaje de programación C.


 Utilizar el lenguaje de programación C, para escribir programas en el entorno Linux.

III. TRABAJO PREPARATORIO

 Familiaridad con el sistema operativo Linux


 Conocimiento de estructuras de control en lenguajes de programación

IV. MARCO TEORICO

El lenguaje de programación C, es un lenguaje de alto nivel, de uso muy extendido en el


campo de la programación de sistemas.
Originalmente creado en los laboratorios de Bell, se utilizo para escribir el sistema
operativo Unix, como una alternativa al hasta entonces lenguaje de programación
ensamblador, que era el utilizado para escribir este tipo de aplicaciones.
El uso de C, permitió que el código obtenido fuera portable de una máquina a otra,
independientemente de la arquitectura ISA del equipo subyacente.

PALABRAS RESERVADAS DEL LENGUAJE DE PROGRAMACION C

El siguiente listado muestra las palabras reservadas del lenguaje de programación C


(ANSI C89):

auto double int struct


break else long switch
case enum register typedef
char extern return union
const float short unsigned
continue for signed void
default goto sizeof volatile
do if static while

Como puede notarse, las palabras reservadas son similares a las utilizadas en lenguajes
de programación como Java, C++ y C#. Esto se debe a que C++ es una extensión de C,
mientras que Java se creó como un lenguaje alternativo a C, pero con una sintaxis que
permitiera a los programadores una transición sencilla.
C#, un lenguaje de programación moderno y promovido como el lenguaje de desarrollo
preferido de Microsoft. También mantiene la sintaxis de C, por las razones que Java lo
UNIVERSIDAD NACIONAL DE SAN ANTONIO ABAD DEL CUSCO
SISTEMAS DE OPERACIONES I
GUIA DE LABORATORIO
ecp 2 de 9

hizo: garantizar una curva de aprendizaje suave a la gran base de programadores en C,


C++ y Java.

ESTRUCTURAS DE CONTROL DEL LENGUAJE DE PROGRAMACION C

ESTRUCTURAS DE BIFURCACION

if (CONDICION)
{ // condicion = Verdadero
Instrucciones_V;
}
else
{ // CONDICION = Falso
Instrucciones_F;
}

Permite la ejecución condicional y excluyente de uno de dos grupos de instrucciones. Si


CONDICION es verdadero, entonces se ejecutará el grupo Instrucciones_V; si
CONDICION es falso, se ejecutará el grupo Instrucciones_F.

Ejemplo:

int nota;
if (nota > 10)
{
// La nota es mayor a diez
printf("La nota es aprobatoria");
}
else
{
// La nota es menor o igual a diez : nota <= 10
printf("La nota es desaprobatoria");
}

ESTRUCTURAS DE SELECCIÓN MULTIPLE

switch (EXPRESION)
{
case literal1:
// EXPRESION == literal1
Instrucciones_1;
break;
case literal2:
// EXPRESION == literal2
Instrucciones_2;
break;
...
default:
// EXPRESION != literal1, literal2, ...
Instrucciones_D;
break;
}
UNIVERSIDAD NACIONAL DE SAN ANTONIO ABAD DEL CUSCO
SISTEMAS DE OPERACIONES I
GUIA DE LABORATORIO
ecp 3 de 9

Ejecuta de manera excluyente, un grupo de instrucciones según EXPRESION sea igual a


literal1, literal2, etc. Si EXPRESION no es igual a ninguno de los literales indicados
en las entradas case de esta estructura, se ejecuta el grupo Instrucciones_D. Todo
grupo de instrucciones debe terminar con la instrucción break.

Ejemplo:

int opcion;
switch (opcion)
{
case 1:
printf("La variable opcion es igual a 1");
break;
case 2:
case 3:
printf("La variable opcion es igual a 2 o 3");
break;
case 4:
printf("La variable opcion es igual a 4");
break;
default:
printf("La variable opcion es igual a 4");
break;
}

ESTRUCTURAS ITERATIVAS

ESTRUCTURA WHILE

while (CONDICION)
{ //CONDICION = verdadero

//cuerpo del bucle


Instrucciones;
}

Mientras CONDICION sea verdadero, se ejecutarán las instrucciones parte del cuerpo del
bucle.

Por ejemplo, en el siguiente programa, la instrucción printf(…) se ejecutará 1000 veces,


puesto que la variable cnt, inicialmente de valor 0 se incrementará en uno en cada
iteración y solo después de 1000 incrementos, tomará un valor igual o mayor a 1000. en
ese momento, la condición verificada en el bucle (cnt < 100) será falsa y por lo tanto se
omitirán las instrucciones del cuerpo del bucle y se ejecutarán aquellas que estén
después del mismo.
UNIVERSIDAD NACIONAL DE SAN ANTONIO ABAD DEL CUSCO
SISTEMAS DE OPERACIONES I
GUIA DE LABORATORIO
ecp 4 de 9

Ejemplo:

int cnt=0;
while (cnt < 1000)
{
//cnt < 1000
printf("El valor de cnt es: %d\n",cnt);
cnt++;
}//cnt >= 1000

Estructura DO – WHILE

do
{ //cuerpo del bucle
Instrucciones;
} while(CONDICION);

El cuerpo del bucle se ejecuta por lo menos una vez (la primera vez) y luego se vuelve a
ejecutar, siempre que CONDICION sea verdadera, en caso contrario, se continúa la
ejecución del programa, desde la instrucción inmediatamente después del bucle

Por ejemplo, en el siguiente programa, la instrucción printf(…) se ejecutará 50 veces,


puesto que la variable nroEntradas, inicialmente de valor 50 se decrementará en uno en
cada iteración y solo después de 50 iteraciones, tomará un valor igual o menor a 50. En
ese momento, la condición verificada en el while (nroEntrada > 0) será falsa y por lo
tanto se continuará la ejecución del programa, desde la instrucción que sigue a la
sentencia while.

Ejemplo:

int nroEntrada=50;
do
{
printf("%d\n",nroEntrada);
nroEntrada--;
} while(nroEntrada>0);
//nroEntrada <= 0

Estructura FOR

for(EXPRESION1; CONDICION; EXPRESION2)


{
//Cuerpo del bucle
Instrucciones;
}

El cuerpo del bucle se ejecuta mientras no se cumpla CONDICION. En EXPRESION1


normalmente se asigna valores iniciales a las variables verificadas en CONDICION y en
EXPRESION2 se actualiza el valor de dichas variables.
UNIVERSIDAD NACIONAL DE SAN ANTONIO ABAD DEL CUSCO
SISTEMAS DE OPERACIONES I
GUIA DE LABORATORIO
ecp 5 de 9

En el siguiente ejemplo, se inicia la variable entera contador en cero, el cuerpo del


bucle se ejecutará mientras que contador sea menor a 10, además en cada iteración,
contador se incrementará en uno

Ejemplo:

int contador;
for(contador = 0;contador < 10; contador++)
{
printf("%d\n",contador);
}

V. DESARROLLO DE LA PRACTICA

1. Escriba un programa que lea tres segmentos y si estos forman un triangulo, que
muestre su área y perímetro

Solución

//Nombre : Triangulo.c
//Proposito : Muestra el area y perimetro de un triangulo
//Autor : Edwin Carrasco
//FCreacion : 29/01/2008
//FModificacion : --

#include<stdio.h>
#include<math.h>
#include<stdbool.h>

int main()
{
//Variables
int ladoA;
int ladoB;
int ladoC;
float area;
float perimetro;
float sp;
bool esTriangulo=false;

//Indicar que hace el programa


puts("Este programa determina el area y el perimetro de un
triangulo\n");

//Leer datos
printf("Ingrese el primer lado: ");
scanf("%d",&ladoA);
printf("Ingrese el segundo lado: ");
scanf("%d",&ladoB);
printf("Ingrese el tercer lado: ");
scanf("%d",&ladoC);

//Procesar y mostrar resultados


if ((ladoA + ladoB > ladoC) && (ladoB + ladoC > ladoA) &&
(ladoA + ladoC > ladoB))
UNIVERSIDAD NACIONAL DE SAN ANTONIO ABAD DEL CUSCO
SISTEMAS DE OPERACIONES I
GUIA DE LABORATORIO
ecp 6 de 9

esTriangulo = true;

if (esTriangulo)
{
perimetro = ladoA+ladoB+ladoC;
sp = perimetro/2;
area = sqrt(sp*(sp-ladoA)*(sp-ladoB)*(sp-ladoC));
printf("El area del triangulo es %.2f\n",area);
printf("El perimetro del triangulo es %6.3f\n",perimetro);
}
else
printf("Los lados ingresados no forman un triangulo\n");

return 0;
}

2. Escriba un programa que muestre los N primeros números perfectos

Solución

//Nombre : nrosPerfectos.c
//Proposito : Muestra los N primeros numeros perfectos
//Autor : Edwin Carrasco
//FCreacion : 29/01/2008
//FModificacion : --

#include<stdio.h>

int main()
{
//Variables
int N;
int i;
int nroEvaluado=1;
int divisores=0;

//Indicar que hace el programa


puts("Este programa muestra los N primeros numeros perfectos\n");

//Leer datos
printf("Ingrese el valor de N: ");
scanf("%d",&N);

//Procesar
while ( N > 0 )
{
divisores=0;
for (i = 1; i < nroEvaluado; i++)
{
if (nroEvaluado % i == 0)
{
divisores = divisores + i;
}
}
if (divisores == nroEvaluado)
{
printf("%d\n",nroEvaluado);
UNIVERSIDAD NACIONAL DE SAN ANTONIO ABAD DEL CUSCO
SISTEMAS DE OPERACIONES I
GUIA DE LABORATORIO
ecp 7 de 9

N--;
}
nroEvaluado++;
}

return 0;
}

3. Escriba un programa que lea como entrada una fecha (dd/mm/aaaa) y muestre la
fecha correspondiente al día siguiente

Solución

//Nombre : diaSgte.c
//Proposito : Muestra el dia siguiente a la fecha ingresada por
el usuario
//Autor : Edwin Carrasco
//FCreacion : 30/01/2008
//FModificacion : --

#include<stdio.h>
#include<stdbool.h>

int main()
{
//Variables
int diaActual;
int mesActual;
int anioActual;
int diaSgte;
int mesSgte;
int anioSgte;
bool fechaValida=true;

//Indicar que hace el programa


puts("Este programa muestra la fecha correspondiente al dia
siguientes a la fecha ingresada por el usuario\n");

//Leer datos
printf("Ingrese el dia: ");
scanf("%d",&diaActual);
printf("Ingrese el mes (1 - 12): ");
scanf("%d",&mesActual);
printf("Ingrese el año (4 digitos): ");
scanf("%d",&anioActual);

//Procesar y mostrar resultados


diaSgte = diaActual+1;
mesSgte = mesActual;
anioSgte = anioActual;

switch (mesActual)
{
case 1:
case 3:
case 5:
UNIVERSIDAD NACIONAL DE SAN ANTONIO ABAD DEL CUSCO
SISTEMAS DE OPERACIONES I
GUIA DE LABORATORIO
ecp 8 de 9

case 7:
case 8:
case 10:
if (diaActual > 31)
fechaValida = false;
if (diaActual == 31)
{
diaSgte = 1;
mesSgte = mesActual + 1;
}
break;
case 4:
case 6:
case 9:
case 11:
if (diaActual > 30)
fechaValida = false;
if (diaActual == 30)
{
diaSgte = 1;
mesSgte = mesActual+1;
}
break;
case 12:
if (diaActual > 31)
fechaValida = false;
if (diaActual == 31)
{
diaSgte = 1;
mesSgte = 1;
anioSgte = anioActual + 1;
}
break;
case 2:
if (anioActual % 4 == 0)
{
if (diaActual > 29)
fechaValida = false;
if (diaActual == 29)
{
diaSgte = 1;
mesSgte = mesActual + 1;
}
}
else
{
if (diaActual > 28)
fechaValida = false;
if (diaActual == 28)
{
diaSgte = 1;
mesSgte = mesActual + 1;
}
}
break;
default:
fechaValida = false;
break;
}
UNIVERSIDAD NACIONAL DE SAN ANTONIO ABAD DEL CUSCO
SISTEMAS DE OPERACIONES I
GUIA DE LABORATORIO
ecp 9 de 9

//Mostrar resultados
if (fechaValida == true)
printf("La fecha sera %d/%d/%d\n",diaSgte,mesSgte,anioSgte);
else
printf("Los datos ingresados no son correctos\n");

return 0;
}

VI. EJERCICIOS PROPUESTOS

1. Escriba un programa que muestre la fecha correspondiente al día anterior a la fecha


ingresada por el usuario
2. Escriba un programa que muestre los N primeros números primos.
3. Escriba un programa que muestre los N primeros elementos de la serie de Fibonacci.
4. Escriba un programa que lea un número entero de 2 cifras (0 – 99) y muestre su
equivalente en letras. Por ejemplo, si el usuario ingresa 12, el programa debe mostrar
como salida la cadena “DOCE”.
5. Escriba un programa que lea N números enteros a través del teclado y determine su
promedio. El programa terminará de leer datos del teclado, cuando el usuario ingrese
un valor especial, por ejemplo -1.

VII. BIBLIOGRAFIA

1. Joyanes L., “MICROSOFT C/C++ 7. MANUAL DE BOLSILLO”. Ed. McGraw


Hill 1994
2. http://www.tecnun.es/asignaturas/Informat1/ayudainf/aprendainf/AnsiC/leng_c.pdf
3. http://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n_C

También podría gustarte