Documentos de Académico
Documentos de Profesional
Documentos de Cultura
INFORME DE LABORATORIO
INFORMACIÓN BÁSICA
ASIGNATURA: Laboratorio de Sistemas Operativos - C
TÍTULO DE LA
Programación en C y C++ usando la terminar de Linux
PRÁCTICA:
NÚMERO DE NRO.
02 AÑO LECTIVO: 2023 VI
PRÁCTICA: SEMESTRE:
FECHA DE HORA DE
25/06/2023
PRESENTACIÓN PRESENTACION
ALUMNO:
Llaique Chullunquia Angie Carolina NOTA:
DOCENTE(s):
Apaza Aceituno Roni Guillermo
SOLUCIÓN Y RESULTADOS
I. EJERCICIOS RESUELTOS POR EL DOCENTE
Ejercicio 1.
Escribir el siguiente código en un archivo llamado holamundo.c, dentro de una carpeta con el
siguiente contenido:
#include <stdio.h>
int main ()
{
printf("Hola mundo!\n");
return 0;
}
UNIVERSIDAD NACIONAL DE SAN AGUSTIN
FACULTAD DE INGENIERÍA DE PRODUCCIÓN Y SERVICIOS
ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMA
Para ejecutar el programa compilado compruebe que se creo el archivo ejecutable. a.out. para
ejecutar, escriba la siguiente línea:
$./a.out
—------------------------------------------------------------------------------------------------------------------------------
Ejercicio 2
Compile el código en el archivo llamado holamundo.c, visto en el ejercicio anterior, con la
siguiente línea:
$gcc -o hola holamundo.c
Para ejecutar el programa compilado compruebe que se creo el archivo ejecutable. hola. para
ejecutar, escriba la siguiente línea:
$./hola
UNIVERSIDAD NACIONAL DE SAN AGUSTIN
FACULTAD DE INGENIERÍA DE PRODUCCIÓN Y SERVICIOS
ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMA
Ejercicio 3
Compile el código en el archivo llamado holamundo.c, visto en el ejercicio anterior, con la
siguiente línea:
$gcc -c holamundo.c
Para verificar que el programa compilado creo el archivo objeto. holamundo.o. utilice el comando
ls para verificar que no se puede ejecutar, escriba la siguiente línea:
$./holamundo.o
—------------------------------------------------------------------------------------------------------------------------------
Ejercicio 4
Escriba el siguiente código en el archivo llamado raiz.c, con el siguiente contenido:
#include <math.h>
#include <stdio.h>
int
main (void)
{
double x = 2.0;
double y = sqrt (x);
printf ("La raíz cuadrada de %f es %f\n", x, y);
return 0;
}
UNIVERSIDAD NACIONAL DE SAN AGUSTIN
FACULTAD DE INGENIERÍA DE PRODUCCIÓN Y SERVICIOS
ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMA
Para verificar que el programa compilado creo el archivo objeto. raiz. utilice el comando ls para
verificar que no se puede ejecutar, escriba la siguiente línea:
$./raiz
—------------------------------------------------------------------------------------------------------------------------------
Ejercicio 5
Utilice la opción -lm para compilar el archivo raíz.c usado en el ejercicio anterior para compilar el
código fuente escrito en dicho archivo, usando la siguiente línea de comando:
$gcc -Wall raiz.c -lm -o raiz
Para verificar que el programa compilado creo el archivo objeto. raiz. utilice el comando ls para
verificar que se puede ejecutar, escriba la siguiente línea:
UNIVERSIDAD NACIONAL DE SAN AGUSTIN
FACULTAD DE INGENIERÍA DE PRODUCCIÓN Y SERVICIOS
ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMA
$./raiz
—------------------------------------------------------------------------------------------------------------------------------
Ejercicio 6.
Utilice la opción -lm para compilar el archivo raíz.c usado en el ejercicio anterior para compilar el
código fuente escrito en dicho archivo, usando la siguiente línea de comando:
$gcc -Wall -lm raiz.c -o raiz
Para verificar que el programa compilado creo el archivo objeto. raiz. utilice el comando ls para
verificar que se puede ejecutar, escriba la siguiente línea:
$./raiz
—------------------------------------------------------------------------------------------------------------------------------
Ejercicio 7
Escriba el siguiente código en el archivo llamado malacomp.c, con el siguiente contenido:
#include <stdio.h>
int
main (void)
{
double x = strtod ("123", NULL);
printf ("El valor es %f\n", x);
return 0;
}
UNIVERSIDAD NACIONAL DE SAN AGUSTIN
FACULTAD DE INGENIERÍA DE PRODUCCIÓN Y SERVICIOS
ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMA
Lanzará un mensaje de warning, pero creará un objeto ejecutable. Para verificar que el programa
compilado creo el archivo objeto. malacomp. utilice el comando ls. para verificar que se puede
ejecutar, escriba la siguiente línea:
$./malacomp
—------------------------------------------------------------------------------------------------------------------------------
Ejercicio 8
Escriba el siguiente código en el archivo llamado malacomp.c, con el siguiente contenido:
#include <stdio.h>
#include <stdlib.h>
int main (void)
{
double x = strtod ("123", NULL);
printf ("El valor es %f\n", x);
return 0;
}
UNIVERSIDAD NACIONAL DE SAN AGUSTIN
FACULTAD DE INGENIERÍA DE PRODUCCIÓN Y SERVICIOS
ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMA
—------------------------------------------------------------------------------------------------------------------------------
Ejercicio 9
Escriba el siguiente código en el archivo llamado ansi.c, con el siguiente contenido:
#include <stdio.h>
int
main (void)
{
const char asm[] = "6502";
printf ("la cadena asm es '%s'\n", asm);
return 0;
}
UNIVERSIDAD NACIONAL DE SAN AGUSTIN
FACULTAD DE INGENIERÍA DE PRODUCCIÓN Y SERVICIOS
ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMA
—------------------------------------------------------------------------------------------------------------------------------
Ejercicio 10.
Utilizando el código del ejercicio anterior, escriba la siguiente línea para compilarlo:
$gcc -Wall -ansi ansi.c -o ansi
Creará un objeto ejecutable. Para verificar que el programa compilado creo el archivo objeto.
ansi. utilice el comando ls. para verificar que se puede ejecutar, escriba la siguiente línea:
$./ansi
—------------------------------------------------------------------------------------------------------------------------------
Ejercicio 11
Escriba el siguiente código en el archivo llamado pi.c, con el siguiente contenido:
#include <math.h>
UNIVERSIDAD NACIONAL DE SAN AGUSTIN
FACULTAD DE INGENIERÍA DE PRODUCCIÓN Y SERVICIOS
ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMA
#include <stdio.h>
int
main (void)
{
printf ("el valor de pi es %f\n", M_PI);
return 0;
}
—------------------------------------------------------------------------------------------------------------------------------
Ejercicio 12
Utilizando el código del ejercicio anterior, escriba la siguiente línea para compilarlo:
$gcc -Wall pi.c -o pi
Creará un objeto ejecutable. Para verificar que el programa compilado creo el archivo objeto. pi.
utilice el comando ls. para verificar que se puede ejecutar, escriba la siguiente línea:
$./pi
UNIVERSIDAD NACIONAL DE SAN AGUSTIN
FACULTAD DE INGENIERÍA DE PRODUCCIÓN Y SERVICIOS
ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMA
—------------------------------------------------------------------------------------------------------------------------------
Ejercicio 13
Utilizando el código del ejercicio anterior, escriba la siguiente línea para compilarlo:
$gcc -Wall -ansi -D_GNU_SOURCE pi.c -o pi
Creará un objeto ejecutable. Para verificar que el programa compilado creo el archivo objeto. pi.
utilice el comando ls. para verificar que se puede ejecutar, escriba la siguiente línea:
$./pi
—------------------------------------------------------------------------------------------------------------------------------
Ejercicio 14.
Escriba el siguiente código en el archivo llamado ejemplo.c, con el siguiente contenido:
int
foo (unsigned int x)
{
if (x < 0)
return 0; /* no puede ocurrir */
else
return 1;
}
UNIVERSIDAD NACIONAL DE SAN AGUSTIN
FACULTAD DE INGENIERÍA DE PRODUCCIÓN Y SERVICIOS
ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMA
Creará un objeto ejecutable. Para verificar que el programa compilado creo el archivo objeto.
ejemplo. utilice el comando ls. para verificar que se puede ejecutar, escriba la siguiente línea:
$./ejemplo
—------------------------------------------------------------------------------------------------------------------------------
Ejercicio 15
Utilizando el código del anterior ejercicio compílelo siguiendo las siguientes instrucciones, para
obtener más información:
$gcc -W ejemplo.c -o ejemplo
Creará un objeto ejecutable. Para verificar que el programa compilado creo el archivo objeto.
ejemplo. Utilice el comando ls. para verificar que se puede ejecutar, escriba la siguiente línea:
$./ejemplo
UNIVERSIDAD NACIONAL DE SAN AGUSTIN
FACULTAD DE INGENIERÍA DE PRODUCCIÓN Y SERVICIOS
ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMA
Ejercicio 16
Escriba el siguiente código en el archivo llamado conversion.c, con el siguiente contenido:
#include <stdio.h>
#include <stdlib.h>
int
main (void)
{
double x = -3.14;
double y = abs(x); /* debe ser fabs(x) */
printf ("x = %g |x| = %g\n", x, y);
return 0;
}
Creará un objeto ejecutable. Para verificar que el programa compilado creo el archivo objeto.
conversion. Utilice el comando ls. para verificar que se puede ejecutar, escriba la siguiente línea:
$./conversion
UNIVERSIDAD NACIONAL DE SAN AGUSTIN
FACULTAD DE INGENIERÍA DE PRODUCCIÓN Y SERVICIOS
ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMA
Ejercicio 17.
Utilizando el código del anterior ejercicio compílelo siguiendo las siguientes instrucciones, para
obtener más
información:
$gcc -W -Wconversion conversion.c -o conversion
Creará un objeto ejecutable, a pesar de la advertencia de Warning. Para verificar que el programa
compilado
creo el archivo objeto. ejemplo. utilice el comando ls. para verificar que se puede ejecutar,
escriba la
siguiente línea:
$./conversion
—------------------------------------------------------------------------------------------------------------------------------
Ejercicio 18
Escriba el siguiente código en el archivo llamado hola.cc, con el siguiente contenido:
#include <iostream>
int
main ()
{
std::cout << "¡Hola, mundo!\n";
return 0;
UNIVERSIDAD NACIONAL DE SAN AGUSTIN
FACULTAD DE INGENIERÍA DE PRODUCCIÓN Y SERVICIOS
ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMA
Creará un objeto ejecutable. Para verificar que el programa compilado creo el archivo objeto.
hola. Utilice el comando ls. para verificar que se puede ejecutar, escriba la siguiente línea:
$./hola
Ejercicio 19
Utilizando el código del anterior ejercicio compílelo siguiendo las siguientes instrucciones, para
obtener más información:
$gcc -Wall hola.cc -o holaC
No creará un objeto ejecutable. Para verificar que el programa compilado no creo el archivo
objeto. Utilice el comando ls.
UNIVERSIDAD NACIONAL DE SAN AGUSTIN
FACULTAD DE INGENIERÍA DE PRODUCCIÓN Y SERVICIOS
ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMA
—------------------------------------------------------------------------------------------------------------------------------
Ejercicio 20
Escriba el siguiente código en el archivo llamado holastr.cc, con el siguiente contenido:
#include <string>
#include <iostream>
using namespace std;
int
main ()
{
string s1 = "¡Hola,";
string s2 = "Mundo!";
cout << s1 + " " + s2 << '\n';
return 0;
}
Creará un objeto ejecutable. Para verificar que el programa compilado creo el archivo objeto.
holastr. Utilice el comando ls. para verificar que se puede ejecutar, escriba la siguiente línea:
$./holastr
—---------------------------------------------------------------------------------------------------------------------------
Ejercicio 21
Escriba el siguiente código en el archivo llamado cadena.cc, con el siguiente contenido:
#include <list>
#include <string>
#include <iostream>
using namespace std;
int
main ()
{
list<string> list;
list.push_back("Hola");
list.push_back("Mundo");
cout << "List size = " << list.size() << '\n';
return 0;
}
UNIVERSIDAD NACIONAL DE SAN AGUSTIN
FACULTAD DE INGENIERÍA DE PRODUCCIÓN Y SERVICIOS
ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMA
Creará un objeto ejecutable. Para verificar que el programa compilado creo el archivo objeto.
cadena. Utilice el comando ls. para verificar que se puede ejecutar, escriba la siguiente línea:
$./cadena
—------------------------------------------------------------------------------------------------------------------------------
Ejercicio 22
Escriba el siguiente código en el archivo llamado buffer.h, con el siguiente contenido:
#ifndef BUFFER_H
#define BUFFER_H
template <class T>
class Buffer
{
public:
Buffer (unsigned int n);
UNIVERSIDAD NACIONAL DE SAN AGUSTIN
FACULTAD DE INGENIERÍA DE PRODUCCIÓN Y SERVICIOS
ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMA
int
main ()
{
Buffer<float> f(10);
f.insert (0.25);
f.insert (1.0 + f.get(0));
cout << "valor almacenado = " << f.get(0) << '\n';
return 0;
}
—------------------------------------------------------------------------------------------------------------------------------
Ejercicio 23
Utilizando el código del ejercicio 18 compílelo siguiendo las siguientes instrucciones, para
obtener más información:
$g++ -Wall -march=pentium4 hola.cc -o holaC
No creará un objeto ejecutable. Para verificar que el programa compilado no creo el archivo
objeto. Utilice el comando ls.
—------------------------------------------------------------------------------------------------------------------------------
Ejercicio 24
Utilizando el código del ejercicio 18 compílelo siguiendo las siguientes instrucciones, para
obtener más
información:
$g++ -Wall -march=athlon hola.cc -o holaC
No creará un objeto ejecutable. Para verificar que el programa compilado no creo el archivo
objeto. utilice el comando ls.
UNIVERSIDAD NACIONAL DE SAN AGUSTIN
FACULTAD DE INGENIERÍA DE PRODUCCIÓN Y SERVICIOS
ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMA
Ejercicio 2. Crear un programa en C que pida por teclado dos números enteros e imprima en
pantalla su suma, resta, multiplicación, división y el reto (módulo) de la división.
UNIVERSIDAD NACIONAL DE SAN AGUSTIN
FACULTAD DE INGENIERÍA DE PRODUCCIÓN Y SERVICIOS
ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMA
Ejercicio 3. Crear un programa en C que muestre el dato ‘A’ de tipo char y después del número 3
como tipo de dato int, float y double.
● -mieee: Habilita la generación de código que sigue el estándar IEEE para aritmética
de punto flotante. Esto asegura una mayor consistencia en el manejo de números de
punto flotante, pero puede ralentizar el rendimiento en comparación con las
optimizaciones específicas de DEC Alpha.
Es importante tener en cuenta que estas opciones específicas de DEC Alpha pueden variar
según la versión de GCC que estés utilizando y la plataforma en la que estés compilando [2].
Existen varios niveles de optimización para GCC, y el número de niveles puede variar
dependiendo de cómo se configure el compilador [3]. Los más comunes son:
-O3: Optimiza aún más que -O2, pero puede aumentar significativamente el tiempo de
compilación.
Es importante tener en cuenta que cada nivel de optimización puede tener diferentes
conjuntos de optimizaciones habilitadas, y que algunas optimizaciones pueden no ser
seguras en todos los casos. Por lo tanto, es importante compilar y probar el código con
diferentes niveles de optimización para encontrar el equilibrio adecuado entre velocidad y
seguridad [4].
CONCLUSIONES
Programar en C y C++ en la terminal de Linux es una experiencia que proporciona un control sin
igual sobre el sistema y un rendimiento óptimo. Esta combinación de lenguajes de programación
de bajo nivel y un sistema operativo de código abierto como Linux es especialmente valiosa para
aplicaciones de sistemas, donde la eficiencia y la gestión de recursos son esenciales. Linux ofrece
una amplia gama de herramientas de desarrollo y bibliotecas que facilitan la escritura de código
en C y C++, lo que agiliza el proceso de programación.
UNIVERSIDAD NACIONAL DE SAN AGUSTIN
FACULTAD DE INGENIERÍA DE PRODUCCIÓN Y SERVICIOS
ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMA
Además, la curva de aprendizaje de C y C++ puede ser pronunciada para los programadores
novatos, por lo que es importante estar dispuesto a invertir tiempo en su dominio.
En resumen, programar en C y C++ en la terminal de Linux es una elección poderosa para aquellos
que buscan un control total sobre el sistema y un rendimiento óptimo, pero también requiere una
atención meticulosa a la seguridad y una inversión de tiempo en el aprendizaje de estos
lenguajes. Los beneficios son notables en aplicaciones de sistemas y programación de bajo nivel.
REFERENCIAS Y BIBLIOGRAFÍA
[1] “DEC Alpha Options (Using the GNU Compiler Collection (GCC))”. GCC, the GNU Compiler Collection- GNU
Project. Accedido el 21 de septiembre de 2023. [En línea]. Disponible:
https://gcc.gnu.org/onlinedocs/gcc/DEC-Alpha-Options.html
[2] “Hiding in plain sight: The 64bit Dec Alpha C compiler | Virtually Fun”. Virtually Fun | Fun with Virtualization.
Accedido el 21 de septiembre de 2023. [En línea]. Disponible:
https://virtuallyfun.com/2023/05/05/hiding-in-plain-sight-the-64bit-dec-alpha-c-compiler/
[3] “GCC - 3.11 Opciones que controlan la optimización Estas opciones controlan varios tipos de optimizaciones.”
Runebook.dev. Accedido el 21 de septiembre de 2023. [En línea]. Disponible:
https://runebook.dev/es/docs/gcc/optimize-options
[4] “2.4. Optimización del código con GCC Red Hat Enterprise Linux 8 | Red Hat Customer Portal”. Red Hat
Customer Portal. Accedido el 21 de septiembre de 2023. [En línea]. Disponible:
https://access.redhat.com/documentation/es-es/red_hat_enterprise_linux/8/html/developing_c_and_cpp_appli
cations_in_rhel_8/code-optimization-with-gcc_building-code-with-gcc