SlideShare uma empresa Scribd logo
1 de 18
Compilación de
programas con archivos
Ayala Alberto
Castillo Ignacio
Isaac Aragon
Grandes Programas
Cuando se escriben grandes programas se debe generar un proyecto el cual
será dividido en módulos. Donde solo uno de ellos contiene el archivo main().c
Los demás archivos contienen las demás funciones que el programa requiera.
VENTAJAS
-Los módulos se dividen de manera natural en grupo comunes de funciones.
-Se pueden compilar los modulos separadamente y ligarlos con los ya
compilados.
-Las utilerias como make pueden ayudar a mantener sistemas grandes.
Archivos cabecera
Son archivos en los que se almacena un módulo o conjunto de definiciones,
estos archivos tienen la extensión “.h”.
Para definirlos en la función principal o main, basta con escribir algo así
como lo siguiente:
#include "mi_cabecera.h"
Con lo anterior, le estamos diciendo al programa que contenga el archivo
módulo “mi_cabecera.h”
Variables y Funciones
Externas
cada variable y argumento definido dentro de las funciones son locales así
mismas, si se desea declarar una variable global es necesario declarar fuera
de dichas funciones.
Alcance de variables externas.
Es decir si una variable externa(Global) es declarada después de la función
main() dicha función no podrá solicitar dicha variable.
ALCANCE DE LAS FUNCIONES Y
VARIABLES EN C
Una función es capaz de reconocer todas las variables de tipo global que
hayan sido declaradas antes de la misma función.
Adicionalmente, toda variable declarada dentro de una función se destruye al
finalizar esta.
Esta es la razón por la que todos los prototipos de funciones deben escribirse
o incluirse antes del cuerpo del código.
Ejemplo 1
En el código de la derecha describe un ejemplo
en el que en la función “intenta_acceder” intenta
usar la variable que no es global “variable”.
El código no compila.
Ejemplo 2
El ejemplo de la derecha muestra un ejemplo en
el que las variables son correctamente definidas
y llamadas pero en cambio las funciones no.
No es posible acceder a la función
“intenta_acceder” desde la función main ya que
esta fué declarada después de esta.
Ejemplo 3
El ejemplo 3 es un programa correcto:
La función “intenta_acceder” es llamada
desde la función main y el main si la conoce
ya que fué declarada antes de esta.
Las variables con nombre “variable” son
totalmente diferentes y las funciones
nisiquiera lo pueden notar, cada una es local a
su función y muere al finalizar esta; al llamar a
“intenta_acceder” se genera otro bloque de
memoria que sólo esa función conoce.
Variables externas
Son utilizadas cuando se requiere hacer referencia a una variable aún no
declarada o que se encuentra definida en un módulo externo.
La definición de la variable sólo debe hacerse una vez.
Ejemplo de uso:
main.c int arr[100];
arch.c extern int arr[];
VENTAJAS
-Es más fácil trabajar en Equipo ya que cada uno puede trabajar en un módulo.
-Puede ser usado un estilo orientado a objetos Cada archivo define un tipo
particular de objeto como un tipo de dato y las operaciones en ese objeto como
funciones. La implementación del objeto puede mantenerse privado al resto del
programa.
-Los archivos pueden contener todas las funciones de un grupo relacionado.
-Objetos bien implementados o definiciones de funciones pueden ser reusadas
en otros programas, con lo que se reduce el tiempo de desarrollo.
-En programas muy grandes cada función principal puede ocupar un propio
archivo.
-Cuando los cambios son hechos a un archivo, solamente ese archivo necesita
ser recompilado para reconstruir el programa.
Dividir Un Programa en varios
archivos
cada archivo tendrá que contender una o más funciones y sólo en uno se
incluirá la función main() mientras que los otros serán llamados de otros
archivos tratados como una biblioteca o cabecera.
#include “Archivo1.h” es como declara que en ese programa se utilizará dicho
archivo.
Organización de los datos de los datos en
cada archivo
Es importante organizar los datos en un cierto orden en cada uno de los
archivos creados:
1. Cabeceras de archivos y tipos de datos más importantes
2. declaración de variables globales y externas
3. una o más funciones (destacando la importancia de su orden)
Ese dependiendo en cuanto al gusto del programador en uso de funciones
implícita explícita.
La utilería make
Esta utilería sirve para mantener en buen funcionamiento un gran conjunto de
módulos de programas. Es muy útil si se desea por ejemplo, compilar varios
archivos .c y algunos de ellos ya fueron previamente compilador: Con la utilería
make podemos evitar compilar nuevamente estos archivos indicando que
estos archivos tienen la extensión “.o”.
Si tenemos los archivos: main.c f1.c ...... fn.c
Entonces podemos compilar estos archivos con la siguiente línea de
comandos: gcc -o main main.c f1.c ....... fn.c
Y si los archivos fi.c y fj.c ya fueron previamente compilados, podemos
compilar todo nuevamente así: gcc -o main main.c f1.c ... fi.o ... fj.o ... fn.c
Compilar archivos con la utilería
make
La programación make es directa, basta con escribir una línea de comandos
en un archivo de texto con ciertas reglas en las que se indique la forma en que
se deben compilar los archivos.
Debe crearse un archivo con nombre Makefile y en este mismo directorio
escribir el comando make desde consola para así ejecutarlo. De este modo las
cosas que hayas indicado en el archivo se ejecutarán por el sistema operativo.
Los archivos make están compuestos de:
-Dependencias: lado_izquierdo:lado_derecho(el lado izquierdo nombra el
nuevo destino o tarjet mientras que el lado derecho nombra los archivos de los
que depende el nuevo)
Creación de un archivo make
El siguiente es un ejemplo
de archivo make:
prog: prog.o f1.o f2.o
gcc -o prog prog.o f1.o f2.o -lm ...
prog.o: cabecera.h prog.c
gcc -c prog.c
f1.o: cabecera.h f1.c
gcc -c f1.c
f2.o: ....
...
La utilería make lo interpretará de la siguiente forma:
1. prog depende de tres archivos: prog.o, f1.o y f2.o. Si cualquiera
de los archivos objeto ha cambiado desde la última
compilación los archivos deben ser religados.
2. prog.o depende de 2 archivos, si estos han cambiado prog.o
deberá ser recompilado. Lo mismo sucede con f1.o y f2.o.
Los últimos 3 comandos en makefile son llamados reglas explícitas
-- ya que los archivos en los comandos son listados por nombre.
Creación de un archivo make
Se pueden usar reglas implícitas en makefile para generalizar reglas y hacer más compacta la escritura.
Si se tiene:
f1.o: f1.c
gcc -c f1.c
f2.o: f2.c
gcc -c f2.c
se puede generalizar a:
.c.o: gcc -c $<
Lo cual se lee como .ext_fuente.ext_destino: comando donde $< es una forma breve para indicar los archivos que
tienen la extensión .c
Se pueden insertar comentarios en un Makefile usando el símbolo #, en donde todos los caracteres que siguen a
# son ignorados.
Uso de macros con make
Se pueden definir macros para
que sean usadas por make:
Se definen en una
forma simple, por
ejemplo:
FUENTES = main.c f1.c f2.c
CFLAGS = -ggdb -C
LIBS = -lm
PROGRAMA = main
OBJETOS = (FUENTES: .c =
.o)
En donde (FUENTES: .c = .o) cambia la extensión .c de los fuentes por la extensión.o
Para referirse o usar una macro con make se debe hacer $(nomb_macro), por ejemplo:
$(PROGRAMA) : $(OBJETOS)
$(LINK.C) -o $@ $(OBJETOS) $(LIBS)
En el ejemplo mostrado se observa que:
● La línea que contiene $(PROGRAMA) : $(OBJETOS) genera una lista de dependencias y el destino.
● Se emplean macros internas como $@.
Existen varias macros internas a continuación se muestran algunas de ellas:
$*
Parte del nombre del archivo de la dependencia actual sin el sufijo.
$@
Nombre completo del destino actual.
$
Archivo .c del destino
Un ejemplo de un makefile para el programa modular discutido previamente se muestra a continuación:
Uso de macros con make
#
# Makefile
#
FUENTES.c=main.c EscribirMiCadena.c
INCLUDES=
CFLAGS=
SLIBS=
PROGRAMA=main
OBJETOS=$(FUENTES.c:.c=.o)
# Destino (target) especial (inicia con .)
.KEEP_STATE:
debug := CFLAGS=-ggdb
all debug: $(PROGRAMA)
$(PROGRAMA): $(INCLUDES) $(OBJETOS)
$(LINK.c) -o $@ $(OBJETOS) $(SLIBS)
clean:
rm -f $(PROGRAMA) $(OBJETOS)

