A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Linguagem de Programação

Apresentações semelhantes


Apresentação em tema: "Linguagem de Programação"— Transcrição da apresentação:

1 Linguagem de Programação
Aula 06 – Macros e Funções

2 Média de uma seqüência de valores
Dado n positivo e uma seqüência de n números reais calcular a média dos elementos da seqüência. Faça um loop para validar se n é maior que zero, ou seja, enquanto n<=0 exiba uma mensagem de erro e solicite um novo valor de n.

3 Solução main() { int qtd, i; float vlr, soma, media; soma = 0; do /* loop validação*/ { printf("\nDigite a quantidade: "); scanf("%d", &qtd); } while (qtd <=0); printf("\nDigite os valores:\n "); for(i=0; i<qtd; i++) /*loop entrada de dados*/ { scanf("%f", &vlr); soma = soma + vlr; } media = soma/qtd; /*Calcula média*/ printf("\nMedia %.2f", media); }

4 Exercício para entregar
Numa agência bancária, as contas são identificadas por números de até 6 dígitos seguidos de um dígito verificador, calculado da seguinte forma: Ex.: Seja n = 7314 o número da conta. 1) Obtemos a soma dos dígitos de n: s = = 15 2) Obtemos o dígito verificador a partir do resto da divisão de s por 10: d = s % 10 = 15 % 10 = 5 O número da conta é: Dado um número de conta n, exiba o número de conta completo correspondente.

5 Lógica para a solução Leia n (long int para suportar 6 dígitos);
Use um laço de repetição para somar seus dígitos; Após o laço, obtenha o DV pelo resto da divisão por 10; Imprima o número da conta formatado, incluindo o DV;

6 Solução main() { long int n, s, c; printf("\n Digite numero da conta: "); scanf("%ld", &n); c = n; s = 0; while (n != 0) { s = s + (n % 10); /* ou s += (n%10);*/ n /= 10; /* ou n = n / 10;*/ } printf("\nConta: %06ld-%1d",c ,s%10); }

7 Mais exercícios Um comerciante precisa informatizar o caixa de sua loja. Codifique um programa que: Leia uma série de valores correspondendo aos preços das mercadorias compradas por um cliente (o valor zero finaliza a entrada); Calcule o valor total; Aplique o desconto conforme tabela ao lado; Mostre o valor a ser pago pelo cliente.

8 Solução main() { float total, vlr, final; total = 0; do {
printf ("\nValor do item:"); scanf("%f", &vlr); total = total + vlr; } while (vlr!= 0); (...)

9 Solução - continuação (...)if (total < 50) final = (total * 0.95);
else if (total <= 100) final = (total * 0.90); if (total <=200) final = (total * 0.85); final = (total * 0.80); printf ("\nTotal da compra: %.2f", total); printf ("\nValor final com desconto: %.2f", final); }

10 Pré-processador Módulo adicional pelo qual passa o programa C antes de ser compilado. Modifica o programa antes do mesmo ser compilado Modificações feitas a partir de diretivas embutidas no código fonte Principais diretivas: #include #define

11 Diretiva #define Usada para definir constantes simbólicas (substituições) Dá maior legibilidade do código. Sintaxe: #define identificador texto Ex.: #define PI 3.14

12 Exemplo # include <stdio.h> # define diga printf
# define oi “\nOlá, tudo bem?” main() { diga (oi); }

13 Exercício Inclua as diretivas define para o programa abaixo compilar/executar corretamente. programa inicio limpaTela; diga ("olá !"); fim

14 Macros Quando a diretiva é usada para definir substituições com parâmetros. Exemplo: #define quad(n) nn Substituições: quad( x ) => x * x quad( 2 ) => 2 * 2 quad( f(x-3)) => f(x–3) * f(x–3) quad( x+4 ) => x+4 * x+4 Cuidado com espaços!

15 Possíveis erros Cuidado ao construir macros, pois a substituição pode provocar alguns erros. Por exemplo: quad( 2+3 ) = 25? 2+3 * 2+3 = 11 100/quad(2) = 25? 100/ 2 * 2 = 100

