Professor: Gabriel Soares Baptista
scanf() e printf().Permite que você decomponha problemas complexos em módulos menores, mais simples de resolver, testar e manter.
Declaração CORRETA de parâmetros:
int soma(int x, int y){
return x + y;
}
Declaração ERRADA de parâmetros:
int soma(int x, y){ // O compilador não saberá o tipo de 'y'
return x + y;
}
Existem duas abordagens técnicas na linguagem C para funções que não necessitam de dados de entrada:
void imprime(). O compilador não especifica parâmetros, permitindo que a função seja chamada com argumentos, embora ela não consiga acessá-los.void imprime(void). Esta é a forma mais rigorosa; o programa acusará um erro caso você tente passar qualquer valor para a função.Exemplo Sem void (Compila ignorando argumentos):
void imprime(){
printf("Teste de funcao\n");
}
// imprime(5); ou imprime(5, 'a'); irão compilar
Exemplo Com void (Gera erro de compilação se houver argumentos):
void imprime(void){
printf("Teste de funcao\n");
}
// imprime(5); gerará ERRO de compilação
tipo_retornado pode ser qualquer tipo válido em C (tipos básicos, void, ponteiros ou struct).void.returnvoid, ela deve utilizar o comando return seguido de uma expressão compatível.Assim que o programa atinge um comando return, a função é encerrada instantaneamente, ignorando qualquer código que venha abaixo.
return (em condicionais), recomenda-se usar apenas um para manter a clareza.Vários comandos return:
int maior(int x, int y){
if(x > y) return x;
else return y;
printf("Jamais serei lido"); // Inalcançável
}
Único return (Recomendado):
int maior(int x, int y){
int z;
if(x > y) z = x;
else z = y;
return z;
}
struct, já que estruturas permitem atribuição e cópia de conteúdo.1. Escreva um programa que contenha uma função chamada imprimir_linha. Essa função não deve receber argumentos e não deve retornar valor (void), apenas imprimir uma linha de 20 hífens ("--------------------") na tela. No main, chame essa função três vezes.
2. Crie uma função chamada dobro que receba um número inteiro como parâmetro e retorne o dobro desse número. No main, peça um número ao usuário, chame a função e imprima o resultado retornado.
3. Desenvolva uma função chamada verificar_sinal que receba um número inteiro. A função deve retornar:
1 se o número for positivo.-1 se o número for negativo.0 se o número for zero.No main, leia o número, chame a função e imprima a mensagem de texto correspondente ao código retornado.
scanf) e saída (printf) dentro de funções de processamento.main) deve cuidar da interação com o usuário.Fatorial na main() (I/O e cálculo misturados):
int main(){
int x, i, f = 1;
scanf("%d", &x);
for (i = 1; i <= x; i++) f = f * i;
printf("Fatorial: %d", f);
return 0;
}
Fatorial em função PRÓPRIA (Interface na main, cálculo na função):
int fatorial(int n){
int i, f = 1;
for (i = 1; i <= n; i++) f = f * i;
return f; // Retorna apenas o resultado
}
4. Escreva uma função chamada celsius_para_fahrenheit que receba uma temperatura em graus Celsius (float) e retorne a temperatura convertida para Fahrenheit. A fórmula é $F = C \times 1.8 + 32$.
5. Crie uma função chamada maior_valor que receba dois números inteiros como parâmetros e retorne o maior entre eles. Se forem iguais, retorne qualquer um deles. Teste a função no main com valores digitados pelo usuário.
6. Desenvolva uma função chamada eh_par que receba um número inteiro e retorne 1 (verdadeiro) se o número for par e 0 (falso) se for ímpar. Utilize essa função dentro de um laço no main para verificar 5 números digitados pelo usuário.
8. Crie uma função chamada potencia que receba a base ($x$) e o expoente ($y$) como inteiros. A função deve calcular e retornar $x^y$ sem utilizar a biblioteca math.h, ou seja, usando um laço de repetição para multiplicar a base.
Passagem por valor (Não altera x e y na main):
void Troca(int a, int b){
int temp = a; a = b; b = temp;
}
Passagem por referência (Altera x e y na main):
void Troca(int *a, int *b){
int temp = *a;
*a = *b;
*b = temp;
}
// Chamada: Troca(&x, &y);
&).// É necessário informar o número de colunas [2]
void imprime_matriz(int m[][2], int n){
int i, j;
for (i = 0; i < n; i++)
for (j = 0; j < 2; j++)
printf("%d \n", m[i][j]);
}
7. Escreva uma função chamada media_vetor. Essa função deve receber dois parâmetros: um vetor de inteiros e um inteiro representando o tamanho desse vetor. A função deve calcular e retornar a média aritmética dos elementos.
9. Crie uma "Calculadora Modular". O programa deve ter funções separadas para: somar, subtrair, multiplicar e dividir. No main, crie um menu (usando switch ou if) onde o usuário escolhe a operação e insere dois números. O programa deve chamar a função correspondente e exibir o resultado.
10. Crie uma função eh_primo que receba um inteiro e retorne 1 se for primo e 0 caso contrário. No main, utilize essa função para imprimir todos os números primos existentes entre 1 e 100.
Avaliação do primeiro conceito (C1)!