Baixe o app para aproveitar ainda mais
Prévia do material em texto
Variáveis, tipos de dados e estrutura sequencial Aula 02 Ronaldo dos Santos Kuesley Nascimento ronaldo.santos@ufms.br kuesley@gmail.com Campus de Três Lagoas Universidade Federal de Mato Grosso do Sul Bacharelado em Sistemas de Informação Algoritmos e Programação I Santos & Nascimento (CPTL/UFMS) Estrutura Sequencial ALGPI 1 / 35 Recapitulando Algoritmo é uma sequência finita de instruções para resolver um problema; Neste curso estudaremos apenas os algoritmos que podem ser executados por um computador. Estes algoritmos devem ser escritos com respeito às seguintes propriedades: Definir ações simples, com duração finita e sem ambiguidade; As ações devem estar ordenadas; As ações devem estar contidas em uma sequência finita de passos. Santos & Nascimento (CPTL/UFMS) Estrutura Sequencial ALGPI 2 / 35 Recapitulando Os algoritmos são capazes de realizar tarefas como: Ler e escrever dados; Avaliar expressões algébricas, relacionais e lógicas; Tomar decisões com base em valores lógicos; Desviar o fluxo de execução de suas instruções de acordo com uma condição. Mas como fazemos isso? Santos & Nascimento (CPTL/UFMS) Estrutura Sequencial ALGPI 3 / 35 Tipos de dados O tipo de um dado define o conjunto de valores ao qual o valor do dado pertence, bem como o conjunto de todas as operações que podem atuar sobre qualquer valor desse conjunto; Os tipos de dados podem ser classificados em dois grupos: Atômicos: são aqueles cujos elementos são indivisíveis; Complexos: são aqueles cujos elementos podem ser decompostos em partes mais simples. Santos & Nascimento (CPTL/UFMS) Estrutura Sequencial ALGPI 4 / 35 Tipos de dados Entre os tipos atômicos, os mais comuns são: Numérico: números inteiros, racionais e irracionais e as operações aritméticas e relacionais para eles; Dentre os tipos numéricos distinguiremos os tipos inteiro e real que incluem, respectivamente, os números inteiros e reais. Caractere: inclui o alfabeto romano, dígitos entre 0 e 9, caracteres de pontuação, símbolos de operação aritmética, entre outros; As operações definidas para este tipo são igualdade e desigualdade; Os elementos do conjunto de valores do tipo caractere devem ser escritos, nos algoritmos, entre aspas simples. Por exemplo, ‘a’ e ‘?’. Lógico: inclui apenas os valores verdadeiro e falso e as operações lógicas; Nos algoritmos, estes valores são escritos como V e F . Santos & Nascimento (CPTL/UFMS) Estrutura Sequencial ALGPI 5 / 35 Tipos de dados Entre os tipos complexos, vamos utilizar inicialmente apenas o tipo cadeia, cujo conjunto de valores é formado pela concatenação de valores do tipo caractere (frase); As cadeias são escritas, nos algoritmos, entre aspas duplas, tal como “Entre com algum valor: ”. Santos & Nascimento (CPTL/UFMS) Estrutura Sequencial ALGPI 6 / 35 Constantes Uma constante faz o que o nome sugere: Representa um dado cujo valor não muda durante todo o algoritmo; Constantes são identificadas dentro de um algoritmo por um identi- ficador, que deve ser único, e são declaradas da seguinte forma: defina <identificador> <valor> Exemplos: defina PI 3.14159 defina MENSAGEM “A área do círculo é: ” Santos & Nascimento (CPTL/UFMS) Estrutura Sequencial ALGPI 7 / 35 Variáveis Uma variável pode ser imaginada como um “depósito” para ar- mazenar valores de dados, para o qual existe um nome, conhecido como identificador, e cujo conteúdo pode ser alterado pelo algo- ritmo; O identificador de uma variável deve ser distinto daquele das demais variáveis do algoritmo. Toda variável deve ser declarada antes de ser utilizada; Ao criarmos uma variável, temos de, explicitamente, associar-lhe um tipo de dados, determinando o conjunto de valores que ela pode armazenar e as operações que podem ser aplicadas. Santos & Nascimento (CPTL/UFMS) Estrutura Sequencial ALGPI 8 / 35 Variáveis Para declarar uma variável, segue-se o formato abaixo: <tipo da variável> <lista de identificadores> Quando houver mais de um identificador na lista, eles devem ser separados por vírgula; Exemplos: inteiro w real y , z, x lógico resp Santos & Nascimento (CPTL/UFMS) Estrutura Sequencial ALGPI 9 / 35 Operador de Atribuição O ato de atribuir ou copiar um valor para uma variável é conhecido como atribuição; Utilizaremos o operador de atribuição (←) como um símbolo para esta operação; Exemplos: inteiro x , y x ← 4 y ← x + 1 caractere a a ← ‘z’ a ← ‘8’ Santos & Nascimento (CPTL/UFMS) Estrutura Sequencial ALGPI 10 / 35 Comando de Atribuição Quando um comando de atribuição é executado, o valor do lado direito do operador de atribuição, que pode ser uma constante, o conteúdo de uma variável ou o resultado de uma expressão, é copiado para a variável do lado esquerdo do operador; Exemplo: inteiro a, c, x , y , z a ← 2 c ← 1 + a x ← a + 2− c y ← 4 z ← y O valor à direita de um operador de atribuição deve ser do mesmo tipo da variável à esquerda de um operador de atribuição; Há uma excessão que é a atribuição de um valor do tipo real em uma variável do tipo inteiro, onde apenas a parte inteira do valor real é copiada para a variável do tipo inteiro. Santos & Nascimento (CPTL/UFMS) Estrutura Sequencial ALGPI 11 / 35 Operadores Aritméticos Os operadores aritméticos básicos são: Adição (+); Subtração (−); Multiplicação (∗); Divisão (/). Eles podem ser aplicados a expressões envolvendo valores numéri- cos quaisquer, não importando se o número é inteiro ou contém parte fracionária; Exemplo: inteiro a, b, c a + b + c a− b ∗ c/2 A operação de divisão (/) é a divisão real. Isto é, mesmo que os operandos sejam números inteiros, o resultado é real. Existe ainda o operador MOD, que é utilizado para obtermos o resto de uma divisão inteira; Exemplo: 5 MOD 2 é igual a 1, o resto da divisão inteira de 5 por 2. Santos & Nascimento (CPTL/UFMS) Estrutura Sequencial ALGPI 12 / 35 Precedência de Operadores A menos que os parênteses indiquem o contrário, as operações de divisão, multiplicação e MOD são executadas primeiro e na ordem em que forem encontradas ao lermos a expressão da esquerda para a direita. Em seguida, temos as operações de adição e sub- tração; inteiro a, b, c, x a ← 2 b ← 3 c ← 4 x ← a + b ∗ c Este trecho de código armazenará o valor 14 na variável x ; Se fosse desejado realizar a operação de adição primeiro, o co- mando de atribuição seria: x ← (a + b) ∗ c Os parênteses também podem ocorrer de forma “aninhada”: ((2 + 3)− (1 + 2)) ∗ 3− (3 + (3− 2)) que resulta no valor 2. Santos & Nascimento (CPTL/UFMS) Estrutura Sequencial ALGPI 13 / 35 Expressões Relacionais Uma expressão relacional é uma comparação entre dois valores do mesmo tipo básico; Estes valores são representados na relação através de constantes, variáveis ou expressões aritméticas; Os operadores relacionais são: Operador Descrição = igual a 6= diferente de > maior que < menor que ≥ maior ou igual a ≤ menor ou igual a Santos & Nascimento (CPTL/UFMS) Estrutura Sequencial ALGPI 14 / 35 Expressões Relacionais O resultado da avaliação de uma relação é sempre um valor lógico, isto é, V ou F ; Exemplo: inteiro a, b, c a ← 2 b ← 3 c ← 4 Então: a = 2 vale V ; a > b + c, vale F ; c ≤ 5− a vale F ; b 6= 3 vale F . Santos & Nascimento (CPTL/UFMS) Estrutura Sequencial ALGPI 15 / 35 Operadores Lógicos Uma proposição é qualquer sentença que possa ser avaliada como verdadeira ou falsa; Por exemplo, a sentença “a população de Três Lagoas é de 100 mil habitantes” pode ser classificada como verdadeira ou falsa e, portanto, é uma proposição; Já a sentença “feche a porta!” não é uma proposição. No nosso contexto, uma proposição é uma relação, uma variável e/ou uma constante do tipo lógico. Quando há mais de uma proposição em uma expressão lógica, elas estão relacionadas por um operador lógico; Os operadores lógicos utilizados como conectivos nas expressões lógicas são os seguintes: E, OU e NÃO. Santos & Nascimento (CPTL/UFMS) Estrutura Sequencial ALGPI 16 / 35 Operadores Lógicos Duas proposições podem ser combinadas pelo conectivoE para formar uma única proposição denominada conjunção das proposi- ções originais; O resultado da conjunção de duas proposições p e q é verdadeiro se e somente se ambas as proposições são verdadeiras, como mostrado na tabela a seguir: p q p E q V V V V F F F V F F F F Santos & Nascimento (CPTL/UFMS) Estrutura Sequencial ALGPI 17 / 35 Operadores Lógicos Duas proposições quaisquer podem ser combinadas pelo conec- tivo OU para formar uma nova proposição que é chamada dis- junção das duas proposições originais; A disjunção de duas proposições p e q é verdadeira se e so- mente se, pelo menos, uma delas for verdadeira, como mostrado na tabela a seguir: p q p OU q V V V V F V F V V F F F Santos & Nascimento (CPTL/UFMS) Estrutura Sequencial ALGPI 18 / 35 Operadores Lógicos Dada uma proposição p qualquer, uma outra proposição, chamada negação de p, pode ser formada escrevendo “NÃO” antes de p; Desta forma, podemos concluir que: se p é verdadeira, então NÃO p é falsa; se p é falsa, então NÃO p é verdadeira. Santos & Nascimento (CPTL/UFMS) Estrutura Sequencial ALGPI 19 / 35 Precedência entre todas as operações As operações aritméticas, lógicas e relacionais têm a seguinte pre- cedência: primeiro as aritméticas, depois as relacionais e por úl- timo lógicas; Operador Prioridade /, ∗, MOD 1 (máxima) +, − 2 =, 6=, ≤, ≥, <, > 3 NÃO 4 E 5 OU 6 (mínima) Lembrando que podemos utilizar parênteses para alterar a ordem natural de avaliação. Santos & Nascimento (CPTL/UFMS) Estrutura Sequencial ALGPI 20 / 35 Entrada e Saída Qualquer algoritmo requer a obtenção de dados do “mundo” (en- trada) e também um meio de comunicar ao “mundo” o resultado por ele obtido (saída); Para tal, existem duas operações, denominadas entrada e saída, realizadas, respectivamente, pelos operadores leia e escreva; A forma geral destes operadores é: leia <lista de variáveis> escreva <lista de variáveis e/ou constantes e/ou expressões> Exemplo: inteiro x leia x escreva x escreva “O valor de x é: ”, x Santos & Nascimento (CPTL/UFMS) Estrutura Sequencial ALGPI 21 / 35 Exercícios 1. Um algoritmo pode conter um comando como: “Escreva todos os termos da sequência de Fibonacci”? Justifique. 2. Sendo P, Q e R variáveis do tipo inteiro, cujos conteúdos são iguais a 2, 3, 12 e , respectivamente, quais os valores fornecidos por cada uma das expressões aritméticas abaixo? (a) 100 ∗Q/P + R (b) P ∗ R MOD 5−Q/2 (c) 10 ∗ 3 + P (d) 10 ∗ (3 + P) (e) (10 ∗ 3) + P (f) (P + 2) ∗ (Q + Q) Santos & Nascimento (CPTL/UFMS) Estrutura Sequencial ALGPI 22 / 35 Exercícios 3. Utilizando o seguinte trecho de algoritmo: . . . inteiro x , y real z leia x escreva x , “elevado ao cubo = ”, x ∗ x ∗ x leia y escreva x + y z ← x/y escreva z z ← z + 1 x ← (y + x)MOD2 escreva x . . . explique o que está acontecendo em cada linha e qual é o resultado de cada ação executada considerando que será informado o valor 13 para x e 5 para y . Santos & Nascimento (CPTL/UFMS) Estrutura Sequencial ALGPI 23 / 35 Exercícios 4. Considere as seguintes declarações: inteiro soma, num, x cadeia nome, cor , dia lógico teste, cod , tudo assinale os comandos considerados inválidos: (a) nome ← 5 (b) soma ← num + 2 ∗ x (c) tudo ← soma (d) cor ← “preto” + ‘A’ (e) x ← x + 1 (f) num ← “*ABC*” (g) dia ← “Segunda” (h) soma + 2 ← x ∗ x −√num Santos & Nascimento (CPTL/UFMS) Estrutura Sequencial ALGPI 24 / 35 Exercícios 5 Determine se as expressões abaixo resultam em V ou F : (a) 2 ∗ 4 = 24/3 (b) 15 MOD 4 < 19 MOD 6 (c) 2 + 8 MOD 7 ≥ 3 ∗ 6− 15 (d) 2 < 5 E 15/3 = 5 (e) 2 < 5 OU 15/3 = 5 (f) NÃO V OU 32/3 < 15− 35 MOD 7 (g) NÃO (5 6= 10/2) OU V E 2− 5 > 5− 2 OU V (h) 24 6= 4 + 2 OU 2 + 3 ∗ 5/3 MOD 5 < 0 Santos & Nascimento (CPTL/UFMS) Estrutura Sequencial ALGPI 25 / 35 Exercícios 6 Determine os resultados obtidos na avaliação das expressões lógicas seguintes, sabendo que a, b e c contêm, respectivamente, 2, 7 e 3.5, e que existe uma variável lógica l cujo valor é F . (a) b = a ∗ c E (l OU V ) (b) b > a OU b = aa (c) l E b/a ≥ c OU NÃO a ≤ C (d) b/a = c OU b/ac (e) l OU ba ≤ c ∗ 10 + a ∗ b Santos & Nascimento (CPTL/UFMS) Estrutura Sequencial ALGPI 26 / 35 Estrutura Geral de um Algoritmo Santos & Nascimento (CPTL/UFMS) Estrutura Sequencial ALGPI 27 / 35 Estrutura Geral de um Algoritmo A seguir são listadas algumas características que encontraremos nos algoritmos que estudaremos neste curso: 1. A linha de cabeçalho, que é a primeira linha do algoritmo, contém a palavra-chave algoritmo, seguida por um identificador, que é o nome escolhido para o algoritmo; 2. A declaração de constantes e variáveis será o próximo passo, sendo que a declaração de constantes precede a declaração de variáveis; 3. O corpo do algoritmo contém as instruções que fazem parte da des- crição do algoritmo; 4. A linha final, que é a última linha do algoritmo, contém a palavra reservada fimalgoritmo para especificar onde o algoritmo termina. Santos & Nascimento (CPTL/UFMS) Estrutura Sequencial ALGPI 28 / 35 Estrutura Geral de um Algoritmo Como exemplo, considere um algoritmo para calcular e escrever a área de um círculo, dado o raio do círculo: algoritmo área_do_circulo defina PI 3.14159 defina MENSAGEM “O valor da área do círculo é: ” real raio, area leia raio area ← PI ∗ raio ∗ raio escreva MENSAGEM, area fimalgoritmo Santos & Nascimento (CPTL/UFMS) Estrutura Sequencial ALGPI 29 / 35 Estrutura Geral de um Algoritmo Temos ainda alguns detalhes que servirão para deixar o algoritmo mais claro e mais fácil de ler: Os passos do algoritmo são especificados através da indentação dos vários comandos entre a linha de cabeçalho e a linha final; A indentação, visualmente, enquadra o corpo do algoritmo no olho humano e acaba com a confusão criada por não sabermos onde o algoritmo começa ou termina; Ela deve ser aplicada dispondo os elementos hierarquicamente se- melhantes com a mesma tabulação em relação à margem. Santos & Nascimento (CPTL/UFMS) Estrutura Sequencial ALGPI 30 / 35 Estrutura Geral de um Algoritmo Como exemplo, considere o algoritmo criado para calcular e es- crever a área de um círculo: algoritmo área_do_circulo defina PI 3.14159 defina MENSAGEM “O valor da área do círculo é: ” real raio, area leia raio area ← PI ∗ raio ∗ raio escreva MENSAGEM, area fimalgoritmo Santos & Nascimento (CPTL/UFMS) Estrutura Sequencial ALGPI 31 / 35 Estrutura Geral de um Algoritmo O algoritmo pode conter comentários, que são trechos do algo- ritmo que não são executados e cujo propósito é apenas o de fa- cilitar o entendimento; Os comentários são iniciados com duas barras (“//”) e podem abri- gar qualquer texto. Santos & Nascimento (CPTL/UFMS) Estrutura Sequencial ALGPI 32 / 35 Estrutura Geral de um Algoritmo Como exemplo, considere o algoritmo criado para calcular e es- crever a área de um círculo: // algoritmo para calcular a área do círculo algoritmo área_do_circulo // declaração de constantes e variáveis defina PI 3.14159 defina MENSAGEM “O valor da área do círculo é: ” real raio, area leia raio // leitura do raio do círculo area ← PI ∗ raio ∗ raio // cálculo da área do círculo // comunicação do resultado escreva MENSAGEM, area fimalgoritmo Santos & Nascimento (CPTL/UFMS) Estrutura Sequencial ALGPI 33 / 35 Exercícios 1. Escreva um algoritmo que mostre a mensagem “Olá Mundo”; 2. Escreva um algoritmo que receba um valor inteiro e mostre o qua- drado deste valor; 3. Escreva um algoritmo que recebe o peso de uma pessoa, em Kg, e mostra o novo peso se a pessoa engordar 15%; 4. Escreva um algoritmo que receba três notas e mostre a média de- las; 5. Escreva um algoritmo que receba dois valores inteiros, armazene- os nas variáveis a e b, troque o valor contido em a com o valor contido em b e mostre o conteúdo das variáveis a e b; 6. Escreva um algoritmo que lê um número inteiro positivo n com três dígitos que não contém dígitos zero. O algoritmo deve inverter e mostrar os dígitos de n. Esse exercício deve ser resolvido uti- lizando apenas variáveis do tipointeiro. Santos & Nascimento (CPTL/UFMS) Estrutura Sequencial ALGPI 34 / 35 Desafio Escreva um algoritmo que receba dois valores inteiros, armazene- os nas variáveis a e b, troque o valor contido em a com o valor contido em b e mostre o conteúdo das variáveis a e b; Nesse desafio você não pode utilizar qualquer variável além de a e b. Não vale trocar a e b na hora de ler ou de escrever. O conteúdo da variável a deve ser efetivamente trocado com o conteúdo da variável b. Santos & Nascimento (CPTL/UFMS) Estrutura Sequencial ALGPI 35 / 35
Compartilhar