Mais conteúdo relacionado

Mais procurados

Ejemplo de Makefile en LINUX con lenguaje C compilando HolaMundo
Ejemplo de Makefile en LINUX con lenguaje C compilando HolaMundoEjemplo de Makefile en LINUX con lenguaje C compilando HolaMundo
Ejemplo de Makefile en LINUX con lenguaje C compilando HolaMundoIvan Luis Jimenez
 
C O M A N D O S I N T E R N O S M S D O S
C O M A N D O S  I N T E R N O S  M S  D O SC O M A N D O S  I N T E R N O S  M S  D O S
C O M A N D O S I N T E R N O S M S D O Smaverito
 
Manual php y_mysql
Manual php y_mysqlManual php y_mysql
Manual php y_mysqljohan reyes
 
Visual_foxpro 9.0
Visual_foxpro 9.0Visual_foxpro 9.0
Visual_foxpro 9.0Ernes 28
 
Tutorial de cakePHP itst
Tutorial de cakePHP itstTutorial de cakePHP itst
Tutorial de cakePHP itstomicx
 
Tutorial A Z A - Programador PHP
Tutorial A Z A - Programador PHPTutorial A Z A - Programador PHP
Tutorial A Z A - Programador PHPJuan Belón Pérez
 
Introduccion A Php
Introduccion A PhpIntroduccion A Php
Introduccion A Phputs
 
Instrucciones básicas para c++
Instrucciones básicas para c++Instrucciones básicas para c++
Instrucciones básicas para c++Aquino1912
 
Zend framework
Zend frameworkZend framework
Zend frameworkluislolo
 
94 Php. Instalacion De Apache 2.0.58
94 Php. Instalacion De Apache 2.0.5894 Php. Instalacion De Apache 2.0.58
94 Php. Instalacion De Apache 2.0.58José M. Padilla
 
