Computação Eletrônica Expressões ovsj@cin.ufpe.br Observação: Material da Disciplina Computação Eletrônica CIN/UFPE.
Expressões São sequências de operandos e operadores devidamente arrumadas; Obedecendo a notação infixa; Quando avaliadas retornam como resultado um valor constante; As expressões podem ser: Aritméticas; Lógicas. 2
Expressões Os operandos são variáveis, constantes, (resultados das aplicações de) funções e expressões entre ( e ). Os operadores são: aritméticos: + - * / div mod lógicos: not and or xor relacionais: = <> > < >= <= 3
Expressões Observações: / - corresponde á divisão cujo resultado é real. div - é a divisão de inteiros; dá o quociente. mod - para operandos inteiros; dá o resto da divisão. Precedência dos operadores: not + - ( operadores unários ) * / div mod and + - or xor = <> < <= > >= Da esquerda para a direita, para operadores de mesma prioridade. 4
Expressões Observações: A prioridade pode ser modificada pelo uso de parênteses. Operadores relacionais podem ser usados tanto entre operandos numéricos como entre operandos de tipo char e string. Expressões lógicas envolvem: Variáveis, Constantes do tipo boolean Funções do tipo boolean Comparações e operadores lógicos. A sua avaliação resulta em um valor false ou true. 5
Operadores matemáticos para inteiros Além de adição (+), subtração (-) e multiplicação (*), Pascal também oferece: Divisão: div 15 div 3 = 5 5 div 2 = 2 Resto ou módulo da divisão: mod 15 mod 3 = 0 5 mod 2 = 1 6
Exemplo: program divis; var x,y,divisao,resto: integer; begin write('entre o numerador: '); readln(x); write('entre o denominador: '); readln(y); divisao := x div y; resto := x mod y; write('divisao: '); writeln(divisao); write('resto: '); write(resto); End. 7
Exemplo: Mais sobre o write e writeln program divisao2; var x,y,divisao: integer; begin write('entre o numerador: '); readln(x); write('entre o denominador: '); readln(y); divisao := x div y; writeln('divisao: ',divisao); writeln('resto: ',x mod y); end. 8
Exemplo: {Programa que determina o algarismo da casa das unidades de um dado inteiro} program divisao2; var n, unidade: integer; begin write('digite um inteiro: '); readln(n); Unidade := n mod 10; writeln('o algarismo das unidades de ',n,' é ',unidade); End. 9
Exercício 1: Fazer um programa para: Ler, via teclado, um número inteiro. Assuma que o usuário vai digitar um número entre 100 e 999. Imprimir no monitor os dígitos deste número (1 dígito em cada linha). Exemplo. Se o usuário digitar 358, imprimir: 3 5 8 10
Exercício 2 Fazer um programa para: Ler, via teclado, 3 números inteiros x, y e z. Assuma que o usuário vai digitar números entre 100 e 999. Imprimir no monitor a soma dos dígitos destes números. Exemplo. Se o usuário digitar 353, 612 e 999 para x, y e z respectivamente, o programa deve imprimir 11, 9 e 27. 11
Exemplo: {Programa que inverte um número com dois algarismos} Program InverteNumeroComDoisAlgarismo ; var n, invertido, unidade, dezena: integer; Begin writeln('digite um inteiro com dois algarismos'); readln(n); unidade := n mod 10; dezena := n div 10; invertido := unidade*10 + dezena; writeln('o invertido de ', n,' é ', invertido); End. 12
Exercício 3 Escreva um programa para Gerar o invertido de um número com três algarismos (exemplo: o invertido de 498 é 894). 13
Exemplo: {Programa que determina o maior múltiplo de k que seja inferior ou igual n} Program MaiorMultiplo ; var n, k, maiormult: integer; Begin writeln('digite dois inteiros'); readln(n,k); maiormult := n (n mod k); writeln(' O maior múltiplo de ',k,' inferior ou igual a ',n,' é ',maiormult); End. 14
Desafio 1: Determinar o menor múltiplo x que seja maior do que y, x e y são inteiros. Exemplo: o menor múltiplo de 7 maior que 50 é 56. 15
Expressões inteiras (revisão) Operações: Soma + Subtração Multiplicação * Divisão div Resto mod Exemplos: x*10+3 10*3 div 4 = (10*3) div 4 = 7 Precedência: * div mod + - 16
Exercício: Programa Pascal que recebe 3 notas inteiras e calcula a média: Program notas; var nota1, nota2, nota3, media: integer; begin write( Entre com a primeira nota: ); readln(nota1); write( Entre com a segunda nota: ); readln(nota2); write( Entre com a terceira nota: ); readln(nota3); media := (nota1+nota2+nota3) div 3; write( A media foi:, media); 17 end.
Expressões Reais Operações: Soma + Subtração Multiplicação * Divisão / 11 / 4 = 2.7500000000000000E+0000 x*10.5+3 10*3 / 4 = (10*3) / 4 = 7.5000000000000000E+0000 18
Variáveis reais Program numeroreal; var nota1, nota2, nota3, media: real; begin write('entre com a primeira nota: '); readln(nota1); write('entre com a segunda nota: '); readln(nota2); write('entre com a terceira nota: '); readln(nota3); media := (nota1+nota2+nota3) / 3; write('a media foi: '); write(media); end. 19
Variáveis reais Program numeroreal; var nota1, nota2, nota3, media: real; Begin (* usando writeln e readln com n variaveis *) write('entre com 3 notas separadas por espaco: '); readln(nota1,nota2,nota3); media := (nota1 + nota2 + nota3)/3; write('a media foi ', media); end. 20
Variáveis reais Program numeroreal; var nota1, nota2, nota3, media: real; Begin (* usando writeln e readln com n variaveis *) write('entre com 3 notas separadas por espaco: '); readln(nota1,nota2,nota3); media := (nota1 + nota2 + nota3)/3; write('a media foi ', media); end. 21