Prévia do material em texto
1 Aula 4: Caracteres, Operadores e Expressões Prof. Luiz Olmes Disciplina: Algoritmos e Programação 1 Nas aulas anteriores... O que vimos? Objetivos de hoje: 2 Algoritmos. Linguagem C: Variáveis e tipos. Funções de entrada / saída. Tipo char Operadores: Atribuição. Aritméticos. Funções matemáticas. Valores aleatórios. Tipos primitivos: o tipo char 3 O tipo char é utilizado para representar caracteres. Este tipo armazena um único caractere por vez. A máscara de leitura / escrita para variáveis char é %c. Quando um caractere é exibido na tela, ele é representado por um símbolo gráfico associado a seu valor numérico. Os símbolos gráficos e seus valores associados estão definidos na tabela ASCII (American Standard Code for Information Interchange). Tipos primitivos: o tipo char 4 Visualizando os símbolos da Tabela ASCII: 1. #include <stdio.h> 2. 3. int main() 4. { 5. int i; 6. 7. for(i = 0; i < 256; i++) 8. printf(‚%d = %c\n‛, i, i); 9. 10. return 0; 11.} Tipos primitivos: o tipo char 5 Visualizando os símbolos da Tabela ASCII: 1. #include <stdio.h> 2. 3. int main() 4. { 5. int i; 6. 7. for(i = 0; i < 256; i++) 8. printf(‚%d = %c\n‛, i, i); 9. 10. return 0; 11.} ... 130 = é ... 198 = ã ... Tipos primitivos: o tipo char 6 Exemplo: lendo e imprimindo uma variável char. 1. // Lendo um simbolo e imprimindo o que foi lido 2. #include <stdio.h> 3. 4. int main() 5. { 6. char letra; 7. 8. printf(‚Digite uma letra: ‛); 9. scanf(‚%c‛, &letra); 10. printf(‚Letra digitada: %c\n‛, letra); 11. 12. return 0; 13.} Tipos primitivos: o tipo char 7 Variáveis do tipo char são inicializadas dento de aspas simples: 1. #include <stdio.h> 2. 3. int main() 4. { 5. char letra = ‘A’; 6. 7. printf(‚Letra: %c\n‛, letra); 8. 9. return 0; 10.} Operador de atribuição 8 A atribuição é uma das operações mais utilizadas em qualquer linguagem de programação estruturada. Ela é responsável por armazenar um valor em uma variável. Expressa em linguagem C pelo símbolo = (igual). Operador de atribuição 9 Sintaxe: Expressão: qualquer combinação aritmética de valores, variáveis, constantes ou funções cuja resposta tenha o mesmo tipo da variável definida por nome_da_variável. nome_da_variável = expressão; Operador de atribuição 10 Sintaxe: Expressão: qualquer combinação aritmética de valores, variáveis, constantes ou funções cuja resposta tenha o mesmo tipo da variável definida por nome_da_variável. O operador de atribuição calcula o resultado da expressão que está à direita do operador = e armazena esse valor na variável à esquerda do operador, nunca o contrário. nome_da_variável = expressão; Operadores aritméticos 11 Os operadores aritméticos operam sobre números (valores, variáveis, constantes, funções) e têm como resultado valores numéricos. Adição e subtração têm a mesma prioridade, que é menor do que a prioridade de multiplicação, divisão e resto de divisão. Operação Símbolo utilizado Exemplo Adição + resp = a + b; Subtração – resp = a – b; Multiplicação * resp = a * b; Divisão / resp = a / b; Resto de divisão % resp = a % b; Operadores aritméticos 12 Em uma operação de divisão, se o numerador e o denominador forem números inteiros, o resultado conterá somente a parte inteira da divisão. Operadores aritméticos 13 Em uma operação de divisão, se o numerador e o denominador forem números inteiros, o resultado conterá somente a parte inteira da divisão. 1. #include <stdio.h> 2. int main() 3. { 4. float x, y; 5. 6. x = 5 / 4; 7. printf(‚x = %f \n‛, x); 8. 9. y = 5 / 4.0; 10. printf(‚y = %f \n‛, y); 11. return 0; 12.} x = 1.00000 y = 1.25000 Operadores aritméticos 14 Em uma operação de divisão, se o numerador e o denominador forem números inteiros, o resultado conterá somente a parte inteira da divisão. 1. #include <stdio.h> 2. int main() 3. { 4. float x, y; 5. 6. x = 5 / 4; 7. printf(‚x = %f \n‛, x); 8. 9. y = 5 / 4.0; 10. printf(‚y = %f \n‛, y); 11. return 0; 12.} x = 1.00000 y = 1.25000 int / int = int float / int = float int / float = float idem para double Operadores aritméticos 15 O operador % (resto de divisão) só é usado com números inteiros. Operadores aritméticos 16 O operador % (resto de divisão) só é usado com números inteiros. 1. #include <stdio.h> 2. int main() 3. { 4. int x = 5, y = 3; 5. int quoc, resto; 6. 7. quoc = x / y; 8. resto = x % y; 9. 10. printf(‚Quociente = %d \nResto = %d\n‛, quoc, resto); 11. 12. return 0; 13.} Quociente = 1 Resto = 2 Funções matemáticas 17 A linguagem C traz diversas funções que realizam cálculos matemáticos, como potenciação, radiciação, logaritmos, seno etc. O arquivo de cabeçalho onde estas funções estão definidas é chamado math.h. Assim, o código deve conter o comando #include <math.h> antes da função main. Para realizar operações aritméticas, não é necessário realizar esta inclusão. Funções matemáticas 18 Potenciação: pow(b, e) Eleva o argumento b (base) ao expoente e. Tanto o resultado quanto os parâmetros b e e são tratados como tendo o tipo double. Raiz quadrada: sqrt(n) Extrai a raiz quadrada de n. O resultado possui o tipo double. Seno, cosseno e tangente: sin(a), cos(a), tan(a) Calculam, respectivamente, o seno, cosseno e a tangente do ângulo a. O ângulo deve ser informado em radianos. O resultado possui o tipo double. Funções matemáticas 19 Exemplo: ler as medidas dos catetos de um triângulo retângulo e calcular o valor da hipotenusa. Funções matemáticas 20 Exemplo: ler as medidas dos catetos de um triângulo retângulo e calcular o valor da hipotenusa. 1. #include <stdio.h> 2. #include <math.h> 3. int main() 4. { 5. double c1, c2, hip; 6. 7. printf(‚Digite os valores dos 2 catetos:\n‛); 8. scanf(‚%lf %lf‛, &c1, &c2); 9. 10. hip = sqrt( pow(c1, 2) + pow(c2, 2) ); 11. 12. printf(‚Hipotenusa = %lf\n‛, hip); 13. 14. return 0; 15.} Geração de números aleatórios 21 Números aleatórios são essenciais em praticamente todos os ramos da Computação. Por exemplo: em jogos que você joga contra os inimigos, como eles sempre aparecem em posições e lugares diferentes? Simples! Eles aparecem aleatoriamente. A função rand() é usada para gerar números aleatórios em C. Esta função pertence ao arquivo de cabeçalho stdlib.h. Os números gerados são inteiros (int) entre zero e 2147483647. Geração de números aleatórios 22 Exemplo: gerando dois valores aleatórios e imprimindo. Geração de números aleatórios 23 Exemplo: gerando dois valores aleatórios e imprimindo. 1. #include <stdio.h> 2. #include <stdlib.h> 3. 4. int main() 5. { 6. int n1, n2; 7. 8. n1 = rand(); 9. n2 = rand(); 10. 11. printf(‚n1 = %d\n‛, n1); 12. printf(‚n2 = %d\n‛, n2); 13. 14. return 0; 15.} Geraçãode números aleatórios 24 Exemplo: gerando dois valores aleatórios e imprimindo. 1. #include <stdio.h> 2. #include <stdlib.h> 3. 4. int main() 5. { 6. int n1, n2; 7. 8. n1 = rand(); 9. n2 = rand(); 10. 11. printf(‚n1 = %d\n‛, n1); 12. printf(‚n2 = %d\n‛, n2); 13. 14. return 0; 15.} Execute este código mais vezes e observe o resultado. Geração de números aleatórios 25 A função rand() tem uma memória interna que armazena o inteiro, digamos n, produzido pela execução anterior da função. A cada nova execução, a função usa n para calcular um novo inteiro aleatório. O inteiro n que corresponde à primeira invocação de rand() é conhecido como semente (seed). O programador pode especificar a semente por meio da função srand() da biblioteca stdlib.h, que recebe a semente (um int) como argumento. Se o programador não especificar a semente, o sistema adota o valor zero como semente. Geração de números aleatórios 26 Para deixar a sequência gerada imprevisível, basta iniciar a semente com um valor proveniente do relógio do sistema, através da função time(NULL), pertencente ao arquivo de cabeçalho time.h. Geração de números aleatórios 27 Para deixar a sequência gerada imprevisível, basta iniciar a semente com um valor proveniente do relógio do sistema, através da função time(NULL), pertencente ao arquivo de cabeçalho time.h. 1. #include <stdio.h> 2. #include <stdlib.h> 3. #include <time.h> 4. 5. int main() 6. { 7. int n; 8. 9. srand( time(NULL) ); 10. 11. n = rand(); 12. printf(‚n = %d\n‛, n); 13. 14. return 0; 15.} Geração de números aleatórios 28 E se quiséssemos trocar o intervalo de números gerado pela função rand()? Por exemplo: Como gerar valores no intervalo de 0 a 100? Como gerar valores no intervalo de 10 a 100? Como gerar valores no intervalo de –5 a 10? Dúvidas? 29 30 Aula 4: Caracteres, Operadores e Expressões Prof. Luiz Olmes Disciplina: Algoritmos e Programação 1