Manual completo-php-5
Manual completo-php-5Manual completo-php-5
Manual completo-php-5jjmvc2481
 
96 Php. Instalacion De Php5 Sobre Apache 2.0.58
96 Php. Instalacion De Php5 Sobre Apache 2.0.5896 Php. Instalacion De Php5 Sobre Apache 2.0.58
96 Php. Instalacion De Php5 Sobre Apache 2.0.58José M. Padilla
 
Trabajo de ofimática ll 2º a Neri,Esperanza,Janet,Dulce,Guadalupe
Trabajo de ofimática ll 2º a Neri,Esperanza,Janet,Dulce,GuadalupeTrabajo de ofimática ll 2º a Neri,Esperanza,Janet,Dulce,Guadalupe
Trabajo de ofimática ll 2º a Neri,Esperanza,Janet,Dulce,GuadalupeEsperanza Briones
 

Mais procurados (18)

Ejemplo de Makefile en LINUX con lenguaje C compilando HolaMundo
Ejemplo de Makefile en LINUX con lenguaje C compilando HolaMundoEjemplo de Makefile en LINUX con lenguaje C compilando HolaMundo
Ejemplo de Makefile en LINUX con lenguaje C compilando HolaMundo
 
C O M A N D O S I N T E R N O S M S D O S
C O M A N D O S  I N T E R N O S  M S  D O SC O M A N D O S  I N T E R N O S  M S  D O S
C O M A N D O S I N T E R N O S M S D O S
 
Manual php y_mysql
Manual php y_mysqlManual php y_mysql
Manual php y_mysql
 
Visual_foxpro 9.0
Visual_foxpro 9.0Visual_foxpro 9.0
Visual_foxpro 9.0
 
Tutorial de cakePHP itst
Tutorial de cakePHP itstTutorial de cakePHP itst
Tutorial de cakePHP itst
 
Zend Framework
Zend FrameworkZend Framework
Zend Framework
 
Tutorial A Z A - Programador PHP
Tutorial A Z A - Programador PHPTutorial A Z A - Programador PHP
Tutorial A Z A - Programador PHP
 
Introduccion A Php
Introduccion A PhpIntroduccion A Php
Introduccion A Php
 
Instrucciones básicas para c++
Instrucciones básicas para c++Instrucciones básicas para c++
Instrucciones básicas para c++
 
Zend framework
Zend frameworkZend framework
Zend framework
 
Udf eficientes
Udf eficientesUdf eficientes
Udf eficientes
 
94 Php. Instalacion De Apache 2.0.58
94 Php. Instalacion De Apache 2.0.5894 Php. Instalacion De Apache 2.0.58
94 Php. Instalacion De Apache 2.0.58
 
Manual completo-php-5
Manual completo-php-5Manual completo-php-5
Manual completo-php-5
 
Visual FoxPro + MySQL Sistema Biblioteca
Visual FoxPro + MySQL Sistema BibliotecaVisual FoxPro + MySQL Sistema Biblioteca
Visual FoxPro + MySQL Sistema Biblioteca
 
Intro a cakephp
Intro a cakephpIntro a cakephp
Intro a cakephp
 
96 Php. Instalacion De Php5 Sobre Apache 2.0.58
96 Php. Instalacion De Php5 Sobre Apache 2.0.5896 Php. Instalacion De Php5 Sobre Apache 2.0.58
96 Php. Instalacion De Php5 Sobre Apache 2.0.58
 
Trabajo de ofimática ll 2º a Neri,Esperanza,Janet,Dulce,Guadalupe
Trabajo de ofimática ll 2º a Neri,Esperanza,Janet,Dulce,GuadalupeTrabajo de ofimática ll 2º a Neri,Esperanza,Janet,Dulce,Guadalupe
Trabajo de ofimática ll 2º a Neri,Esperanza,Janet,Dulce,Guadalupe
 
Php
PhpPhp
Php
 

Destaque

PRESENTATION_-_What_s_New_in_Vienna_-_Rona_-_October_2011
PRESENTATION_-_What_s_New_in_Vienna_-_Rona_-_October_2011PRESENTATION_-_What_s_New_in_Vienna_-_Rona_-_October_2011
PRESENTATION_-_What_s_New_in_Vienna_-_Rona_-_October_2011Patrick N.Z. Rona
 
Understanding DevOps in simpler way with Continuous Delivery
Understanding DevOps in simpler way with Continuous DeliveryUnderstanding DevOps in simpler way with Continuous Delivery
Understanding DevOps in simpler way with Continuous DeliverySwapnil Jain
 
Marannook’s-Bible-Study-for-Training-Staff-Counselors
Marannook’s-Bible-Study-for-Training-Staff-CounselorsMarannook’s-Bible-Study-for-Training-Staff-Counselors
Marannook’s-Bible-Study-for-Training-Staff-CounselorsLee Decker
 

Destaque (8)

Apuntes 3° parcial
Apuntes 3° parcialApuntes 3° parcial
Apuntes 3° parcial
 
Transcript
TranscriptTranscript
Transcript
 
Act 2
Act 2Act 2
Act 2
 
PRESENTATION_-_What_s_New_in_Vienna_-_Rona_-_October_2011
PRESENTATION_-_What_s_New_in_Vienna_-_Rona_-_October_2011PRESENTATION_-_What_s_New_in_Vienna_-_Rona_-_October_2011
PRESENTATION_-_What_s_New_in_Vienna_-_Rona_-_October_2011
 
