Professor: Gabriel Soares Baptista
#include..h e .c.main.c pode ser suficiente.Um modulo bem feito pode ser reutilizado em varios programas sem copiar e colar codigo.
stdio.h, string.h e math.h;Exemplo:
stdio.h: entrada e saida.math.h: calculos matematicos.#include#include e tratado pelo pre-processador.#include apenas torna declaracoes visiveis para o arquivo atual.#include <stdio.h>
#include "calc.h"
< > e " "#include <stdio.h>
#include "calc.h"
<stdio.h><stdio.h>printf()#include <stdio.h>
int main(){
printf("Ola\n");
return 0;
}
<stdio.h>scanf()#include <stdio.h>
int main(){
int x;
scanf("%d", &x);
printf("Valor lido: %d\n", x);
return 0;
}
<stdio.h>fgets()scanf("%s", ...) quando queremos aceitar espacos.#include <stdio.h>
int main(){
char nome[30];
fgets(nome, 30, stdin);
printf("Texto lido: %s", nome);
return 0;
}
<stdio.h>puts()#include <stdio.h>
int main(){
puts("Fim");
return 0;
}
<string.h><string.h>strlen()#include <stdio.h>
#include <string.h>
int main(){
printf("%zu\n", strlen("abc"));
return 0;
}
<string.h>strcpy()#include <stdio.h>
#include <string.h>
int main(){
char origem[] = "Casa";
char destino[20];
strcpy(destino, origem);
printf("%s\n", destino);
return 0;
}
<string.h>strcat()#include <stdio.h>
#include <string.h>
int main(){
char texto[20] = "Linguagem";
strcat(texto, " C");
printf("%s\n", texto);
return 0;
}
<string.h>strcmp()0 se forem iguais.#include <stdio.h>
#include <string.h>
int main(){
int resultado = strcmp("abc", "abd");
printf("%d\n", resultado);
return 0;
}
<math.h><math.h>sqrt()#include <stdio.h>
#include <math.h>
int main(){
printf("%.1f\n", sqrt(25.0));
return 0;
}
<math.h>pow()#include <stdio.h>
#include <math.h>
int main(){
printf("%.1f\n", pow(2, 3));
return 0;
}
<math.h>fabs()#include <stdio.h>
#include <math.h>
int main(){
printf("%.1f\n", fabs(-4.5));
return 0;
}
<math.h>acos(-1.0).#include <stdio.h>
#include <math.h>
int main(){
double pi = acos(-1.0);
printf("%.6f\n", pi);
return 0;
}
<math.h>exp(1.0).#include <stdio.h>
#include <math.h>
int main(){
double euler = exp(1.0);
printf("%.6f\n", euler);
return 0;
}
math.hEm muitos sistemas Linux e Unix, usar #include <math.h> nao basta.
Tambem e necessario ligar a biblioteca matematica com -lm:
gcc programa.c -o programa -lm
Se o projeto tiver mais de um arquivo:
gcc main.c calc.c -o programa -lm
<stdlib.h>atoi() converte string para inteiro.#include <stdio.h>
#include <stdlib.h>
int main(){
printf("%d\n", atoi("123"));
return 0;
}
rand() gera numero pseudoaleatorio.#include <stdio.h>
#include <stdlib.h>
int main(){
printf("%d\n", rand() % 100);
return 0;
}
srand() inicializa a semente do gerador.#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(){
srand(time(NULL));
printf("%d\n", rand() % 100);
return 0;
}
<ctype.h>toupper() maiuscula.#include <stdio.h>
#include <ctype.h>
int main(){
printf("%c\n", toupper('a'));
return 0;
}
<ctype.h>tolower() minuscula.#include <stdio.h>
#include <ctype.h>
int main(){
printf("%c\n", tolower('Z'));
return 0;
}
<ctype.h>isdigit() verifica digito.#include <stdio.h>
#include <ctype.h>
int main(){
printf("%d\n", isdigit('7'));
return 0;
}
.h x Arquivo .c.h.c#ifndef CALC_H
#define CALC_H
int soma(int a, int b);
#endif
Se o projeto tiver:
main.ccalc.ccalc.hum comando correto e:
gcc main.c calc.c -o programa
Se o cabecalho estiver em outra pasta, podemos usar -I:
gcc main.c src/calc.c -Iinclude -o programa
#include "calc.h".main.c..c no lugar de .h.Se a funcao foi declarada, mas o .c com a implementacao nao entrou na compilacao, e comum aparecer undefined reference.
Vamos criar um modulo chamado calc.
Objetivo:
somamediamaximoFluxo da atividade:
.h..c funcao por funcao.main.calc.h#ifndef CALC_H
#define CALC_H
int soma(int a, int b);
float media(int a, int b);
int maximo(int a, int b);
#endif
.h apenas anuncia as funcoes.calc.hFaçam agora:
calc.h;Ainda nao implementem o .c.
somaFaçam no calc.c:
#include "calc.h";soma.Depois, testem chamando soma() no main.
Exemplo de uso no main:
#include <stdio.h>
#include "calc.h"
int main(){
printf("Soma: %d\n", soma(4, 7));
return 0;
}
mediaFaçam no calc.c:
media;main.Exemplo de uso no main:
#include <stdio.h>
#include "calc.h"
int main(){
printf("Media: %.2f\n", media(4, 7));
return 0;
}
maximoFaçam no calc.c:
maximo;main.Exemplo de uso no main:
#include <stdio.h>
#include "calc.h"
int main(){
printf("Maximo: %d\n", maximo(4, 7));
return 0;
}
Agora o arquivo calc.c fica assim:
#include "calc.h"
int soma(int a, int b){
return a + b;
}
float media(int a, int b){
return (a + b) / 2.0f;
}
int maximo(int a, int b){
if(a > b)
return a;
return b;
}
main.c usando tudo#include <stdio.h>
#include "calc.h"
int main(){
printf("Soma: %d\n", soma(4, 7));
printf("Media: %.2f\n", media(4, 7));
printf("Maximo: %d\n", maximo(4, 7));
return 0;
}
Compilacao:
gcc main.c calc.c -o programa
Se quisermos crescer a biblioteca, basta:
.h;.c;main.Exemplo: minimo
int minimo(int a, int b);
Agora, em duplas ou individualmente, criem uma nova biblioteca.
Opcao 1: vetor_util
soma_vetor(int v[], int n)maior_vetor(int v[], int n)media_vetor(int v[], int n)Opcao 2: texto_util
contar_vogais(char str[])inverter_string(char str[])eh_palindromo(char str[]).h com header guards;.c com as implementacoes;main.c chamando cada funcao pelo menos uma vez;Sempre que implementarem uma funcao, testem no main imediatamente.
.h anuncia o modulo..c implementa o modulo.main usa o modulo.Na proxima aula veremos como trabalhar com memoria dinamica em C.