• Nenhum resultado encontrado

Teoria da Computação e Algoritmos. Prof. Luís Augusto Mattos Mendes.

N/A
N/A
Protected

Academic year: 2021

Share "Teoria da Computação e Algoritmos. Prof. Luís Augusto Mattos Mendes."

Copied!
38
0
0

Texto

(1)

Teoria da Computação e Algoritmos

Prof. Luís Augusto Mattos Mendes

(2)

Sumário

Unidade 1 – Lógica de Programação ... 5

1.1 - O que é Lógica de programação... 5

1.2 - Seqüência Lógica ... 6

1.3 - Instruções ... 6

Unidade 2 – Introdução aos Algoritmos... 8

2.1 - Definição ... 8

2.1.1 – Uma Definição Formal ... 9

2.1.2 – Importância... 10

2.1.3 - Algoritmos não – computacionais... 10

2.2 Características... 10 2.3 Formas de representação ... 11 2.3.1 Descrição Narrativa... 11 2.3.2 Linguagem Algorítmica ... 12 2.3.3 Portugol... 13 2.4 Fases de um algoritmo ... 13

2.5 O que é um programa e linguagem de programação... 14

2.5.1 O que é um Programa? ... 14

2.5.2 O que é uma Linguagem de Programação?... 14

2.6 Exercícios de Fixação... 14

Unidade 3 – Estruturas de implementação de algoritmos ... 15

3.1 Características de implementação dos algoritmos ... 15

3.1.1 Refinamentos Sucessivos ... 16

3.1.2 Linearização de expressões... 17

3.1.3 Modularização de Expressões... 18

3.2 Operação de Entrada e Saída ... 18

3.3 Operadores ... 19 3.3.1 Operadores Aritméticos... 19 3.3.2 Operadores Lógicos... 19 3.3.3 Operadores Relacionais ... 21 3.3.4 Operadores Especiais... 21 3.4 - Exercícios de Fixação: ... 21

UNIDADE 4 – Variáveis e Tipos de Dados... 23

4.1 Conceitos de Variáveis... 23

4.2 Operação de Atribuição... 23

4.3 Identificadores... 24

4.4 Tipos de Dados ... 24

4.4.1 Manipulação de Caracteres e Strings... 26

4.5 – Declaração de Variáveis ... 28

Unidade 5 – Estruturas De Decisão E Repetição... 29

(3)

5.2 – Estrutura Condicional ... 29

5.2.1 – Estrutura condicional Simples (Se ... então) ... 30

5.2.2 – Estrutura Condicional Composta... 30

5.3 Estrutura de Repetição... 31 5.3.1 – Enquanto ... faça ... 31 5.3.2 – Para ... faça ... 32 5.3.3 – Repita ... até ... 33 5.4 – Estruturas de Seleção... 33 5.4.1 – Se ... então Aninhados ... 35 5.5 - EXERCÍCIOS... 35

MA = (Nota1 + Nota2 x 2 + Nota3 x 3 + ME )/7... 36

AUMENTO... 37

Unidade 6 - Linguagem De Programação Pascal... 39

6.1 - Introdução ... 39

6.2 - Linguagens De Programação... 39

6.3 - Tradutores... 39

6.3.1 - Compilador... 40

6.3.2 - Interpretador... 40

Unidade 7 - Linguagem De Programação Pascal... 41

7.1 - Elementos Básicos... 41 7.1.1 - Identificadores... 41 7.1.2 - Palavras Reservadas ... 42 7.2 - Tipos De Dados ... 43 7.2.1 - Simples... 43 7.2.2 - Estruturados... 44

7.2.3 - Definidos Pelo Usuário ... 44

7.3 - Expressões Aritméticas ... 45

7.3.1 - Operadores Aritméticos... 45

7.3.2 - Prioridade ... 46

7.3.3 - Funções E Procedimentos Numéricos Predefinidos... 46

7.4 - Expressões Lógicas ... 48

7.4.1 - Operadores Relacionais... 48

7.4.2 - Operadores Lógicos... 49

7.4.3 - Prioridade ... 49

7.5 - Formato De Um Programa Pascal ... 50

7.5.1 - Declaração De Uso De Unidades ... 51

7.5.2 - Declaração De Constantes... 51

7.5.3 - Declaração De Tipos ... 51

7.5.4 - Declaração De Variáveis... 52

7.5.5 - Declaração De Procedimentos E Funções... 52

7.5.6 - Área De Comandos ... 53

7.6 - Comentários ... 53

(4)

8.4 - Comandos De Decisão ... 59

8.4.1 - Decisão Simples ( If-Then ) ... 59

8.4.2 - Decisão Composta ( If-Then-Else )... 60

8.4.3 - Decisão Múltipla ( Case-Of ) ... 62

8.5 - Comandos De Repetição... 65

8.5.1 - Repetição Com Teste No Início ( While-Do )... 65

8.5.2 - Repetição Com Teste No Final ( Repeat-Until ) ... 66

8.5.3 - Repetição Automática ( For ) ... 68

Unidade 9 – Variáveis Compostas Homogêneas... 70

