Baixe o app para aproveitar ainda mais
Prévia do material em texto
Bruno Jurkovski Fábio da Fontoura Beltrão Felipe Augusto Chies Kauê Soares da Silveira Lucas Fialho Zawacki Marcos Vinicius Cavinato Revisão da Aula 6 � Na aula passada aprendemos como manipular arquivos. � Vamos revisar o que vimos corrigindo o último exercício da aula: Revisão da Aula 6 /* Definição da estrutura ESTUDANTE */ typedef struct estudante { char nome[20]; int idade; char sexo; int matricula; }ESTUDANTE; /* Função para receber os dados do usuário */ void recebe_dados() { FILE *arq; arq = fopen("dados.bin", "a"); ESTUDANTE est; if(arq) { scanf(" %s", est.nome); scanf(" %d", &est.idade); scanf(" %c", &est.sexo); scanf(" %d", &est.matricula); fwrite(&est,sizeof(ESTUDANTE),1,arq); fclose(arq); } } Revisão da Aula 6 void ler_dados() { ESTUDANTE est; FILE *arq; arq = fopen("dados.bin", "r"); if(arq) { while( fread(&est,1,sizeof(ESTUDANTE),arq) ) { printf( “Nome: %s | Idade: %d | Sexo: %c | Matricula: %d\n”, est.nome, est.idade, est.sexo, est.matricula); } } fclose(arq); } main() { printf("Recebendo dados :\n"); receber_dados(); printf("Lendo o arquivo:\n"); ler_dados(); } Pré-Processador - Introdução � O pré-processador consiste em um programa que é executado sobre o código antes da compilação. Ele implementa duas facilidades: � Inclusão de Arquivos; �Definição de Macros. Inclusão de Arquivos � #include <arquivo> � Inclui um arquivo do diretório padrão � Exemplo: <stdio.h> � #include “arquivo” � Inclui um arquivo do diretório atual � Exemplo: “meu_arquivo.h” Inclusão de Arquivos � A linha com #include é substituída pelo conteúdo do arquivo. � Este arquivo, por sua vez, pode incluir outros arquivos ... Macros � #define NOME expressão �Todas as ocorrências de NOME no código são substituídas pela expressão �Exemplo: #define PI 3.14 �Útil para não ter que modificar o código inteiro, podendo modificar apenas o define Macros � Podemos usar macros para definir valores constantes e referenciarmos eles em várias partes do programa pelo mesmo nome. Dessa forma, se precisarmos modificar esses valores, podemos fazê-lo apenas na definição da constante. Macros #define MAX 100 int main() { int z; float a_float[MAX]; for ( z = 0; z < MAX ; z++) { printf(“Digite o valor %d:\n”, z + 1); scanf(“%f”, &a_float[z]) ; } for ( z = MAX - 1; z >= 0 ; z--) // imprimir na ordem inversa printf(“Valor do indice %d: %f \n”, z, a_float[z]); Macros � Se quiséssemos, por exemplo, testar o nosso programa anterior, com menos valores (digitar 100 vezes é muita coisa), poderíamos substituir a definição de MAX pela linha. � #define MAX 5 Macros � Também podemos definir macros que recebem parâmetros: #include <stdio.h> #define PI 3.14 #define GRAU_RAD(x) x * PI / 180 main() { printf(“%f”, GRAU_RAD(60)); printf(“%f”, GRAU_RAD(30+30)); } Macros � Mas é preciso tomar cuidado com este tipo de operação, a segunda linha, por exemplo, nos imprimirá um resultado inusitado. � Para impedir este tipo de comportamento, deveríamos definir o macro da seguinte maneira. Macros � Sem parênteses: � GRAU_RAD(30 + 30) vira 30 + 30 * PI / 180 � Com parênteses: � GRAU_RAD(30 + 30) vira (30 + 30) * PI / 180 #include <stdio.h> #define PI 3.14 #define GRAU_RAD(x) (x) * PI / 180 main() { printf(“%f”, GRAU_RAD(60)); printf(“%f”, GRAU_RAD(30+30)); } Exercícios � Defina um macro que recebe uma temperatura em graus Celcius e calcula a temperatura em Fahrenheit. � Fórmula: ºF = ºC * 1,8 + 32 Bibliotecas � Existem várias bibliotecas com funções pré-definidas, as quais, podemos utilizar para facilitar as tarefas que desejamos realizar. � Falaremos sobre algumas que acreditamos que lhes serão úteis. Bibliotecas � math.h : Contém várias funções matemáticas definidas, como por exemplo: � pow (double x, double n) – eleva x na n � srqt (double a) – calcula a raiz quadrada de a � sin (double grau) – retorna o seno do grau passado (deve estar em radianos) � cos(double grau) – retorna o cosseno do grau passado (deve estar em radianos) � muitas outras... Bibliotecas � string.h : Inclui diversas funções essenciais para a manipulação de strings, entre as mais úteis: � strcpy(char *dest, char *font) – copia font para dest � strlen(char *str) – retorna o tamanho de str � strcmp(char *str1, char * str2) – compara str1 com str2 e, retorna 0 se forem iguais, um valor positivo se a primeira vem antes que a segunda e um valor negativo caso contrário � muitas outras... Exercícios � Declare uma matriz de inteiros, com dimensões m por n (usem define) e a inicializem com a(ij) = i+j. Leia dois números do usuário, referentes a uma posição na matriz, e depois leia uma string com o nome de uma operação matemática (“RAIZ” e ”QUADRADO”) e imprime o resultado dessa operação aplicada no número daquela posição.
Compartilhar