POLIPLOIDÍA
POLIPLOIDÍAPOLIPLOIDÍA
POLIPLOIDÍA
 
Understanding DevOps in simpler way with Continuous Delivery
Understanding DevOps in simpler way with Continuous DeliveryUnderstanding DevOps in simpler way with Continuous Delivery
Understanding DevOps in simpler way with Continuous Delivery
 
Protherm
Protherm Protherm
Protherm
 
Marannook’s-Bible-Study-for-Training-Staff-Counselors
Marannook’s-Bible-Study-for-Training-Staff-CounselorsMarannook’s-Bible-Study-for-Training-Staff-Counselors
Marannook’s-Bible-Study-for-Training-Staff-Counselors
 

Semelhante a Compilación de programas

Tutorial de visual c++
Tutorial de visual c++Tutorial de visual c++
Tutorial de visual c++juliancetis109
 
Tutorial de visual C++
Tutorial de visual C++Tutorial de visual C++
Tutorial de visual C++juliancetis109
 
Tutorial de visual_c_
Tutorial de visual_c_Tutorial de visual_c_
Tutorial de visual_c_oscar020615
 
Tutorial de visual c++
Tutorial de visual c++Tutorial de visual c++
Tutorial de visual c++oscar020615
 
ESTRUCTURA BASICA PARA C++
ESTRUCTURA BASICA PARA C++ESTRUCTURA BASICA PARA C++
ESTRUCTURA BASICA PARA C++Idalia Tristan
 
TEMA-2 Estructura de un programa en C.pptx
TEMA-2 Estructura de un programa en C.pptxTEMA-2 Estructura de un programa en C.pptx
TEMA-2 Estructura de un programa en C.pptxVctorEmmanuelEspinoM
 
Presentacion de la_estructura_de_c++
Presentacion de la_estructura_de_c++Presentacion de la_estructura_de_c++
Presentacion de la_estructura_de_c++MartinCetis109
 
Presentacion de la_estructura_de_c++
Presentacion de la_estructura_de_c++Presentacion de la_estructura_de_c++
Presentacion de la_estructura_de_c++MartinCetis109
 
Estructura de un programa en c
Estructura de un programa en cEstructura de un programa en c
Estructura de un programa en cMary Guaman
 
Mis primeros pasos con Symfony 2
Mis primeros pasos con Symfony 2Mis primeros pasos con Symfony 2
Mis primeros pasos con Symfony 2Edgar Dueñas
 
2.1 estructura general de un programa en c
2.1 estructura general de un programa en c2.1 estructura general de un programa en c
2.1 estructura general de un programa en cSNPP
 

Semelhante a Compilación de programas (20)

Tutorial de visual c++
Tutorial de visual c++Tutorial de visual c++
Tutorial de visual c++
 
Tutorial de visual C++
Tutorial de visual C++Tutorial de visual C++
Tutorial de visual C++
 
Tutorial de visual_c_
Tutorial de visual_c_Tutorial de visual_c_
Tutorial de visual_c_
 
Tutorial de visual c++
Tutorial de visual c++Tutorial de visual c++
Tutorial de visual c++
 
ESTRUCTURA BASICA PARA C++
ESTRUCTURA BASICA PARA C++ESTRUCTURA BASICA PARA C++
ESTRUCTURA BASICA PARA C++
 
Estructura básica para C++
Estructura básica para C++Estructura básica para C++
Estructura básica para C++
 
TEMA-2 Estructura de un programa en C.pptx
TEMA-2 Estructura de un programa en C.pptxTEMA-2 Estructura de un programa en C.pptx
TEMA-2 Estructura de un programa en C.pptx
 
Lolo
LoloLolo
Lolo
 
Presentacion de la_estructura_de_c++
Presentacion de la_estructura_de_c++Presentacion de la_estructura_de_c++
Presentacion de la_estructura_de_c++
 
Presentacion de la_estructura_de_c++
Presentacion de la_estructura_de_c++Presentacion de la_estructura_de_c++
Presentacion de la_estructura_de_c++
 
Int prog matlab
Int prog matlabInt prog matlab
Int prog matlab
 
Estructura de un programa en c
Estructura de un programa en cEstructura de un programa en c
Estructura de un programa en c
 
Mis primeros pasos con Symfony 2
Mis primeros pasos con Symfony 2Mis primeros pasos con Symfony 2
Mis primeros pasos con Symfony 2
 
Estructura basica para c++
Estructura basica para c++Estructura basica para c++
Estructura basica para c++
 
mysql y visual c++.pdf
mysql y visual c++.pdfmysql y visual c++.pdf
mysql y visual c++.pdf
 
Lenguaje C
Lenguaje CLenguaje C
Lenguaje C
 
Intrucciones basicas para C++
Intrucciones basicas para C++Intrucciones basicas para C++
Intrucciones basicas para C++
 
INSTRUCCIONES BASICAS C++
INSTRUCCIONES BASICAS C++INSTRUCCIONES BASICAS C++
INSTRUCCIONES BASICAS C++
 
2.1 estructura general de un programa en c
2.1 estructura general de un programa en c2.1 estructura general de un programa en c
2.1 estructura general de un programa en c
 
Manual linux
Manual linuxManual linux
Manual linux
 

Último