9.1 - Vetores ... 71

9.2 - Matrizes ... 72

10.1 - Procedimento ... 75

10.2 - Função... 77

10.3 - Variáveis Globais E Variáveis Locais ... 80

10.4 - Parâmetros ... 80

10.5 - Utilizando Arrays Como Parâmetros ... 83

Unidade 11 - Manipulação De Strings ... 84

11.1 - O Tipo De Dado String... 84

11.2 - Usando Strings Como Parâmetros Em Subrotinas ... 85

11.3 - Funções E Procedimento Predefinidos ... 85

11.4 - Controle Do Vídeo E Do Teclado ... 90

APÊNDICE ... 95

(5)

Unidade 1 – Lógica de Programação

• O uso corriqueiro da palavra lógica está normalmente relacionado à coerência e racionalidade. Freqüentemente associa-se lógica apenas à matemática, não percebendo sua aplicabilidade e relação com as demais ciências.

• Podemos relacionar lógica com a “correção do pensamento”, pois uma de suas preocupações é determinar quais operações são válidas e quais não são, fazendo análises das formas e leis do pensamento.

• Podemos dizer também que a lógica é a “arte de bem pensar”, que é a “ciência das formas do pensamento”. Visto que a forma mais complexa do pensamento é o raciocínio, a lógica estuda a “correção do raciocínio”.

• A lógica tem em vista a “ordem da razão”. Por isso a lógica estuda e ensina a colocar “ordem no pensamento”

• Exemplos:

Todo mamífero é um animal. Todo cavalo é um mamífero. Portanto, todo cavalo é um animal.

1.1 - O que é Lógica de programação

• Significa o uso correto das leis do pensamento, da “ordem da razão” e de processos de raciocínio e simbolização formais na programação de computadores, objetivando racionalidade e o desenvolvimento de técnicas que cooperem para a produção de soluções logicamente válidas e coerente, que resolvam com qualidade os problemas que se deseja programar.

• O raciocínio é algo abstrato, intangível.

• Os seres humanos têm a capacidade de expressá-lo através da palavra falada ou escrita, que por sua vez se baseia em um determinado idioma, que segue uma série de padrões (gramática).

(6)

• Algo similar ocorre com a Lógica de Programação, que pode ser concebida pela mente treinada e pode ser representada em qualquer umas das inúmeras linguagens de programação existentes.

• O objetivo principal do estudo da Lógica de Programação é a construção de algoritmos coerentes e válidos.

Lógica de Programação - é a técnica de encadear pensamentos para atingir determinado objetivo.

1.2 - Seqüência Lógica

• São passos executados até atingir um objetivo ou solução de um problema. • Estes pensamentos, podem ser descritos como uma seqüência de instruções,

que devem ser seguidas para se cumprir uma determinada tarefa.

Seqüência Lógica são passos executados até atingir um objetivo ou solução de um problema.

1.3 - Instruções

• São um conjunto de regras ou normas definidas para a realização de algo. • Na linguagem comum, entende-se por instruções “um conjunto de regras ou

normas definidas para a realização ou emprego de algo”.

• Em informática, porém, instrução é a informação que indica a um computador uma ação elementar a executar.

• Convém ressaltar que uma ordem isolada não permite realizar o processo completo, para isso é necessário um conjunto de instruções colocadas em ordem seqüencial lógica.

(7)

• Por exemplo, se quisermos fazer uma omelete de batatas, precisaremos colocar em prática uma série de instruções: descascar as batatas, bater os ovos, fritar as batatas, etc...

• É evidente que essas instruções tem que ser executadas em uma ordem adequada – não se pode descascar as batatas depois de fritá-las.

• Dessa maneira, uma instrução tomada em separado não tem muito sentido; para obtermos o resultado, precisamos colocar em prática o conjunto de todas as instruções, na ordem correta.

Instruções são um conjunto de regras ou normas definidas para a realização ou emprego de algo. Em informática, é o que indica a um computador uma ação elementar a executar.

(8)

Unidade 2 – Introdução aos Algoritmos

2.1 - Definição

• Na medida em que precisamos especificar uma seqüência de passos, precisamos utilizar ordem, ou seja, “pensar em ordem”, portanto, precisamos utilizar lógica.

• Quando elaboramos um algoritmo devemos especificar ações claras e precisas, que a partir de um estado inicial, após um período de tempo finito, produzem um estado final previsível e bem sucedido.

• Um algoritmo é formalmente uma seqüência finita de passos que levam a execução de uma tarefa. Podemos pensar em algoritmo como uma receita, uma seqüência de instruções que dão cabo de uma meta específica. Estas tarefas não podem ser redundantes nem subjetivas na sua definição, devem ser claras e precisas.

• Como exemplos de algoritmos podemos citar os algoritmos das operações básicas (adição, multiplicação, divisão e subtração) de números reais decimais. Outros exemplos seriam os manuais de aparelhos eletrônicos, como um videocassete, que explicam passo-a-passo como, por exemplo, gravar um evento.

• Até mesmo as coisas mais simples, podem ser descritas por seqüências lógicas. Por exemplo:

– “Chupar uma bala”. · Pegar a bala

· Retirar o papel · Chupar a bala

· Jogar o papel no lixo

– “Somar dois números quaisquer”.

· Escreva o primeiro número no retângulo A · Escreva o segundo número no retângulo B

· Some o número do retângulo A com número do retângulo B e coloque o resultado no retângulo C

(9)

Fazemos uso constantemente de algoritmos em nosso cotidiano: a maneira como uma pessoa toma banho é um algoritmo.

Outros algoritmos freqüentemente encontrados são:

– Instruções para se utilizar um aparelho eletrodoméstico; – Uma receita para preparo de algum prato;

– Guia de preenchimento para declaração de imposto de renda;

– A regra para determinação de máximos e mínimos de funções são calculadas por derivadas sucessivas;

– A maneira como as contas de água, luz e telefone são calculadas mensalmente, etc.

2.1.1 – Uma Definição Formal

“Um Algoritmo é uma seqüência de instruções ordenadas de forma lógica para a resolução de uma determinada tarefa ou problema.”

– Um algoritmo é um conjunto finito de instruções que, se seguidas, realizam uma determinada tarefa.

– Além disso, todo algoritmo deve satisfazer: a) Entrada – zero ou mais valores de entrada

b) Saída – pelo menos um valor deve ser produzido c) Clareza – toda instrução deve ser clara e não ambígua

d) Término – o algoritmo deve terminar após um número finito de passos e) Efetividade – toda instrução deve ser factível

(10)

2.1.2 – Importância

– A importância do algoritmo está no fato de termos que especificar uma seqüência de passos lógicos para que o computador possa executar uma tarefa qualquer, pois o mesmo por si só não têm vontade própria, faz apensa o que mandamos.

– Com uma ferramenta algorítmica, podemos conceber uma solução para um dado problema, independendo de uma linguagem específica e até mesmo do próprio computador,

2.1.3 - Algoritmos não – computacionais

– Exemplo de Algoritmo Não-Computacional: – Problema: Usar um telefone público.

Início

1) Tirar o fone do gancho; 2) Ouvir o sinal de linha; 3) Introduzir o cartão;

4) Teclar o número desejado; 5) Se der o sinal de chamar

5.1) Conversar; 5.2) Desligar; 5.3) Retirar o cartão; 6) Senão 6.1) Repetir; Fim.

2.2 Características

– Todo algoritmo deve apresentar algumas características básicas: • Ter fim;

DESVIO SEQUENCIAL

(11)

• Não dar margem à dupla interpretação (não ambíguo);

• Capacidade de receber dado(s) de entrada do mundo exterior;

• Poder gerar informações de saída para o mundo externo ao do ambiente do algoritmo;

• Ser efetivo (todas as etapas especificadas no algoritmo devem ser alcançáveis em um tempo finito).

2.3 Formas de representação

2.3.1 Descrição Narrativa

Faz-se uso do português para descrever algoritmos. Exemplo:

Receita de Bolo:

• Providencie manteiga, ovos, 2 kg de massa, etc • Misture os ingredientes

• Despeje a mistura na fôrma de bolo • Leve a fôrma ao forno

• Espere 20 minutos • Retire a fôrma do forno • Deixe esfriar

• Prove – VANTAGENS

• O português é bastante conhecido por nós; – DESVANTAGENS

• Imprecisão;

• Pouca confiabilidade ( a imprecisão acarreta a desconfiança); • Extensão (normalmente, escreve-se muito para dizer pouca coisa).

(12)

2.3.2 Linguagem Algorítmica

– Consiste na definição de uma pseudolinguagem de programação, cujos comandos são em português, para representar algoritmos.

– Os algoritmos são descritos em uma linguagem chamada pseudocódigo. – Este nome é uma alusão à posterior implementação em uma linguagem

de programação, por exemplo, Visual Basic, estaremos gerando código em Visual Basic.

– Por isso os algoritmos são independentes das linguagens de Programação. Ao contrário de uma linguagem de programação não existe um formalismo rígido de como deve ser escrito o algoritmo.

– O algoritmo deve ser fácil de se interpretar e fácil de codificar. Ou seja, ele deve ser o intermediário entre a linguagem falada e a linguagem de programação. – EXEMPLO: Algoritmo CALCULA_DOBRO; Inicio Leia NUM; DOBRO ← 2 * NUM; Escreva DOBRO; Fim. – VANTAGENS:

Independência física da solução (solução lógica apenas); Usa o português com base;

Pode-se definir quais e como os dados vão estar estruturados; Passagem quase imediata do algoritmo para uma linguagem de

programação qualquer. – DESVANTAGENS:

(13)

Exige a definição de uma linguagem não real para trabalho; Não padronizado.

2.3.3 Portugol

– Durante nosso curso iremos aprender a desenvolver nossos Algoritmos em uma pseudo-linguagem conhecida como “Portugol” ou Português Estruturado.

– “Portugol” é derivado da aglutinação de Português + Algol.

– Algol é o nome de umalinguagem de programação usada no final da década de 50.

