Lógica e Linguagem de Programação
Prof. Eng. Derig Almeida Vidal
Mestre em Computação Aplicada, Engenheiro de Produção e Tecnólogo em Automática
Aula 04
Expressões, Operadores e Funções
Prof. Derig Almeida Vidal, MSc
Sumário
• Comandos de Atribuição
• Comandos de Entrada e Saída de Dados • Expressões Aritméticas
• Expressões Relacionais • Expressões Lógicas • Expressão Literais
Comando de Atribuição
Este comando é utilizado para atribuir valores
a variáveis e, na linguagem Pascal, é
representado por := (dois-pontos seguidos
do sinal igual).
Exemplos:
cor := ‘verde’; teste := false;
media := (n1 + n2) / 2;
Comando de Entrada - READLN
É utilizado para receber dados do teclado.
READLN(nome da variável);
READLN(lista de variáveis);
Os comandos são atribuídos à variável após
ser prescionado ENTER.
Exemplo:
READLN(X);
READLN(A,B);
Prof. Derig Almeida Vidal, MSc
Comando de Entrada - READKEY
• É utilizado para receber uma única tecla do
teclado (esta não será exibida na tela
).
• Ex:
ENTRADA := READKEY;
Readkey;
Tecla:= readkey;
• Caso não seja pressionada nem letra nem
numero, o valor retornado é zero.
Prof. Derig Almeida Vidal, MSc
Comando de Saída – WRITE
• Imprime os dados informados e
continua na mesma linha. Sintaxe:
WRITE(lista de identificadores e/ou
constantes e/ou expressões);
Ex:
write(‘Informe o valor de a: ‘);
write(A+B);
write(‘O valor da soma é: ‘, A+B);
Comando de Saída – WRITELN
• Imprime os dados informados e pula de
linha. Sintaxe:
WRITELN(lista de identificadores e/ou
constantes e/ou expressões);
Ex:
writeln(‘Olá Mundo‘);
writeln(X-Y);
writeln(‘O resultado obtido é:’, X);
Exercício
1. Leia um valor inteiro e depois o exiba.
2. Leia uma string chamada nome e imprima
Prof. Derig Almeida Vidal, MSc
Expressão Aritmética
Uma "expressão aritmética" é usada para
expressar uma computação numérica. O
cálculo desta expressão produz um valor
numérico cujo tipo é inteiro ou real.
Envolve OPERADORES e OPERANDOS
Prof. Derig Almeida Vidal, MSc
Expressão Aritmética
• Operadores Aritméticos• O operador / sempre conduz a um resultado real; • Com os operadores +, -. * e /, se pelo menos um
dos operandos for real, então o resultado será real.
Operador Função Exemplo
+ Adição 2 + 3, X + Y - Subtração 4 – 2, N - M * Multiplicação 3 * 4, A * B / Divisão 10/2, X1/X2
Expressão Aritmética
• Operadores de resto e quociente de divisão inteira
• Os operadores Div e Mod só podem ser aplicados com operandos inteiros.
Operador Função Exemplo
Mod divisão inteiraResto da resulta 19 Mod 4 Div Quociente da divisão inteira 9 Div 4 resulta 1
Expressão Aritmética
• Exemplos: 3. * 3 = 9. 9 / 2 = 4.5 9 DIV 2 = 4 9 MOD 2 = 1 2 DIV 9 = 0 2 MOD 9 = 2 2 / 9 = 0.22 2 + 4.6 = 6.6Prof. Derig Almeida Vidal, MSc
Funções predefinidas
• O Pascal oferece um conjunto de funções
predefinidas (built-in functions), que são
usadas com vários tipos de dados simples.
• As funções, na maioria das vezes,
necessitam de dados como parâmetro
(dados de entrada).
• Vejamos algumas dessas funções:
Prof. Derig Almeida Vidal, MSc
Nome da Função Objetivo Tipo de Parâmetro
abs(x) Calcula o valor absoluto de x Int ou real cos(x) Calcula o cosseno de x em radianos Int ou real exp(x) Calcula ex, em que e= 2,7182818 é sistema
natural de logaritmos neperianos. Int ou real ln(x) Calcula o logaritmo natural de x (x>0) Int ou real exp(ln(x)*y) Retorna x elevado a y (regras logarítmicas) Int ou real sin(x) Calcula o seno de x em radianos Int ou real sqr(x) Calcula o quadrado de x Int ou real sqrt(x) Calcula a raiz quadrada de x (x>=0) Int ou real odd(x) Determina se x é par ou ímpar int random(x) Retorna um número pseudo-aleatório entre 0 e x int
pi Retorna o valor de PI (3,1415...) Nenhum trunc(x) Trunca x para um número inteiro real
int(x) Retorna a parte inteira de x real frac(x) Retorna a parte fracionária de x real round(x) Arredonda x para um inteiro real char(x) Determina o caractere ASCII representado por inteiro
Funções predefinidas
• Como não existe o operador de potencialização, temos:
AB = EXP(B*LN(A))
• Exemplo:
34= EXP(4*LN(3))
510= EXP(5*LN(10))
Raiz cúbica de 8 = 81/3= EXP(1/3*LN(8))
Expressão Aritmética
• Precedência entre os operadores aritméticos
• Obs.: A precedência é alterada por parênteses • Em caso de empate entre prioridades, resolver da
esquerda para a direita.
Prioridade Operador
1 * / div mod
-Prof. Derig Almeida Vidal, MSc
Expressão Aritmética
Exemplo:
5 + 4 + 9 / 3 = ?
5 + 4 + 3
12
Alteração
(5 + 4 + 9) / 3
Prof. Derig Almeida Vidal, MSc
Exercícios
3. Indique qual o resultado das operações aritméticas a seguir, sendo:
x = 6.0 y = 2 z = 4.0 a = 8 b = 7.5 c = 7.7 d = 12 p = 4 q = 3 r = 10 s = 2.5 a) x + y - z * a b) d div y c) d mod y d) y div d e) y mod d f) (( z / a ) + b * a ) - d g) 100 * (q div p ) + r h) p * (r mod q ) – q / 2 i) sqrt ( r – sqr ( q ) ) + round (c) j) abs (a – b * y - d)
Expressão Relacional
Uma "expressão relacional" é usada para
comparar os valores de duas expressões
aritméticas (ou os valores de duas
expressões caractere).
Envolve OPERADORES e OPERANDOS
Expressão Relacional
• Operadores relacionaisOperador Função Exemplo
= Igual a que 3 = 3, X = Y > Maior que 5 > 4, X > Y < Menor que 3 < 6, X < Y >= Maior ou igual a 5 >= 3, X >= Y <= Menor ou igual a 3 <= 5, X <= Y <> Diferente de 8 <> 9, X <> Y
Prof. Derig Almeida Vidal, MSc
Expressão Relacional
• Exemplos: – Resultado False: X = 1 Y = 2 Z = 5 X * X + Y > Z 1 * 1 + 2 > 5 1 + 2 > 5 3 > 5 – Resultado True: X = 4 Y = 3 Z = 1 X * X + Y > Z 4 * 4 + 3 > 1 16 + 3 > 1 19 > 1Prof. Derig Almeida Vidal, MSc
Exercícios
4. Dadas as informações abaixo, informe qual o valor das relações (true ou false):
a) a = 2.0 , b = 9.0 , nome = ‘ana’ , profissão = ‘advogado’ a + 1 >= sqrt ( b ) ( )
nome <> ‘ana’ ( ) Profissão = ‘médico’ ( )
b) a = 6.0 , b = 121.0 , nome = ‘pedro’ , profissão = ‘médico’ a + 1 >= sqrt ( b ) ( )
nome <> ‘ana’ ( ) profissão = ‘médico’ ( )
Expressões Lógicas
Uma expressão lógica é usada para
realizar um cálculo lógico.
Envolve OPERADORES e OPERANDOS
Expressões lógicas
• Os operadores lógicos são utilizados para se analisar duas ou mais expressões inter-relacionadas
Operador
Símbolo
Função
Não
NOT
Negação
E
AND
Conjunção
Prof. Derig Almeida Vidal, MSc
Expressão Lógica
• Tabelas-Verdade (NÃO – NOT)
A
Não A
V
F
F
V
Prof. Derig Almeida Vidal, MSc
Expressão Lógica
• Tabelas-Verdade (E - AND) A B A e B F F F F V F V F F V V VExpressão Lógica
• Tabelas-Verdade (OU - OR)A
B
A ou B
F
F
F
F
V
V
V
F
V
V
V
V
Exercícios
5. Dadas as informações abaixo, informe qual o valor das relações (true ou false):
c) x = 3 , y = 4, z = 16, nome = ‘maria’ , sim = true ( x + y > z ) and nome = ‘maria’ ( ) sim or ( y >= x ) ( ) not sim and ( z div y + 1 = x ) ( ) nome = ‘josé’ and ( x + y + z < sqr ( y ) ) ( )
Prof. Derig Almeida Vidal, MSc
Expressões Literais
• Estes comandos servem para você manipular strings
(cadeias de caracteres).
Length(str) Retorna o tamanho (número de caracteres) de uma string.
Insert(s1,s2, p) Insere uma string (s1) em outra (s2), na posição especificada por p.
Copy(s, i, t) Retorna uma parte de uma string, a partir de uma posição inicial (i) no tamanho especificado (t). Delete(s, i, t) Apaga parte de uma string, iniciando na posição desejada (i) e indo até o tamanho especificado (t).
Concat(s1, s2) Retorna a concatenação de s1 + s2.
Pos(s1, s2) Retorna a posição de s1 em s2.
Str(v, s) Converte um número (v) para uma string (s).
UpCase(c) Retorna a versão maiúscula do caractere especificado.
Val (s, n, erro) Converte uma string (s) para um número (n), se for possível. Se não for possível, erro é diferente de zero.
Prof. Derig Almeida Vidal, MSc
Expressões Literais - Exemplo
PROGRAM EXEMPLO; CONST LISTA = ‘ABCDEFGHIJKLMN’; SEQ = ‘HI’; VAR K,M : INTEGER; X, Y, Z, W : STRING[25]; BEGIN K := POS(SEQ,LISTA); M := LENGTH(SEQ); X := COPY(LISTA, 7, M+2); Y := COPY(LISTA, K, K-1); Z := SEQ + LISTA + SEQ;
W := ‘***’ + COPY(LISTA,1,2) + ‘***’;
END.
Expressões Literais - Resultado
K = 8; M = 2; X = ‘GHIJ’; Y = ‘HIJKLMN’; Z = ‘HIABCDEFGHIJKLMNHI’; W = ‘***AB***’;Exercícios
6. Dado o programa abaixo, indique os conteúdos definidos após a execução dos comandos. PROGRAM EX7;
CONST LISTA = ‘PROCESSAMENTODEDADOS’; SEQ = ‘PPPP’;
SEQ1 = ‘DE’;
VAR K, M :INTEGER; A, X, Z ,W:STRING;
Prof. Derig Almeida Vidal, MSc
Exercícios
BEGIN K:=POS(SEQ1,LISTA); M:=LENGHT(SEQ); X:=COPY(LISTA,K-10,M-1); Z:=SEQ+LISTA; A:=SEQ+SEQ1+SEQ; W:=‘***’+COPY(LISTA,1,2)+’***’; END.Prof. Derig Almeida Vidal, MSc
Exercícios
7. Dadas as declarações:
VAR NUM:INTEGER; SOMA, X:REAL; SIMBOLO:CHAR;
NOME, COR, DIA:STRING[30]; COD,TESTE,TUDO:BOOLEAN;
Assinale os comandos de atribuição inválidos:
( ) SIMBOLO:=5; ( ) COR:=‘PRETO’; ( ) NUM:=‘*ABC*’; ( ) SOMA:=NUM+2*X; ( ) TESTE:=COD OR (SQR(X) <> SOMA); ( ) TUDO:=SOMA; ( ) X:=X+1; ( ) DIA:=‘SEGUNDA’;
Exercícios
OBS: Fazer o fluxograma e depois em Pascal
8. Faça um programa que receba dois números inteiros, calcule e imprima a soma desses dois números.
9. Faça um programa que receba dois números reais, calcule e imprima a subtração do primeiro número pelo segundo.
10. Faça um programa que receba dois números inteiros, calcule e imprima a divisão do primeiro número pelo segundo.
Exercícios
OBS: Fazer o fluxograma e depois em Pascal
11. Faça um programa que receba três notas de um aluno, calcule e imprima a média aritmética entre essas notas.
12. Faça um programa que receba um número inteiro, calcule e imprima:
– A raiz quadrada desse número; – Esse número elevado ao quadrado.
13. Faça um programa que receba o valor do salário de um funcionário e o valor do salário mínimo. Calcule e imprima quantos salários mínimos ganha esse funcionário.
Prof. Derig Almeida Vidal, MSc
Exercícios
OBS: Fazer o fluxograma e depois em Pascal
14. Faça um programa que receba uma cadeia de caracteres com no máximo 15 caracteres e imprima o primeiro e o último caractere juntos. 15. Faça um programa que leia o valor de um
produto e imprima este valor com um desconto de 12%.
16. Faça um programa que calcule e imprima a área de um quadrado.
17. Faça um programa que calcule e imprima a área de um círculo (área do círculo = πR²).
Prof. Derig Almeida Vidal, MSc
Exercícios
OBS: Fazer o fluxograma e depois em Pascal
18. Faça um programa que receba o peso de uma pessoa, um valor inteiro, calcule e imprima:
– O peso da pessoa em gramas;
– Se essa pessoa engordar 5%, qual será seu novo peso em gramas.
Bibliografia
• ASCENCIO, Ana Fernanda Gomes. Lógica de
Programação com Pascal. São Paulo: Makron
Books, 2003.
Observações
• Exercícios resolvidos e fluxogramas elaborados por Aldemir Alencar Alves (inspiracaoal@hotmail.com) • Visite o site do professor Derig Almeida Vidal
(https://sites.google.com/site/derigalmeida/) • Caso encontre erros, favor nos informar.