16 Corrigindo Gostaríamos que ao invés de: quad(2 + 3) = 2+3*2+3
Tivéssemos: quad(2 + 3) = (2+3)*(2+3) Então alteremos: #define quad(n) nn Para: #define quad(n) (n)(n)

17 Exercício Defina as seguintes macros: Para casa: soma(x, y);
max(x, y); abs(n); Para casa: eh_minuscula(c); eh_maiuscula(c); minuscula(c); maiuscula(c);

18 Diretiva #include Inclui uma cópia do arquivo entre <> ou “” no código fonte do nosso programa Exemplos: #include <stdio.h> #include <conio.h> #include <math.h>

19 Incluindo nossos arquivos
Podemos desenvolver nossos arquivos cabeçalho (header) e incluí-los usando a diretiva #include. Em geral usamos os sinais <> para arquivos do compilador C que ficam no diretório INCLUDE. E “” para arquivos que nós mesmos desenvolvemos.

20 Exemplo: arquivo de macros
/* macros.h */ # define abs(n) ((n)<0 ? -(n) : (n)) # define max(x, y) ((x)>(y)? (x) : (y)) # define soma(x, y) ((x) + (y)) Salvar como macros.h

21 Usando arquivo de macros
/*teste.c*/ #include <stdio.h> #include “macros.h” main() { int n1 = -7; int n2 = 8; printf("\n %d ", soma(2*3, 1 + 3)); printf("\n %d ", abs(n2)); printf("\n %d ", max(n1, n2)); }

22 Exercício para casa Crie o arquivo boolean.h com as definições necessárias para que o programa abaixo possa produzir a saída: true false true. main() { printf("%s ", bool(not false) ); printf("%s ", bool(false and true) ); printf("%s ", bool(true or false) ); }

23 Funções Que são funções?
Programas em C possuem uma função main( ) com a lógica principal do programa. Fazemos uso de funções existentes em bibliotecas C. printf(); scanf(); getch(); clrscr();

24 Definição de funções Podemos definir nossas próprias funções.
Vantagens: Clareza do código fonte Reuso da lógica. Uma vez codificada pode ficar disponível em bibliotecas

25 Sintaxe tipo_devolvido nome_funcao (parâmetros) { declarações comandos
} tipo_devolvido: tipo de dado que a função devolve. (void: não devolve dados) nome_funcao: nome que identifica a função parâmetros: lista de variáveis que representam entrada de dados na função

26 Funções que não devolvem valores
void boas_vindas( void ) { printf("\nSeja bem vindo."); } void main() boas_vindas(); getch(); Não é possível atribuir a variáveis ou expressões; x = boas_vindas (); Não é possível usar parâmetros quando não definidos; boas_vindas(“Olá”);

27 Funções com parâmetros
void cumprimentos( char c ) { switch(c) case ‘N’: printf("\nBoa noite!"); break; case ‘T’: printf("\nBoa tarde! ");break; default : printf("\nBom dia!"); } void main() cumprimentos(‘N’); getch();

28 Funções que devolvem valores
Funções que não são do tipo void usam comando return para devolver o resultado da função; O comando return interrompe a execução da função, voltando com o controle para o programa principal ou para a função que a chamou. Neste caso, as linhas de comando codificadas após o comando return não serão executadas.

29 Exemplos float hip (float a, float b) { float h;
h = sqrt( pow(a,2)+pow(b,2)); return h; } ... x = hip (3, 4); /* x recebe 5 */ double max (double a, double b) { if ( a>b ) return a; /* interrompe a função*/ return b; ... y = max (10, 20); /* y recebe 20*/

30 Exercícios (entregar)
Codifique a função fat(n), que devolve o fatorial de n. Codifique a função rodizio(placa), que recebe o número da placa de um veículo e exibe o dia em ele está no rodízio.

31 Data da P1 Primeira prova de LP 13/out Após semana de tecnologia


Carregar ppt "Linguagem de Programação"

Apresentações semelhantes


Anúncios Google