2.4 Fases de um algoritmo

– Ao montar um algoritmo, precisamos primeiro dividir o problema apresentado em três fases fundamentais.

– Onde temos:

ENTRADA: São os dados de entrada do algoritmo

PROCESSAMENTO: São os procedimentos utilizados para chegar ao resultado final.

SAÍDA: São os dados já processados.

(14)

2.5 O que é um programa e linguagem de programação

2.5.1 O que é um Programa?

Os programas de computadores nada mais são do que algoritmos escritos numa linguagem de computador e que são interpretados e executados por uma máquina, no caso um computador. Dada esta interpretação rigorosa, um programa é por natureza muito específico e rígido em relação aos algoritmos da vida real.

2.5.2 O que é uma Linguagem de Programação?

– São softwares que permitem o desenvolvimento de programas. Possuem um poder de criação ilimitado, desde jogos, editores de texto, sistemas empresariais até sistemas operacionais.

– Existem várias linguagens de programação, cada uma com suas características próprias.

– Exemplos: Pascal, Clipper, C, C++, Visual Basic, Delphi, Java, etc.

2.6 Exercícios de Fixação

1) Crie uma seqüência lógica para tomar banho

2) Faça um algoritmo para somar dois números e multiplicar o resultado pelo primeiro número

3) Descreva com detalhes a seqüência lógica para Trocar um pneu de um carro 4) Faça um algoritmo para trocar uma lâmpada. Descreva com detalhes

(15)

Unidade 3 – Estruturas de implementação de algoritmos

– Quando temos um problema e vamos utilizar um computador para resolvê-lo inevitavelmente temos que passar pelas seguintes etapas:

a) Definir o problema.

b) Realizar um estudo da situação atual e verificar quais a(s) forma(s) de resolver o problema.

c) Terminada a fase de estudo, utilizar uma linguagem de programação para escrever o programa que deverá a princípio, resolver o problema.

d) Analisar junto aos usuários se o problema foi resolvido. Se a solução não foi encontrada, deverá ser retornado para a fase de estudo para descobrir onde está a falha.

3.1 Características de implementação dos algoritmos

– Os algoritmos terão a seguinte estrutura: ALGORITMO <Nome do algoritmo>

<definições> INÍCIO

<comandos> FIM

– Regras para se escrever um algoritmo

Para escrever um algoritmo precisamos descrever a seqüência de instruções, de maneira simples e objetiva.

Para isso utilizaremos algumas técnicas: • Usar somente um verbo por frase;

• Imaginar que você está desenvolvendo um algoritmo para pessoas que não trabalham com informática;

(16)

• Procurar usar palavras que não tenham sentido dúbio. – O aprendizado de Algoritmos

Algoritmos não se aprende: • Copiando algoritmos • Estudando algoritmos Algoritmos só se aprende • Construindo algoritmos • Testando algoritmos 3.1.1 Refinamentos Sucessivos

– Um algoritmo é considerado completo se os seus comandos forem no entendimento do seu destinatário.

– Num algoritmo, um comando que não for do entendimento do destinatário terá que ser desdobrado em novos comandos, que constituirão um refinamento do comando inicial, e assim sucessivamente, até que os comandos sejam entendidos pelo destinatário.

– Por exemplo, o algoritmo para calcular a média de dois números pode ser escrito da seguinte forma:

ALGORITMO CALCULA_MÉDIA; INICIO

Receba os dois números;

Calcule a média dos dois números; Exiba o resultado;

FIM.

– Podemos desdobrar o comando “Calcula a média dos dois números” em: Soma os dois números;

(17)

– Após esse refinamento, o algoritmo pode ser considerado completo, a menos que o destinatário não saiba fazer as operações de adição e divisão, ou não seja capaz de entender diretamente algum comando.

– O algoritmo estando completo, podemos reescrevê-lo, inserindo o refinamento na posição de comando que foi refinado. Assim sendo, obtém-se:

ALGORITMO Calcula_Média; Início

Receba os dois números; Soma os dois números; Divida o resultado por 2; Exiba o resultado;

Fim.

– Reescrever um algoritmo, com os refinamentos sucessivos inseridos nos seus devidos lugares, permite ter uma visão global de como o algoritmo deve ser executado.

– À medida que o algoritmo passa a ser maior e mais complexo, esta visão global torna-se menos clara e, neste caso, um algoritmo apresentado com os refinamentos sucessivos separados oferece uma melhor abordagem para quem precisar entendê-lo.

3.1.2 Linearização de expressões

– Para a construção de Algoritmos todas as expressões aritméticas devem ser linearizadas, ou seja, colocadas em linhas.

– É importante também ressalvar o uso dos operadores correspondentes da aritmética tradicional para a computacional.

(18)

( 2 / 3 + ( 5 – 3 ) ) + 1 =

COMPUTACIONAL

3.1.3 Modularização de Expressões

– A modularização é a divisão das expressões em partes, proporcionando maior compreensão e definindo prioridades para resolução da mesma. – Como pode ser observado no exemplo anterior, em expressões