2024 GUIA PRACTICAS MICROBIOLOGIA- UNA 2017 (1).pdf
2024 GUIA PRACTICAS MICROBIOLOGIA- UNA 2017 (1).pdf2024 GUIA PRACTICAS MICROBIOLOGIA- UNA 2017 (1).pdf
2024 GUIA PRACTICAS MICROBIOLOGIA- UNA 2017 (1).pdfDavidTicona31
 
ingenieria grafica para la carrera de ingeniera .pptx
ingenieria grafica para la carrera de ingeniera .pptxingenieria grafica para la carrera de ingeniera .pptx
ingenieria grafica para la carrera de ingeniera .pptxjhorbycoralsanchez
 
PRESENTACION DE LAS PLAGAS Y ENFERMEDADES DEL PALTO
PRESENTACION DE LAS PLAGAS Y ENFERMEDADES DEL PALTOPRESENTACION DE LAS PLAGAS Y ENFERMEDADES DEL PALTO
PRESENTACION DE LAS PLAGAS Y ENFERMEDADES DEL PALTOwillanpedrazaperez
 
Matrices Matemáticos universitario pptx
Matrices  Matemáticos universitario pptxMatrices  Matemáticos universitario pptx
Matrices Matemáticos universitario pptxNancyJulcasumaran
 
SESION 11 SUPERVISOR SSOMA SEGURIDAD Y SALUD OCUPACIONAL
SESION 11 SUPERVISOR SSOMA SEGURIDAD Y SALUD OCUPACIONALSESION 11 SUPERVISOR SSOMA SEGURIDAD Y SALUD OCUPACIONAL
SESION 11 SUPERVISOR SSOMA SEGURIDAD Y SALUD OCUPACIONALEdwinC23
 
Aportes a la Arquitectura de Le Corbusier y Mies Van der Rohe
Aportes a la Arquitectura de Le Corbusier y Mies Van der RoheAportes a la Arquitectura de Le Corbusier y Mies Van der Rohe
Aportes a la Arquitectura de Le Corbusier y Mies Van der RoheElisaLen4
 
Trazos paileros para realizar trazos, cortes y calculos.pptx
Trazos paileros para realizar trazos, cortes y calculos.pptxTrazos paileros para realizar trazos, cortes y calculos.pptx
Trazos paileros para realizar trazos, cortes y calculos.pptxmiguelmateos18
 
Estadística Anual y Multianual del Sector Eléctrico Ecuatoriano
Estadística Anual y Multianual del Sector Eléctrico EcuatorianoEstadística Anual y Multianual del Sector Eléctrico Ecuatoriano
Estadística Anual y Multianual del Sector Eléctrico EcuatorianoEduardoBriones22
 
Suelo, tratamiento saneamiento y mejoramiento
Suelo, tratamiento saneamiento y mejoramientoSuelo, tratamiento saneamiento y mejoramiento
Suelo, tratamiento saneamiento y mejoramientoluishumbertoalvarezv1
 
ESPECIFICACIONES TECNICAS COMPLEJO DEPORTIVO
ESPECIFICACIONES TECNICAS COMPLEJO DEPORTIVOESPECIFICACIONES TECNICAS COMPLEJO DEPORTIVO
ESPECIFICACIONES TECNICAS COMPLEJO DEPORTIVOeldermishti
 
semana-08-clase-transformadores-y-norma-eep.ppt
semana-08-clase-transformadores-y-norma-eep.pptsemana-08-clase-transformadores-y-norma-eep.ppt
semana-08-clase-transformadores-y-norma-eep.pptKelinnRiveraa
 
[1LLF] UNIDADES, MAGNITUDES FÍSICAS Y VECTORES.pdf
[1LLF] UNIDADES, MAGNITUDES FÍSICAS Y VECTORES.pdf[1LLF] UNIDADES, MAGNITUDES FÍSICAS Y VECTORES.pdf
[1LLF] UNIDADES, MAGNITUDES FÍSICAS Y VECTORES.pdfsmendozap1
 
ELASTICIDAD PRECIO DE LA DEMaaanANDA.ppt
ELASTICIDAD PRECIO DE LA DEMaaanANDA.pptELASTICIDAD PRECIO DE LA DEMaaanANDA.ppt
ELASTICIDAD PRECIO DE LA DEMaaanANDA.pptRobertoCastao8
 
CONEXIONES SERIE, PERALELO EN MÓDULOS FOTOVOLTAICOS.pdf
CONEXIONES SERIE, PERALELO EN MÓDULOS FOTOVOLTAICOS.pdfCONEXIONES SERIE, PERALELO EN MÓDULOS FOTOVOLTAICOS.pdf
CONEXIONES SERIE, PERALELO EN MÓDULOS FOTOVOLTAICOS.pdfwduranteg
 
Sistemas de Ecuaciones no lineales-1.pptx
Sistemas de Ecuaciones no lineales-1.pptxSistemas de Ecuaciones no lineales-1.pptx
Sistemas de Ecuaciones no lineales-1.pptx170766
 
APORTES A LA ARQUITECTURA DE WALTER GROPIUS Y FRANK LLOYD WRIGHT
APORTES A LA ARQUITECTURA DE WALTER GROPIUS Y FRANK LLOYD WRIGHTAPORTES A LA ARQUITECTURA DE WALTER GROPIUS Y FRANK LLOYD WRIGHT
APORTES A LA ARQUITECTURA DE WALTER GROPIUS Y FRANK LLOYD WRIGHTElisaLen4
 
