Successfully reported this slideshow.
ALGORITMOS E ESTRUTURAS DE DADOS
Prof. Gelber Xavier de Freitas
www.pronatecvja.blogspot.com.br
Página 1 de 101
Sumário
Ap...
ALGORITMOS E ESTRUTURAS DE DADOS
Prof. Gelber Xavier de Freitas
www.pronatecvja.blogspot.com.br
Página 2 de 101
Operadores...
ALGORITMOS E ESTRUTURAS DE DADOS
Prof. Gelber Xavier de Freitas
www.pronatecvja.blogspot.com.br
Página 3 de 101
Exercício ...
ALGORITMOS E ESTRUTURAS DE DADOS
Prof. Gelber Xavier de Freitas
www.pronatecvja.blogspot.com.br
Página 4 de 101
Apresentaç...
ALGORITMOS E ESTRUTURAS DE DADOS
Prof. Gelber Xavier de Freitas
www.pronatecvja.blogspot.com.br
Página 5 de 101
Prefácio
E...
ALGORITMOS E ESTRUTURAS DE DADOS
Prof. Gelber Xavier de Freitas
www.pronatecvja.blogspot.com.br
Página 6 de 101
Introdução...
ALGORITMOS E ESTRUTURAS DE DADOS
Prof. Gelber Xavier de Freitas
www.pronatecvja.blogspot.com.br
Página 7 de 101
Conceitos ...
ALGORITMOS E ESTRUTURAS DE DADOS
Prof. Gelber Xavier de Freitas
www.pronatecvja.blogspot.com.br
Página 8 de 101
Desenvolve...
ALGORITMOS E ESTRUTURAS DE DADOS
Prof. Gelber Xavier de Freitas
www.pronatecvja.blogspot.com.br
Página 9 de 101
Onde temos...
ALGORITMOS E ESTRUTURAS DE DADOS
Prof. Gelber Xavier de Freitas
www.pronatecvja.blogspot.com.br
Página 10 de 101
Algoritmo...
ALGORITMOS E ESTRUTURAS DE DADOS
Prof. Gelber Xavier de Freitas
www.pronatecvja.blogspot.com.br
Página 11 de 101
Estrutura...
ALGORITMOS E ESTRUTURAS DE DADOS
Prof. Gelber Xavier de Freitas
www.pronatecvja.blogspot.com.br
Página 12 de 101
Para solu...
ALGORITMOS E ESTRUTURAS DE DADOS
Prof. Gelber Xavier de Freitas
www.pronatecvja.blogspot.com.br
Página 13 de 101
Problemas...
ALGORITMOS E ESTRUTURAS DE DADOS
Prof. Gelber Xavier de Freitas
www.pronatecvja.blogspot.com.br
Página 14 de 101
Simbologi...
ALGORITMOS E ESTRUTURAS DE DADOS
Prof. Gelber Xavier de Freitas
www.pronatecvja.blogspot.com.br
Página 15 de 101
“CHUPAR U...
ALGORITMOS E ESTRUTURAS DE DADOS
Prof. Gelber Xavier de Freitas
www.pronatecvja.blogspot.com.br
Página 16 de 101
Variáveis...
ALGORITMOS E ESTRUTURAS DE DADOS
Prof. Gelber Xavier de Freitas
www.pronatecvja.blogspot.com.br
Página 17 de 101
Lógicas
A...
ALGORITMOS E ESTRUTURAS DE DADOS
Prof. Gelber Xavier de Freitas
www.pronatecvja.blogspot.com.br
Página 18 de 101
Caractere...
ALGORITMOS E ESTRUTURAS DE DADOS
Prof. Gelber Xavier de Freitas
www.pronatecvja.blogspot.com.br
Página 19 de 101
No exempl...
ALGORITMOS E ESTRUTURAS DE DADOS
Prof. Gelber Xavier de Freitas
www.pronatecvja.blogspot.com.br
Página 20 de 101
• A Média...
ALGORITMOS E ESTRUTURAS DE DADOS
Prof. Gelber Xavier de Freitas
www.pronatecvja.blogspot.com.br
Página 21 de 101
1 º ( ) P...
ALGORITMOS E ESTRUTURAS DE DADOS
Prof. Gelber Xavier de Freitas
www.pronatecvja.blogspot.com.br
Página 22 de 101
Símbolo U...
ALGORITMOS E ESTRUTURAS DE DADOS
Prof. Gelber Xavier de Freitas
www.pronatecvja.blogspot.com.br
Página 23 de 101
Exemplos:...
ALGORITMOS E ESTRUTURAS DE DADOS
Prof. Gelber Xavier de Freitas
www.pronatecvja.blogspot.com.br
Página 24 de 101
Operações...
ALGORITMOS E ESTRUTURAS DE DADOS
Prof. Gelber Xavier de Freitas
www.pronatecvja.blogspot.com.br
Página 25 de 101
EXERCÍCIO...
ALGORITMOS E ESTRUTURAS DE DADOS
Prof. Gelber Xavier de Freitas
www.pronatecvja.blogspot.com.br
Página 26 de 101
Teste o d...
ALGORITMOS E ESTRUTURAS DE DADOS
Prof. Gelber Xavier de Freitas
www.pronatecvja.blogspot.com.br
Página 27 de 101
Comando d...
ALGORITMOS E ESTRUTURAS DE DADOS
Prof. Gelber Xavier de Freitas
www.pronatecvja.blogspot.com.br
Página 28 de 101
Comandos ...
ALGORITMOS E ESTRUTURAS DE DADOS
Prof. Gelber Xavier de Freitas
www.pronatecvja.blogspot.com.br
Página 29 de 101
Expressõe...
ALGORITMOS E ESTRUTURAS DE DADOS
Prof. Gelber Xavier de Freitas
www.pronatecvja.blogspot.com.br
Página 30 de 101
Exemplo
I...
ALGORITMOS E ESTRUTURAS DE DADOS
Prof. Gelber Xavier de Freitas
www.pronatecvja.blogspot.com.br
Página 31 de 101
Comando S...
ALGORITMOS E ESTRUTURAS DE DADOS
Prof. Gelber Xavier de Freitas
www.pronatecvja.blogspot.com.br
Página 32 de 101
No caso d...
ALGORITMOS E ESTRUTURAS DE DADOS
Prof. Gelber Xavier de Freitas
www.pronatecvja.blogspot.com.br
Página 33 de 101
Estrutura...
ALGORITMOS E ESTRUTURAS DE DADOS
Prof. Gelber Xavier de Freitas
www.pronatecvja.blogspot.com.br
Página 34 de 101
SE ENTÃO ...
ALGORITMOS E ESTRUTURAS DE DADOS
Prof. Gelber Xavier de Freitas
www.pronatecvja.blogspot.com.br
Página 35 de 101
CASO SELE...
ALGORITMOS E ESTRUTURAS DE DADOS
Prof. Gelber Xavier de Freitas
www.pronatecvja.blogspot.com.br
Página 36 de 101
No exempl...
ALGORITMOS E ESTRUTURAS DE DADOS
Prof. Gelber Xavier de Freitas
www.pronatecvja.blogspot.com.br
Página 37 de 101
Em Visual...
ALGORITMOS E ESTRUTURAS DE DADOS
Prof. Gelber Xavier de Freitas
www.pronatecvja.blogspot.com.br
Página 38 de 101
OP = INPU...
ALGORITMOS E ESTRUTURAS DE DADOS
Prof. Gelber Xavier de Freitas
www.pronatecvja.blogspot.com.br
Página 39 de 101
 Se o va...
ALGORITMOS E ESTRUTURAS DE DADOS
Prof. Gelber Xavier de Freitas
www.pronatecvja.blogspot.com.br
Página 40 de 101
Enquanto ...
ALGORITMOS E ESTRUTURAS DE DADOS
Prof. Gelber Xavier de Freitas
www.pronatecvja.blogspot.com.br
Página 41 de 101
Até que x...
ALGORITMOS E ESTRUTURAS DE DADOS
Prof. Gelber Xavier de Freitas
www.pronatecvja.blogspot.com.br
Página 42 de 101
Em Visual...
ALGORITMOS E ESTRUTURAS DE DADOS
Prof. Gelber Xavier de Freitas
www.pronatecvja.blogspot.com.br
Página 43 de 101
Exercício...
ALGORITMOS E ESTRUTURAS DE DADOS
Prof. Gelber Xavier de Freitas
www.pronatecvja.blogspot.com.br
Página 44 de 101
Exercício...
ALGORITMOS E ESTRUTURAS DE DADOS
Prof. Gelber Xavier de Freitas
www.pronatecvja.blogspot.com.br
Página 45 de 101
Exercício...
ALGORITMOS E ESTRUTURAS DE DADOS
Prof. Gelber Xavier de Freitas
www.pronatecvja.blogspot.com.br
Página 46 de 101
Umas das ...
ALGORITMOS E ESTRUTURAS DE DADOS
Prof. Gelber Xavier de Freitas
www.pronatecvja.blogspot.com.br
Página 47 de 101
Sendo a f...
ALGORITMOS E ESTRUTURAS DE DADOS
Prof. Gelber Xavier de Freitas
www.pronatecvja.blogspot.com.br
Página 48 de 101
LEIA ( N ...
ALGORITMOS E ESTRUTURAS DE DADOS
Prof. Gelber Xavier de Freitas
www.pronatecvja.blogspot.com.br
Página 49 de 101
• O cálcu...
ALGORITMOS E ESTRUTURAS DE DADOS
Prof. Gelber Xavier de Freitas
www.pronatecvja.blogspot.com.br
Página 50 de 101
FIBONACCI...
ALGORITMOS E ESTRUTURAS DE DADOS
Prof. Gelber Xavier de Freitas
www.pronatecvja.blogspot.com.br
Página 51 de 101
• Classe ...
ALGORITMOS E ESTRUTURAS DE DADOS
Prof. Gelber Xavier de Freitas
www.pronatecvja.blogspot.com.br
Página 52 de 101
Exercício...
ALGORITMOS E ESTRUTURAS DE DADOS
Prof. Gelber Xavier de Freitas
www.pronatecvja.blogspot.com.br
Página 53 de 101
15 15
15 ...
ALGORITMOS E ESTRUTURAS DE DADOS
Prof. Gelber Xavier de Freitas
www.pronatecvja.blogspot.com.br
Página 54 de 101
FIM_SE
SE...
ALGORITMOS E ESTRUTURAS DE DADOS
Prof. Gelber Xavier de Freitas
Algoritmos de Manipulação de Vetores.
Exercício 21:
Dada u...
ALGORITMOS E ESTRUTURAS DE DADOS
www.pronatecvja.blogspot.com.br
Página 56 de 101
Exercício 23
Dado o vetor do exercício a...
ALGORITMOS E ESTRUTURAS DE DADOS
www.pronatecvja.blogspot.com.br
Página 57 de 101
Exercício 27
10) - Dado um vetor de 10 p...
ALGORITMOS E ESTRUTURAS DE DADOS
www.pronatecvja.blogspot.com.br
Página 58 de 101
Sub rotinas.
As sub-rotinas são divisões...
ALGORITMOS E ESTRUTURAS DE DADOS
www.pronatecvja.blogspot.com.br
Página 59 de 101
Desta forma teremos algoritmos que irão ...
ALGORITMOS E ESTRUTURAS DE DADOS
www.pronatecvja.blogspot.com.br
Página 60 de 101
Representação:
Exemplo
LISTA=(A,B,C,D,E)...
ALGORITMOS E ESTRUTURAS DE DADOS
www.pronatecvja.blogspot.com.br
Página 61 de 101
ENQUANTO CONT < N CONT : =
CONT + 1
MOST...
ALGORITMOS E ESTRUTURAS DE DADOS
www.pronatecvja.blogspot.com.br
Página 62 de 101
Alteração em Listas Contíguas
A alteraçã...
ALGORITMOS E ESTRUTURAS DE DADOS
www.pronatecvja.blogspot.com.br
Página 63 de 101
MOSTRE (“DIGITE A LETRA PARA ALTERAÇÃO”)...
Apostila fundamentos de hardware
Apostila fundamentos de hardware
Apostila fundamentos de hardware
Apostila fundamentos de hardware
Apostila fundamentos de hardware
Apostila fundamentos de hardware
Apostila fundamentos de hardware
Apostila fundamentos de hardware
Apostila fundamentos de hardware
Apostila fundamentos de hardware
Apostila fundamentos de hardware
Apostila fundamentos de hardware
Apostila fundamentos de hardware
Apostila fundamentos de hardware
Apostila fundamentos de hardware
Apostila fundamentos de hardware
Apostila fundamentos de hardware
Apostila fundamentos de hardware
Apostila fundamentos de hardware
Apostila fundamentos de hardware
Apostila fundamentos de hardware
Apostila fundamentos de hardware
Apostila fundamentos de hardware
Apostila fundamentos de hardware
Apostila fundamentos de hardware
Apostila fundamentos de hardware
Apostila fundamentos de hardware
Apostila fundamentos de hardware
Apostila fundamentos de hardware
Apostila fundamentos de hardware
Apostila fundamentos de hardware
Apostila fundamentos de hardware
Apostila fundamentos de hardware
Apostila fundamentos de hardware
Apostila fundamentos de hardware
Apostila fundamentos de hardware
Apostila fundamentos de hardware
Apostila fundamentos de hardware
Upcoming SlideShare
Loading in …5
×

Apostila fundamentos de hardware

1,383 views

Published on

Published in: Technology
  • Be the first to comment