computacionais usamos somente parênteses “ ( ) “ para modularização. – Na informática podemos ter parênteses dentro de parênteses.

– Exemplos de prioridade: (2+2)/2=2

2+2/2=3

3.2 Operação de Entrada e Saída

– Os cálculos do computador são de pouco valor a não ser que, primeiro possamos fornecer os dados sobre os quais estes cálculos serão efetuados e, segundo, ver os resultados destes cálculos.

– Definimos aqui dois novos comandos da nossa linguagem algorítmica para manusear entrada e saída.

O comando leia nos permite ler valores dados atribuindo-os à variáveis indicadas;

O comando escreva nos permite mostrar os resultados. 2

+ ( 5 – 3 ) + 1 = 3

(19)

– A entrada pode vir do teclado ou qualquer outro dispositivo de entrada. – A saída pode aparecer na tela do monitor de vídeo ou ser impressa em

papel.

– Caso deseja-se imprimir o resultado, usa-se o comando imprima. – A sintaxe destes comandos são:

Leia variável-1, variável-2,..., variável-n

Escreva expressão-1, expressão-2, ..., expressão-n – Exemplos

Leia (Nota) Escreva (15) Imprima (Nota)

Leia(A, B, C) Escreva (Nota + 2) Imprima (Tel)

Leia (Nome) Escreva (A< B) Imprima (Result)

3.3 Operadores

3.3.1 Operadores Aritméticos Operação Operador Adição + Subtração - Multiplicação * Divisão / Exponenciação ** 3.3.2 Operadores Lógicos

– Os operadores lógicos servem para combinar resultados de expressões, retornando se o resultado final é verdadeiro ou falso.

(20)

Operador Descrição

E (AND) Uma expressão E é verdadeira se todas as condições forem

verdadeiras.

OU (OR) Uma expressão OU é verdadeira se elo menos uma condição for

verdadeira.

Não (NOT) Uma expressão NÃO inverte o valor da expressão ou condição, se

verdadeira inverte para falsa e vice-versa.

– TABELA VERDADE A B A E B A OU B NÃO(A) V V V V F V F F V F F V F V V F F F F V – Exemplos:

Suponha que temos três variáveis A = 5. B = 8 e C = 1. Os resultados das expressões seriam:

Expressões Resultado A = B E B > C Falso A < > B OU B < C Verdadeiro A > B NÃO Verdadeiro A < B E B > C Verdadeiro A > = B OU B = C Falso A < = B NÃO Falso

(21)

3.3.3 Operadores Relacionais Operação Operador Maior que > Menor que < Maior ou igual >= Menor ou igual <= Diferente < > Igual = 3.3.4 Operadores Especiais Operador Descrição

MOD Retorna o resto da divisão entre dois números inteiros.

DIV Retorna o valor inteiro que resulta da divisão entre dois números

inteiros.

3.4 - Exercícios de Fixação:

1. Determine o resultado das operações: 13 2 1 6 DIV MOD 13 DIV 2 = 6 13 MOD 2 = 1

(22)

2. Considere as variáveis a seguir e determine o resultado: A = 14; B = 7; C = 21; D = -5; E =0 Expressões Resultado A < B E D > C D< A OU D = C D = C OU B< C B < > E E D< E C < > D E D < > A OU D < E A < > D NÃO D < E E A = B E C < >D OU A < D A = B E C < > D E B = C C = D E A = C OU E < > D OU B < A D < >B E B > E OU E > D

(23)

UNIDADE 4 – Variáveis e Tipos de Dados

4.1 Conceitos de Variáveis

– Sabe-se da Matemática que uma variável é a representação simbólica dos elementos de um certo conjunto.

– Nos algoritmos destinados a resolver um problema no computador, a

cada variável corresponde uma posição de memória, cujo conteúdo pode variar ao longo do tempo durante a execução de um algoritmo. Embora a variável possa assumir diferentes valores,

ela só pode armazenar um valor a cada instante.

– Toda variável é identificada por um nome ou identificador.

Exemplo: num algoritmo para calcular a área de um triângulo

retângulo pelo teorema de Pitágoras (a2 = b2 + c2), os

identificadores A, B e C podem representar as posições de memória que armazenam o valor da hipotenusa e dos catetos. – Nunca usar uma palavra reservada (que faça parte da linguagem

algorítmica), visto que, poderá causar ambigüidade no entendimento do algorítmo.

– Na nossa linguagem algorítmica, vamos admitir que nossas variáveis poderão armazenar valores numéricos ou alfanuméricos (strings).

4.2 Operação de Atribuição

– A operação de atribuição permite que se forneça um valor a uma certa variável.

Se for atribuído uma expressão à variável, será armazenado o resultado daquela expressão.

Se for atribuído uma outra variável, será armazenado o conteúdo daquela variável.

(24)

Exemplos:

A ← 2 B ← A NOTA ← 10

NOME ← ‘João’ SENHA ← ‘X3Y9’ C ← 1 / 3

A ← B + C NOTA ← NOTA - 1 X ← 2.5

4.3 Identificadores

