FUNÇÕES
Vetores em Linguagem “C”
• Vetores são Estruturas de Dados Homegêneas, isto é, são
estruturas capazes de armazenar uma quantidade pré-definida
de valores do mesmo tipo.
• Necessitam de apenas um índice de acesso.
• Declaração:
tipo nomedovetor[tamanho];
Onde:
– tipo:um dos tipos primitivos de dados em C (char, int, float, double)
– nomedovetor: segue as mesmas regras das variáveis básicas
– tamanho: define o número máximo de elementos do vetor
pode ser uma expressão constante inteira
Vetores
Ex: Faça um programa para Calcular a média de uma
turma de 40 alunosLer a nota de 3 alunos e calcular a
média
Exemplos de declarações:
float NOTAS[100];
int Conjunto[50];
char Nome[15];
• Acesso:
if((NOTAS[0] )== 10.0) {....}
while (Conjunto[1] > 10) {....}
Nome[14] = “ “;
Vetores em Linguagem C
• Declaração / Inicialização:
#define TAM 5
• int vetor[TAM] = {10, 15, 20, 25, 30};
//Atribuição estática
idade[0] = 25;
idade[1] = 50;
idade[2] = 15;
idade[3] = 23;
idade[4] = 42;
Vetores em Linguagem C
• Atribuição:
//Atribuição dinâmica
printf(“Digite a idade: ”);
scanf(“%d”,&idade[2]);
Vetores em Linguagem C
• Atribuição:
int notas[5], k;
//Atribuição dinâmica
for(k=0; k<5; k++){
scanf(“%d”,¬as[k]);
}
Vetores em Linguagem C
• Impressão:
int notas[5], k;
//Atribuição dinâmica
for(k=0; k<5; k++){
printf(“%d”,notas[k]);
}
Vetores
Ex: Faça um programa para calcular a média de 40 alunos
#include<stdio.h>
#define N_ALUNOS 40
main( )
{ int i;
float notas [ N_ALUNOS ], soma = 0;
• Note: Quantidade de
int matéria [ 4 ] [ 40 ]; Colunas
int i, j, matéria [ 4 ] [ 40 ];
int i, j, matéria [ 4 ] [ 40 ];
void desenha( )
{
int i;
for (i = 0; i < = 10; i++)
printf (“-”);
}
main ( )
{
desenha ( );
printf (“ usando funções”);
desenha ( );
}
Funções
• “Funções” que não retornam valores - Tipo: void
int main(){
imprimir();
media();
return 0;
}
void imprimir(){
printf(“Verifica Valor”);
}
void media(){
int x = 10;
if( x % 2 == 0){
printf(“Numero Par”);
}
}
Funções
• “Funções” que retornam valores - int, float, double e
etc. int main(){
float ret;
ret = calculaMedia();
media = (x + y)/2;
return media;
}
Funções
• “Funções” que retornam valores - int, float, double e
etc.
int main(){
float ret;
return 0;
}
float calculaMedia(){
int x = 10, y = 5;
float media;
media = (x + y)/2;
return media;
}
Funções
• “Funções” que recebem valor - int, float, double e etc.
int main(){
float x = 10, y = 5;
int ret;
ret = calculaMedia(x,y));
printf(“A media e %d”,ret);
return 0;
}
int calculaMedia(float k, float j){
int calculo;
return calculo;
}
Funções
• “Funções” que retornam valores
#include <stdio.h>
int main(){
float x = 10, y = 5;
printf(“x = %f e y = %f”,x,y);
calculaMedia();
return 0;
}
void calculaMedia(){
float media;
int main(){
x+= 2;
printf(“x = %f e y = %f”,x,y);
calculaMedia();
return 0;
}
void calculaMedia(){
float media;
x += 5;
media = (x + y)/2;
printf(“a media e = %f \n”,media);
printf(“x = %f e y = %f \n”,x,y);
}
Funções – Variáveis Locais
void desenha ( ) void desenha ( )
{ {
int i, j; int i, j; i, j em
. . . . . . desenha são
} . . . variáveis
main ( ) } diferentes de
{ void calcula ( ) i, j em
int a; { calcula.
int i, j;
desenha();
. . .
a = i; ¬ erro
. . .
. . . }
}
Funções – Variáveis Globais
• Variável que é declarada externamente podendo ser
acessada por qualquer função
calculaMedia(x,y);
return 0;
}
void calculaMedia(int k, int j){
float media;
media = (k + j)/2;
}
Funções – Passando Dados - Valor
int main(){
int x = 10, y = 5;
float ret;
ret = calculaMedia(x,y);
return 0;
}
float calculaMedia(int k, int j){
float media;
media = (k + j)/2;
return media;
}
Funções – Passando Dados
main ( )
{
printf (“ %c”, minúsculo (‘A’) );
parâmetro real
}
char minúsculo (char ch)
parâmetro formal
{
if (( ch >= ‘A’)&& (ch <= ‘Z’))
return (ch + ‘a’-, ‘A’);
else
return (ch);
}
Funções – Passando Dados
#include <stdio.h>
main ( )
{
int num, b;
printf (“ entre com um número > o”);
scanf (“ %d”, &num );
b = abs (num);
. . .
printf (“ Valor absoluto de num = %d”, abs(num) );
. . .
b = abs(-3);
}
int abs (int x)
{
return ( ( x < 0 ) ? -x : x );
}
Funções – Passando vários argumentos
Ex 2:
Ex 1: float potência (float base, int expoente)
float área_retângulo (float {
largura, float altura)
int i; float resultado = 1;
{
if (expoente == 0)
return (largura * altura);
return 1;
} for (i = 1; i <= expoente; i++)
resultado *= base
return resultado;
}
Funções – Passando Dados
Usando várias funções: calcular a seguinte seqüência
S(x, n) = x/1! + x2/2! + x3/3! + ... + xn/ n!
#include <stdio.h>
float serie (float , int );
float potencia (float , int)
int fat (int);
main( )
{
float x;
int termos;
#include <stdio.h>
int maximum( int [] ); /* ANSI function prototype */
main( )
{
int values[5], i, max;
printf("Entre com 5 numeros:\n");
for( i = 0; i < 5; ++i )
scanf("%d", &values[i] );
max = maximum( values );
printf("\nValor Maximo: %d\n", max );
}
Vetores – passando como parâmetro
Saída:
int maximum( int values[5] )
{ Entre com 5 numeros:
int max_value, i; 7 23 45 9 121
Valor Maximo: 121
max_value = values[0];
for( i = 0; i < 5; ++i )
if( values[i] > max_value )
max_value = values[i];
return max_value;
}
String – Leitura
Ex: Saída:
main ( ) Digite seu nome: Pedro Henrique
{ Bom dia Pedro
char nome[40];
• Gets
lê caracteres até encontrar ‘\n’
substitui ‘\n’ por ‘\0’
Saída:
Ex: Digite seu nome: Pedro Henrique
main ( ) Bom dia Pedro Henrique
{
char nome[40];
Ex: Saída:
main ( ) Digite seu nome: Jose Maria
{ Tamanho = 10
char nome[40];
Ex:
main ( ) Saída:
{ Maria
char nome[40] = “Jose”, JoseMaria
char sobrenome[30] = “Maria”;
Cuidado:
strcat(nome, sobrenome); dado str1 + str2 tem
puts (sobrenome); que caber em str1
puts (nome);
}
String – Funções de Manipulação
#include <stdio.h>
main ( )
{
char nome[40] = “Jose”;
char sobrenome[30] = “Maria”;