Lineamientos del Plan Oferta y Demanda sesión 5
Lineamientos del Plan Oferta y Demanda sesión 5Lineamientos del Plan Oferta y Demanda sesión 5
Lineamientos del Plan Oferta y Demanda sesión 5juanjoelaytegonzales2
 
Introduction to Satellite Communication_esp_FINAL.ppt
Introduction to Satellite Communication_esp_FINAL.pptIntroduction to Satellite Communication_esp_FINAL.ppt
Introduction to Satellite Communication_esp_FINAL.pptReYMaStERHD
 
Resistencia-a-los-antimicrobianos--laboratorio-al-cuidado-del-paciente_Marcel...
Resistencia-a-los-antimicrobianos--laboratorio-al-cuidado-del-paciente_Marcel...Resistencia-a-los-antimicrobianos--laboratorio-al-cuidado-del-paciente_Marcel...
Resistencia-a-los-antimicrobianos--laboratorio-al-cuidado-del-paciente_Marcel...GuillermoRodriguez239462
 
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNATINSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNATevercoyla
 

Último (20)

2024 GUIA PRACTICAS MICROBIOLOGIA- UNA 2017 (1).pdf
2024 GUIA PRACTICAS MICROBIOLOGIA- UNA 2017 (1).pdf2024 GUIA PRACTICAS MICROBIOLOGIA- UNA 2017 (1).pdf
2024 GUIA PRACTICAS MICROBIOLOGIA- UNA 2017 (1).pdf
 
ingenieria grafica para la carrera de ingeniera .pptx
ingenieria grafica para la carrera de ingeniera .pptxingenieria grafica para la carrera de ingeniera .pptx
ingenieria grafica para la carrera de ingeniera .pptx
 
PRESENTACION DE LAS PLAGAS Y ENFERMEDADES DEL PALTO
PRESENTACION DE LAS PLAGAS Y ENFERMEDADES DEL PALTOPRESENTACION DE LAS PLAGAS Y ENFERMEDADES DEL PALTO
PRESENTACION DE LAS PLAGAS Y ENFERMEDADES DEL PALTO
 
Matrices Matemáticos universitario pptx
Matrices  Matemáticos universitario pptxMatrices  Matemáticos universitario pptx
Matrices Matemáticos universitario pptx
 
SESION 11 SUPERVISOR SSOMA SEGURIDAD Y SALUD OCUPACIONAL
SESION 11 SUPERVISOR SSOMA SEGURIDAD Y SALUD OCUPACIONALSESION 11 SUPERVISOR SSOMA SEGURIDAD Y SALUD OCUPACIONAL
SESION 11 SUPERVISOR SSOMA SEGURIDAD Y SALUD OCUPACIONAL
 
Aportes a la Arquitectura de Le Corbusier y Mies Van der Rohe
Aportes a la Arquitectura de Le Corbusier y Mies Van der RoheAportes a la Arquitectura de Le Corbusier y Mies Van der Rohe
Aportes a la Arquitectura de Le Corbusier y Mies Van der Rohe
 
Trazos paileros para realizar trazos, cortes y calculos.pptx
Trazos paileros para realizar trazos, cortes y calculos.pptxTrazos paileros para realizar trazos, cortes y calculos.pptx
Trazos paileros para realizar trazos, cortes y calculos.pptx
 
Estadística Anual y Multianual del Sector Eléctrico Ecuatoriano
Estadística Anual y Multianual del Sector Eléctrico EcuatorianoEstadística Anual y Multianual del Sector Eléctrico Ecuatoriano
Estadística Anual y Multianual del Sector Eléctrico Ecuatoriano
 
Suelo, tratamiento saneamiento y mejoramiento
Suelo, tratamiento saneamiento y mejoramientoSuelo, tratamiento saneamiento y mejoramiento
Suelo, tratamiento saneamiento y mejoramiento
 
ESPECIFICACIONES TECNICAS COMPLEJO DEPORTIVO
ESPECIFICACIONES TECNICAS COMPLEJO DEPORTIVOESPECIFICACIONES TECNICAS COMPLEJO DEPORTIVO
ESPECIFICACIONES TECNICAS COMPLEJO DEPORTIVO
 
semana-08-clase-transformadores-y-norma-eep.ppt
semana-08-clase-transformadores-y-norma-eep.pptsemana-08-clase-transformadores-y-norma-eep.ppt
semana-08-clase-transformadores-y-norma-eep.ppt
 
[1LLF] UNIDADES, MAGNITUDES FÍSICAS Y VECTORES.pdf
[1LLF] UNIDADES, MAGNITUDES FÍSICAS Y VECTORES.pdf[1LLF] UNIDADES, MAGNITUDES FÍSICAS Y VECTORES.pdf
[1LLF] UNIDADES, MAGNITUDES FÍSICAS Y VECTORES.pdf
 
ELASTICIDAD PRECIO DE LA DEMaaanANDA.ppt
ELASTICIDAD PRECIO DE LA DEMaaanANDA.pptELASTICIDAD PRECIO DE LA DEMaaanANDA.ppt
ELASTICIDAD PRECIO DE LA DEMaaanANDA.ppt
 