– São os nomes dados a variáveis, constantes e programas. – Regras para construção de Identificadores:

Não podem ter nomes de palavras reservadas (comandos da linguagem);

Devem possuir como 1º caractere uma letra ou underscore ( _ );

Ter como demais caracteres letras, números ou underscore; Ter no máximo 127 caracteres;

Não possuir espaços em branco;

A escolha de letras maiúscula ou minúscula é indiferente. – Exemplos: nome, telefone, nota1, salário, idade_filho

4.4 Tipos de Dados

– No momento que formos trabalhar com variáveis, indiquemos o tipo de informação que uma variável pode conter, isto é, se uma dada posição de memória armazenará um número ou uma letra, etc.

– O Tipo de dado pode ser:

PRIMITIVO – pré-definido pela linguagem;

SUB-FAIXA – é uma parte de um tipo já existente;

DEFINIDO PELO USUÁRIO (ESCALAR) – definidos pelo programador.

(25)

Tipo de Dados Descrição

Inteiro Representa números entre -32768 até + 32767. Ocupa 2 bytes

na memória.

Real Representa os números entre 2.9 x 10-39 até 1.7 x 1038. Ocupa 6

bytes na memória.

Caracter Representa um dos caracteres da tabela ASCII. Ocupa 1 byte

na memória.

String Conjunto de caracteres (CHAR). Ocupa de 1 a 255 bytes

namemória.

Lógico Valor lógico. Assume somente dois valores: TRUE (verdadeiro)

ou FALSE (falso). Ocupa 1 byte na memória.

– As definições de variáveis como sendo do tipo CHAR (caracter) e STRING (cadeia), possuem algumas curiosidades que merecem um cuidado especial por parte do usuário.

– Uso das aspas ( ‘ ‘ ): atribuição de um valor para uma variável do tipo CHAR (caracter) ou STRING (cadeia) = colocar o valor (dado) entre aspas (‘ ‘), pois esta é a forma de informar que a informação é um caracter. Exemplo: ALGORITMO Teste; VARIÁVEIS Letra : Caracter; Nome: Cadeia; Início Nome ← ‘João’; Letra ← ‘A’; FIM.

(26)

4.4.1 Manipulação de Caracteres e Strings

– Muitas vezes é necessário manipular caracteres individuais em uma STRING (cadeia).

– Utilizaremos uma forma toda especial de permitir tal operação, através do uso de colchetes ( [ ] ) logo após o Nome da variável do tipo STRING (Cadeia), e o número do caracter que se deseja manipular entre os colchetes (forma baseada no Pascal).

Exemplo: Atribuir o primeiro caracter de uma STRING a uma variável do tipo CHAR.

ALGORITMO AtribuiString; VARIÁVEIS Letra :Caracter; Nome :Cadeia; INICIO Nome ← ‘Joao’; Letra ← Nome[1]; FIM.

– Quando definimos uma variável como sendo do tipo STRING não estamos alocando 1 posição de memória apenas (uma caixa, pela analogia inicial), mas na verdade, estamos alocando-se até 255 caixas, uma para cada caracter da STRING (lembre-se que uma STRING pode ter no máximo 255 caracteres).

– Ao utilizarmos o símbolo de colchete, estamos na verdade indicando qual o caracter (qual a caixa) desejamos manipular.

– De acordo com o Exemplo acima, teríamos na memória a seguinte situação:

a) Alocamos 255 bytes (caracteres) na memória. A estas posições de memória é dado o Nome de “Nome”. Inicialmente estas posições de memória (Caixas) possuem o conteúdo indefinido.

(27)

b) Alocamos 1 byte (caracter) na memória. A este caracter é dado o Nome de “Letra”. Inicialmente esta posição de memória possui o conteúdo indefinido.

c) Na memória temos a seguinte situação:

Nome

Letra

1 2 3 4 ... 255

d) Atribuímos a variável “Nome” o valor “João”, obtendo na memória a seguinte configuração

1 2 3 4 ... 255 ‘J’ ‘O’ ‘Ã’ ‘O’

e) Atribuímos a variável “Letra” o primeiro caracter da variável “Nome”, ou seja, o conteúdo da primeira posição de memória (caixa). Na memória teremos a seguinte configuração:

Nome

Letra

1 2 3 4 ... 255

‘J’ ‘O’ ‘Ã’ ‘O’ ‘J’

– Obs.: É possível definir variáveis do tipo STRING (Cadeia) com menos de 255 caracteres. Para isto, basta colocar, após a palavra STRING (Cadeia), o número de caracteres desejados entre colchetes ( [ ] ).

(28)

VARIÁVEIS

Nome :CADEIA[80];

INICIO FIM.

– Desta forma, o espaço ocupado por uma variável STRING (Cadeia) passa de 255 bytes para apenas 80 bytes, na memória.

4.5 – Declaração de Variáveis

ALGORITMO Teste; VARIÁVEIS Palavra : Cadeia; INICIO <Comandos>; FIM. ALGORITMO Teste; VARIÁVEIS

Letra, Caracter : Caracter; INICIO

<Comandos>; FIM.

