Escolar Documentos
Profissional Documentos
Cultura Documentos
Linguagem C (2)
Sávio Braga
1
Programa
2
Conceito e Utilização
PARTE I
3
Conceito
⚫ Blocos: unidades de programa
– em sequência a partir da primeira instrução.
⚫ Subprogramas
– dão nome a uma unidade de programa
⚫ sua chamada faz com que o controle seja transferido
para a unidade chamada e executa até encontrar o fim
da unidade
4
Conceito
⚫ Função:
– Rotina a ser executada dentro do algoritmo para
realizar alguma tarefa específica e normalmente retorna
um valor
5
Conceito
⚫ As funções são um tipo de subprograma. Elas são blocos de
código que podem ser chamados de outro lugar no programa.
⚫ A principal diferença entre funções e blocos é que as funções
retornam um valor, enquanto os blocos não.
⚫ Outra diferença é que as funções podem ter parâmetros,
enquanto os blocos não.
⚫ Os subprogramas, por outro lado, são blocos de código que
podem ser chamados de outro lugar no programa. Eles podem
ser funções ou procedimentos.
⚫ Os procedimentos são similares às funções, mas eles não
6 retornam um valor.
Conceito
Funcao1()
Programa Inicio
Inicio 1a. instrução
....... 2a. instrução 1
.......
A = Funcao1() última instrução
A= A+1; Fim
última
.......
Fim
7
Conceito
8
Conceito
Exemplos de como funções, blocos e subprogramas podem ser
usados:
11
Bibliotecas e Funções
⚫ Biblioteca stdio.h
⚫ Biblioteca stdlib.h
⚫ Biblioteca math.h
⚫ Biblioteca string.h
12
Bibliotecas e Funções
13
Bibliotecas e Funções
⚫ Biblioteca stdlib.h
• malloc() - aloca uma quantidade específica de memória.
• free() - libera a memória alocada previamente.
• exit() - termina o programa.
• system() - executa um comando no sistema operacional.
• rand() - gera um número aleatório.
• srand() - define a semente de rand() (iniciaiza rand().
• atof() - converte uma string em um número float.
• atoi() - converte uma string em um número inteiro.
• itoa() - converte um número inteiro em uma string.
14
Exemplo
main() {
int num1 = -10;
int aleatorio;
srand(time(NULL));
aleatorio = rand() % 100;
⚫ Biblioteca math.h
• abs(): retorna o valor absoluto de um número.
• ceil(): retorna o menor inteiro que é maior ou igual a um número decimal.
• floor(): retorna o maior inteiro que é menor ou igual a um número decimal.
• round(): arredonda um número para o inteiro mais próximo.
• trunc(): retorna somente a parte inteira de um número real.
• pow(): retorna a base elevada a um expoente.
• sqrt(): retorna a raiz quadrada de um número.
• cos(): retorna o cosseno de um ângulo em radianos.
• exp(): retorna o valor de e elevado a um determinado expoente.
• log(): retorna o logaritmo natural (base e) de um número.
• sin(): retorna o seno de um ângulo em radianos.
• tan(): retorna a tangente de um ângulo em radianos
17
Exemplo
main() {
float num = 2.5;
float ceilResult = ceil(num);
float floorResult = floor(num);
float roundResult = round(num);
main() {
double base, expoente, resultado;
20
Desafio
main() {
float num = 3.14159;
float parte1, parte2, round_2;
parte1 = round(num * pow(10, 2));
parte2 = pow(10, 2);
round_2 = parte1/parte2;
printf("O número %.5f arredondado para 2 casas decimais eh %.5f\n", num, round_2);
}
21
Bibliotecas e Funções
⚫ Biblioteca string.h
• strcpy() - Copia uma string de origem para uma string de destino.
• strncpy() - Copia uma parte da string de origem para uma string de destino.
• strcat() - Concatena (junção) duas strings em uma única string.
• strlen() - Retorna o comprimento de uma string.
• strcmp() - Compara duas strings e retorna um valor inteiro indicando se as strings são
iguais ou diferentes.
• strchr() - Retorna um ponteiro para a primeira ocorrência de um caractere em uma
string.
• strtok() - Divide uma string em substrings com base em um caractere delimitador.
22
Exemplo
main() {
char origem1[20] = "Ola,";
char origem2[10] = " mundo!";
char destino[20];
PARTE II
25
Escrevendo Funções
26
Escrevendo Funções
int main() {
int x = 5;
int result = quadrado(x);
printf(“O resultado é: %d”, result);
}
28
Escrevendo Funções
29
Escrevendo Funções
Nome Argumentos
return valor;
Retorno
}
30
Tipos de Retorno
31
Tipos de Retorno
⚫ Exemplos:
– Sem retorno
⚫ escrever(‘mensagem’);
– Com retorno
⚫ valor = soma(10, 20);
32
Tipos de Retorno
34
Argumentos
⚫ Exemplo:
– Sem argumentos
⚫ data_atual()
– Com argumentos
⚫ escrever(‘mensagem’)
35
Argumentos
36
Argumentos
37
Argumentos
38
Argumentos
40
Tipo de Retorno e Argumentos
void dobrar_valor(int x) {
x = x * 2;
printf("O valor dobrado eh %d\n", x);
}
int main() {
int valor = 5;
dobrar_valor(valor);
printf("O valor original eh %d\n", valor);
return 0;
41 }
Escrevendo Funções
⚫ Exemplo:
– Vamos escrever uma função para calcular a área de retângulo, uma
vez que conhecemos o comprimento da sua base e o comprimento
da sua altura.
– Em seguida, vamos escrever o programa que faz uso dessa função.
42
Exemplo
43
Exercício
main(){
int x=10,y=20;
troca(&x,&y);
printf("x=%d y=%d\n",x,y);
45 }
Passagem por Valor x Passagem de Referência
46
Passagem por Valor x Passagem de Referência
47
Protótipo de Função
48
Protótipo de Função
49
Exercício
50
Escopo das Variáveis
PARTE III
51
Escopo de Variáveis
⚫ Variáveis Locais x Variáveis Globais
– Variáveis locais são definidas dentro de uma função ou bloco de
código específico e só podem ser acessadas dentro desse contexto.
Elas são criadas quando a função é chamada e destruídas quando a
função retorna. Variáveis locais são úteis quando se deseja manter
um valor temporário ou intermediário durante a execução de uma
função.
– Já as variáveis globais são definidas fora de qualquer função ou
bloco de código e podem ser acessadas de qualquer lugar do
programa. Elas são criadas quando o programa é iniciado e
destruídas quando o programa termina. Variáveis globais são úteis
quando se deseja compartilhar um valor entre várias funções ou
52 blocos de código.
Escopo de Variáveis
⚫ A variável valor é #include <stdio.h>
local e não pode
ser acessada por int soma(int x, int y) {
nenhuma outra int valor = x + y;
return valor;
parte do programa
}
fora da função
soma(). int main() {
int x = 5;
int y = 6;
int result = soma(x,y);
printf(“O resultado é: %d”, result);
53 }
Escopo de Variáveis
⚫ No código ao lado, #include <stdio.h>
outras funções.
void imprime_contador() {
printf("O contador é %d\n", contador);
}
int main() {
incrementa();
imprime_contador();
incrementa();
incrementa();
imprime_contador();
}
54
Exercícios
Vamos praticar!
55