MC-102 — Aula 05 Revis˜ao e detalhes sobre express˜oes ...ra089067/mc102/mc102-aula05.pdf · 6...
Transcript of MC-102 — Aula 05 Revis˜ao e detalhes sobre express˜oes ...ra089067/mc102/mc102-aula05.pdf · 6...
MC-102 — Aula 05Revisao e detalhes sobre expressoes matematicas
Instituto de Computacao – Unicamp
Primeiro Semestre de 2011
organizacao do computadoralgoritmomemoria
entrada e saıdaoperacoes matematicas
conversao de tiposexpressoes logicas
roteiro
1 organizacao do computador
2 algoritmo
3 memoria
4 entrada e saıda
5 operacoes matematicas
6 conversao de tipos
7 expressoes logicas
MC-102 — Aula 04
organizacao do computadoralgoritmomemoria
entrada e saıdaoperacoes matematicas
conversao de tiposexpressoes logicas
computador
um computador e uma maquina que, a partir de uma entrada(dispositivo de entrada), realiza calculos matematicos e/oulogicos (processador e memoria), gerando uma saıda(dispositivo de saıda).
MC-102 — Aula 04
organizacao do computadoralgoritmomemoria
entrada e saıdaoperacoes matematicas
conversao de tiposexpressoes logicas
programando computadores
sequencia de passos, precisos e ’bem definidos’, para arealizacao de uma tarefa.
programar: transcrever um determinado algoritmo para umalinguagem de programacao.
existem varias linguagens, porem, neste curso, estamosinteressados em C.
fluxograma
ideia ⇒ algoritmo ⇒ codigo fonte ⇒ Compilador ⇒ programa emcodigo de maquina.
MC-102 — Aula 04
organizacao do computadoralgoritmomemoria
entrada e saıdaoperacoes matematicas
conversao de tiposexpressoes logicas
variaveis
tipo nome;
exemplos
int inteiro;
float real;
char letra;
o nome deve ser descritivo e ’fazer sentido’ e nao ser umapalavra reservada (if, return etc).
MC-102 — Aula 04
organizacao do computadoralgoritmomemoria
entrada e saıdaoperacoes matematicas
conversao de tiposexpressoes logicas
entrada
instrucao scanf.
sintaxe
#include <stdio.h>
...
int inteiro;
float real;
char letra;
scanf("%d %f %c", &inteiro, &real, &letra);
...
operador & - endereco de memoria de uma variavel.
MC-102 — Aula 04
organizacao do computadoralgoritmomemoria
entrada e saıdaoperacoes matematicas
conversao de tiposexpressoes logicas
saıda
instrucao printf.
sintaxe
#include <stdio.h>
...
printf("Hello world!");
printf("%d %f %c", inteiro, real, letra);
printf("%s", string);
...
MC-102 — Aula 04
organizacao do computadoralgoritmomemoria
entrada e saıdaoperacoes matematicas
conversao de tiposexpressoes logicas
atribuicao
atribuir um valor de uma expressao a uma variavel significacalcular o valor daquela expressao e copiar aquele valor parauma determinada variavel.
o operador de atribuicao e o sinal de igual (=) - le-se ’recebe’.
a esquerda do operadorde atribuicao deve existirsomente o nome de umavariavel.
=
a direita, deve haver umaexpressao cujo valor seracalculado e armazenadona variavel
MC-102 — Aula 04
organizacao do computadoralgoritmomemoria
entrada e saıdaoperacoes matematicas
conversao de tiposexpressoes logicas
expressao
ja vimos que constantes, variaveis e enderecos de variaveis saoexpressoes.
uma expressao tambem pode ser um conjunto de operacoesaritmeticas, logicas ou relacionais utilizadas para fazer“calculos” sobre os valores das variaveis.
Exemplo
a + b
calcula a soma de a e b
MC-102 — Aula 04
organizacao do computadoralgoritmomemoria
entrada e saıdaoperacoes matematicas
conversao de tiposexpressoes logicas
Expressoes
< expressao > + < expressao >: Calcula a soma de duasexpressoes.ex: a = a + b;
< expressao > - < expressao >: Calcula a subtracao de duasexpressoes.ex: a = a - b;
< expressao > * < expressao >: Calcula o produto de duasexpressoes.ex: a = a * b;
MC-102 — Aula 04
organizacao do computadoralgoritmomemoria
entrada e saıdaoperacoes matematicas
conversao de tiposexpressoes logicas
expressoes
< expressao > / < expressao >: calcula o quociente de duasexpressoes.ex: a = a / b;
< expressao > % < expressao >: calcula o resto da divisao(inteira) de duas expressoes.ex: a = a % b;
- < expressao >: inverte o sinal da expressao.ex: a = -b;
MC-102 — Aula 04
organizacao do computadoralgoritmomemoria
entrada e saıdaoperacoes matematicas
conversao de tiposexpressoes logicas
expressoes
as expressoes aritmeticas (e todas as expressoes) operamsobre outras expressoes.
e possıvel compor expressoes complexas como por exemplo:a = b + 2 + c
qual o valor da expressao 5 + 10 % 3?e da expressao 5 * 10 % 3?
MC-102 — Aula 04
organizacao do computadoralgoritmomemoria
entrada e saıdaoperacoes matematicas
conversao de tiposexpressoes logicas
precedencia
precedencia e a ordem na qual os operadores serao calculadosquando o programa for executado. Em C, os operadores saocalculados na seguinte ordem:
* e /, na ordem em que aparecerem na expressao.%+ e -, na ordem em que aparecerem na expressao.
MC-102 — Aula 04
organizacao do computadoralgoritmomemoria
entrada e saıdaoperacoes matematicas
conversao de tiposexpressoes logicas
alterando a precedencia
(< expressao >) tambem e uma expressao, que calcula oresultado da expressao dentro dela para so entao permitir queas outras expressoes executem. Deve ser utilizada quando aordem da precedencia nao atende aos requisitos do programa.Ex: 5 + 10 % 3 retorna 6, enquanto (5 + 10) % 3 retorna 0
voce pode usar quantos parenteses desejar dentro de umaexpressao, contanto que utilize o mesmo numero deparenteses para abrir e fechar expressoes.
MC-102 — Aula 04
organizacao do computadoralgoritmomemoria
entrada e saıdaoperacoes matematicas
conversao de tiposexpressoes logicas
incremento(++) e decremento(−−)
operadores de incremento e decremento tem duas funcoes:servem como uma expressao e incrementam ou decrementamo valor da variavel ao qual estao associados em uma unidade.ex: c++ — incrementa o valor da variavel c em uma unidade
dependendo da posicao do operador de incremento edecremento, uma funcao e executada antes da outra.
MC-102 — Aula 04
organizacao do computadoralgoritmomemoria
entrada e saıdaoperacoes matematicas
conversao de tiposexpressoes logicas
incremento(++) e decremento(−−)
operador a esquerda da variavel: primeiro a variavel eincrementada, depois a expressao retorna o valor daexpressao. Ex:
#include <stdio.h>
main () {
int a = 10;
printf ("%d", ++a);
}
Imprime 11
MC-102 — Aula 04
organizacao do computadoralgoritmomemoria
entrada e saıdaoperacoes matematicas
conversao de tiposexpressoes logicas
incremento(++) e decremento(−−)
operador a direita da variavel: primeiro a expressao retorna ovalor da variavel, e depois a variavel e incrementada. Ex:
#include <stdio.h>
int main (void) {
int a = 10;
printf ("%d", a++);
}
imprime 10
MC-102 — Aula 04
organizacao do computadoralgoritmomemoria
entrada e saıdaoperacoes matematicas
conversao de tiposexpressoes logicas
incremento(++) e decremento(−−)
em uma expressao, os operadores de incremento e decrementosao sempre calculados primeiro (tem maior precedencia)
#include <stdio.h>
int main (void) {
int a = 10;
printf ("%d", a * ++a);
}
Imprime 121
MC-102 — Aula 04
organizacao do computadoralgoritmomemoria
entrada e saıdaoperacoes matematicas
conversao de tiposexpressoes logicas
Atribuicoes simplificadas
Uma expressao da forma
a = a + b
onde ocorre uma atribuicao a uma das variaveis da expressao podeser simplificada como
a += b
MC-102 — Aula 04
organizacao do computadoralgoritmomemoria
entrada e saıdaoperacoes matematicas
conversao de tiposexpressoes logicas
atribuicoes simplificadas
comando Exemplo Corresponde a:
+= a += b a = a + b;
-= a -= b a = a - b;
∗= a *= b; a = a * b;
/= a /= b; a = a / b;
%= a %= b; a = a % b;
MC-102 — Aula 04
organizacao do computadoralgoritmomemoria
entrada e saıdaoperacoes matematicas
conversao de tiposexpressoes logicas
conversao de tipos
e possıvel converter alguns tipos entre si.
existem duas formas de faze-lo: implıcita e explıcita:
implıcita
capacidade (tamanho) do destino deve ser maior que a origemex.: int a; short b; a = b;
operacoes entre int e float sempre convertem para float
explıcita:
Aplicavel a variaveis e expressoesex. a = (int)( (float)b / (float)c );
nao modifica o tipo “real” da variavel, so o valor de umaexpressao.ex. int a; (float)a=1.0; ← Errado
MC-102 — Aula 04
organizacao do computadoralgoritmomemoria
entrada e saıdaoperacoes matematicas
conversao de tiposexpressoes logicas
um uso da conversao de tipos
a operacao de divisao (/) possui dois modos de operacao deacordo com os seus argumentos: inteira ou de ponto flutuante.
Se os dois argumentos forem inteiros, acontece a divisaointeira. A expressao 10 / 3 tem como valor 3.
Se um dos dois argumentos for de ponto flutuante, acontece adivisao de ponto flutuante. A expressao 1.5 / 3 tem comovalor 0.5.
quando se deseja obter o valor de ponto flutuante de uma divisao(nao-exata) de dois inteiros, basta converter um deles para pontoflutuante:
Exemplo
a expressao 10 / (float) 3 tem como valor 3.33333333
MC-102 — Aula 04
organizacao do computadoralgoritmomemoria
entrada e saıdaoperacoes matematicas
conversao de tiposexpressoes logicas
exemplo sobre tipos
#include <stdio.h>
int main () {
int numerador = 3, denominador = 2;
float fracao_1 = numerador/denominador;
float fracao_2 = numerador/(float) denominador;
float fracao_3 = numerador/(denominador+0.0);
printf ("O resultado da divisao eh: %d\n", numerador/denominador);
printf ("O resultado da divisao eh: %f\n", fracao_1);
printf ("O resultado da divisao eh: %f\n", fracao_2);
printf ("O resultado da divisao eh: %f\n", fracao_3);
return 0;
}
MC-102 — Aula 04
organizacao do computadoralgoritmomemoria
entrada e saıdaoperacoes matematicas
conversao de tiposexpressoes logicas
expressoes relacionais
expressoes relacionais sao aquelas que realizam uma comparacaoentre duas expressoes e retornam
1 zero (0), se o resultado e falso
2 um (1), ou qualquer outro numero diferente de zero, se oresultado e verdadeiro.
MC-102 — Aula 04
organizacao do computadoralgoritmomemoria
entrada e saıdaoperacoes matematicas
conversao de tiposexpressoes logicas
expressoes relacionais
comando Corresponde a:
== igual
<= menor ou igual
>= maior ou igual
< menor
> maior
!= diferente
MC-102 — Aula 04
organizacao do computadoralgoritmomemoria
entrada e saıdaoperacoes matematicas
conversao de tiposexpressoes logicas
expressoes logicas
uma ou mais expressoes relacionais, agrupadas com:
1 && - ’e’ logico (diferente de zero se todas as expressoesenvolvidas sao)
2 || - ’ou’ logico (diferente de zero se pelo menos uma dasexpressoes e diferente de zero)
3 ! - negacao (e diferente de zero se a expressao e zero)
MC-102 — Aula 04
organizacao do computadoralgoritmomemoria
entrada e saıdaoperacoes matematicas
conversao de tiposexpressoes logicas
comandos condicionais
comando if/else, cuja sintaxe e:if (express~ao logica) {
comandos executados se a expressao e verdadeira
} else {comandos executados se a expressao e falsa
}
MC-102 — Aula 04
organizacao do computadoralgoritmomemoria
entrada e saıdaoperacoes matematicas
conversao de tiposexpressoes logicas
resolucao de exercıcios
comparacao de tres numeros (aula anterior).
teste de mesa.
outros (comparacao de horarios, letras maiusculas eminusculas, calculadora).
duvidas.
MC-102 — Aula 04