ALGORITMO Teste; VARIÁVEIS

Letra, Caracter : Caracter; Número : Inteiro; INICIO <Comandos>; FIM. PROGRAM Teste; VAR

Letra, Caracter : CHAR; Número : INTEGER; BEGIN

<Comandos>; END.

(29)

Unidade 5 – Estruturas De Decisão E Repetição

5.1 – Estruturas de Decisão

– Num algoritmo, os comandos deverão ser executados numa seqüência linear, seguindo-se o texto em que estão escritos, de cima para baixo, se não houver indicação em contrário.

INICIO Comando-1; Comando-2; . . . Comando-n; FIM. Exemplo: Inicio Leia A, B; SOMA ← A + B; Escreva SOMA; Fim.

5.2 – Estrutura Condicional

– A estrutura condicional permite a escolha do grupo de ações e estruturas a ser executado quando determinadas condições (expressões lógicas) são ou não satisfeitas. Esta estrutura pode se apresentar de duas formas:

Estrutura Condicional Simples; Estrutura Condicional Composta.

INÍCIO

COMANDO-1

COMANDO-2

COMANDO-N

(30)

5.2.1 – Estrutura condicional Simples (Se ... então) SE condição ENTÃO Comando-1; Comando-2; . . . Comando-n; FIM_SE; Exemplo: se MÈDIA>= 7 então SITUAÇÃO ← ‘Aprovado’; Escreva SITUAÇÃO; fim_se;

5.2.2 – Estrutura Condicional Composta

SE condição ENTÃO Comando-A1; Comando-A2; . . . Comando-An; SENÂO Comando-B1; Comando-B2; . . . Comando-Bn; FIM_SE; CONDIÇÃO COMANDO-1 COMANDO-2 COMANDO-N CONDIÇÃO COMANDO-A1 COMANDO-A2 COMANDO-AN COMANDO-B1 COMANDO-B2 COMANDO-BN F V

(31)

Exemplo: . . .

se PESO > 80 então

escreva ‘Você está obeso’; escreva ‘Faça atividades físicas’; senão

escreva ‘Você está no peso certo’; escreva ‘Procure manter sua forma’; fim_se;

. . .

5.3 Estrutura de Repetição

– A estrutura de repetição permite que uma sequência de comandos seja executada repetidamente até que uma determinada condição não seja satisfeita. Utilizaremos os comandos abaixo para representar esta estrutura.

5.3.1 – Enquanto ... faça

enquanto CONDIÇÃO faça

Comando-A1;

Comando-A2;

. . .

Comando-An;

fim_enquanto;

Exemplo: Faça um algoritmo para ler e escrever o. nome de 20 pessoas. F V CONDIÇÃ O COMANDO-A1 COMANDO-A2 COMANDO-AN

(32)

ALGORITMO LeEscreve; VARIÁVEIS NOME: STRING; Total: INTEIRO; INICIO TOTAL ← 0;

ENQUANTO Total < 20 Faça Leia(Nome);

Escreva (‘Nome=’, Nome);

Total ← Total + 1;

FIM_ENQUANTO; FIM.

5.3.2 – Para ... faça

para <VARIÁVEL> de <INÍCIO> até <FIM> faça

Comando-A1;

Comando-A2;

. . .

Comando-An;

fim_para;

Exemplo: Faça um algoritmo para ler e escrever o Nome de 20 pessoas. ALGORITMO LeEscreve;

VARIÁVEIS

Nome: Cadeia;

Cont : Inteiro; INICIO

PARA Cont DE 1 ATÉ 20, Passo 1, FAÇA Leia(Nome);

(33)

FIM_PARA; FIM. 5.3.3 – Repita ... até repita Comando-A1; Comando-A2; . . . Comando-An;

Até <CONDIÇÃO VERDADEIRA>

Exemplo: Faça um algoritmo para ler e escrever o Nome de 20 pessoas ALGORITMO LeEscreve; VARIÁVEIS Nome: Cadeia; Total: Inteiro; INICIO Total ← 0; REPITA Leia(Nome); Escreva(‘Nome=’, Nome); Total ← Total +1; ATÉ Total >= 20; FIM.

5.4 – Estruturas de Seleção

(34)

CASO 1 Comando A1; CASO 2 Comando A2; CASO n Comando An; SENÃO Comando n; FIM_ESCOLHA; Exemplo: ALGORITMO Título; VARIÁVEIS Título :STRING; Op : INTEIRO; INICIO Leia(Op); ESCOLHA Op: CASO 1 TITULO = “OPÇÃO 1”; CASO 2 TITULO = “OPÇÃO 2”; CASO 3 TITULO = “OPÇÃO 3”; CASO 4 TITULO = “OPÇÃO 4”; CASO 5 TITULO = “OPÇÃO 5”; SENÃO

TITULO = “OPÇÃO ERRADA”; FIM_ESCOLHA;

(35)

5.4.1 – Se ... então Aninhados

– Usados para tomadas de decisões para mais de 2 opções. SE condição ENTÃO Comando-1; SENÃO SE condição ENTÃO Comando-2; SENÃO Comando-3; FIM_SE; FIM_SE;

