CCO 016 / COM 110
Fundamentos de
Fundamentos de
Programação
Programação
Universidade Federal de Itajubá
Prof. Roberto Affonso da Costa JuniorAULA 06
AULA 06
– Operações matemáticas
– Comandos Sequenciais
– Comandos Sequenciais na Linguagem de
Programação C
Operações Aritméticas
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
Estrutura Sequenciais
➢
Definimos Estruturas Sequenciais como sendo
a sequência de passos feito da forma Top-Down,
isto é, de cima para baixo.
➢
Por exemplo:
➢
Qual o valor de B e de A e B?
A ← 10
B ← 20
imprima(A,B)
B ← 5
imprima(A, B)
A ← 10
B ← 20
imprima(A,B)
B ← 5
imprima(A, B)
Estrutura Sequenciais
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 palavras-reservadas 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
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
1. início
2. A ← 10
3. B ← 20
4. imprima(A,B)
5. B ← 5
6. imprima(A,B)
7. fim
Estrutura Sequenciais
Estrutura Sequenciais
● Esquema Genérico de Algoritmos em Portugol 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 {comentários}
bloco de comandos de saída de dados FIM ● Esquema Genérico de Algoritmos em Fluxograma INICIO FIM Leia Imprima Atribuição
Exemplo 1
Exemplo 1
➢ Dados 4 números, calcule a média aritmética deles.
Algoritmo:
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 “ )
Exemplo 1
Exemplo 1
Algoritmo: Algoritmo: soma ← n1 + n2 + n3 + n4 media ← soma / 4Exemplo 1
Exemplo 1
➢ Dados 4 números, calcule a média aritmética deles.
Portugol:
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: “)
Exemplo 1
Exemplo 1
Portugol: Portugol: soma ← n1 + n2 + n3 + n4 media ← soma / 4imprima ( “ A média dos 4 números é: “, media )
Exemplo 1
Exemplo 1
➢ Dados 4 números, calcule a média aritmética deles.
Fluxograma: Fluxograma: INICIO n1, n2, n3, n4 Soma ← n1 + n2 + n3 + n4 Media ← soma / 4 ‘ Media = ’, Media FIM
Exemplo 1
Exemplo 1
Testando o Algoritmo anterior
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
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:
Algoritmo: real K, C
imprima ( “entre com a temperatura em Celsius: “ )
leia ( C )
K ← C + 273
Exemplo 2
Exemplo 2
PortugolPortugol Início real K, Cimprima ( “entre com a temperatura em Celsius: “ )
leia ( C )
K ← C + 273
imprima ( “ A temperatura em Kelvin é: “, K)
Exemplo 2
Exemplo 2
Fluxograma: Fluxograma: INICIO C K ← C + 273 ‘ Kelvin = ’, K FIMExemplo 2
Exemplo 2
Testando o Algoritmo anterior
Testando o Algoritmo anterior
C = 10.0
k ← 10.0 * 25.4
Exemplo 3
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
Exemplo 3
Algoritmo: Algoritmo: cadeia nomeinteiro 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
Exemplo 3
Algoritmo:
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)
Exemplo 3
Exemplo 3
Portugol:Portugol: InícioInício cadeia nomeinteiro 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
Exemplo 3
Portugol: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
Exemplo 3
Portugol: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
Exemplo 3
Fluxograma: Fluxograma: INICIOnome, 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
Exemplo 3
Fluxograma: Fluxograma: “ Cliente: “, nome FIM 1 “ O valor devido é: R$ “, ptfExemplo 3
Exemplo 3
Testando o Algoritmo anterior
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
Exemplo 3
Testando o Algoritmo anterior
Testando o Algoritmo anterior ptf = 0.0 + 0.0 + 4.5 + 4.0 + 3.5
Cliente : Roberto Costa
Operações Aritméticas em C
Operações Aritméticas em C
●Adição
+
●Subtração
-●Multiplicação
*
●Divisão
/
●Resto da divisão
%
Operações Aritméticas em C
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)
Exemplos de expressões
Exemplos de expressões
aritméticas
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
Hierarquia dos operadores
Qual é o resultado da seguinte operação:
X = 5 + 2 * 3 ;
Hierarquia dos operadores
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
●
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
Exemplo 4
Exemplo 4
●A expressão algébrica:
]
3
[
*
]
3
[
]
3
*
[
b
b
a
b
a
a
a
b
a
b
a
• É representada em linguagem C como:
( (a – b) / (a + b) - (a * 3) ) /
• ordem da execução dos operadores
( (a – b) / (a + b) - (a * 3) ) /
( (3 – a) + a * b / (a – b) – (3 + b) )
B 1 2 3 A 4 5 6 9 7 8 10 11 12Operação final
Operação final
A / B
Expressões inteiras
Expressões inteiras
●
Constituídas de variáveis e constantes inteiras
●Resultado é sempre inteiro
●
Exemplo: a expressão:
5 * 2 / 3
●
Já a expressão:
2 / 3 * 5
Resulta no valor
0
●
E a expressão:
3 / 2 * 5
Expressões flutuantes
Expressões flutuantes
●
Constituídas de variáveis e constantes flutuantes
●Resultado é sempre flutuante
●
Exemplo: a expressão:
5.0 * 2.0 / 3.0
Expressões mistas
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
●
Já a expressão:
2.0 / 5 * 3
Resulta no valor
1.20
●
E a expressão:
5 / 2 * 3.0
Resulta no valor
6.0
Casting tipos
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
Exemplo 5
int a, b;
float c;
c = 2.5;
a = 3;
b = (int)c * a;
Exemplo 6
Exemplo 6
int a, b;
float c;
c = 2.5;
a = 3;
b = (int)(c * a);
Atribuições inteiras
Atribuições inteiras
int a, b;
a = 34;
b = a * 2;
Atribuição Flutuante
Atribuição Flutuante
float a, b;
a = 34.56;
b = a * 2;
Atribuição mista
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
Operações Especiais
Operações Especiais
Exemplo 12
Exemplo 12
inteiro
a, b
a ← 10
imprima
( “a = “ , a )
a ← a + 2
imprima
( “a = “ , a )
Saída visualizada
Saída visualizada
a = 10
a = 12
Observações
Observações
• É necessário neste caso um valor inicial
para a variável
• É chamada de acumulador
• Quando o valor de adição é igual a hum, é
chamada somador
Operadores Especiais
Operadores Especiais
●
Adição
++
●Subtração
--●
Atribuição com operação
+=
-=
/=
Adiçã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:
Exemplo 7
Exemplo 7
int a, b;
a = 10;
b = 2;
a += b + 3;
printf ( “ a = %d\n”, a );
resultado
resultado
Neste caso, a saída seria:
Exemplo 8
Exemplo 8
int a, b;
a = 10;
b = 2;
a += a* (b + 3);
printf ( “ a = %d\n”, a );
resultado
resultado
Neste caso, a saída seria:
●
Para as operações de adição e subtração, existem
mais dois operadores especiais.
●
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:
x += 1;
ou ainda:
x++;
o que resulta no valor
31
armazenado na variável
●
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:
x -= 1;
ou ainda:
x--;
o que resulta no valor
29
armazenado na variável
x
,
em todos os exemplos.
66
URI 1001
URI 1001
•
Fazer o problema 1001 do URI
https://www.urionlinejudge.com.br/judge/pt/problems/
view/1001
https://www.urionlinejudge.com.br/judge/pt/problems/
view/1001
67
URI 1001
URI 1001
• Resolvendo o problema 1001 do URI
#include <bits/stdc++.h> using namespace std;
int main() { int A, B, X;
scanf ("%d %d", &A, &B); X = A + B;
printf("X = %d\n", X); return 0;
68
URI 1002
URI 1002
•
Fazer o problema 1002 do URI
https://www.urionlinejudge.com.br/judge/pt/problems/
view/1002
https://www.urionlinejudge.com.br/judge/pt/problems/
view/1002
69
URI 1002
URI 1002
• Resolvendo o problema 1002 do URI
#include <bits/stdc++.h> using namespace std;
int main() {
double area, raio, PI = 3.14159; scanf ("%lf", &raio);
area = PI * pow(raio, 2); printf("A=%.4lf\n", area); return 0;
70
Tabela ASCII
Tabela ASCII
71
Exercícios
Exercícios
•
https://www.urionlinejudge.com.br/judge/en/login
– URI 1003 a 1021, 1930, 1959, 1963
• Sugestão para o 1021, trate o número real como dois
inteiros, basta usar o
scanf("%d.%d", &n, &m);
.
Exemplo 1
Exemplo 1
➢ Dados 4 números, calcule a média aritmética deles.
Programa em C:
Programa em C:
##includeinclude <stdio.h> <stdio.h>
int mainint main()()
{{
// declaração das variáveis// declaração das variáveis
float n1, n2, n3, n4, soma, media;
// entrada de dados// 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
Exemplo 1
Programa em C:
Programa em C:
// entrada de dados// 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// Somando todos os valores
soma = n1 + n2 + n3 + n4;
// Calculando a média// Calculando a média
media = soma / 4;
// saída de dados// saída de dados
printf ( “A média dos 4 números é: %.2f “, media );
Exemplo 2
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:
Programa em C:
##includeinclude <stdio.h> <stdio.h>
int mainint main()()
{{
// declaração das variáveis// declaração das variáveis
float K, C;
// entrada de dados// entrada de dados
printf ( “entre com a temperatura em Celsius = “ ); scanf ( “%f”,&C );
Exemplo 2
Exemplo 2
Programa em C:
Programa em C:
// Calculando a temperatura em Kelvin// Calculando a temperatura em Kelvin
K = C + 273;
// saída de dados// saída de dados
printf ( “A temperatura em Kelvin é: %.2f “, K );
Exemplo 3
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
Exemplo 3
Programa em C:
Programa em C:
##includeinclude <stdio.h> <stdio.h>
int mainint main()()
{{
// declaração das variáveis// declaração das variáveis
char nome[30];
int qhd, qha, qch, qre, qbf;
float pthd, ptha, ptch, ptre, ptbf, ptf;
// entrada de dados// entrada de dados
printf ( “entre com o nome do cliente: “ ) scanf ( “ %[^\n]”, nome)
Exemplo 3
Exemplo 3
printfprintf ( “entre com a quantidade de hot dog: “ ) ( “entre com a quantidade de hot dog: “ )
scanf ( “%d”,&qhd );
printfprintf ( “entre com a quantidade de hambúrguer: “ ) ( “entre com a quantidade de hambúrguer: “ )
scanf ( “%d”,&qha );
printfprintf ( “entre com a quantidade de cheeseburguer: “ ) scanf ( “%d”,&qch );
printfprintf ( “entre com a quantidade de refrigerante: “ ) scanf ( “%d”,&qre );
printfprintf ( “entre com a quantidade de batatas fritas: “ ) scanf ( “%d”,&qbf );
Exemplo 3
Exemplo 3
// Calculando o total a pagar// 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// saída de dados
printf ( “ Cliente: %s\n“, nome);
printf ( “ O valor devido é: R$ %.2f\n“, ptf);