CCO 016 / COM 110 Fundamentos de Programação Prof. Roberto Affonso da Costa Junior Universidade Federal de Itajubá
AULA 06 Operações matemáticas Comandos Sequenciais Comandos Sequenciais na Linguagem de Programação C
Operações Aritméticas Aritméticas mais comuns Adição + Subtração - Divisão / Multiplicação * Resto da divisão resto(x,y) Raiz quadrada raiz(x) Exponenciação pot(x,n) Seno sen(x) Cosseno cos(x) Tangente tan(x) Logaritmo log(x) Logaritmo Neperiano ln(x)
Estrutura Sequenciais Definimos Estruturas Sequenciais como sendo a sequência de passos feito da forma Top-Down, isto é, de cima para baixo. Por exemplo: A 10 B 20 imprima(a,b) B 5 imprima(a, B) Qual o valor de B e de A e B?
Estrutura Sequenciais Uma estrutura sequencial realiza um conjunto predeterminado de comandos de forma sequencial, na ordem em que foram declarados no código fonte. A cada instrução, o contador de programa é incrementada (PORTUGOL). Uma estrutura sequencial é delimitada pelas palavrasreservadas Início e Fim e contém basicamente comandos de atribuição, comandos de entrada e comandos de saída. Os algoritmos do capítulo anterior são algoritmos que utilizam uma única estrutura sequêncial.
Estrutura Sequenciais Um algoritmo puramente seqüencial é aquele cuja execução é efetuada em ordem ascendente dos números que identificam cada passo. A passagem de um passo ao seguinte é natural e automática, e cada passo é executado uma única vez. 1. início 2. A 10 3. B 20 4. imprima(a,b) 5. B 5 6. imprima(a,b) 7. fim
Estrutura Sequenciais Esquema Genérico de Algoritmos em Portugol Esquema Genérico de Algoritmos em Fluxograma Declaração de Variáveis/Constantes INICIO inicialização de variáveis/constantes {comentários} bloco de comandos de entrada de dados {comentários} bloco de comandos de atribuição Atribuição {comentários} bloco de comandos de saída de dados FIM INICIO FIM Leia Imprima
Exemplo 1 Dados 4 números, calcule a média aritmética deles. Algoritmo: real n1, n2, n3, n4, soma, media imprima ( entre com o valor de n1 ) leia ( n1 ) imprima ( entre com o valor de n2 ) leia ( n2 ) imprima ( entre com o valor de n3 ) leia ( n3 ) imprima ( entre com o valor de n4 ) leia ( n4 )
Exemplo 1 Algoritmo: soma n1 + n2 + n3 + n4 media soma / 4 imprima ( A média dos 4 números é:, media )
Exemplo 1 Dados 4 números, calcule a média aritmética deles. Portugol: Início real n1, n2, n3, n4, soma, media imprima ( entre com o valor de n1: ) leia ( n1 ) imprima ( entre com o valor de n2: ) leia ( n2 ) imprima ( entre com o valor de n3: ) leia ( n3 ) imprima ( entre com o valor de n4: ) leia ( n4 )
Exemplo 1 Portugol: soma n1 + n2 + n3 + n4 media soma / 4 imprima ( A média dos 4 números é:, media ) Fim
Exemplo 1 Dados 4 números, calcule a média aritmética deles. Fluxograma: INICIO n1, n2, n3, n4 Soma n1 + n2 + n3 + n4 Media soma / 4 Media =, Media FIM
Exemplo 1 Testando o Algoritmo anterior n1 = 10.0 n2 = 5.0 n3 = 7.0 n4 = 8.0 soma 10.0 + 5.0 + 7.0 + 8.0 media 30 / 4 media = 7.5
Exemplo 2 Elabore um programa que leia um valor de temperatura em graus Celsius, calcule e exiba a temperatura equivalente em graus Kelvin, sabendo que K = C + 273. Algoritmo: real K, C imprima ( entre com a temperatura em Celsius: ) leia ( C ) K C + 273 imprima ( A temperatura em Kelvin é:, K)
Exemplo 2 Portugol Início real K, C imprima ( entre com a temperatura em Celsius: ) leia ( C ) K C + 273 imprima ( A temperatura em Kelvin é:, K) Fim
Exemplo 2 Fluxograma: INICIO C K C + 273 Kelvin =, K FIM
Exemplo 2 Testando o Algoritmo anterior C = 10.0 k 10.0 * 25.4 Kelvin = 254.0
Exemplo 3 Ler o nome de um cliente de fast food e a quantidade de cada item do menu que ele vai pedir. Exiba o nome do cliente e o total da compra. MENU Hot dog R$ 2,50 Hambúrguer R$ 4,00 Cheeseburguer R$ 4,50 Refrigerante R$ 2,00 Batatas fritas R$ 3,50
Exemplo 3 Algoritmo: cadeia nome inteiro qhd, qha, qch, qre, qbf real pthd, ptha, ptch, ptre, ptbf, ptf imprima ( entre com o nome do cliente: ) leia ( nome ) imprima ( entre com a quantidade de hot dog: ) leia ( qhd ) imprima ( entre com a quantidade de hambúrguer: ) leia ( qha ) imprima ( entre com a quantidade de cheeseburguer: ) leia ( qch )
Exemplo 3 Algoritmo: imprima ( entre com a quantidade de refrigerante: ) leia ( qre ) imprima ( entre com a quantidade de batatas fritas: ) leia ( qbf ) pthd qhd * 2.5 ptha qha * 4.0 ptch qch * 4.5 ptre qre * 2.0 ptbf qbf * 3.5 ptf qhd + qha + qch + qre + qbf imprima ( Cliente:, nome) imprima ( O valor devido é: R$, ptf)
Exemplo 3 Portugol: Início cadeia nome inteiro qhd, qha, qch, qre, qbf real pthd, ptha, ptch, ptre, ptbf, ptf imprima ( entre com o nome do cliente: ) leia ( nome ) imprima ( entre com a quantidade de hot dog: ) leia ( qhd ) imprima ( entre com a quantidade de hambúrguer: ) leia ( qha ) imprima ( entre com a quantidade de cheeseburguer: ) leia ( qch )
Exemplo 3 Portugol: imprima ( entre com a quantidade de refrigerante: ) leia ( qre ) imprima ( entre com a quantidade de batatas fritas: ) leia ( qbf ) pthd qhd * 2.5 ptha qha * 4.0 ptch qch * 4.5 ptre qre * 2.0 ptbf qbf * 3.5 ptf qhd + qha + qch + qre + qbf imprima ( Cliente:, nome) imprima ( O valor devido é: R$, ptf) FIM
Exemplo 3 Portugol: imprima ( entre com a quantidade de refrigerante: ) leia ( qre ) imprima ( entre com a quantidade de batatas fritas: ) leia ( qbf ) pthd qhd * 2.5 ptha qha * 4.0 ptch qch * 4.5 ptre qre * 2.0 ptbf qbf * 3.5 ptf qhd + qha + qch + qre + qbf imprima ( Cliente:, nome) imprima ( O valor devido é: R$, ptf) FIM
Exemplo 3 Fluxograma: INICIO nome, qhd, qha, qch, qre, qbf pthd qhd * 2.5 ptha qha * 4.0 ptch qch * 4.5 ptre qre * 2.0 ptbf qbf * 3.5 ptf pthd + ptha + ptch + ptre + ptbf 1
Exemplo 3 Fluxograma: 1 Cliente:, nome O valor devido é: R$, ptf FIM
Exemplo 3 Testando o Algoritmo anterior nome = Roberto Costa qhd = 0 qha = 0 qch = 1 qre = 2 qbf = 1 pthd = 0 * 2.5 ptha = 0 * 4.0 ptch = 1 * 4.5 ptre = 2 * 2.0 ptbf = 1 * 3.5
Exemplo 3 Testando o Algoritmo anterior ptf = 0.0 + 0.0 + 4.5 + 4.0 + 3.5 Cliente : Roberto Costa O valor devido é: R$ 12.00
Operações Aritméticas em C Adição + Subtração - Multiplicação * Divisão / Resto da divisão % Modulo inteiro x abs(x) tem que usar a stdlib.h
Operações Aritméticas em C Usando a math.h Seno sin(x) Cosseno cos(x) Tangente tan(x) x em radiano Logaritmo log10(x) Logaritmo Neperiano log(x) Raiz quadrada sqrt(x) Potenciação pow(b,e) Exponenciação exp(x) Módulo de número real fabs(x)
Exemplos de expressões aritméticas int x, y; float a, b, c; x = 3 * 2 + 5; y = x % 2; a = 45.67; b = 3.45 + a; c = b / a 10.567;
Hierarquia dos operadores Qual é o resultado da seguinte operação: X = 5 + 2 * 3 ; 21 ou 11?
Hierarquia dos operadores A hierarquia dos operadores define a ordem em que uma expressão é calculada; Define-se a seguinte tabela de prioridade para os operadores: Parênteses ( mais alta ) Multiplicação e divisão Adição e subtração Operadores com mesma prioridade, a ordem de resolução é da esquerda para a direita.
No exemplo anterior: X = 5 + 2 * 3 ; tem-se uma adição e uma multiplicação; teste caso a multiplicação é realizada em primeiro lugar e em seguida, o resultado é adicionado ao valor 5 portanto, o resultado da expressão será: 2 * 3 = 6 6 + 5 = 11
Se for desejado trocar a prioridade de um operador, utiliza-se parênteses. Exemplo: X = ( 5 + 2 ) * 3 ; Neste caso, como o parênteses tem a maior prioridade, ele é resolvido na frente; Desta forma, tem-se: 5 + 2 = 7 7 * 3 = 21
Exemplo 4 A expressão algébrica: a b [ a *3] a b a * b [3 a] [3 b] a b
É representada em linguagem C como: ( (a b) / (a + b) - (a * 3) ) / ( (3 a) + a * b / (a b) (3 + b) )
ordem da execução dos operadores ( (a b) / (a + b) - (a * 3) ) / 1 2 3 4 5 A ( (3 a) + a * b / (a b) (3 + b) ) 6 9 7 8 10 11 12 B
Operação final A / B 13
Expressões inteiras Constituídas de variáveis e constantes inteiras Resultado é sempre inteiro Exemplo: a expressão: 5 * 2 / 3 Resulta no valor 3
Já a expressão: 2 / 3 * 5 Resulta no valor 0 E a expressão: 3 / 2 * 5 Resulta no valor 5
Expressões flutuantes Constituídas de variáveis e constantes flutuantes Resultado é sempre flutuante Exemplo: a expressão: 5.0 * 2.0 / 3.0 Resulta no valor 3.33
Expressões mistas Constituídas de variáveis e constantes flutuantes e inteiras Resultado é sempre flutuante Exemplo: a expressão: 5.0 * 2 / 3.0 Resulta no valor 3.33
Já a expressão: 2.0 / 5 * 3 Resulta no valor 1.20 E a expressão: 5 / 2 * 3.0 CUIDADO!!! Resulta no valor 6.0
Casting tipos Pode-se forçar temporariamente, a mudança do tipo de uma variável, através do casting do tipo, que consiste em se anteceder o nome da variável com o novo tipo, entre parênteses.
Exemplo 5 int a, b; float c; c = 2.5; a = 3; b = (int)c * a; Que resulta em 6 o valor armazenado em b
Exemplo 6 int a, b; float c; c = 2.5; a = 3; b = (int)(c * a); Que resulta em 7 o valor armazenado em b
Atribuições inteiras int a, b; a = 34; b = a * 2; Em b estará armazenado o valor 68
Atribuição Flutuante float a, b; a = 34.56; b = a * 2; Em b estará armazenado o valor : 69.12
Atribuição mista int a, b; float c, d; a = 10; c = 20.20; b = 2 * c; // inteiro recebendo flutuante d = a * 2; // flutuante recebendo inteiro b tem valor 40 d tem valor 20.0
Operadores Especiais Adição ++ Subtração -- Atribuição com operação += -= /= *=
Adição Sejam as operações: x = 35; x = x + 10; Como mostrado anteriormente, na variável x é armazenado o valor atual dela ( 35 ) adicionado à constante 10, o que resulta no valor 45.
Uma outra forma de se escrever as mesmas instruções é utilizando-se o operador especial +=, da seguinte forma: x = 35; x += 10; Ou seja, a expressão do lado direito ao sinal de igual é operada com a variável do lado esquerdo e o resultado é armazenado nesta mesma variável.
Isto é também válido para os outros operadores, como mostrado no exemplo: a = 23; a *= 2; significa que na variável a vai estar armazenado o valor 46, pois corresponde à operação: a = a * 2
Exemplo 7 int a, b; a = 10; b = 2; a += b + 3; printf ( a = %d\n, a );
Neste caso, a saída seria: resultado a = 15
Exemplo 8 int a, b; a = 10; b = 2; a += a* (b + 3); printf ( a = %d\n, a );
Neste caso, a saída seria: resultado a = 60
Para as operações de adição e subtração, existem mais dois operadores especiais. São eles: ++ e -- respectivamente.
Sejam por exemplo, as seguintes operações: x = 30; x = x + 1; como mostrado anteriormente, a ultima operação pode ser também escrita como: ou ainda: x += 1; x++; o que resulta no valor 31 armazenado na variável x, em todos os exemplos.
O operador ++ é utilizado quando o conteúdo de uma variável é adicionado de uma unidade, e da mesma forma, o operador -- é utilizado quando o conteúdo de uma variável é subtraído de uma unidade.
Sejam por exemplo, as seguintes operações: x = 30; x = x - 1; como mostrado anteriormente, a ultima operação pode ser também escrita como: ou ainda: x -= 1; x--; o que resulta no valor 29 armazenado na variável x, em todos os exemplos.
Exemplo 1 Dados 4 números, calcule a média aritmética deles. Programa em C: #include <stdio.h> int main() { // declaração das variáveis float n1, n2, n3, n4, soma, media; // entrada de dados printf ( entre com o valor de n1 = ); scanf ( %f,&n1 ); printf ( entre com o valor de n2 = ); scanf ( %f,&n2 );
Exemplo 1 Programa em C: // entrada de dados printf ( entre com o valor de n3 = ); scanf ( %f,&n3 ); printf ( entre com o valor de n4 = ); scanf ( %f,&n4 ); // Somando todos os valores soma = n1 + n2 + n3 + n4; // Calculando a média media = soma / 4; // saída de dados printf ( A média dos 4 números é: %.2f, media ); }
Exemplo 2 Elabore um programa que leia um valor de temperatura em graus Celsius, calcule e exiba a temperatura equivalente em graus Kelvin, sabendo que K = C + 273. Programa em C: #include <stdio.h> int main() { // declaração das variáveis float K, C; // entrada de dados printf ( entre com a temperatura em Celsius = ); scanf ( %f,&c );
Exemplo 2 Programa em C: // Calculando a temperatura em Kelvin K = C + 273; // saída de dados printf ( A temperatura em Kelvin é: %.2f, K ); }
Exemplo 3 Ler o nome de um cliente de fast food e a quantidade de cada item do menu que ele vai pedir. Exiba o nome do cliente e o total da compra. MENU Hot dog R$ 2,50 Hambúrguer R$ 4,00 Cheeseburguer R$ 4,50 Refrigerante R$ 2,00 Batatas fritas R$ 3,50
Exemplo 3 Programa em C: #include <stdio.h> int main() { // declaração das variáveis char nome[30]; int qhd, qha, qch, qre, qbf; float pthd, ptha, ptch, ptre, ptbf, ptf; // entrada de dados printf ( entre com o nome do cliente: ) scanf ( %[^\n], nome)
Exemplo 3 printf ( entre com a quantidade de hot dog: ) scanf ( %d,&qhd ); printf ( entre com a quantidade de hambúrguer: ) scanf ( %d,&qha ); printf ( entre com a quantidade de cheeseburguer: ) scanf ( %d,&qch ); printf ( entre com a quantidade de refrigerante: ) scanf ( %d,&qre ); printf ( entre com a quantidade de batatas fritas: ) scanf ( %d,&qbf );
Exemplo 3 } // Calculando o total a pagar pthd = qhd * 2.5; ptha = qha * 4.0; ptch = qch * 4.5; ptre = qre * 2.0; ptbf = qbf * 3.5; ptf = qhd + qha + qch + qre + qbf; // saída de dados printf ( Cliente: %s\n, nome); printf ( O valor devido é: R$ %.2f\n, ptf);
Para estudar Vá no site: http://www.urionlinejudge.com.br/ Resolva os problemas 1002 a 1010 na forma de algoritmo.
Treinamento 1) Elabore um programa que leia um comprimento em polegadas, calcule e exiba o comprimento em milímetros, considerando que 1 polegada equivale a 25,4 milímetros. 2) Elabore um programa que leia a massa de uma amostra de carbono, calcule e exiba o número de moles de carbono na amostra. Considere que o mol C é igual a 12 e a fórmula é no de moles = massa da amostra / 12 3) Elabore um programa que leia a força F aplicada sobre um corpo e a velocidade V do corpo, calcule e exiba a potência P. Considere P = F*V.
Treinamento 4) Ler uma determinada hora, seus minutos e segundos. Quantos segundos existem nessa hora, minuto e segundo lidos? 5) O preço de um produto ao consumidor é a soma do preço de custo mais as porcentagens de impostos e a do distribuidor. Ler o nome do produto, seu custo de fabrica e as taxas de impostos e do distribuidor. Exiba o nome do produto e o preço final ao consumidor. 6) Escreva o algoritmo que calcule a razão r de uma progressão aritmética de n termos, cujo primeiro termo é a 1 e o último termo a n, dada a equação: r = (a n - a 1 ) / (n 1)