CONEXIONES SERIE, PERALELO EN MÓDULOS FOTOVOLTAICOS.pdf
CONEXIONES SERIE, PERALELO EN MÓDULOS FOTOVOLTAICOS.pdfCONEXIONES SERIE, PERALELO EN MÓDULOS FOTOVOLTAICOS.pdf
CONEXIONES SERIE, PERALELO EN MÓDULOS FOTOVOLTAICOS.pdf
 
Sistemas de Ecuaciones no lineales-1.pptx
Sistemas de Ecuaciones no lineales-1.pptxSistemas de Ecuaciones no lineales-1.pptx
Sistemas de Ecuaciones no lineales-1.pptx
 
APORTES A LA ARQUITECTURA DE WALTER GROPIUS Y FRANK LLOYD WRIGHT
APORTES A LA ARQUITECTURA DE WALTER GROPIUS Y FRANK LLOYD WRIGHTAPORTES A LA ARQUITECTURA DE WALTER GROPIUS Y FRANK LLOYD WRIGHT
APORTES A LA ARQUITECTURA DE WALTER GROPIUS Y FRANK LLOYD WRIGHT
 
Lineamientos del Plan Oferta y Demanda sesión 5
Lineamientos del Plan Oferta y Demanda sesión 5Lineamientos del Plan Oferta y Demanda sesión 5
Lineamientos del Plan Oferta y Demanda sesión 5
 
Introduction to Satellite Communication_esp_FINAL.ppt
Introduction to Satellite Communication_esp_FINAL.pptIntroduction to Satellite Communication_esp_FINAL.ppt
Introduction to Satellite Communication_esp_FINAL.ppt
 
Resistencia-a-los-antimicrobianos--laboratorio-al-cuidado-del-paciente_Marcel...
Resistencia-a-los-antimicrobianos--laboratorio-al-cuidado-del-paciente_Marcel...Resistencia-a-los-antimicrobianos--laboratorio-al-cuidado-del-paciente_Marcel...
Resistencia-a-los-antimicrobianos--laboratorio-al-cuidado-del-paciente_Marcel...
 
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNATINSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
 