5.5 -

EXERCÍCIOS

1) Faça um algoritmo que leia os valores A, B, C e diga se a soma de A + B é menor que C.

2) Faça um algoritmo que leia dois valores inteiros A e B se os valores forem iguais deverá se somar os dois, caso contrário multiplique A por B ao final do cálculo atribuir o valor para uma variável C.

3) Faça um algoritmo que leia o nome e as três notas de uma disciplina de um aluno. Ao final escreva o nome do aluno, sua média e se ele foi aprovado a média é 8.

4) Faça um algoritmo que calcule a média aritmética de 4 valores inteiros.

5) Escreva um algoritmo para ler um número e determinar se ele é maior, igual ou menor que zero.

(36)

7) Dado as seguintes informações de um funcionário: Nome, idade cargo e o seu salário bruto considere:

a) O salário bruto teve um reajuste de 38%.

b) O funcionário receberá uma gratificação de 20% do salário bruto. c) O Salário total é descontado em 15%

Faça um algoritmo para:

• Imprimir Nome, idade e cargo. • Imprimir o salário bruto.

• Imprimir o salário líquido.

8) Dado uma série de 20 valores reais, faça uma algoritmo que calcule e escreva a média aritmética destes valores, entretanto se a média obtida for maior que 8 deverá ser atribuída 10 para a média.

9) Elaborar um algoritmo que lê 3 valores a,b,c e os escreve. A seguir, encontre o maior dos 3 valores e o escreva com a mensagem : "É o maior ".

10) Faça um algoritmo que leia um nº inteiro e mostre uma mensagem indicando se este número é par ou ímpar.

11) Escrever um algoritmo que lê o número de identificação, as 3 notas obtidas por um aluno nas 3 verificações e a média dos exercícios que fazem parte da avaliação. Calcular a média de aproveitamento, usando a fórmula:

MA = (Nota1 + Nota2 x 2 + Nota3 x 3 + ME )/7

A atribuição de conceitos obedece a tabela abaixo:

Média de Aproveitamento Conceito

9,0 A

(37)

6,0 e < 7,5 C

4,0 < 6,0 D

< 4,0 E

O algoritmo deve escrever o número do aluno, suas notas, a média dos exercícios, a média de aproveitamento, o conceito correspondente e a mensagem: APROVADO se o conceito for A,B ou C e REPROVADO se o conceito for D ou E.

12) Faça um algoritmo que, dado as três notas de um aluno, determine e exiba a sua média final e o seu conceito, sabendo-se que:

- a média final é calculada pela média aritmética das 3 notas; - o conceito é determinado com base na tabela abaixo:

MÉDIA FINAL CONCEITO

≥ 8,0 A

≥ 5,0 e < 8,0 B

< 5,0 C

13) O São Paulo Futebol Clube deseja aumentar o salário de seus jogadores. O reajuste deve obedecer a seguinte tabela:

SALÁRIO ATUAL (R$)

AUMENTO

0,00 a 1.000,00 20%

(38)

Escrever um algoritmo que leia o nome e o salário atual de um jogador, e exiba o nome, o salário atual e o salário reajustado.

14) Escreva um algoritmo que leia três números inteiros e positivos (A, B, C) e calcule a seguinte expressão:

R + S onde R = ( A + B )2 e S = ( B + C)2

D = 2

15) O custo ao consumidor de um carro novo é a soma do custo de fábrica com a percentagem do distribuidor e dos impostos (aplicados ao custo de fábrica). Supondo que a percentagem do distribuidor seja de 28% e os impostos de 45%, escrever um algoritmo que leia o custo de fábrica de um carro e escreva o custo ao consumidor.

Referências

Documentos relacionados

Ph.D., Software Architect, BCP, MCP, MCAD, MCSD, ITIL.. Agenda Contextualização histórica Fenômenos quânticos Algoritmos quânticos Protocolos quânticos Implicações

Ainda que não se utilizem diretamente suas obras, os fundamentos por ele expostos – há mais de um século – ainda permanecem vivos nas discussões tributárias

Quanto ao número de medições necessárias para predizer o valor real dos genótipos, com base no coeficiente de determinação preestabelecido de 80 %, considerado

Temos de estar preparados para os imprevistos, para os avanços e recuos, para tudo o que não vai correr como gostaríamos... Temos de estar disponíveis e temos de ter

O grande diferencial desta matéria está na forma de abordagem do conteúdo: diversos cantores, cada um com seu estilo e características musicais, discutindo a

Uma das descobertas desses estudos que estão se multiplicando é que o peso das relações afetivas na nossa felicidade pode ter um efeito maior do que uma situação financeira

A partir daqui, poderá subir até ao parque de Santa Catarina, para relaxar num dos maiores parques da cidade ou visitar os jardins da Quinta Vigia, que oferecem vistas

As potencialidades do GPS em levantamentos geof´ısicos terres- tres foram avaliadas a partir de um perfil contendo 38 RNs da RAFB. As coordenadas geod´esicas dessas RNs foram