Apostila fundamentos de hardware

  1. 1. ALGORITMOS E ESTRUTURAS DE DADOS Prof. Gelber Xavier de Freitas www.pronatecvja.blogspot.com.br Página 1 de 101 Sumário Apresentação ....................................................................................................................................... 4 Prefácio................................................................................................................................................ 5 Introdução à Lógica de Programação .................................................................................................. 6 Lógica ........................................................................................................................................................... 6 Sequência Lógica......................................................................................................................................... 6 Instruções..................................................................................................................................................... 6 Conceitos de Algoritmos ..................................................................................................................... 7 Características...................................................................................................................................... 7 Desenvolvendo algoritmos .................................................................................................................. 8 Pseudocódigo ............................................................................................................................................... 8 Regras para construção do Algoritmo....................................................................................................... 8 Fases ............................................................................................................................................................. 8 Exemplo de Algoritmo ................................................................................................................................ 9 Teste de Mesa............................................................................................................................................. 10 Estrutura Básica de um Algoritmo .................................................................................................... 11 Diagrama de Bloco ............................................................................................................................ 13 O que é um diagrama de bloco?............................................................................................................... 13 Simbologia.................................................................................................................................................. 14 Constantes, Variáveis e Tipos de Dados ........................................................................................... 15 Constantes.................................................................................................................................................. 15 Variáveis..................................................................................................................................................... 16 Tipos de Variáveis..................................................................................................................................... 16 Declaração de Variáveis............................................................................................................................ 17 Nomes de Variáveis........................................................................................................................... 17 Tipos de Dados Primitivos ................................................................................................................ 17 Inteiro................................................................................................................................................. 17 Real.................................................................................................................................................... 17 Caractere (Char) ................................................................................................................................ 18 Lógico................................................................................................................................................ 18 Agregados de Dados.......................................................................................................................... 18 Cadeia de Caracteres (String)............................................................................................................ 18 Matriz................................................................................................................................................. 18 Registros............................................................................................................................................ 19 Tipos de Dados .................................................................................................................................. 19 Exercícios .......................................................................................................................................... 19
  2. 2. ALGORITMOS E ESTRUTURAS DE DADOS Prof. Gelber Xavier de Freitas www.pronatecvja.blogspot.com.br Página 2 de 101 Operadores......................................................................................................................................... 20 Operadores Aritméticos............................................................................................................................... 20 Operadores Relacionais............................................................................................................................ 21 Operadores Lógicos................................................................................................................................... 22 EXERCÍCIOS ........................................................................................................................................... 23 Operações Lógicas............................................................................................................................. 24 EXERCÍCIOS ........................................................................................................................................... 25 Exemplo............................................................................................................................................. 27 Comandos de Entrada E Saída........................................................................................................... 28 Comando Leia.................................................................................................................................... 28 Expressões Literais............................................................................................................................ 29 Estrutura Sequencial.......................................................................................................................... 29 Estruturas de Seleção......................................................................................................................... 30 Comando SE...................................................................................................................................... 30 Comando SE SENÂO........................................................................................................................ 31 Comando CASO................................................................................................................................ 31 Embutimento ..................................................................................................................................... 32 Estrutura de Decisão e Repetição ...................................................................................................... 33 Comandos de Decisão................................................................................................................................. 33 SE ENTÃO / IF ... THEN .................................................................................................................... 33 SE ENTÃO SENÃO / IF ... THEN ... ELSE ....................................................................................... 34 CASO SELECIONE / SELECT ... CASE.......................................................................................... 35 Comandos de Repetição............................................................................................................................ 39 Enquanto x, Processar (Do While ... Loop)......................................................................................... 40 Até que x, processar ... (Do Until ... Loop) .......................................................................................... 41 Processar ..., Enquanto x (Do ... Loop While).................................................................................... 41 Processar ..., Até que x (Do ... Loop Until)......................................................................................... 42 Comando PARA................................................................................................................................ 44 Exercício 06....................................................................................................................................... 45 Exercícios .......................................................................................................................................... 46 Exercício 09....................................................................................................................................... 48 Exercício 10....................................................................................................................................... 48 Exercício 11....................................................................................................................................... 49 Exercício 12....................................................................................................................................... 50 Exercício 13....................................................................................................................................... 50 Exercício 14....................................................................................................................................... 50 Matrizes ............................................................................................................................................. 51
  3. 3. ALGORITMOS E ESTRUTURAS DE DADOS Prof. Gelber Xavier de Freitas www.pronatecvja.blogspot.com.br Página 3 de 101 Exercício 22....................................................................................................................................... 55 Exercício 23....................................................................................................................................... 56 Exercício 24....................................................................................................................................... 56 Exercício 25....................................................................................................................................... 56 Exercício 26....................................................................................................................................... 56 Exercício 27....................................................................................................................................... 57 Exercício 28....................................................................................................................................... 57 Exercício 29....................................................................................................................................... 57 Alteração em Listas Duplamente Encadeadas................................................................................... 79 Filas (Queue) ..................................................................................................................................... 79 Inserção em Filas............................................................................................................................... 80 Remoção em Filas ............................................................................................................................. 80 Pilhas (Stack)..................................................................................................................................... 81 Árvores .............................................................................................................................................. 84 Árvores De Pesquisa Binária(Bst)..................................................................................................... 87 Inclusão Recursiva............................................................................................................................. 90 Atravessamento ................................................................................................................................. 92 Pesquisa ............................................................................................................................................. 94 Pesquisa por Endereçamento Indireto (Hashing) .............................................................................. 97 Método da Inserção Direta ................................................................................................................ 98 Método da Bolha (Bubble) ................................................................................................................ 99 Método da Troca e de Partição (Quick Sort)..................................................................................... 99 Referências Bibiliográficas.............................................................................................................. 101
  4. 4. ALGORITMOS E ESTRUTURAS DE DADOS Prof. Gelber Xavier de Freitas www.pronatecvja.blogspot.com.br Página 4 de 101 Apresentação Quando da resolução em um dado problema no computador, é necessário que seja primeiramente encontrada uma maneira de se descrever esse problema de uma forma clara e precisa. Sendo necessário encontrar uma sequência de passos que permitam que o problema possa ser resolvido de maneira automática e repetitiva. Esta sequência de passos é chamada de lógica de programação (algoritmo). O conteúdo desta apostila é dirigido principalmente para ser utilizado como livro-texto em disciplinas sobre algoritmos, apresentando uma linguagem simples e exercícios práticos para serem aplicados em sala de aula. Os exemplos desta cartilha foram desenvolvidos utilizando-se a ferramenta Visualg. Ferramenta esta ensinada em cursos em todo o Brasil, que permite a alunos iniciantes em programação o exercício dos seus conhecimentos num ambiente próximo da realidade. Os tópicos desta apostila constituem uma introdução aos conceitos de lógica de programação e uma preparação a conceitos mais avançados em programação de computadores. Estes estão agrupados em sete capítulos, cada um com o seguinte conteúdo: 1. Introdução que salienta a importância do estudo de algoritmos para os futuros profissionais de TI – Tecnologia da Informação; 2. Apresenta formalmente o conceito de Algoritmo e os conceitos básicos de lógica de programação; 3. Fornece formas de interatividade com o algoritmo, ou seja, a representação da troca de informações que ocorrerá entre o computador e o usuário; 4. Mostra as tomadas de decisão que permitem que determinados comandos sejam executados ou não, dependendo do resultado de um teste realizado (condição); 5. Aborda as estruturas de repetição necessárias de um ou vários trechos de um algoritmo um determinado número de vezes; 6. Apresenta estruturas de dados compostas que permitem a manipulação de dados multivalorados; 7. Introduz os conceitos de modularização de algoritmos, demonstrando técnicas de organização mais eficiente do código, bem como, a sua reutilização. Espero que este trabalho possa contribuir para o seu aprendizado e consequentemente para seu futuro profissional. Professor: Gelber Xavier de Freitas Maio 2014
  5. 5. ALGORITMOS E ESTRUTURAS DE DADOS Prof. Gelber Xavier de Freitas www.pronatecvja.blogspot.com.br Página 5 de 101 Prefácio Existem muitos mitos e tabus sobre a dificuldade em aprender e estudar algoritmos, mas os algoritmos estão presentes em nosso cotidiano muito mais do que podemos imaginar. Quando vamos fazer uma viagem de férias e planejamos o roteiro de viagem definindo: pontos de parada, lugares a visitar, quanto tempo ficaremos em um determinado local, estradas que iremos percorrer etc., estamos montando um algoritmo para organizar de maneira lógica os passos da viagem em questão. A sociedade moderna está amplamente dependente da automação de processos e o atual aperfeiçoamento tecnológico deve-se em parte à análise e à obtenção de descrições na execução de tarefas por meio de ações simples o suficiente, tal que pudessem ser automatizadas, sendo executadas pelo computador que é uma máquina especialmente desenvolvida para este fim. Para resolver um problema no computador é necessário que seja primeiramente encontrada uma maneira de descrever este problema de uma forma clara e precisa. É preciso que encontremos uma sequência de passos que permitam que o problema possa ser resolvido de maneira automática e repetitiva. Esta sequência de passos é chamada de algoritmo. Um algoritmo pode ser definido como um conjunto de regras (instruções), bem definidas, para solução de um determinado problema. Segundo o dicionário Michaelis, o conceito de algoritmo é “utilização de regras para definir ou executar uma tarefa específica ou para resolver um problema específico.” A partir desses conceitos de algoritmos, pode-se perceber que a palavra algoritmo não é um termo computacional, ou seja, não se refere apenas à área de informática. É uma definição ampla que agora que você já sabe o que significa. Como já foi destacado anteriormente, é utilizada no cotidiano das pessoas. Na informática, o algoritmo é o “projeto do programa”, ou seja, antes de se fazer um programa (Software) na Linguagem de Programação desejada (Pascal, C, Delphi etc.) deve se fazer o algoritmo do programa. Já um programa, é um algoritmo escrito numa forma compreensível pelo computador (através de uma Linguagem de Programação), onde todas as ações a serem executadas devem ser especificadas nos mínimos detalhes e de acordo com as regras de sintaxe da linguagem escolhida. Esta apostila adota como linguagem padrão para codificação dos exemplos, o “Portugol”, aplicado na ferramenta VisialG, que é de livre distribuição e uso. Está disponível para download em http://www.pronatecvja.blogspot.com.br.
  6. 6. ALGORITMOS E ESTRUTURAS DE DADOS Prof. Gelber Xavier de Freitas www.pronatecvja.blogspot.com.br Página 6 de 101 Introdução à Lógica de Programação Lógica A lógica de programação é necessária para pessoas que desejam trabalhar com desenvolvimento de sistemas e programas, ela permite definir a sequência lógica para o desenvolvimento. Então o que é lógica? Lógica de programação é a técnica de encadear pensamentos para atingir determinado objetivo. Sequência Lógica Estes pensamentos, podem ser descritos como uma sequência de instruções, que devem ser seguidas para se cumprir uma determinada tarefa. Sequência Lógica são passos executados até atingir um objetivo ou solução de um problema. Instruções 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 sequencial lógica. 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.
  7. 7. ALGORITMOS E ESTRUTURAS DE DADOS Prof. Gelber Xavier de Freitas www.pronatecvja.blogspot.com.br Página 7 de 101 Conceitos de Algoritmos • É um conjunto de instruções ou comandos que, quando executados, levam a um conjunto finito de ações. • É um conjunto ordenado de instruções que quando seguidas desempenham uma tarefa especifica. Características • É rigoroso em sua definição • Legibilidade • Portabilidade Um algoritmo é formalmente uma sequência finita de passos que levam a execução de uma tarefa. Podemos pensar em algoritmo como uma receita, uma sequê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 sequê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
  8. 8. ALGORITMOS E ESTRUTURAS DE DADOS Prof. Gelber Xavier de Freitas www.pronatecvja.blogspot.com.br Página 8 de 101 Desenvolvendo algoritmos Pseudocódigo 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, ou seja, quando formos programar em uma linguagem, 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. Regras para construção do Algoritmo Para escrever um algoritmo precisamos descrever a sequê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 • Usar frases curtas e simples • Ser objetivo • Procurar usar palavras que não tenham sentido dúbio Fases No capítulo anterior vimos que ALGORITMO é uma sequência lógica de instruções que podem ser executadas. É importante ressaltar que qualquer tarefa que siga determinado padrão pode ser descrita por um algoritmo, como por exemplo: COMO FAZER ARROZ DOCE ou então CALCULAR O SALDO FINANCEIRO DE UM ESTOQUE Entretanto ao montar um algoritmo, precisamos primeiro dividir o problema apresentado em três fases fundamentais.
  9. 9. ALGORITMOS E ESTRUTURAS DE DADOS Prof. Gelber Xavier de Freitas www.pronatecvja.blogspot.com.br Página 9 de 101 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 Analogia com o homem Exemplo de Algoritmo Imagine o seguinte problema: Calcular a média final dos alunos da 3ª Série. Os alunos realizarão quatro provas: P1, P2, P3 e P4. Onde: Média Final = P1 + P2 + P3 + P4 4 Para montar o algoritmo proposto, faremos três perguntas: a) Quais são os dados de entrada? R: Os dados de entrada são P1, P2, P3 e P4 b) Qual será o processamento a ser utilizado? R: O procedimento será somar todos os dados de entrada e dividi-los por 4 (quatro) P1 + P2 + P3 + P4 4 c) Quais serão os dados de saída? R: O dado de saída será a média final
  10. 10. ALGORITMOS E ESTRUTURAS DE DADOS Prof. Gelber Xavier de Freitas www.pronatecvja.blogspot.com.br Página 10 de 101 Algoritmo Receba a nota da prova1 Receba a nota de prova2 Receba a nota de prova3 Receba a nota da prova4 Some todas as notas e divida o resultado por 4 Mostre o resultado da divisão Teste de Mesa Após desenvolver um algoritmo ele deverá sempre ser testado. Este teste é chamado de TESTE DE MESA, que significa, seguir as instruções do algoritmo de maneira precisa para verificar se o procedimento utilizado está correto ou não. Veja o exemplo: Nota da Prova 1 Nota da Prova 2 Nota da Prova 3 Nota da Prova 4 Utilize a tabela abaixo: P1 P2 P3 P4 Média Programa. É uma adaptação ou codificação de um algoritmo atendendo as regras de uma linguagem especifica. Os programas de computadores nada mais são do que algoritmos escritos numa linguagem de computador (Pascal, C, Cobol, Fortran, Visual Basic entre outras) e que são interpretados e executados por uma máquina, no caso um computador. Notem que dada esta interpretação rigorosa, um programa é por natureza muito específico e rígido em relação aos algoritmos da vida real.
  11. 11. ALGORITMOS E ESTRUTURAS DE DADOS Prof. Gelber Xavier de Freitas www.pronatecvja.blogspot.com.br Página 11 de 101 Estrutura Básica de um Algoritmo Um Algoritmo é normalmente dividido em 2 partes: • A Primeira parte é aonde será declaradas tudo o que é necessário para a execução do algoritmo. Esta parte vai desde a palavra INICIO até a Palavra PROCEDA. • A segunda parte é aonde serão colocados os comandos que serão executados pelo Algoritmo. Esta parte se inicia com a Palavra PROCEDA e vai até a palavra FIM. Exemplo: INICIO Primeira Parte PROCEDA Segunda Parte FIM. É algo muito parecido com uma receita de bolo, aonde primeiro colocamos os ingredientes, e depois colocamos o modo de preparo, aonde detalhamos os procedimentos necessários para o preparo da receita. A única diferença é que no algoritmo procuramos fazer a “receita” de acordo com uma linguagem especifica. O uso desta linguagem evita que sejam feitas interpretações diferentes da mesma sentença como veremos a seguir: Problemas de Narrativa: Utilização do Não, somente, mas, e/ou, A menos que: • Conforme as palavra utilizadas para descrever uma função, poderão surgir interpretações diversas como nos exemplos abaixo: • “Somar A e B a menos que A seja menor que B aonde neste caso subtrair A de B” • “Somar A e B , entretanto se a for menor que B a resposta será a diferença entre A e B” • “Somar A e B mas subtrair A de B quando A for menor que B” • “O Total é a soma de A e B , somente quando A for menor é que a diferença deve ser utilizada no total” Até , acima, abaixo: • “Abaixo de 20 unidades não há desconto, acima de 20 unidades da direito a 5% de desconto” • O que acontece com exatamente vinte unidades?
  12. 12. ALGORITMOS E ESTRUTURAS DE DADOS Prof. Gelber Xavier de Freitas www.pronatecvja.blogspot.com.br Página 12 de 101 Para solucionar este problema utilizar os operadores relacionais: Ambiguidade do E/OU “Clientes regulares que adquirirem mais de 1 Milhão e que tem um bom histórico de pagamento ou que estão conosco a mais de 20 anos devem receber tratamento especial” Dependendo da entonação da frase podem surgir interpretações diferentes.  Adjetivos indefinidos:  O que é um bom Histórico?  O que é um cliente regular?  A frase “bom histórico” implica na existência de um Mau histórico, ambos deverão ser definidos? Como pode ser visto acima a utilização da linguagem coloquial pode gerar diversas interpretações, e também muitas dúvidas. Desta forma faz-se necessário a utilização de uma linguagem mais próxima a lógica dos computadores. E também, com uma linguagem bem parecida com as linguagens de programação, fica mais fácil a transformação do algoritmo em um programa. O Algoritmo é então um intermediário entre a linguagem coloquial utilizada normalmente, e as linguagens de programação em outras palavras “Portugol”
  13. 13. ALGORITMOS E ESTRUTURAS DE DADOS Prof. Gelber Xavier de Freitas www.pronatecvja.blogspot.com.br Página 13 de 101 Problemas de Interpretação: Itens fundamentais: Diagrama de Bloco O que é um diagrama de bloco? O diagrama de blocos é uma forma padronizada e eficaz para representar os passos lógicos de um determinado processamento. Com o diagrama podemos definir uma sequência de símbolos, com significado bem definido, portanto, sua principal função é a de facilitar a visualização dos passos de um processamento.
  14. 14. ALGORITMOS E ESTRUTURAS DE DADOS Prof. Gelber Xavier de Freitas www.pronatecvja.blogspot.com.br Página 14 de 101 Simbologia Existem diversos símbolos em um diagrama de bloco. No decorrer do curso apresentaremos os mais utilizados. Veja no quadro abaixo alguns dos símbolos que iremos utilizar: Símbolo Função TERMINAL Indica o INÍCIO ou FIM de um processamento Exemplo: Início do algoritmo PROCESSAMENTO Processamento em geral Exemplo: Calculo de dois números ENTRADA DE DADO MANUAL Indica entrada de dados através do Teclado Exemplo: Digite a nota da prova 1 EXIBIR Mostra informações ou resultados Exemplo: Mostre o resultado do calculo Dentro do símbolo sempre terá algo escrito, pois somente os símbolos não nos dizem nada. Veja no exemplo a seguir: Exemplos de Diagrama de Bloco
  15. 15. ALGORITMOS E ESTRUTURAS DE DADOS Prof. Gelber Xavier de Freitas www.pronatecvja.blogspot.com.br Página 15 de 101 “CHUPAR UMA BALA” “CALCULAR A MÉDIA DE 4 NOTAS CHUPAR A BALA Veja que no exemplo da bala seguimos uma sequência lógica somente com informações diretas, já no segundo exemplo da média utilizamos cálculo e exibimos o resultado do mesmo. Para que possamos entender e desenvolver algoritmos vamos precisar de alguns conceitos básicos: Constantes, Variáveis e Tipos de Dados Constantes Constante é um determinado valor fixo que não se modifica ao longo do tempo, durante a execução de um programa. Conforme o seu tipo, a constante é classificada como sendo numérica, lógica e literal. Exemplo de constantes: N1+N2+N3 INÍCIO PEGAR A BALA RETIRAR O PAPEL INÍCIO Receber n1 Receber n2 Receber n3 Receber n4 FIM Calcular Media=(n1+n2+n3+n4) / 4 Média JOGAR O PAPEL NO LIXO FIM 3 CONSTANTE
  16. 16. ALGORITMOS E ESTRUTURAS DE DADOS Prof. Gelber Xavier de Freitas www.pronatecvja.blogspot.com.br Página 16 de 101 Variáveis Variável é a representação simbólica dos elementos de um certo conjunto. Cada variável corresponde a uma posição de memória, cujo conteúdo pode ser alterado ao longo do tempo durante a execução de um programa. Embora uma variável possa assumir diferentes valores, ela só pode armazenar um valor a cada instante. Uma variável corresponde a uma área de memória, cujo conteúdo varia durante a execução do algoritmo. Devemos encarar uma variável como o endereço de memória aonde está guardada uma determinada informação. Esta informação pode ser de diversões tipos, mas somente um tipo de cada vez. O algoritmo poderá alterar este valor, de acordo com as suas instruções, quantas vezes forem necessárias, por isto elas são chamadas variáveis. Exemplos de variáveis VARIÁVEL VARIÁVEIS Total = Produto * Quantidade Tipos de Variáveis As variáveis e as constantes podem ser basicamente de quatro tipos: Numéricas, caracteres, Alfanuméricas ou lógicas. Numéricas Específicas para armazenamento de números, que posteriormente poderão ser utilizados para cálculos. Podem ser ainda classificadas como Inteiras ou Reais. As variáveis do tipo inteiro são para armazenamento de números inteiros e as Reais são para o armazenamento de números que possuam casas decimais. Caracteres Específicas para armazenamento de conjunto de caracteres que não contenham números (literais). Ex: nomes. Alfanuméricas Específicas para dados que contenham letras e/ou números. Pode em determinados momentos conter somente dados numéricos ou somente literais. Se usado somente para armazenamento de números, não poderá ser utilizada para operações matemáticas. NOME = "JOSE" IDADE = 50 CONTEÚDO DA VARIÁVEL
  17. 17. ALGORITMOS E ESTRUTURAS DE DADOS Prof. Gelber Xavier de Freitas www.pronatecvja.blogspot.com.br Página 17 de 101 Lógicas Armazenam somente dados lógicos que podem ser Verdadeiro ou Falso. Declaração de Variáveis As variáveis só podem armazenar valores de um mesmo tipo, de maneira que também são classificadas como sendo numéricas, lógicas e literais. Nomes de Variáveis Para que possamos declarar uma variável devemos dar-lhe um nome. Dentro do algoritmo, toda vez que eu precisar usar o valor armazenado nesta variável, eu vou referencia-la pelo seu nome. Regras para Nomes de Variáveis: • Os nomes das variáveis devem representar o que será guardado dentro dela • O primeiro caractere de um nome deverá ser sempre alfabético • Não podem ser colocados espaços em branco no nome de variáveis, usar o UNDERSCORE. • A declaração de uma variável é feita no algoritmo informando o seu nome, seguido pelo seu tipo, separados por ":" Tipos de Dados Primitivos São os tipos de dados mais comuns, e que podem dar origem a outros tipos de dados mais complexos. Inteiro Números inteiros maiores ou menores que 0 representados por 2 bytes, em uma faixa que vai de - 32.768 até 32.767. Declaração: NUMERO: INTEIRO No exemplo acima foi declarada uma variável do tipo INTEIRO que atende pelo nome de "NUMERO" Real Conjunto dos números racionais. Representado por 4 bytes. Declaração: SALÁRIO: REAL No exemplo acima foi declarada uma variável do tipo REAL com o nome de "SALÁRIO".
  18. 18. ALGORITMOS E ESTRUTURAS DE DADOS Prof. Gelber Xavier de Freitas www.pronatecvja.blogspot.com.br Página 18 de 101 Caractere (Char) Conjunto dos caracteres alfanuméricos (números, letras, símbolos, etc.). Representado por apenas um byte. Note que as variáveis do tipo CHAR podem armazenar apenas 1 caractere. Declaração: SEXO: CHAR No exemplo acima foi declarada uma variável do tipo CHAR com o nome "SEXO" Lógico Quando assume apenas 2 valores: • FALSO • VERDADEIRO Declaração FLAG: LÓGICO No exemplo acima, foi declarada uma variável do tipo LÓGICO com o nome de FLAG. Agregados de Dados Os agregados são estruturas formadas a partir dos tipos de dados primitivos, e que permitem o processamento de informações mais aprimoradas, são eles: Cadeia de Caracteres (String) É um agradado de dados homogêneo, ou seja, usa somente um tipo primitivo, aonde todos os elementos são do tipo caractere (CHAR) Declaração: NOME_CLI: STRING [40] No exemplo acima foi declarada uma variável do tipo STRING, que poderá ter no máximo 40 posições e o seu nome é NOME_CLI Matriz É um agregado de dados do tipo homogêneo, aonde todos os elementos podem ser de qualquer tipo, desde que todos os componentes sejam do mesmo tipo. Declaração: NUMERO: MATRIZ [4, 5] DE INTEIRO
  19. 19. ALGORITMOS E ESTRUTURAS DE DADOS Prof. Gelber Xavier de Freitas www.pronatecvja.blogspot.com.br Página 19 de 101 No exemplo acima, foi declarada uma MATRIZ com 4 colunas e 5 linhas, aonde todos os elementos serão do tipo INTEIRO. Note que o primeiro número sempre representa o número máximo de colunas que uma matriz pode ter, e o segundo número representa o número máximo de linha que uma matriz pode ter. Note que podem existir matrizes unidimensionais, os chamados vetores. Neste caso a matriz possui apenas linhas ou colunas. Neste caso não será necessário informar a coluna e a linha, mas somente um número, não importando se ele representa a quantidade de colunas ou linhas. Registros É o único agregado de dados heterogêneo, ou seja pode combinar dados de diferentes tipos em uma única estrutura. Declaração: REG_DADOS: REGISTRO NOME : STRING [ 40 ] SEXO : CHAR IDADE : INTEIRO SALARIO : REAL FIM_REGISTRO Note que o REGISTRO é formado por 4 CAMPOS, e cada campo é de um tipo diferente, entretanto, todos os campos fazem parte de uma única estrutura, que atende pelo nome de REG_DADOS. Além das variáveis existem outros elementos que irão fazer parte dos algoritmos. Declaração de Variáveis: Tipos de Dados Todos os dados processados por um algoritmo devem ser previamente definidos, isto porque o computador precisa saber previamente o tipo e o tamanho da informação que será processada. Como já foi visto anteriormente, nós vamos armazenar estes dados dentro de variáveis, para que possamos alterar o seu valor durante a execução do algoritmo. Sendo assim, cada variável deverá ser declarada previamente e com um tipo já definido que deverá ser um dos tipos abaixo, ou uma de suas variações que serão vistas posteriormente. Exercícios Declare variáveis que sejam capazes de armazenas as seguintes informações • Sua Idade
  20. 20. ALGORITMOS E ESTRUTURAS DE DADOS Prof. Gelber Xavier de Freitas www.pronatecvja.blogspot.com.br Página 20 de 101 • A Média entre 2 números • O seu Salário • Seu nome, número, nota do primeiro bimestre, nota do segundo bimestre e media final • Os 12 meses do ano (Só o número do mês) com os sus respetivos números de dias Variáveis: Nome; String; Media: real Salario: real Comentários. O comentário é um texto delimitado por chaves, cuja função é explicar com mais clareza alguma parte especifica do algoritmo. O comentário é um texto que não deve ser levado em consideração na hora de executar o algoritmo, ele serve apenas para dar informações adicionais a leitura do algoritmo. Operadores Os operadores são meios pelo qual incrementamos, decrementamos, comparamos e avaliamos dados dentro do computador. Temos três tipos de operadores:  Operadores Aritméticos  Operadores Relacionais  Operadores Lógicos Operadores Aritméticos Os operadores aritméticos são os utilizados para obter resultados numéricos. Além da adição, subtração, multiplicação e divisão, podem utilizar também o operador para exponenciação. Os símbolos para os operadores aritméticos são: OPERAÇÃO SÍMBOLO Adição + Subtração - Multiplicação * Divisão / Exponenciação ** Hierarquia das Operações Aritméticas
  21. 21. ALGORITMOS E ESTRUTURAS DE DADOS Prof. Gelber Xavier de Freitas www.pronatecvja.blogspot.com.br Página 21 de 101 1 º ( ) Parênteses 2 º Exponenciação 3 º Multiplicação, divisão (o que aparecer primeiro) 4 º + ou – (o que aparecer primeiro) Exemplo TOTAL = PRECO * QUANTIDADE 1 + 7 * 2 ** 2 –1 = 28 3 * (1 – 2) + 4 * 2 = 5 Operadores Relacionais Os operadores relacionais são utilizados para comparar String de caracteres e números. Os valores a serem comparados podem ser caracteres ou variáveis. Estes operadores sempre retornam valores lógicos (verdadeiro ou falso/ True ou False) Para estabelecer prioridades no que diz respeito a qual operação executar primeiro, utilize os parênteses. Os operadores relacionais são: Descrição Símbolo Igual a = Diferente de <> ou # Maior que > Menor que < Maior ou igual a >= Menor ou igual a <= Exemplo: Tendo duas variáveis A = 5 e B = 3 Os resultados das expressões seriam: Expressão Resultado A = B Falso A <> B Verdadeiro A > B Verdadeiro A < B Falso A >= B Verdadeiro A <= B Falso
  22. 22. ALGORITMOS E ESTRUTURAS DE DADOS Prof. Gelber Xavier de Freitas www.pronatecvja.blogspot.com.br Página 22 de 101 Símbolo Utilizado para comparação entre expressões Campo com Constante Operadores Lógicos Os operadores lógicos servem para combinar resultados de expressões, retornando se o resultado final é verdadeiro ou falso. Os operadores lógicos são: E AND OU OR NÃO NOT E / AND Uma expressão AND (E) é verdadeira se todas as condições forem verdadeiras OR/OU Uma expressão OR (OU) é verdadeira se pelo menos uma condição for verdadeira NOT Um expressão NOT (NÃO) inverte o valor da expressão ou condição, se verdadeira inverte para falsa e vice-versa. A tabela abaixo mostra todos os valores possíveis criados pelos três operadores lógicos (AND, OR e NOT) 1º Valor Operador 2º Valor Resultado T AND T T T AND F F F AND T F F AND F F T OR T T T OR F T F OR T T F OR F F T NOT F F NOT T Codigo=Codant Sim Não Campo com Campo Codigo>1000 Não Numérica Nome="JOSE” Sim Não Campo com Constante Alfanumérica Sim
  23. 23. ALGORITMOS E ESTRUTURAS DE DADOS Prof. Gelber Xavier de Freitas www.pronatecvja.blogspot.com.br Página 23 de 101 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 AND B > C Falso A <> B OR B < C Verdadeiro A > B NOT Verdadeiro A < B AND B > C Verdadeiro A >= B OR B = C Falso A <= B NOT Falso EXERCÍCIOS 1) Tendo as variáveis SALARIO, IR e SALLIQ, e considerando os valores abaixo. Informe se as expressões são verdadeiras ou falsas. SALARIO IR SALLIQ EXPRESSÃO V ou F 100,00 0,00 100 (SALLIQ >= 100,00) 200,00 10,00 190,00 (SALLIQ < 190,00) 300,00 15,00 285,00 SALLIQ = SALARIO - IR 2) Sabendo que A=3, B=7 e C=4, informe se as expressões abaixo são verdadeiras ou falsas. a) (A+C) > B ( ) b) B >= (A + 2) ( ) c) C = (B –A) ( ) d) (B + A) <= C ( ) e) (C+A) > B ( ) 3) Sabendo que A=5, B=4 e C=3 e D=6, informe se as expressões abaixo são verdadeiras ou falsas. a) (A > C) AND (C <= D) ( ) b) (A+B) > 10 OR (A+B) = (C+D) ( ) c) (A>=C) AND (D >= C) ( )
  24. 24. ALGORITMOS E ESTRUTURAS DE DADOS Prof. Gelber Xavier de Freitas www.pronatecvja.blogspot.com.br Página 24 de 101 Operações Lógicas Operações Lógicas são utilizadas quando se torna necessário tomar decisões em um diagrama de bloco. Num diagrama de bloco, toda decisão terá sempre como resposta o resultado VERDADEIRO ou FALSO. Como no exemplo do algoritmo “CHUPAR UMA BALA”. Imaginemos que algumas pessoas não gostem de chupar bala de Morango, neste caso teremos que modificar o algoritmo para: “Chupar uma bala”.  Pegar a bala  A bala é de morango?  Se sim, não chupe a bala  Se não, continue com o algoritmo  Retirar o papel  Chupar a bala  Jogar o papel no lixo Exemplo: Algoritmo “Chupar Bala” utilizando diagrama de Blocos INÍCIO Pegar a Bala É de Morango NãoSim Retirar o Papel Chupar a Bala Jogar o papel no lixo FIM Chupar a Não Chupar a bala
  25. 25. ALGORITMOS E ESTRUTURAS DE DADOS Prof. Gelber Xavier de Freitas www.pronatecvja.blogspot.com.br Página 25 de 101 EXERCÍCIOS 1. Elabore um diagrama de blocos que leia um número. Se positivo armazene-o em A, se for negativo, em B. No final mostrar o resultado 2. Ler um número e verificar se ele é par ou ímpar. Quando for par armazenar esse valor em P e quando for ímpar armazená-lo em I. Exibir P e I no final do processamento. 3. Construa um diagrama de blocos para ler uma variável numérica N e imprimi-la somente se a mesma for maior que 100, caso contrário imprimi-la com o valor zero 4. Tendo como dados de entrada a altura e o sexo de uma pessoa, construa um algoritmo que calcule seu peso ideal, utilizando as seguintes fórmulas: Para homens: (72.7*h) - 58 Para mulheres: (62.1*h) - 44.7 (h = altura) 5. Faça um teste de mesa do diagrama apresentado abaixo, de acordo com os dados fornecidos: INÍCIO LER SALBASE LER GRATIF SALBRUTO = SALBASE + GRATIF SALBRUTO < 1000 IIR = SALBRUTO * (15/100) IR = SALBRUTO * (20 / 100) SALLIQ = SALBRUTO - IR SALLIQ FIM Sim m Não
  26. 26. ALGORITMOS E ESTRUTURAS DE DADOS Prof. Gelber Xavier de Freitas www.pronatecvja.blogspot.com.br Página 26 de 101 Teste o diagrama com os dados abaixo SALBASE GRATIF 3.000,00 1.200,00 1.200,00 400,00 500,00 100,00 Memória SALBASE GRATIF SALBRUTO IR SALLIQ Dados de Saída SALLIQ Elabore um algoritmo levando-se em conta o diagrama apresentado:
  27. 27. ALGORITMOS E ESTRUTURAS DE DADOS Prof. Gelber Xavier de Freitas www.pronatecvja.blogspot.com.br Página 27 de 101 Comando de Atribuição. É o comando usado para atribuir um valor a uma variável. A natureza deste valor deve ser compatível com o tipo da variável declarada. O sinal utilizado para indicar uma atribuição é o: = (dois pontos igual) É importante neste ponto esclarecer com é que funciona o processo de atribuição: Caso eu esteja atribuindo para uma variável o resultado de uma expressão, o algoritmo primeiro deverá resolver a expressão para depois fazer a atribuição. Exemplo A: = 3 + (2 * 6) MOSTRE ( A ) {RESULTADO 15} O resultado deste comando será 15, porque o algoritmo primeiro resolve a expressão e depois guardou o valor conseguido na variável especificada (A). Também podem ser utilizados os valores armazenados em outras variáveis, para se fazer uma atribuição: A: = 5 B : = 3 C: = (A + B) / 2 MOSTRE (C) {RESULTADO 4} No final desta sequência de comandos o valor dentro da variável c será 4, pois o algoritmo utilizou o valor das variáveis A e B para calculara o valor da expressão e depois o armazenou em C. Também pode ser utilizado o valor da própria variável que receberá a atribuição: A: = 7 B: = 5 C : =9 C: = (A + B + C) / 3 MOSTRE (C) {RESULTADO 7} No final desta sequência o valor de C será 7 , pois o algoritmo primeiro utiliza o valor 9 armazenado em C para resolver a expressão, e depois de resolvida, o novo valor será armazenado em C , apagando o valor anterior. Isto fica mais claro no exemplo abaixo: CONTADOR : = 1 CONTADOR : = CONTADOR + 1 MOSTRE (CONTADOR) { RESULTADO 2} A variável CONTADOR foi inicializada com o valor 1, e logo abaixo este valor foi utilizado em uma expressão, e o resultado desta expressão foi armazenado dentro da própria variável CONTADOR. Mas é importante notar que o algoritmo primeiro utilizou o valor 1 para resolver a expressão, e somente após ter a resposta é que ele alterou o valor da variável CONTADOR. Na verdade eu apenas somei 1 ao valor que já existia na variável.
  28. 28. ALGORITMOS E ESTRUTURAS DE DADOS Prof. Gelber Xavier de Freitas www.pronatecvja.blogspot.com.br Página 28 de 101 Comandos de Entrada E Saída Um comando de entrada permite a entrada de dados do meio externo para o computador, e um comando de saída permite a saída de dados do computador para o meio externo. São eles: Comando Leia Permite que o usuário entre com um valor, que será armazenado em uma variável e poderá ser utilizado pelo algoritmo. O comando Leia interrompe a execução do algoritmo até que o usuário digite o valor solicitado, quando então, armazena este valor na variável especificada no comando e dá prosseguimento a execução do Algoritmo. O comando Leia não permite que se faça uma crítica dos valores digitados, por isso, se for necessário esta crítica, ela deverá ser implementada no próprio algoritmo. A nível de Algoritmo, não será necessário implementar este tipo de crítica. Sintaxe: Leia (Variável) Onde: • Variável é o nome da variável aonde o valor digitado pelo usuário será armazenado. Note que o valor digitado deverá ser do mesmo tipo da variável. Comando Mostre: O comando Mostre permite que sejam mostrados para o usuário os valores armazenados em variáveis ou então expressões literais. Uma vez que o algoritmo tenha cumprido as suas funções, o comando Mostre é a forma de mostrar ao usuário os resultados do processamento. Além disso, o comando Mostre também pode ser utilizado para mostrar mensagens que ajudaram o usuário na utilização do algoritmo. Sintaxe: Mostre (Variável) Mostre (Expressão Literal) Onde: Variável é o nome da variável cujo valor se deseja mostrar Expressão Literal é uma frase ou expressão que se deseja mostra para o usuário. Ela deve estar entre Aspas (““)
  29. 29. ALGORITMOS E ESTRUTURAS DE DADOS Prof. Gelber Xavier de Freitas www.pronatecvja.blogspot.com.br Página 29 de 101 Expressões Literais As expressões literais são frases ou outro tipo de expressões que são colocadas no algoritmo com mensagens ou para atribuição em variáveis do tipo STRING ou CHAR. Estas expressões são identificadas por estarem entre aspas ( " " ). É importante notar que nada impede que um número seja colocado dentro de uma expressão literal, ou em uma variável STRING ou CHAR, mas note que este tipo de número não vai possuir o valor numérico, ou seja, este número não vai poder ser usado para realizar operações aritméticas. Para este caso nós devemos utilizar números armazenados em variáveis do tipo inteiro ou real. Exemplo: INICIO NUM : INTEIRO X : STRING [ 6 ] PROCEDA NUM: = 999999 X : = "999999" NUM : = NUM + 1 MOSTRE (NUM) { RESULTADO IGUAL A 1000000} X: = X + 1 { ESTE COMANDO É INVALIDO JÁ QUE X É DO TIPO STRING} MOSTRE (X) {RESULTADO IGUAL A "999999"} FIM Note que no exemplo acima eu declarei 2 variáveis, uma do tipo INTEIRO e outra do tipo STRING, e que eu atribui para ambas o valor 999999, mas no caso da variável do tipo STRING eu usei as aspas para indicar que este valor é uma expressão literal, e que por isso não tem valor numérico. Este tipo de expressão é muito útil no caso de termos que armazenar informações como endereço ou telefones, que exigem a presença de números e letras. No caso da variável do tipo INTEIRO o valor 999999 foi atribuído sem as aspas, já que a eu estou utilizando o valor numérico, e poderei usar este número em qualquer operação aritmética. Estruturas de Controle. São as formas como serão executados os comandos do algoritmo, são elas. Estrutura Sequencial É a mais simples, eficiente e legível das estruturas de controle. Estabelece que uma declaração passa a ser analisada imediatamente após o termino de sua predecessora. Um algoritmo se inicia com a palavra INICIO, após o que, aparecem as declarações de variáveis, seguidas de comandos que, se não houverem indicações ao contrário, serão executados um depois do outro em sequência. A finalização do algoritmo é feita com a palavra FIM.
  30. 30. ALGORITMOS E ESTRUTURAS DE DADOS Prof. Gelber Xavier de Freitas www.pronatecvja.blogspot.com.br Página 30 de 101 Exemplo INICIO A,B : INTEIRO MEDIA : REAL PROCEDA MEDIA {CALCULO DA MEDIA ENTRE 2 NUMEROS} LEIA ( A ) LEIA ( B ) MEDIA : = (A + B ) / 2 MOSTRE ( MEDIA ) FIM. Estruturas de Seleção São usadas quando é necessário fazer uma opção entre 2 ou mais caminhos sendo que o fluxo do algoritmo é desviado segundo uma condição lógico relacional. Esta estrutura subordina a execução de um comando, ou bloco de comandos, a veracidade ou não de uma condição lógico relacional. Os comandos utilizados para implementar a estrutura de seleção são: • SE • SE SENÂO • CASO Comando SE O comando SE especifica se um comando, ou um conjunto de comando será ou não executado, de acordo com uma condição lógico relacional. Sintaxe: SE <CONDIÇÃO> BLOCO DE COMANDOS FIM_SE O comando SE acima especifica que o bloco de comandos que está entre o início do comando até a palavra FIM_SE somente será executado se <CONDIÇÃO> for verdadeira, caso a condição for falsa, o algoritmo vai prosseguir normalmente após a palavra FIM_SE.
  31. 31. ALGORITMOS E ESTRUTURAS DE DADOS Prof. Gelber Xavier de Freitas www.pronatecvja.blogspot.com.br Página 31 de 101 Comando SE SENÂO O comando SE ainda permite que seja associado a ele um segunda opção, o comando SENÃO. O comando senão pode ou não ser associado ao comando SE, uma vez associado, ele especifica que os comandos a ele subordinados só serão executado no caso da condição lógico relaciona for falsa, ou seja, só será executado caso os comandos associados ao comando SE não forem executados. Sintaxe: SE < CONDIÇÃO > BLOCO DE COMANDOS A SENÃO BLOCO DE COMANDOS B FIM_SE No comando acima, o bloco de comandos A só será executado no caso da condição lógico relaciona for verdadeira, e o bloco de comando B só será executado no caso da condição lógico relacional for falsa. De qualquer forma, após executar tanto o bloco A como o bloco B o algoritmo seguirá normalmente a partir da palavra FIM_SE. Comando CASO É o comando que permite a opção entre várias alternativas de acordo com a verificação de uma condição lógico relacional. Sintaxe: CASO MES = 1 SALARIO : = SALARIO * 1.53 MES = 2 SALARIO : = SALARIO * 1.72 MES = 3 SALARIO : = SALARIO * 1.83 FIM_CASO. Note que no comando CASO, a mesma variável será testada com várias condições, caso uma delas seja atendida, o comando, ou bloco de comandos associados a esta condição será executado, e logo após o algoritmo seguirá normalmente após a palavra FIM_CASO.
  32. 32. ALGORITMOS E ESTRUTURAS DE DADOS Prof. Gelber Xavier de Freitas www.pronatecvja.blogspot.com.br Página 32 de 101 No caso de nenhuma condição ser verdadeira, o algoritmo seguirá normalmente após a palavra FIM_CASO sem executar nenhum comando associado ao comando CASO. O comando Caso é Equivalente a uma sequência de comando SE SENÂO Embutimento Uma estrutura se seleção pode ter uma outra estrutura de seleção dentro dela, e assim por diante. Neste caso nós podemos colocar um comando SE subordinado a outro comando SE, ou um comando SE subordinado a um comando CASO, ou vice e versa, sem limite de encadeamento. É importante ressaltar que para formação das condições dos comandos de seleção serão utilizados operadores relacionais associados ou não a operadores lógicos. Exercício 02: Monte as estruturas de seleção necessárias para representar as seguintes situações: • Clientes regulares que adquirirem mais de 1 Milhão e que tem um bom histórico de pagamento ou que estão conosco a mais de 20 anos devem receber tratamento especial caso contrário tratamento normal. • O subsidio de um escoteiro Lobinho pode variar de acordo com o posto e com o tempo de associado da seguinte forma: • O subsidio para membros a um ano é de 25 Reais, de 35 reais para membros a dois anos, e de 50 reais para membros a mais de 2 anos, além disso cada escoteiro recebe um subsidio extra de 10 reais de obteve o posto de Lobo, 20 reais de obteve o posto de Urso, e 20 reais de obteve o posto de Leão. • Uma Loja da Cidade está oferecendo aos seus clientes as seguintes promoções: • Pagamento a vista 50% de desconto • Pagamento em cheque 40% de desconto • Pagamento com cheque pré datado 30 dias (20%) • Pagamento com cheque pré datado 30 e 60 dias (10%) • Pagamento com cheque pré datado 30 60 e 90 dias (5%) • Cartão de Credito 30% de desconto • Além disso cliente cadastrado tem um desconto de 5% adicional • Suponha que o Professor de Educação física nos pediu para pesquisar os registros dos alunos e produzir uma lista com o nome e endereço de todos os alunos e o esporte indicado para eles de acordo com as seguintes condições: • Sexo masculino com mais de 1,80 metros de altura=> Basquete • Sexo masculino entre 1,70 e 1,80=> Voleibol • Sexo feminino com mais de 1,70 => Basquete • Sexo feminino entre 1,50 e 1,70 => Voley • Ambos os sexos com menos de 1,50 => natação
  33. 33. ALGORITMOS E ESTRUTURAS DE DADOS Prof. Gelber Xavier de Freitas www.pronatecvja.blogspot.com.br Página 33 de 101 Estrutura de Decisão e Repetição Como vimos no capítulo anterior em “Operações Lógicas”, verificamos que na maioria das vezes necessitamos tomar decisões no andamento do algoritmo. Essas decisões interferem diretamente no andamento do programa. Trabalharemos com dois tipos de estrutura. A estrutura de Decisão e a estrutura de Repetição Comandos de Decisão Os comandos de decisão ou desvio fazem parte das técnicas de programação que conduzem a estruturas de programas que não são totalmente seqüenciais. Com as instruções de SALTO ou DESVIO pode-se fazer com que o programa proceda de uma ou outra maneira, de acordo com as decisões lógicas tomadas em função dos dados ou resultados anteriores. As principais estruturas de decisão são: “Se Então”, “Se então Senão” e “Caso Selecione” SE ENTÃO / IF ... THEN A estrutura de decisão “SE/IF” normalmente vem acompanhada de um comando, ou seja, se determinada condição for satisfeita pelo comando SE/IF então execute determinado comando. Imagine um algoritmo que determinado aluno somente estará aprovado se sua média for maior ou igual a 5.0, veja no exemplo de algoritmo como ficaria. SE MEDIA >= 5.0 ENTÃO ALUNO APROVADO Em diagrama de blocos ficaria assim: Em Visual Basic IF MEDIA >= 5 Then Text1 = “APROVADO” ENDIF Média >= 5.0 Aluno Aprovado Sim Não
  34. 34. ALGORITMOS E ESTRUTURAS DE DADOS Prof. Gelber Xavier de Freitas www.pronatecvja.blogspot.com.br Página 34 de 101 SE ENTÃO SENÃO / IF ... THEN ... ELSE A estrutura de decisão “SE/ENTÃO/SENÃO”, funciona exatamente como a estrutura “SE”, com apenas uma diferença, em “SE” somente podemos executar comandos caso a condição seja verdadeira, diferente de “SE/SENÃO” pois sempre um comando será executado independente da condição, ou seja, caso a condição seja “verdadeira” o comando da condição será executado, caso contrário o comando da condição “falsa” será executado Em algoritmo ficaria assim: SE MÉDIA >= 5.0 ENTÃO ALUNO APROVADO SENÃO ALUNO REPROVADO Em diagrama Em Visual Basic IF MEDIA >= 5 Then Text1 = “APROVADO” ELSE Text1 = “REPROVADO” ENDIF No exemplo acima está sendo executada uma condição que, se for verdadeira, executa o comando “APROVADO”, caso contrário executa o segundo comando “REPROVADO”. Podemos também dentro de uma mesma condição testar outras condições. Como no exemplo abaixo: Média > = 5.0 Aluno Aprovado SimNão Aluno Reprovado
  35. 35. ALGORITMOS E ESTRUTURAS DE DADOS Prof. Gelber Xavier de Freitas www.pronatecvja.blogspot.com.br Página 35 de 101 CASO SELECIONE / SELECT ... CASE A estrutura de decisão CASO/SELECIONE é utilizada para testar, na condição, uma única expressão, que produz um resultado, ou, então, o valor de uma variável, em que está armazenado um determinado conteúdo. Compara-se, então, o resultado obtido no teste com os valores fornecidos em cada cláusula “Caso”. Média >= 5.0 SimNão Aluno Reprovado Media >=7.0 Aluno Aprovado Aluno Necessita Faze r outra Avaliação Sim Não
  36. 36. ALGORITMOS E ESTRUTURAS DE DADOS Prof. Gelber Xavier de Freitas www.pronatecvja.blogspot.com.br Página 36 de 101 No exemplo do diagrama de blocos abaixo, é recebido uma variável “Op” e testado seu conteúdo, caso uma das condições seja satisfeita, é atribuído para a variável Titulo a String “Opção X”, caso contrário é atribuído a string “Opção Errada”.
  37. 37. ALGORITMOS E ESTRUTURAS DE DADOS Prof. Gelber Xavier de Freitas www.pronatecvja.blogspot.com.br Página 37 de 101 Em Visual Basic utilizamos a seguinte sequência de comandos para representar o diagrama anterior. TITULO = “”
  38. 38. ALGORITMOS E ESTRUTURAS DE DADOS Prof. Gelber Xavier de Freitas www.pronatecvja.blogspot.com.br Página 38 de 101 OP = INPUTBOX(“DIGITE A OPÇÃO”) SELECT CASE OP CASE 1 TITULO = “OPÇÃO 1” CASE 2 TITULO = “OPÇÃO 2” CASE 3 TITULO = “OPÇÃO 3” CASE 4 TITULO = “OPÇÃO 4” CASE 5 TITULO = “OPÇÃO 5” CASE ELSE TITULO = “OPÇÃO ERRADA” END SELECT LABEL1.CAPTION = TITULO EXERCÍCIOS 1) João Papo-de-Pescador, homem de bem, comprou um microcomputador para controlar o rendimento diário de seu trabalho. Toda vez que ele traz um peso de peixes maior que o estabelecido pelo regulamento de pesca do estado de São Paulo (50 quilos) deve pagar uma multa de R$ 4,00 por quilo excedente. João precisa que você faça um diagrama de blocos que leia a variável P (peso de peixes) e verifique se há excesso. Se houver, gravar na variável E (Excesso) e na variável M o valor da multa que João deverá pagar. Caso contrário mostrar tais variáveis com o conteúdo ZERO. 2) Elabore um diagrama de bloco que leia as variáveis C e N, respectivamente código e número de horas trabalhadas de um operário. E calcule o salário sabendo-se que ele ganha R$ 10,00 por hora. Quando o número de horas exceder a 50 calcule o excesso de pagamento armazenando-o na variável E, caso contrário zerar tal variável. A hora excedente de trabalho vale R$ 20,00. No final do processamento imprimir o salário total e o salário excedente. Desenvolva um diagrama que:  Leia 4 (quatro) números;  Calcule o quadrado de cada um;
  39. 39. ALGORITMOS E ESTRUTURAS DE DADOS Prof. Gelber Xavier de Freitas www.pronatecvja.blogspot.com.br Página 39 de 101  Se o valor resultante do quadrado do terceiro for >= 1000, imprima-o e finalize;  Caso contrário, imprima os valores lidos e seus respectivos quadrados. 3) Faça um diagrama de bloco que leia um número inteiro e mostre uma mensagem indicando se este número é par ou ímpar, e se é positivo ou negativo. 4) A Secretaria de Meio Ambiente que controla o índice de poluição mantém 3 grupos de indústrias que são altamente poluentes do meio ambiente. 5) O índice de poluição aceitável varia de 0,05 até 0,25. Se o índice sobe para 0,3 as indústrias do 1º grupo são intimadas a suspenderem suas atividades, se o índice crescer para 0,4 as indústrias do 1º e 2º grupo são intimadas a suspenderem suas atividades, se o índice atingir 0,5 todos os grupos devem ser notificados a paralisarem suas atividades. Faça um diagrama de bloco que leia o índice de poluição medido e emita a notificação adequada aos diferentes grupos de empresas. 6) Elabore um algoritmo que dada a idade de um nadador classifique-o em uma das seguintes categorias: Infantil A = 5 a 7 anos Infantil B = 8 a 11 anos Juvenil A = 12 a 13 anos Juvenil B = 14 a 17 anos Adultos = Maiores de 18 anos 7) Elabore um algoritmo que gera e escreve os números ímpares dos números lidos entre 100 e 200. Construa um algoritmo que leia 500 valores inteiros e positivos e: • Encontre o maior valor • Encontre o menor valor • Calcule a média dos números lidos Comandos de Repetição Utilizamos os comandos de repetição quando desejamos que um determinado conjunto de instruções ou comandos sejam executados um número definido ou indefinido de vezes, ou enquanto um determinado estado de coisas prevalecer ou até que seja alcançado. Trabalharemos com modelos de comandos de repetição: • Enquanto x, processar (Do While ...Loop); • Até que x, processar ... (Do Until ... Loop); • Processar ..., Enquanto x (Do ... Loop While); • Processar ..., Até que x (Do ... Loop Until) • Para ... Até ... Seguinte (For ... To ... Next)
  40. 40. ALGORITMOS E ESTRUTURAS DE DADOS Prof. Gelber Xavier de Freitas www.pronatecvja.blogspot.com.br Página 40 de 101 Enquanto x, Processar (Do While ... Loop) Neste caso, o bloco de operações será executado enquanto a condição x for verdadeira. O teste da condição será sempre realizado antes de qualquer operação. Enquanto a condição for verdadeira o processo se repete. Podemos utilizar essa estrutura para trabalharmos com contadores. Em diagrama de bloco a estrutura é a seguinte: Exemplo de Contador Em Visual Basic: Nr = 0 Do While Nr <= 100 Nr = Nr + 1 Loop Se ... Processar Cont. Não Sim Nr <= 100 Nr = Nr + 1 Cont. Não Sim Nr = 0 Exemplo de Até Diagrama Se ... Processar Cont. Não Sim Nr = 100 Nr = Nr + 1 Cont. Não Sim Nr = 0
  41. 41. ALGORITMOS E ESTRUTURAS DE DADOS Prof. Gelber Xavier de Freitas www.pronatecvja.blogspot.com.br Página 41 de 101 Até que x, processar ... (Do Until ... Loop) Neste caso, o bloco de operações será executado até que a condição seja satisfeita, ou seja, somente executará os comandos enquanto a condição for falsa. Em diagrama de bloco Em Visual Basic Nr = 0 Do Until Nr = 100 Nr = Nr + 1 Loop Label1.Caption = Nr Processar ..., Enquanto x (Do ... Loop While) Neste caso primeiro são executados os comandos, e somente depois é realizado o teste da condição. Se a condição for verdadeira, os comandos são executados novamente, caso seja falso é encerrado o comando DO. Em diagrama de bloco Exemplo de Até Diagrama Se ... Processar Cont. Não Sim Nr <= 100 Nr = Nr + 1 Cont. Não Sim
  42. 42. ALGORITMOS E ESTRUTURAS DE DADOS Prof. Gelber Xavier de Freitas www.pronatecvja.blogspot.com.br Página 42 de 101 Em Visual Basic Nr = 0 Do Nr = Nr + 1 Loop While Nr <= 100 Label1.Caption = Nr Processar ..., Até que x (Do ... Loop Until) Neste caso, executa-se primeiro o bloco de operações e somente depois é realizado o teste de condição. Se a condição for verdadeira, o fluxo do programa continua normalmente. Caso contrário é processado novamente os comandos antes do teste da condição. Em diagrama de Bloco Exemplo de Do .... Loop - Until Em Visual Basic nr = 0 Do nr = nr + 1 Loop Until nr >= 100 Label1.Caption = nr Exercício 01: Faça um algoritmo que determine o maior entre N números. A condição de parada é a entrada de um valor 0, ou seja, o algoritmo deve ficar calculando o maior até que a entrada seja igual a 0 (ZERO). Nr >= 100 Nr = Nr + 1 Cont. Não Sim Se ... Processar Cont. Não Sim
  43. 43. ALGORITMOS E ESTRUTURAS DE DADOS Prof. Gelber Xavier de Freitas www.pronatecvja.blogspot.com.br Página 43 de 101 Exercício 02: Uma rainha requisitou os serviços de um monge e disse-lhe que pagaria qualquer preço. O monge, necessitando de alimentos, indagou à rainha sobre o pagamento, se poderia ser feito com grãos de trigo dispostos em um tabuleiro de xadrez, de tal forma que o primeiro quadro deveria conter apenas um grão e os quadros subsequentes, o dobro do quadro anterior. A rainha achou o trabalho barato e pediu que o serviço fosse executado, sem se dar conta de que seria impossível efetuar o pagamento. Faça um algoritmo para calcular o número de grãos que o monge esperava receber. Exercício 03: Faça um algoritmo que conte de 1 a 100 e a cada múltiplo de 10 emita uma mensagem: “Múltiplo de 10”. Exercício 04: Faça um algoritmo capaz de somar todos os números inteiros compreendidos entre 1 e 10, e mostrar o resultado da soma. INICIO SOMA,CONT : INTEIROS PROCEDA SOMA CONT : = 1 SOMA : = 0 ENQUANTO CONT < = 10 SOMA : = SOMA + CONT CONT : = CONT + 1 FIM_ENQUANTO MOSTRE ( SOMA) FIM. Comando REPITA. Prescreve que os procedimentos a ele subordinados deverão ser repetidos ATÉ que uma condição lógico relacional seja verdadeira. O teste será feito no final do comando, e caso seja FALSO, os comando que estão entre o REPITA, e o FIM_REPITA, serão repetidos, e novamente será feito um teste. Quando o resultado do teste for verdadeiro, o algoritmo continua normalmente a partir da palavra FIM_REPITA. Note que sendo o teste feito no final do comando, os comando subordinados ao repita serão executados pelo menos uma vez. Sintaxe:
  44. 44. ALGORITMOS E ESTRUTURAS DE DADOS Prof. Gelber Xavier de Freitas www.pronatecvja.blogspot.com.br Página 44 de 101 Exercício 05: Idem ao exercício 03 só que utilizando o comando REPITA. INICIO SOMA,CONT : INTEIRO PROCEDA SOMA CONT: = 1 SOMA : = 0 REPITA SOMA : = SOMA + CONT CONT : = CONT + 1 ATE CONT > 10 FIM_REPITA MOSTRE ( SOMA) FIM. Comando PARA O comando PARA prescreve que os comandos a ele subordinados deverão ser repetidos, a partir de uma variável “I", inicializada pelo comando, com um incremento "J”, até que uma condição lógico relacional seja verdadeira. O teste será feito no início dos procedimentos, sendo que se na primeira comparação o resultado for verdadeiro os procedimentos não serão executados nenhuma vez. A diferença do comando PARA em relação aos outros, é que ele automaticamente incremente uma variável de controle, sendo que esta variável de controle deverá ser utilizada na formação da condição de parada do comando. O comando PARA é recomendado para situações aonde nós tenhamos um número fixo de interações, e que sejam necessários incrementos fixo. Sintaxe: PARA < VARIAVEL := VALOR INICIAL> INCREMENTO = <VALOR DO INCREMENTO> COMANDOS A SEREM REPETIDOS FIM_REPITA REPITA ATÉ < CONDIÇÃO > FALSO VERDADEIRO
  45. 45. ALGORITMOS E ESTRUTURAS DE DADOS Prof. Gelber Xavier de Freitas www.pronatecvja.blogspot.com.br Página 45 de 101 Exercício 06 Idem ao exercício 03 só que utilizando o comando PARA INICIO SOMA, CONT : INTEIRO PROCEDA SOMA SOMA : = 0 PARA CONT : = 1 INCREMENTO = 1 ATE CONTA > 10 SOMA : = SOMA + CONT FIM_PARA MOSTRE ( SOMA) FIM_PARA Regras para Codificação de Algoritmos. 1. FAÇA O ALGORITMO CERTO NA PRIMEIRA VEZ 2. NOMES DEVEM SE ASSEMELHAR AQUILO QUE REPRESENTAM 3. TODO ALGORITMO DEVE, A PARTIR DE UMA ESTRUTURA SIMPLES E FÁCIL, DAR UMA RESPOSTA ADEQUADA AO PROBLEMA QUE SE PROPÕEM 4. RESPEITE A ESTÉTICA, ESTRUTURAS SUBORDINADAS DEVEM SER ENDENTADAS 5. NUNCA ESQUEÇA A PRIMEIRA REGRA. Regras para Declaração de Variáveis: COMANDOS A SEREM REPETIDOS ATE < CONDIÇÃO> FIM_REPITA VERDADEIRO FALSO
  46. 46. ALGORITMOS E ESTRUTURAS DE DADOS Prof. Gelber Xavier de Freitas www.pronatecvja.blogspot.com.br Página 46 de 101 Umas das coisas mais difíceis de se fazer quando está no início do aprendizado de algoritmos é decidir quais as variáveis serão necessárias para o funcionamento de algoritmo. Seguem algumas regras que poderão ajudar neste problema. • O usuário vai informar alguma coisa para o algoritmo? Então se deve declarar uma variável para armazenar cada valor que será informado pelo usuário. • O algoritmo vai realizar algum cálculo? Então deveremos criar uma variável para armazenar o resultado de cada cálculo. • O algoritmo vai ter estruturas de repetição? Então devemos declarar uma variável para controlar esta estrutura de repetição. É claro que estas regras não cobrem todos os casos, mas servirão para ajudar no início do aprendizado. Exercícios Exercício 06: Faça um algoritmo para Somar todos os número inteiros compreendidos entre 2 número, sendo que: • Os dois números serão informados pelo usuário • O número inicial não poderá ser maior ou igual ao número final INICIO SOMA: INTEIRO {VARIAVEL PARA ARMAZENAR A SOMA DOS NUMEROS} NUMERO_INICIAL : INTEIRO { PARA LEITURA DO NUMERO INICIAL DA SEQÜÊNCIA} NUMERO_FINAL : INTEIRO {PARA LEITURA DO NUMERO FINAL DA SEQÜÊNCIA} CONT: INTEIRO { VARIÁVEL DE CONTROLE DO LOOP} PROCEDA CALCULA_SOMA REPITA LEIA ( NUMERO_INICIAL) {USUÁRIO INFORMA OS NÚMEROS} LEIA (NUMERO_FINAL) SE NUMERO_INICIAL > = NUMERO_FINAL MOSTRE ( "NÚMEROS INVÁLIDOS " ) { NÚMEROS INVÁLIDOS} FIM_SE ATE NUMERO_INICIAL < NUMERO_FINAL {VAI REPETIR ATE NUMERO SEJAM VÁLIDOS} SOMA : = 0 PARA CONT : = NUMERO_INICIAL INCREMENTO = 1 ATE CONTA CONT > NUMERO_FINAL SOMA : = SOMA + CONT {CALCULO DA SOMA} FIM_PARA MOSTRE ( SOMA) { MOSTRA OS RESULTADOS}. FIM. Exercício 07:
  47. 47. ALGORITMOS E ESTRUTURAS DE DADOS Prof. Gelber Xavier de Freitas www.pronatecvja.blogspot.com.br Página 47 de 101 Sendo a formula de uma equação do segundo grau: X = (-B ± SQR( B2 - 4*A*C )) / 2*A Desenvolver um algoritmo capaz de calcular as raízes de uma equação sendo que: • Os valores A, B, C serão informados pelo usuário. • O Valor de a não pode ser Zero • O algoritmo deve informar caso não existam raízes reais. INICIO A , B , C , DELTA , X1 , X2 : REAL PROCEDA EQUAÇÃO LEIA (A) SE A = 0 MOSTRE(“ESTE VALOR NÃO PODE SER ZERO”) SENÃO LEIA (B) {USUÁRIO INFORMA OS VALORES A,B,C} LEIA (C) DELTA : = B ↑ 2 - ( 4 * A * C ) SE DELTA < 0 MOSTRE ( "NÃO EXISTEM RAIZES PARA ESTE VALORES") SENÃO X1 : = (( - B + SQR (DELTA)) / ( 2*A)) X2 : = (( - B - SQR (DELTA)) / (2*A)) {CALCULO DAS RAIZES} MOSTRE (X1) MOSTRE (X2) {INFORMA OS RESULTADOS} FIM_SE FIM-SE FIM. Exercício 08: Desenvolver um algoritmo capaz de calcular a media aritmética simples de uma série de números , sendo que: • O usuário deve informar a quantidade de números da série. • Se a quantidade for zero ou negativa o algoritmo não deve aceita-la. • O usuário deve informar um por um todos os números da série. O algoritmo deve mostrar como resultado a média aritmética simples calculada através da formula: MEDIA = (X + X1 + X2+...XN) / N. INICIO SOMA: INTEIRO {PARA ARMAZENAR A SOMA DE TODOS OS NÚMEROS DIGITADOS} NUM : INTEIRO {PARA LEITURA DE CADA NUMERO INFORMADO} N: INTEIRO {A QUANTIDADE DE NÚMEROS DA SÉRIE} MEDIA : REAL {PARA O CALCULO DA MÉDIA} PROCEDA
  48. 48. ALGORITMOS E ESTRUTURAS DE DADOS Prof. Gelber Xavier de Freitas www.pronatecvja.blogspot.com.br Página 48 de 101 LEIA ( N ) { QUANTIDADE DE NÚMEROS DA SÉRIE} SE N < = 0 MOSTRE ( "NUMERO NEGATIVO") SENAO CONT : = 1 SOMA: = 0 ENQUANTO CONT < = N LEIA (NUM) SOMA : = SOMA + NUM {CALCULO DA MÉDIA} FIM_ENQUANTO MEDIA : = SOMA / N MOSTRE (MEDIA) FIM_SE FIM. Exercício 09 Desenvolver um algoritmo capaz de calcular o fatorial de um número inteiro positivo informado pelo usuário, sendo que: O número para o cálculo deve ser informado pelo usuário • O algoritmo deve informar o fatorial deste número de acordo com as regras abaixo: • O fatorial de numero negativos não existe • O fatorial de 0 é 1 • O fatorial de 1 é 1 • O fatorial de um número qualquer é da do pela seguinte formula: 5! = 5*4*3*2*1 4! = 4*3*2*1 N! = N * (N-1) * (N-2)...* 1 INICIO NUM: INTEIRO {PARA LEITURA DO NUMERO} FATORIAL : INTEIRO {PARA O CALCULO DO FATORIAL} PROCEDA FATORIAL LEIA (NUM) SE NUM < 0 MOSTRE (“NUMERO INVÁLIDO”) SENAO FATORIAL : = 1 ENQUANTO NUM > 0 FATORIAL : = FATORIAL * NUM NUM: = NUM - 1 FIM_ENQUANTO MOSTRE (FATORIAL) FIM_SE FIM. Exercício 10 Escreva um algoritmo para calcular os números harmônicos sendo que • O usuário deve informar o número para o calculo • O número informado deverá ser maior que 0
  49. 49. ALGORITMOS E ESTRUTURAS DE DADOS Prof. Gelber Xavier de Freitas www.pronatecvja.blogspot.com.br Página 49 de 101 • O cálculo do número harmônico é feito da seguinte forma: • 5H = 1 + (1/2) + (1/3)+ (1/4)+(1/5) • NH= 1+(1/2) + (1/3) ... (1/N) INICIO NUM: INTEIRO {PARA INFORMAR O NUMERO PARA CALCULO} HARMONICO: REAL {PARA CALCULO DO HARMONICO} PROCEDA LEIA (NUM) SE NUM < = 0 MOSTRE (“NUMERO INVALIDO") SENÃO HARMONICO : = 0 ENQUANTO NUM > = 1 HARMONICO : = HARMONICO + (1 / NUM) NUM : = NUM - 1 FIM_ENQUANTO MOSTRE (HARMONICO) FIM_SE FIM. Exercício 11 Escreva um algoritmo capaz de calcular a sequência de Fibonacci sendo que: • O primeiro número é sempre 0 • O segundo número é sempre 1 • Os próximos números são o resultado da soma de seus dois predecessores. Exemplo: 0,1,1,2,3,5,8,13,21,34,55,89... O algoritmo deve calcular e mostrar a sequência de Fibonacci até que o último número calculado seja maior ou igual a um limite que será informado pelo usuário. INICIO NUM:INTEIRO FIBONACCI:INTERIO ULTIMO : INTEIRO PENULTIMO:INTEIRO CONT:INTEIRO PROCEDA LEIA (NUM) SE NUM < = 0 MOSTRE ("NÃO EXISTE SEQUENCIA DE FIBONACCI") SENÃO PENULTIMO : = 0 ULTIMO: =1 MOSTRE (PENULTIMO) MOSTRE (ULTIMO) FIBONACCI : = ULTIMO + PENULTIMO ENQUANTO FIBONACCI < NUMERO MOSTRE (FIBONACCI) PENULTIMO : = ULTIMO ULTIMO : = FIBONACCI
  50. 50. ALGORITMOS E ESTRUTURAS DE DADOS Prof. Gelber Xavier de Freitas www.pronatecvja.blogspot.com.br Página 50 de 101 FIBONACCI : = ULTIMO + PENULTIMO FIM_ENQUANTO MOSTRE (FIBONACCI) FIM_SE FIM. Exercício 12 Faça um algoritmo capaz de determinar o maior número de uma sequência de 10 números que deverão ser digitados pelo usuário, e apresente o resultado ao final do processamento. Exercício 13 Faça um algoritmo capaz de calcular a média das notas de dez alunos que deverão ser informadas pelo usuário, e após o cálculo informe o número de alunos que ficou com a nota acima da média calculada. INICIO NOTAS : MATRIZ [ 10 ] DE REAL SOMA: REAL MEDIA: REAL CONT:INTEIRO ACIMA:INTEIRO PROCEDA MEDIA_10 MOSTRE (“DIGITE AS 10 MEDIAS”) CONT: =1 SOMA : = 0 ENQUANTO CONT < = 10 LEIA (NOTAS [ CONT ] ) SOMA: = SOMA + NOTAS[CONT] FIM_ENQUANTO MEDIA : = (SOMA / 10) ACIMA:=0 CONT : =1 ENQUANTO CONT < = 10 SE NOTAS [ CONT ] > MEDIA ACIMA : = ACIMA +1 FIM_SE FIM_ENQUANTO MOSTRE (“ A MEDIA DAS NOTAS FOI=>”) MOSTRE (MEDIA) MOSTRE( “ QUANTIDADE DE NOTAS ACIMA DA MEDIA”) MOSTRE (ACIMA) FIM. Exercício 14 Uma empresa de autopeças classifica os seus funcionários da seguinte forma: • Funcionário Classe A: É aquele que produziu até 100 peças por mês • Funcionário classe B: é Aquele que produziu de 101 a 200 Peças por mês • Funcionário classe C: é aquele que produziu mais de 201 peças em um mês Sendo ainda que o salário dos funcionários é calculado da seguinte forma:
  51. 51. ALGORITMOS E ESTRUTURAS DE DADOS Prof. Gelber Xavier de Freitas www.pronatecvja.blogspot.com.br Página 51 de 101 • Classe A: Um salário mínimo por mês • Classe B: Um salário mínimo mais 10 centavos por peca produzida acima de 101 pecas • Classe C: um salário mínimo mais 15 centavos por peca produzida acima de 101 peças e 20 centavos por peca produzida acima de 201 peças. Faça um algoritmo que permita a digitação de 10 nomes de funcionários, e as suas respectivas quantidades de peças produzidas no mês, e que após o último funcionário tenha sido digitado, o algoritmo deverá informar a quantidade de funcionários de cada classe, a produção total de todos os funcionários, e o total de salário pago pela empresa para todos os funcionários. Matrizes Uma matriz é um tipo de dado homogêneo, que suporta a manipulação de qualquer tipo de dado primitivo, desde que seja apenas um tipo. A matriz é uma estrutura de dados dividida em linhas e colunas. Desta forma nós podemos armazenar dentro dela diversos valores, sendo que para podermos especificar um destes valores devemos identifica-lo através do número da linha e da coluna aonde o elemento de encontra. Como se pode perceber, dependendo do número de colunas e linha de uma matriz, ele pode conter uma infinidade de informações, daí a necessidade de se especificar a linha e a coluna em que se encontram os elementos para que ele possa ser identificado. Exemplo: 1 2 3 1 2 3 4 Desta forma, cada elemento armazenado na matriz poderá ser acessado através do cruzamento de sua respectiva linha com a sua coluna. Exemplo: Na matriz acima nós temos os valores A,B,C,D,E,F,G,H,I,J,L,M, todos eles armazenados na mesma estrutura. Para que possamos acessar um item especifico qualquer nós devemos informar o número da linha e coluna. Para acessar uma letra especifica deveremos faze-lo da seguinte forma: MATRIZ [ 2 , 2 ] => A MATRIZ [ 1 , 3 ] => H MATRIZ [ 3 , 1 ] => E Note que eu sempre devo especificar primeiramente a COLUNA, e depois LINHA. Algoritmos de Manipulação de Matrizes. C F E D A B H G I L M J
  52. 52. ALGORITMOS E ESTRUTURAS DE DADOS Prof. Gelber Xavier de Freitas www.pronatecvja.blogspot.com.br Página 52 de 101 Exercício 15: Dada uma matriz 4 x 4 de inteiros faça um algoritmo que permita o preenchimento de toda a matriz com os valores digitados pelo usuário. Exercício 16: Dada a matriz 4x4 preenchida no exercício anterior, faça um algoritmo capaz de fazer a soma de todos os valores de cada coluna e apresente o resultado na tela. Exercício 17: Escreva um algoritmo capaz de calcular a soma dos elementos que se encontram abaixo da diagonal principal de uma matriz de 10x10 do tipo inteiro, que deverá ser digitada pelo usuário, e apresentar o resultado no final do processamento. Exercício 18: Faça um algoritmo capaz de somar todos os valores de uma mesma linha de todas as linhas de uma matriz 4X5 do tipo inteiro, que deverá ser digitadas pelo usuário, e apresentar o resultado da soma de cada linha para o usuário. Exercício 19: Dada uma matriz de 4x4 do tipo inteiro que deverá ser preenchida pelo usuário, faça um algoritmo capaz de criar uma nova matriz com as mesmas dimensões, baseada na primeira cujos elementos deve obedecer as seguintes regras: • Quando o número da coluna for maior que o número da linha, o elemento deverá ser multiplicado pelo valor da coluna e colocado na mesma posição na nova matriz • Quando o número da linha for maior que o da coluna, o elemento deverá ser multiplicado pelo número da linha e colocado na mesma posição na nova matriz. • Quando o número da coluna for igual ao da linha, o elemento deverá ser multiplicado por 10 e colocado na mesma posição na nova matriz. Após o processamento o algoritmo deverá mostra a nova matriz elemento a elemento para o usuário. Exercício 20: Quadrado Mágico. 15 15 15 15 15
  53. 53. ALGORITMOS E ESTRUTURAS DE DADOS Prof. Gelber Xavier de Freitas www.pronatecvja.blogspot.com.br Página 53 de 101 15 15 15 15 15 15 15 15 15 15 15 Fazer um algoritmo capaz de colocar em uma matriz quadrada (aonde a quantidade de linhas é igual a quantidade de colunas) números inteiros, começando pelo 1 até o último número inteiro necessário para preencher todas as casas da matriz (sem pular nenhum), de forma que a soma de todos os elementos de uma linha qualquer seja igual a soma de todos os elementos de uma coluna qualquer, inclusive também deverá ser igual a soma das diagonais da matriz. REGRAS: 1. Aceitar a ordem da matriz. (deve ser ímpar) 2. O primeiro número é colocado na primeira linha e na coluna central 3. Repetir até que o último número colocado seja maior que o quebrado de ordem da matriz: • Subtrair 1 da coluna • Subtrair 1 da linha • Se a linha for igual a zero então a linha passa a ser a ordem da matriz • Se a coluna for igual a zero então a coluna passa a ser a ordem da matriz • Se a posição estiver ocupada • A linha passa a ser igual a linha anterior +1 • A coluna passa a ser a coluna anterior INICIO ARGUMENTO ORDEM {ORDEM DO QUADRADO MAGICO} VARIAVEIS ORDEM:INTEIRO QUADRADO:MATRIZ [ORDEM , ORDEM] {MATRIZ P/ ARMAZENAR O} {QUADRADO MAGICO} LINHA:INTEIRO {CONTADOR DE LINHA DA MATRIZ} COLUNA:INTEIRO {CONTADOR DE COLUNAS DA MATRIZ} LINHA_ANTERIOR:INTEIRO {ARMAZENAR A LINHA ANTERIOR} COLUNA_ANTERIOR:INTEIRO {ARMAZENAR A COLUNAANTERIOR} CONT:INTEIRO PROCEDA QUADRADO_MAGICO SE RESTO(ORDEM / 2) = 0 MOSTRE ( "ORDEM INVALIDA PARA QUADRADO MAGICO") SENAO CONT : = 1 LINHA : = 1 COLUNA : = (ORDEM +1) / 2 QUADRADO [ COLUNA , LINHA ] : = CONT ENQUANTO CONT <= ORDEM * ORDEM LINHA : = LINHA - 1 COLUNA : = COLUNA - 1 CONT : = CONT + 1 SE LINHA = 0 LINHA : = ORDEM FIM_SE SE COLUNA : = 0 COLUNA : = ORDEM 6 1 8 7 5 3 2 9 4
  54. 54. ALGORITMOS E ESTRUTURAS DE DADOS Prof. Gelber Xavier de Freitas www.pronatecvja.blogspot.com.br Página 54 de 101 FIM_SE SE QUADRADO [ COLUNA , LINHA ] < > NULO LINHA : = LINHA ANTERIOR + 1 COLUNA : = COLUNA_ANTERIOR FIM_SE QUADRADO [ COLUNA , LINHA ] : = CONTADOR LINHA_ANTERIOR : = LINHA COLUNA_ANTERIOR : = COLUNA FIM_ENQUANTO FIM_SE FIM. Vetores: Existem também as chamadas matrizes unidimensionais, ou vetores. Neste caso a matriz será formada apenas por linhas ou colunas, sendo necessário informar apenas 1 número para identificar um elemento dentro da matriz. EXEMPLO: 1 1 2 3 4 No exemplo ao lado a matriz tem apenas uma coluna, e poderia ser declarada da seguinte forma: LETRAS:MATR IZ[4] DE CHAR E cada elemento poderá ser identificado da seguinte forma: LETRAS[3]: = "C" A B C D
  55. 55. ALGORITMOS E ESTRUTURAS DE DADOS Prof. Gelber Xavier de Freitas Algoritmos de Manipulação de Vetores. Exercício 21: Dada um vetor de 10 posições do tipo inteiro, faça um algoritmo que permita o preenchimento de toda o vetor com os valores digitados pelo usuário. INICIO VARIAVEIS; NUMEROS:MATRIZ [10 ] DE INTEIROS; POS: INTEIRO;{CONTADOR DEPOSIÇÃO DO VETOR} PROCEDA PARA POS : = 1 INCREMENTO = 1 ATE POS > 10 LEIA ( NUMEROS [POS ] ) FIM_PARA FIM. Exercício 22 Dado o vetor de 10 posições do tipo inteiro preenchido no exercício anterior, faça um algoritmo capaz de fazer a soma de todos os seus valores e apresente o resultado na tela. INICIO VARIAVEIS; NUMEROS : MATRIZ [10 ] DE INTEIROS; POS:INTEIRO {CONTADOR DA POSICAO NO VETOR} SOMA:INTEIRO;{VARIAVEL PARA ARMAZENAR A SOMA DOS VALORES} PROCEDA SOMA: = 0; PARA POS : = 1 INCREMENTO = 1 ATE POS > 10 SOMA : = SOMA + NUMEROS [POS ] FIM_PARA MOSTRE ( "O RESULTADO DA COLUNA => ") MOSTRE ( SOMA ) FIM.
  56. 56. ALGORITMOS E ESTRUTURAS DE DADOS www.pronatecvja.blogspot.com.br Página 56 de 101 Exercício 23 Dado o vetor do exercício anterior faca um algoritmo capaz de dobrar os valores de todas as posições do vetor. INICIO VARIAVEIS; NUMEROS : MATRIZ [ 4 , 4 ] DE INTEIROS { MATRIZ ORIGINAL} POS:INTEIRO {CONTADOR POSICAO} PROCEDA PARA POS : = 1 INCREMENTO = 1 ATE POS > 10 NUMEROS [ POS ] : = NUMEROS [ POS ] * 2 FIM_PARA FIM. Exercício 24 Dado o vetor do exercício anterior faça um algoritmo para mostrar na tela somente os valores que estiverem em posições impares dentro do vetor. INICIO NUMEROS : MATRIZ [ 10 ] DE INTEIROS {DECLARAÇÃO DA MATRIZ} POS:INTEIRO{CONTADOR DE POSICAO} PROCEDA PARA POS : = 1 INCREMENTO = 2 ATE POS > 10 MOSTRE ( NUMEROS [ POS ] ) FIM_PARA FIM Exercício 25 Dado Um Vetor de 80 posições do tipo char, que deverá ser preenchido pelo usuário, faça um algoritmo que, a partir de uma letra digitada pelo usuário conte quantas vezes esta letra aparece dentro do vetor e informe o resultado da contagem ao final do processamento. Exercício 26 Dado o mesmo vetor preenchido no exercício anterior, faça um novo algoritmo capaz de identificar e contar, quantos pares de letras existem no vetor, ou seja quantas vezes aparecem duas letras repetidas uma após a outra.
  57. 57. ALGORITMOS E ESTRUTURAS DE DADOS www.pronatecvja.blogspot.com.br Página 57 de 101 Exercício 27 10) - Dado um vetor de 10 posições do tipo char faça uma algoritmo que permita que o usuário digite 10 letras, e que estas letras sejam colocadas nas respectivas posições dentro do vetor. O algoritmo no entanto não poderá permitir que seja digitada uma letra menor que a letra que foi digitadas anteriormente, ou seja a letra que será colocada na posição 2 deverá ser maior que a letra colocada na posição 1, a letra colocada na posição três deverá ser maior que a letra digitada para a posição 2, e assim respectivamente até o final do vetor. A primeira letra poderá ser digitada livremente pelo usuário sendo que a regra acima somente se aplica as letras que forem colocadas da segunda posição em diante. Exercício 28 Dado um vetor de 10 posições do tipo inteiro, que deverá ser preenchido pelo usuário, faça um algoritmo capaz de percorrer todo o vetor dobrando todos os número que forem impares e dividindo pela metade todos os número que forem pares colocando o resultado das operações nas mesmas posições dentro do vetor. Exercício 29 Calculo do Digito verificador do CPF: O CPF é formado por 9 dígitos, mas 2 dígitos verificadores que ficam no final. Estes dígitos verificadores são calculados de acordo com os outros 9 dígitos do CPF e servem para verificar a validade do CPF. Apresentamos aqui uma forma simplificada para o cálculo destes dígitos: Somar os produtos de cada um dos dígitos do CPF, pela sua respectiva posição, e pegar o resto da divisão inteira desta soma por 11. Este resultado será o digito verificador 1 Para calcular o digito verificador 2, repetir o processo, somente alterando a multiplicação dos dígitos pela sua posição, de forma que as posições fiquem invertidas. Faça um algoritmo capas de, uma vez informado os 9 dígitos de um cpf qualquer, informar os 2 dígitos verificadores deste cpf.
  58. 58. ALGORITMOS E ESTRUTURAS DE DADOS www.pronatecvja.blogspot.com.br Página 58 de 101 Sub rotinas. As sub-rotinas são divisões dos algoritmos, que são utilizadas para: • Facilitar a manutenção dos algoritmos • Dividir as tarefas. • Dar maior organização aos algoritmos • Para reaproveitar os Algoritmos. Existem 2 tipos Básicos de Sub-rotinas: Função: É a sub-rotina que executa seus procedimentos, e ao final retorna um valor. Procedimento: É a sub-rotina que não faz retorno nenhum. Apenas executa os procedimentos a ela associados. Para que possamos trabalhar com as sub-rotinas serão necessárias algumas alterações nos nossos algoritmos. Argumentos Um argumento é um tipo especial de variável utilizada em um algoritmo. Ele é especial porque dentro dele estará um valor predeterminado pelo usuário que está utilizando o algoritmo. Isto quer dizer que o argumento é um valor que será colocado dentro de uma variável pelo usuário do algoritmo, que será utilizado pelo algoritmo como uma variável comum. Em tempo de processamento, isto quer dizer que os argumento serão passados como parâmetros na linha de comando da chamada do programa. A única diferença do argumento para uma variável comum é que ele já vem com um valor armazenado desde o início do algoritmo, enquanto que as outras variáveis necessitam serem inicializadas antes de serem usadas. No decorrer do algoritmo os argumentos poderão ser utilizados e alterados exatamente como as variáveis comuns, e inclusive deverão ser declarados. Uma outra definição de Argumento seria que eles são variáveis destinadas a fazer a comunicação entre dois algoritmos. Até agora temos trabalhamos com algoritmos isolados, mais na maioria das vezes teremos que trabalhas com vários algoritmos, cada um desempenhando uma função especifica dentro do que iremos chamar de sistema
  59. 59. ALGORITMOS E ESTRUTURAS DE DADOS www.pronatecvja.blogspot.com.br Página 59 de 101 Desta forma teremos algoritmos que irão se preocupar somente com a inclusão dos elementos em um vetor, enquanto que outro irá se preocupar apenas com a consulta dos valores já incluídos. De alguma forma, estes algoritmos terão que trocar informações, e a melhor forma disto ser realizado é através de argumento. Comando Retorne O comando RETORNE é responsável pelo retorno de informações de um algoritmo para outro. Da mesma forma que um algoritmo poderá se comunicar com outro através de argumentos, um algoritmo responsável por exemplo por um cálculo, poderá devolver uma resposta para outro algoritmo através do comando RETORNE. Estes algoritmos são chamados Funções. Muitas vezes necessitamos repetidamente de um cálculo, que iremos utilizar em vários algoritmos. Para evitar que tenhamos que repetir estes cálculos em cada algoritmo em que ele é necessário, nós o transformamos em uma sub-rotina, e fazemos com que ele retorne a resposta ao nosso cálculo de acordo com os ARGUMENTOS que passamos para ele. No início desta apostila, vocês foram apresentado a uma série de funções, que se destinam por exemplo, ao cálculo da raiz quadrada, logaritmos, etc. A chamada de uma função se faz da seguinte forma: X : = SQR(4) No exemplo acima a variável X depois de executada a função terá o valor 2, pois a função SQR calcula a raiz quadrada do argumento que for fornecido para ela. Neste caso o argumento é o 4. Então, no exemplo acima, o quatro será o argumento que está sendo passado para a função, e o resultado do cálculo da raiz quadrada será colocado em X devido ao uso do comando RETORNE. Listas: É uma estrutura de dados linear que permite representar um conjunto de informações de forma a preservar uma relação de ordem entre eles. Esta estrutura deve também suportar os 4 tipos de atualizações: • Inclusão • Exclusão • Alteração • Atravessamento.
  60. 60. ALGORITMOS E ESTRUTURAS DE DADOS www.pronatecvja.blogspot.com.br Página 60 de 101 Representação: Exemplo LISTA=(A,B,C,D,E) A=>B=>C=>D=>E Para representar as lista dentro de nossos algoritmos nós vamos utilizar a estrutura do tipo matriz que foi vista anteriormente. As listas podem ser alocadas segundo duas relações: • Relação de Contiguidade • Relação de Encadeamento. Relação de Contiguidade: É a forma mais simples de se relacionar os elementos de uma lista. Nela um elemento aponta sempre para o seu sucessor sequencial. Desta forma a nossa lista estará sempre na sua ordem física, ou seja os elementos estarão dispostos fisicamente dentro da lista de maneira que a ordem entre os elementos seja mantida. Dentro de uma lista nós devemos permitir 4 operações básicas: • Inclusão • Exclusão • Alteração • Atravessamento Atravessamento A operação de atravessamentos consiste em percorrer toda a lista, do seu começo até o seu final, visitando todos os seus elementos. O atravessamento começa pelo primeiro elemento da lista, mostra este elemento e vai sempre mostrado os próximos elementos até chegar no último(N) INICIO ARGUMENTOS LISTA: MATRIZ[N] DE CHAR ; {DECLARAÇÃO DA LISTA} N:INTEIRO {NUMERO DE ELEMENTOS DE LISTA} VARIÁVEIS CONT:INTEIRO; {VARIAVEL DE CONTROLE DO LOOP} PROCEDA ATRAVESSAMENTO_CONTI. SE N < 1 MOSTRE ('LISTA VAZIA!!!!') SENÃO CONT : = 0
  61. 61. ALGORITMOS E ESTRUTURAS DE DADOS www.pronatecvja.blogspot.com.br Página 61 de 101 ENQUANTO CONT < N CONT : = CONT + 1 MOSTRE (LISTA [CONT]) FIM_ENQUANTO FIM_SE FIM Inclusão em Listas Contíguas A inclusão é a operação que visa a colocação de um novo elemento dentro da lista de maneira que a ordem entre os elementos seja mantida. Se a inclusão ocorre no final de lista, o seu procedimento é fácil. Porem se a inclusão acontecer no meio da lista, será necessário que todos os elementos após aquele que foi incluído sejam deslocados uma casa para baixo. Note que para que possamos fazer uma inclusão nó devemos declarar a lista com 1 elemento a mais do que ele já possui, para reservar lugar para o novo elemento que será incluído. Passo para Inclusão: 1. Criar um espaço em branco no final da lista 2. Aceitar a letra que será incluída (ELEMENTO_NOVO) 3. Achar a posição de inclusão da letra na lista (POS) 4. Fazer uma crítica para ver se a letra já não existe na lista 5. Remanejar todos os elementos abaixo da posição de inclusão uma posição para baixo começando de baixo para cima. 6. Incluir o elemento na posição de inclusão. 7. N: = N + 1 INICIO ARGUMENTOS: LISTA:MATRIZ [N+1] DE CHAR {A LISTA AONDE SERÁ FEITA A INCLUSÃO} N:INTEIRO{NUMERO DE ELEMENTOS DA LISTA} VARIAVEIS POS:INTEIRO {PARA ACHAR A POSIÇÃO DE INCLUSÃO} ELEMENTO_NOVO {O NOVO ELEMENTO A SER INCLUIDO} CONT :INTEIRO {VARIAVEL DE CONTROLE DO LOOP} PROCEDA INCLUSAO_CONTI MOSTRE(“DIGITE A LETRA PARA INCLUSÃO”) LEIA (ELEMENTO_NOVO) POS: = 1 ENQUANTO POS < = N E LISTA[POS]< ELEMENTO_NOVO POS: = POS+1 FIM_ENQUANTO SE LISTA[POS] = ELEMENTO_NOVO MOSTRE (“LETRA JÁ EXISTE NA LISTA!!!!”) SENÃO CONT: = N ENQUANTO CONT > = POS LISTA [ CONT+1 ] : = LISTA [ CONT ] CONT : = CONT - 1 FIM_ENQUANTO LISTA [ POS ] : = ELEMENTO_NOVO N : = N + 1 FIM-SE FIM.
  62. 62. ALGORITMOS E ESTRUTURAS DE DADOS www.pronatecvja.blogspot.com.br Página 62 de 101 Alteração em Listas Contíguas A alteração é o processo aonde se altera o conteúdo de um elemento que já exista na lista, para um novo valor especificado pelo usuário. Passos par Alteração: 1. Aceitar a Letra que vai ser alterada (ELEMENTO) 2. Aceitar a nova Letra (ELEMENTO_NOVO) 3. Achar a posição de alteração(POS) 4. Fazer uma crítica para ver se a letra existe na lista 5. Fazer uma crítica para ver se a alteração não vai quebrar a ordem da lista 6. Fazer a alteração. Na hora de fazer uma alteração deve-se tomar cuidado para que o novo valor do elemento não altere a ordem da lista. Para se certificar que o novo valor do elemento da lista, esta compatível com a ordem da lista, ou seja se a alteração deste valor não vai comprometer a ordem da lista devemos fazer alguns testes. Para se fazer estes testes existem 4 situações: Situação 1 Situação 2 Situação 3 Situação 4 1 1 1 1 1 1 1 1 2 2 2 3 3 3 • Na situação 1, o que nós temos é que a quantidade de elementos da lista é igual a 1, neste caso qualquer valor será permitido para. • Na situação 2 o elemento que desejamos alterar está no começo da lista, e a lista tem mais de um elemento. Neste caso, o novo elemento deverá ser menor que o elemento na próxima posição da lista para que a alteração possa ser feita. • Na situação 3 o elemento que se deseja alterar é o último elemento da lista, e a lista tem mais de um elemento. Neste caso, o novo elemento deverá ser maior que o elemento que está na posição anterior da lista. • Na Situação 4, que é o mais comum, o elemento que se deseja alterar está entre dois elementos de uma lista, e esta lista possui mais do que 2 elementos. Neste caso, o novo elemento deverá ser: • Maior que o elemento na posição anterior da lista, e • Menor que o elemento na posição posterior da lista. INICIO ARGUMENTOS LISTA : MATRIZ [ N ] DE CHAR {LISTA PROPRIAMENTE DITA} N:INTEIRO {QUANTIDADE DE ELEMENTOS NA LISTA} VARIAVEIS POS:INTEIRO ELEMENTO:CHAR NOVO_ELEMENTO:CHAR ALTERA:LOGICO PROCEDA ALTERACAO_CONTI A NOVO C NOVO C D A B NOVO NOVO
  63. 63. ALGORITMOS E ESTRUTURAS DE DADOS www.pronatecvja.blogspot.com.br Página 63 de 101 MOSTRE (“DIGITE A LETRA PARA ALTERAÇÃO”) LEIA (ELEMENTO) MOSTRE (“DIGITE A NOVA LETRA”) LEIA (NOVO_ELEMENTO) POS: = 1 ENQUANTO POS < = N E LISTA [POS]<> ELEMENTO POS: = POS+1 FIM_ENQUANTO SE POS > N MOSTRE (“ALTERAÇÃO INVALIDA”) SENÃO ALTERA: = FALSO CASO N = 1 {SITUAÇÃO 1} ALTERA: = VERDADEIRO POS = 1 {SITUAÇÃO 2} SE NOVO_ELEMENTO < LISTA[POS + 1] ALTERA: = VERDADEIRO FIM_SE POS = N {SITUAÇÃO 3} SE NOVO_ELEMENTO > LISTA[POS – 1] ALTERA: = VERDADEIRO FIM_SE SENÃO {SITUAÇÃO 4} SE NOVO_ELEMENTO > LISTA[POS –1] E NOVO_ELEMENTO < LISTA[POS + 1 ALTERA:=VERDADEIRO FIM_SE FIM CASO SE ALTERA=VERDADEIRO LISTA [POS] : = NOVO_ELEMENTO SENÃO MOSTRE (“ALTERAÇÃO INVALIDA”) FIM_SE FIM_SE FIM Exclusão em Listas Contíguas. A exclusão é o processo de eliminação de um elemento já existente na lista. Para excluir um elemento em uma lista contígua deve-se antecipar todos os elementos abaixo do elemento a ser excluído em uma posição. Isto será feito por dois motivos, primeiro para excluir fisicamente o elemento da lista, e segundo para não deixar um espaço em branco na lista.

×