Compilación de programas

  • 1. Compilación de programas con archivos Ayala Alberto Castillo Ignacio Isaac Aragon
  • 2. Grandes Programas Cuando se escriben grandes programas se debe generar un proyecto el cual será dividido en módulos. Donde solo uno de ellos contiene el archivo main().c Los demás archivos contienen las demás funciones que el programa requiera. VENTAJAS -Los módulos se dividen de manera natural en grupo comunes de funciones. -Se pueden compilar los modulos separadamente y ligarlos con los ya compilados. -Las utilerias como make pueden ayudar a mantener sistemas grandes.
  • 3. Archivos cabecera Son archivos en los que se almacena un módulo o conjunto de definiciones, estos archivos tienen la extensión “.h”. Para definirlos en la función principal o main, basta con escribir algo así como lo siguiente: #include "mi_cabecera.h" Con lo anterior, le estamos diciendo al programa que contenga el archivo módulo “mi_cabecera.h”
  • 4. Variables y Funciones Externas cada variable y argumento definido dentro de las funciones son locales así mismas, si se desea declarar una variable global es necesario declarar fuera de dichas funciones. Alcance de variables externas. Es decir si una variable externa(Global) es declarada después de la función main() dicha función no podrá solicitar dicha variable.
  • 5. ALCANCE DE LAS FUNCIONES Y VARIABLES EN C Una función es capaz de reconocer todas las variables de tipo global que hayan sido declaradas antes de la misma función. Adicionalmente, toda variable declarada dentro de una función se destruye al finalizar esta. Esta es la razón por la que todos los prototipos de funciones deben escribirse o incluirse antes del cuerpo del código.
  • 6. Ejemplo 1 En el código de la derecha describe un ejemplo en el que en la función “intenta_acceder” intenta usar la variable que no es global “variable”. El código no compila.
  • 7. Ejemplo 2 El ejemplo de la derecha muestra un ejemplo en el que las variables son correctamente definidas y llamadas pero en cambio las funciones no. No es posible acceder a la función “intenta_acceder” desde la función main ya que esta fué declarada después de esta.
  • 8. Ejemplo 3 El ejemplo 3 es un programa correcto: La función “intenta_acceder” es llamada desde la función main y el main si la conoce ya que fué declarada antes de esta. Las variables con nombre “variable” son totalmente diferentes y las funciones nisiquiera lo pueden notar, cada una es local a su función y muere al finalizar esta; al llamar a “intenta_acceder” se genera otro bloque de memoria que sólo esa función conoce.
  • 9. Variables externas Son utilizadas cuando se requiere hacer referencia a una variable aún no declarada o que se encuentra definida en un módulo externo. La definición de la variable sólo debe hacerse una vez. Ejemplo de uso: main.c int arr[100]; arch.c extern int arr[];
  • 10. VENTAJAS -Es más fácil trabajar en Equipo ya que cada uno puede trabajar en un módulo. -Puede ser usado un estilo orientado a objetos Cada archivo define un tipo particular de objeto como un tipo de dato y las operaciones en ese objeto como funciones. La implementación del objeto puede mantenerse privado al resto del programa. -Los archivos pueden contener todas las funciones de un grupo relacionado. -Objetos bien implementados o definiciones de funciones pueden ser reusadas en otros programas, con lo que se reduce el tiempo de desarrollo. -En programas muy grandes cada función principal puede ocupar un propio archivo. -Cuando los cambios son hechos a un archivo, solamente ese archivo necesita ser recompilado para reconstruir el programa.
  • 11. Dividir Un Programa en varios archivos cada archivo tendrá que contender una o más funciones y sólo en uno se incluirá la función main() mientras que los otros serán llamados de otros archivos tratados como una biblioteca o cabecera. #include “Archivo1.h” es como declara que en ese programa se utilizará dicho archivo.
  • 12. Organización de los datos de los datos en cada archivo Es importante organizar los datos en un cierto orden en cada uno de los archivos creados: 1. Cabeceras de archivos y tipos de datos más importantes 2. declaración de variables globales y externas 3. una o más funciones (destacando la importancia de su orden) Ese dependiendo en cuanto al gusto del programador en uso de funciones implícita explícita.
  • 13. La utilería make Esta utilería sirve para mantener en buen funcionamiento un gran conjunto de módulos de programas. Es muy útil si se desea por ejemplo, compilar varios archivos .c y algunos de ellos ya fueron previamente compilador: Con la utilería make podemos evitar compilar nuevamente estos archivos indicando que estos archivos tienen la extensión “.o”. Si tenemos los archivos: main.c f1.c ...... fn.c Entonces podemos compilar estos archivos con la siguiente línea de comandos: gcc -o main main.c f1.c ....... fn.c Y si los archivos fi.c y fj.c ya fueron previamente compilados, podemos compilar todo nuevamente así: gcc -o main main.c f1.c ... fi.o ... fj.o ... fn.c
  • 14. Compilar archivos con la utilería make La programación make es directa, basta con escribir una línea de comandos en un archivo de texto con ciertas reglas en las que se indique la forma en que se deben compilar los archivos. Debe crearse un archivo con nombre Makefile y en este mismo directorio escribir el comando make desde consola para así ejecutarlo. De este modo las cosas que hayas indicado en el archivo se ejecutarán por el sistema operativo. Los archivos make están compuestos de: -Dependencias: lado_izquierdo:lado_derecho(el lado izquierdo nombra el nuevo destino o tarjet mientras que el lado derecho nombra los archivos de los que depende el nuevo)
  • 15. Creación de un archivo make El siguiente es un ejemplo de archivo make: prog: prog.o f1.o f2.o gcc -o prog prog.o f1.o f2.o -lm ... prog.o: cabecera.h prog.c gcc -c prog.c f1.o: cabecera.h f1.c gcc -c f1.c f2.o: .... ... La utilería make lo interpretará de la siguiente forma: 1. prog depende de tres archivos: prog.o, f1.o y f2.o. Si cualquiera de los archivos objeto ha cambiado desde la última compilación los archivos deben ser religados. 2. prog.o depende de 2 archivos, si estos han cambiado prog.o deberá ser recompilado. Lo mismo sucede con f1.o y f2.o. Los últimos 3 comandos en makefile son llamados reglas explícitas -- ya que los archivos en los comandos son listados por nombre.
  • 16. Creación de un archivo make Se pueden usar reglas implícitas en makefile para generalizar reglas y hacer más compacta la escritura. Si se tiene: f1.o: f1.c gcc -c f1.c f2.o: f2.c gcc -c f2.c se puede generalizar a: .c.o: gcc -c $< Lo cual se lee como .ext_fuente.ext_destino: comando donde $< es una forma breve para indicar los archivos que tienen la extensión .c Se pueden insertar comentarios en un Makefile usando el símbolo #, en donde todos los caracteres que siguen a # son ignorados.
  • 17. Uso de macros con make Se pueden definir macros para que sean usadas por make: Se definen en una forma simple, por ejemplo: FUENTES = main.c f1.c f2.c CFLAGS = -ggdb -C LIBS = -lm PROGRAMA = main OBJETOS = (FUENTES: .c = .o) En donde (FUENTES: .c = .o) cambia la extensión .c de los fuentes por la extensión.o Para referirse o usar una macro con make se debe hacer $(nomb_macro), por ejemplo: $(PROGRAMA) : $(OBJETOS) $(LINK.C) -o $@ $(OBJETOS) $(LIBS) En el ejemplo mostrado se observa que: ● La línea que contiene $(PROGRAMA) : $(OBJETOS) genera una lista de dependencias y el destino. ● Se emplean macros internas como $@. Existen varias macros internas a continuación se muestran algunas de ellas: $* Parte del nombre del archivo de la dependencia actual sin el sufijo. $@ Nombre completo del destino actual. $ Archivo .c del destino Un ejemplo de un makefile para el programa modular discutido previamente se muestra a continuación:
  • 18. Uso de macros con make # # Makefile # FUENTES.c=main.c EscribirMiCadena.c INCLUDES= CFLAGS= SLIBS= PROGRAMA=main OBJETOS=$(FUENTES.c:.c=.o) # Destino (target) especial (inicia con .) .KEEP_STATE: debug := CFLAGS=-ggdb all debug: $(PROGRAMA) $(PROGRAMA): $(INCLUDES) $(OBJETOS) $(LINK.c) -o $@ $(OBJETOS) $(SLIBS) clean: rm -f $(PROGRAMA) $(OBJETOS)