Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e ComputaçãoUNIVERSIDADE REGIONAL DE BLUMENAU CENTRO DE CIÊNCIAS EXATAS E NATURAIS DEPARTAMENTO DE SISTEMAS E COMPUTAÇÃO INTRODUÇÃO A PROGRAMAÇÃO (material de apoio) PROFESSOR: Maurício Capobianco Lopes Blumenau, 2006 DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação APRESENTAÇÃO DA DISCIPLINA DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág.: 2 Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação SUMÁRIO 1 INTRODUÇÃO.....................................................................................................................5 ESTRUTURA FUNCIONAL DO COMPUTADOR..................................................................................................6 HARDWARE ..........................................................................................................................................................6 SOFTWARE ...........................................................................................................................................................9 CONCEITOS BÁSICOS DE AMBIENTES DE PROGRAMAÇÃO........................................................................9 CLASSIFICAÇÃO DAS LINGUAGENS DE PROGRAMAÇÃO..........................................................................10 LINGUAGENS E GERAÇÕES.............................................................................................................................11 2 LÓGICA DE PROGRAMAÇÃO...............................................................................................12 ALGORITMO...................................................................................................................................................................13 Metodologia para Construção de Algoritmos......................................................................................................14 Enunciados.......................................................................................................................................................16 Exercícios Propostos.......................................................................................................................................17 Métodos de Representação de Algoritmos...........................................................................................................18 3 ESPECIFICAÇÃO DE ALGORITMOS.....................................................................................19 DADOS......................................................................................................................................................................19 Variáveis...............................................................................................................................................................19 Constantes.............................................................................................................................................................20 Tipos de Dados.....................................................................................................................................................20 EXPRESSÕES...........................................................................................................................................................21 Operadores Aritméticos........................................................................................................................................21 Operador de Caracteres.......................................................................................................................................22 Operadores Relacionais.......................................................................................................................................22 Operadores Lógicos..............................................................................................................................................22 COMANDOS.............................................................................................................................................................23 Comando de Atribuição........................................................................................................................................23 Comandos de Entrada e Saída.............................................................................................................................23 Comando de Entrada em Portugol..................................................................................................................24 Comando de Saída em Portugol......................................................................................................................24 PORTUGUÊS ESTRUTURADO OU PORTUGOL.........................................................................................................................25 EXERCÍCIOS RESOLVIDOS.................................................................................................................................................27 EXERCÍCIOS PROPOSTOS..................................................................................................................................................30 4 ESTRUTURAS DE CONTROLE EM NÍVEL DE INSTRUÇÃO – SELEÇÃO....................................35 SELEÇÃO SIMPLES..........................................................................................................................................................35 SELEÇÃO ENCADEADA.....................................................................................................................................................36 SELEÇÃO COMPOSTA.......................................................................................................................................................37 SELEÇÃO MÚLTIPLA.......................................................................................................................................................38 EXERCÍCIOS RESOLVIDOS.................................................................................................................................................39 EXERCÍCIOS PROPOSTOS..................................................................................................................................................43 5 ESTRUTURAS DE CONTROLE EM NÍVEL DE INSTRUÇÃO – REPETIÇÃO................................48 REPETIÇÃO COM CONTADOR (PARA-FAÇA).........................................................................................................................48 REPETIÇÃO CONDICIONAL................................................................................................................................................49 Enquanto-faça.......................................................................................................................................................50 Repita-até..............................................................................................................................................................51 EXERCÍCIOS RESOLVIDOS.................................................................................................................................................51 EXERCÍCIOS PROPOSTOS..................................................................................................................................................57 6 ESTRUTURA DE DADOS HOMOGÊNEAS - MATRIZES...........................................................64 MATRIZES UNIDIMENSIONAIS (VETORES)...........................................................................................................................65 Manipulação de Matrizes Unidimensionais.........................................................................................................68 Exercícios Resolvidos......................................................................................................................................69 Exercícios Propostos.......................................................................................................................................72 Algoritmos de Ordenação de Vetores...................................................................................................................76 Método da Bolha ou BubbleSort......................................................................................................................76 DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág.: 3 .........................98 EXERCÍCIOS RESOLVIDOS...................................85 Método da Pesquisa Binária...............................................................................................................................................REGISTROS..................................................................................................................................................................................................................................................................................................................................: 4 ...................................Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação Método da Ordenação por Seleção SelectionSort..89 ESCOPO DE VARIÁVEIS....................................................100 EXERCÍCIOS PROPOSTOS.......................................................................................................................................82 Algoritmos de Busca em Vetores........................................................................92 EXERCÍCIOS RESOLVIDOS....................84 Método da Pesquisa Seqüencial.......................................................................................................................87 7 MODULARIZAÇÃO...............................................81 Método da Ordenação por Inserção InsertSort........................................................................92 8 ESTRUTURA DE DADOS HETEROGÊNEAS .................................86 Exercícios Propostos...............................................................................................................................................................................................................103 DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág................................................................................................................. O surgimento do transistor. O avanço da tecnologia permitiu a integração de vários transistores em um dispositivo. qualidade do resultado final e capacidade de armazenamento e processamento de informações. O COMPUTADOR é uma máquina composta de elementos físicos do tipo eletrônico. em 1948. • O sistema computacional é formado por um conjunto de elementos físicos (o hardware) e por um conjunto de instruções programadas para o seu funcionamento (o software).PROBLEMAS: custo inicial e sua manutenção.: 5 . também denominado software. correção.Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação 1 INTRODUÇÃO • Os primeiros computadores utilizavam válvulas. além de serem mais robustos e confiáveis. trouxe a redução do tamanho e da potência consumida em relação às válvulas. . DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág.VANTAGENS: rapidez. A utilização do computador também alguns problemas: traz vantagens mas • • • . a depreciação e a necessidade de treinamento para utilização do mesmo. desde que receba as instruções adequadas através de um programa de computador. constituindo os circuitos em larga escala (CHIPs). economia. capaz de realizar uma grande variedade de trabalhos com alta velocidade e precisão. unidade de saída de dados e memória.Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação ESTRUTURA FUNCIONAL DO COMPUTADOR HARDWARE • O computador é uma máquina capaz de executar ações com objetivos específicos. • DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág. unidade de controle. todos consistem em cinco componentes básicos interligados: unidade aritmética e lógica (ULA). unidade de entrada de dados.: 6 . Embora existam computadores dos mais diferentes tipos e tamanhos. Essas ações são basicamente instruções para leitura e escrita de informações e para a execução de operações aritméticas e lógicas. EXEMPLOS: vídeo. webcam. impressora. EXEMPLOS: disco rígido (winchester).Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação • A UNIDADE ARITMÉTICA E LÓGICA e a UNIDADE DE CONTROLE constituem a UNIDADE CENTRAL DE PROCESSAMENTO (CPU) ou PROCESSADOR: .EXEMPLOS: teclado. .REGISTRADORES: armazenam dados temporariamente para serem processados pela ULA. cálculos que envolvem operações aritméticas ou operações lógicas.: 7 . joystick. mouse. caixa de som.UNIDADE ARITMÉTICA E LÓGICA (ULA): executa as instruções dos programas. disco ótico (CD/DVD). DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág. caneta ótica. disco magnético (disquete). leitora de códigos de barra. etc. • Unidade de ENTRADA: são os dispositivos que permitem a captura de dados do meio externo para o computador. scanner. . . mesa digitalizadora. • Unidade de SAÍDA: são os dispositivos que permitem visualizar ou obter os dados do computador .UNIDADE DE CONTROLE: acompanha as instruções dos programas acionando as unidades que devem executar determinada instrução e controlando o fluxo de dados. como por exemplo. etc. Alguns dispositivos servem tanto para entrada como para saída. • Os dispositivos de E/S também são chamados de PERIFÉRICOS. : 8 . .Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação • MEMÓRIA: armazena dados e programas durante o processamento pela UCP: . • • • DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág.ROM (Read Only Memory): memória somente para leitura que tem informações de configuração e inicialização do computador. . Para representar um CARACTER (letra. símbolo ou dígito) é necessário uma junção de BITS (múltiplos de 8). • O computador é chamado de DIGITAL pois é composto de circuitos eletrônicos que só entendem o estado ligado (1) ou desligado (0). .RAM (Random Acess Memory): memória principal do computador.CACHE: memória de alta velocidade que acelera a transferência de dados entre UCP e RAM.A memória é dividida em unidades pequenas e de mesmo tamanho identificadas por um ENDEREÇO ENDEREÇO DE MEMÓRIA: um número representado através da notação hexadecimal. Os sinais elétricos são chamados de BIT (Binary Digital). A junção de diversos BITS é chamada de BYTE. .. uma linguagem de programação apresenta dois componentes: . que especificam a composição de programas a partir de letras.Freeware: softwares de domínio público distribuídos gratuitamente. . Controle de Estoque. e outros símbolos.Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação SOFTWARE • • Um software é um programa de computador que faz com que o hardware realize determinada tarefa. .SINTAXE: consiste em um conjunto de regras formais. • As licenças para distribuição de softwares são: . .Shareware: semelhantes aos freeware.SOFTWARES APLICATIVOS: são os softwares utilizados pelos usuários para resolver problemas gerais e específicos (Ex..Comercial: softwares proprietários. mas são fornecidos mediante acordo de pagamento de quantidade simbólica pelos usuários que gostarem do produto.). • DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág. Os softwares são classificados como: BÁSICOS e APLICATIVOS. Linguagens de Programação. Como todas as notações formais..: 9 .). Processador de Textos. .SOFTWARE BÁSICO: são os softwares necessários para o funcionamento e gerenciamento do computador (Ex.. CONCEITOS BÁSICOS PROGRAMAÇÃO • DE AMBIENTES DE Uma linguagem de programação é uma notação formal para descrição de algoritmos que serão executados por um computador. dígitos. . Planilha. Sistema Operacional. um código gerado para um tipo de processador não serve para outro. Vantagens: têm maior portabilidade podendo ser executados em várias plataformas com pouquíssimas modificações.: DISCIPLINA: Introdução a Programação 10 . sintaticamente válido. Exemplos de linguagens de nível médio são SQL e Java. . São genericamente chamadas de linguagens Assembly. Vantagens: programas são executados com maior velocidade de processamento. Exemplos de linguagens de nível médio são Pascal e C. . escrito na linguagem. tornando-as PROFESSOR: Maurício Capobianco Lopes pág.SEMÂNTICA: especificam o “significado” de qualquer programa. Também não são estruturados.NÍVEL MÉDIO: contém um conjunto de instruções mais legível do que as linguagens de baixo nível. . Desvantagens: têm pouca portabilidade. Desvantagens: em geral.Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação .BAIXO NÍVEL: são escritas utilizando as instruções do processador do computador. CLASSIFICAÇÃO DAS PROGRAMAÇÃO • LINGUAGENS DE As linguagens de programação são classificadas em três níveis. Desvantagens: alguns comandos apresentam uma certa dificuldade de compreensão em sua sintaxe.ALTO NÍVEL: aproximam-se mais da linguagem natural. permitindo a criação de jogos e programas com qualidade profissional. isto é. Os programas ocupam menos espaço em memória. Em geral. as rotinas geradas (em linguagem de máquina) são mais genéricas. Vantagens: em geral são linguagens que incorporam mais recursos. a programação torna-se mais fácil em decorrência do maior ou menor grau de estruturação de suas linguagens. tornando a programação mais difícil. . COBOL. por acomodarem o conceito desta com bastante propriedade.: 11 . BASIC e ALGOL. conseqüentemente lentas e ocupam mais memória. . entre outras. C. DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág. BASIC). Possuem como característica primordial à aproximação da forma de escrita humana. Visual C. Java. A linguagem de quarta geração é o mais próximo que conseguiu-se chegar da linguagem humana. Exemplos: linguagens FORTRAN. PROLOG. C++.Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação mais complexas. A mais popular é a linguagem SQL. em que a linguagem de programação utilizada era a linguagem de máquina (nível baixo). tornam-se mais LINGUAGENS E GERAÇÕES • As linguagens de programação têm evoluído ao longo dos tempos podendo ser divididas em: . As linguagens desta geração dividem-se em três grupos básicos: linguagens de uso geral (podem ser destacadas PL/1. Java) e linguagens especialistas (LISP. linguagem orientadas a objetos (SmallTalk. mais precisamente em 1945 com o surgimento dos primeiros computadores eletrônicos. principalmente em ferramentas de desenvolvimento integradas.Primeira Geração: surgiu a partir dos anos 40 (século XX). ADA.Terceira Geração: surgiu durante a década de 70 (século XX). FORTH). . caracterizando-se por serem linguagens estruturadas de programação (de alto nível). como: Visual Basic. As linguagens de terceira geração estão em pleno uso. Delphi. PASCAL. Object PASCAL.Quarta Geração: surgiram durante a metade da década de 70 (século XX) como linguagens com um elevado nível de abstração.Segunda Geração: surgiu no final dos anos 50 e início dos anos 60 (século XX). C++ Builder. As linguagens de consulta utilizadas em bancos de dados são de quarta geração. Exemplo: a linguagem Assembly. JBuilder. de coisas" (DICIONÁRIO AURÉLIO). (COMANDOS E programa de • Para que o computador possa cumprir corretamente as tarefas desejadas é necessário que o programa esteja organizado de forma lógica.: 12 . através de uma seqüência lógica de passos ou instruções. "LÓGICA: coerência de raciocínio. EXEMPLO: Calcular a área de uma sala retangular. DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág. "LÓGICA DE PROGRAMAÇÃO é a técnica de encadear pensamentos. Passos: Medir o lado transversal Medir o lado longitudinal Multiplicar a medida do lado transversal pela medida do lado longitudinal • • • A obtenção do resultado desejado exige a seqüência em ordem correta de todo o conjunto de instruções. regular e necessária de acontecimentos. seqüência coerente.Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação 2 LÓGICA DE PROGRAMAÇÃO • O computador segue as ordens INSTRUÇÕES) descritas em um computador. visando atingir um determinado objetivo computacional" (VALDAMERI. 2003). de idéia. alguns cuidados: a) entender o (INTERPRETAÇÃO). Estas tarefas não podem ser redundantes nem subjetivas na sua definição. d) definir e redigir os passos para a solução do problema (PROCESSO). Um algoritmo é similar a uma receita para resolver tarefas específicas.Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação • A implementação de um programa de computador exige. devendo ser claras e precisas.: 13 . através de uma seqüência lógica de instruções. c) identificar os resultados que se deseja alcançar (SAÍDAS). • DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág. portanto. problema proposto b) verificar os dados e recursos disponíveis para resolvê-lo (ENTRADAS). 2) Fase da implementação do algoritmo em uma linguagem de programação (PROGRAMA). PROBLEMA Resolução do problema ALGORITMO Implementação PROGRAMA Algoritmo • Os algoritmos representam a descrição de como um problema pode ser resolvido. • A solução de um problema computacional deve ser feita em etapas: 1) Fase de descrição da resolução do problema (ALGORITMO). Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação • Para se resolver problemas através de algoritmos é necessário ter: e) uma metodologia algoritmo. A solução de um problema de forma estruturada é denominada de top-down ou refinamento sucessivo.: 14 . resolvidos cada um em separado. para a construção do f) um método de representação da solução. por mais complexo que possa parecer.Nesta técnica qualquer problema. trarão a solução do problema inicial (ela será abordada futuramente de forma mais detalhada). Metodologia para Construção de Algoritmos • A metodologia aqui proposta para a construção de algoritmos segue os princípios da programação estruturada. pode ser dividido em vários problemas menores que. se não há ambigüidades ou informações incompletas e irrelevantes. • • A metodologia proposta é composta dos seguintes passos: 1) Ler o problema até compreendê-lo totalmente. DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág. . destacando os verbos e os substantivos (INTERPRETAÇÃO): nesta etapa deve-se verificar atentamente se o problema está bem definido. 2) Identificar as informações (substantivos) que são fornecidas (DADOS DE ENTRADA): nesta etapa deve-se identificar os dados ou recursos disponíveis para a solução do problema. observando-se algumas técnicas: o usar somente um verbo (no infinitivo) por frase. procurando observar se todos as entradas ou recursos necessários estão disponíveis. DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág. visando montar uma base de testes para o problema. 4) Definir um conjunto de dados de entrada com suas respectivas saídas desejadas (BASE DE TESTES). 6) Descrever as operações necessárias para transformar as entradas em saídas (DESCRIÇÃO DO ALGORITMO): nesta etapa deve-se descrever a seqüência de instruções necessárias para a solução do problema. de maneira simples e objetiva. o usar frases curtas e simples sem ambigüidade.Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação 3) Identificar as informações (substantivos) que devem ser geradas como resultado (DADOS DE SAÍDA): nesta etapa deve-se identificar os resultados desejados para o problema. nesta etapa deve-se estabelecer um conjunto de informações de entrada com suas respectivas saídas.: 15 . 5) Identificar as operações necessárias (verbos) para transformar as entradas em saídas (PROCESSAMENTO): nesta etapa deve-se buscar os verbos que indiquem as operações que devem ser realizadas para a solução do problema. deve-se notar que nesta etapa podem surgir dados intermediários (que não são nem de entrada e nem de saída) necessários para a solução do problema. o ser objetivo. problemas de ambigüidade ou serem incompletos. pode ser necessário refinar a descrição da solução (topdown ou refinamento sucessivo). Caso encontre possibilidades de melhoria retorne ao passo 6. Entretanto. 7) Testar a solução do problema (TESTE): nesta etapa deve-se executar fielmente as operações descritas no passo 6. • • • Com este enunciado é possível resolver o problema? DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág. mesmo se estiver correta para melhorar a maneira de descrever ou o modo como está sendo feito. Enunciados • Os problemas normalmente são descritos através de enunciados os quais devem conter os elementos fundamentais e necessários para a sua solução. 8) Revisar a solução do problema buscando uma solução melhor (OTIMIZAÇÃO): nesta etapa deve-se rever a solução proposta. Em algumas situações é necessário registrar informações intermediárias para acompanhar a execução dos passos. utilizando a base de testes descrita no passo 4 para verificar se os resultados desejados estão corretos.Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação as técnicas mais comuns para descrição de algoritmos serão destacadas no item sobre métodos de representação de algoritmos. incompletas ou muito genéricas identificadas no processo de teste. se existirem passos com soluções incorretas.: 16 . os enunciados em geral podem trazer informações irrelevantes. Considere o seguinte enunciado de um problema: Faça uma limonada. única e fácil de ser encontrada podendo. este é um exemplo de enunciado ambíguo e incompleto. . cortando o limão? Quais são os recursos existentes para fazer a limonada? É com açúcar e gelo? Tem espremedor ou deve-se espremer na mão? . pois dá margem a muitas interpretações. . utilizando os passos 1 a 7 da metodologia proposta anteriormente e procurando identificar situações em que há ambigüidade.Portanto.: DISCIPLINA: Introdução a Programação 17 . • Com este enunciado é possível resolver o problema? . faca e colher de sopa descreva um algoritmo para fazer a limonada pedida. ele traz informações irrelevantes para a solução do problema que na sua essência trata do processo de fazer uma limonada. pois esta fórmula é relativamente conhecida. • Veja agora o seguinte enunciado: Uma pessoa dirijiu-se até uma casa de sucos e pediu uma limonada com açúcar.Este é um enunciado mais completo e com pouca margem ã interpretação. Você consegue identificar o que é irrelevante? • Considere. Considerando que o atendente tem o limão. mas onde está a descrição da fórmula de cálculo da área? Neste caso não há problema. este é um exemplo de enunciado incompleto.Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação . o açúcar. falta de informação ou dados irrelevantes para a solução do problema. PROFESSOR: Maurício Capobianco Lopes pág. problema: agora o seguinte enunciado de um Descreva um algoritmo para calcular a área de uma sala retangular. mas que permite a solução do problema. mas que por outro lado contextualizam o problema. indo ao supermercado comprar os limões. ou não ser inserida no enunciado do problema.Portanto. mas por onde começar a análise e descrição do problema? Plantando o limoeiro. Exercícios Propostos • Resolva os problemas propostos a seguir.Sim. Entretanto.Sim. um copo com água. Considerando que o atendente tem o limão.Linguagem Natural: linguagem corrente. 5. 2. as .Diagrama de Chapin: assim como o fluxograma também representa as instruções através de símbolos gráficos. Um aluno está na Biblioteca da FURB e precisa pegar um livro. Métodos de Representação de Algoritmos • Existem diversos métodos de representação algoritmos entre os quais se destacam: .Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação 1. o açúcar. representa as instruções de em . DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág. 6. Tem uma estrutura semântica e sintática própria e que pode variar nas diferentes bibliografias ou formas de representação. Um professor precisa calcular a média de um aluno. Uma pessoa apressada estava com sede e decidiu comprar uma garrafa de água na cantina da FURB. . mas não sabe a estante onde o livro se encontra. Descreva um algoritmo para calcular a área de uma sala retangular. Considere que você tenha uma trena . Descreva um algoritmo que a permita cumprir sua tarefa. 3. lápis e tesoura. Descreva um algoritmo para auxiliá-lo nesta tarefa. considerando que ele tem 3 notas do aluno e que a média é calculado de forma aritmética. descreva um algoritmo com os passos necessários para o aluno emprestar o livro. faca e colher de sopa descreva um algoritmo para fazer a limonada pedida. Considerando que ele sabe que o livro está disponível. Considerando que ela tinha dinheiro suficiente para comprar a garrafa de água e que não havia fila no caixa descreva um algoritmo que lhe permita comprar a garrafa de água. um copo com água.: 18 . mas com um notação um pouco diferente. Uma criança precisa desenhar e recortar um quadrado em uma folha de papel. e que a biblioteca conta com um sistema computadorizado disponível em um computador da própria biblioteca para a pesquisa do livro. Uma pessoa dirigiu-se até uma casa de sucos e pediu uma limonada com açúcar.Portugol ou Português Estruturado: representa as instruções através de um subconjunto de palavras da língua portuguesa. 4.para fazer a medida em metros de tamanho suficiente para medir a sala.Fluxograma (Diagrama de Blocos): representa instruções através de símbolos gráficos. Além da folha de papel ela tem régua. Também é conhecida por pseudolinguagem ou pseudocódigo. ao invés de utilizarmos o endereço de memória em hexadecimal.Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação 3 ESPECIFICAÇÃO DE ALGORITMOS • Os algoritmos em geral trabalham com alguns conceitos fundamentais DADOS. Todas as informações armazenadas na memória do computador tem o que chamamos de endereço de memória. utilizamos nomes de variáveis e constantes. O endereço de memória é representado por um número hexadecimal. DADOS • • • DADOS são as informações que devem armazenadas para a solução do problema. ser Os DADOS são representados através de variáveis ou constantes e tem tipos. • • DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág. Os DADOS DE ENTRADA E SAÍDA de um algoritmo e os DADOS INTERMEDIÁRIOS via de regra DEVEM SER armazenados em VARIÁVEIS. Para facilitar a localização destas informações na memória. As variáveis tem tipos que definem que informação pode ser armazenada nela. EXPRESSÕES e COMANDOS. • • Variáveis • Variável é um endereço de memória representado por um nome cujo conteúdo pode ser alterado ao longo de um programa.: 19 . a variável para armazenar a terceira nota do aluno (Nota3). . a variável para armazenar a segunda nota do aluno (Nota2). . ou seja. com casas decimais.caractere: define variáveis alfanuméricas. a variável para armazenar a soma das notas dos alunos (Soma) e a variável para armazenar a média do aluno (Media). sem casas decimais.que valores a variável pode assumir.real: define variáveis numéricas do tipo real (ponto flutuante). . • Os tipos de dados básicos ou primitivos são: .as operações às quais ela pode ser submetida.lógico: define variáveis do tipo VERDADEIRO ou FALSO. ou seja. . EXEMPLO: No exercício 4 do capítulo anterior o número de avaliações poderia ser definido como uma constante pois ele é fixo (3).: 20 .inteiro: define variáveis numéricas do tipo inteiro. Deve ser delimitado em um número máximo de carateres. Constantes • Constante é um endereço de memória representado por um nome cujo conteúdo não pode ser alterado ao longo de um programa. . Tipos de Dados • Toda variável tem um tipo de dado associado.Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação EXEMPLO: No exercício 4 do capítulo 2 podemos destacar cinco variáveis: a variável para armazenar a primeira nota do aluno (Nota1).o espaço a ser ocupado pela variável na memória. DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág. O tipo de dado determina: . + * / \ % ^ Os operadores aritméticos realizam operações matemáticas sobre os dados (variáveis ou constantes). Por convenção. * e / têm precedência sobre + e -. +x. DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág. subtração. * * * Estes operadores podem variar de acordo com a notação utilizada pela pseudolinguagem. Operadores unários: são aplicados a um único operando. Operador de potenciação*: é aplicado para elevar um valor a uma potência. As EXPRESSÕES em geral necessitam de operadores. é necessário usar parênteses como em qualquer expressão aritmética. São os operadores aritméticos de maior precedência. multiplicação e divisão respectivamente. EXEMPLO: No exercício 4 do capítulo anterior uma expressão é dada pela soma das notas e a outra o cálculo da média. Operadores Aritméticos • +. Para modificar a ordem de avaliação das operações.Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação EXEMPLOS: Considerando o nome.: 21 . EXPRESSÕES • • EXPRESSÕES denotam as operações que devem ser feitas para o processamento dos dados. Por exemplo. Operador de resto*: é aplicado para o resto da divisão de números inteiros. 8 % 3 = 2. Operador de divisão de inteiros*: é aplicado na divisão de números inteiros substituindo operador \. Para isto precisamos de operadores de som e divisão. Exemplos: -3. a idade e o salário de um funcionário podemos ter como tipos de dados: Nome : caractere[30] Idade : inteiro Salario : real Obs: O Nome está limitado a 30 caracteres. Operadores aritméticos: são aplicados para adição. Tem a mesma precedência do operador de divisão tradicional. Exemplo: 5 ^ 2 = 25. Tem a maior precedência entre os operadores lógicos.Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação Operador de Caracteres • O operador de caracteres realiza a concatenação entre cadeias de caracteres. = > < Igual Maior Menor >= Maior ou Igual <= Menor ou Igual <> Diferente Operadores Lógicos • Os operadores lógicos permitem realizar combinações de operações relacionais. e nao FALSO = VERDADEIRO. nao VERDADEIRO = FALSO. também chamada de tabela verdade: V V F F e e e e E V F V F =V =F =F =F V V F F OU ou V = V ou F = V ou V = V ou F = F NEGAÇÃO NÃO V = F NÃO F = V DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág. juntando diversas decisões em uma única expressão. + Operador de concatenação de cadeias de caracteres. Operador unário de negação. Operador que resulta VERDADEIRO quando um dos seus operandos lógicos for verdadeiro.: 22 . Operador que resulta VERDADEIRO somente se seus dois operandos lógicos forem verdadeiros. quando usado com dois valores (variáveis ou constantes) do tipo "caractere". O resultado de um operador relacional é sempre um valor lógico (VERDADEIRO ou FALSO). Por exemplo: "Rio " + " de Janeiro" = "Rio de Janeiro". Operadores Relacionais • • Os operadores relacionais realizam operações de comparações entre os dados (variáveis ou constantes). Não Ou E • O resultado dos operadores lógicos são dados pela seguinte tabela. Os dados de entrada devem ser inseridos em um programa através do comando de leitura. O símbolo que representa uma atribuição é uma seta apontada para a esquerda (<-). que indica que o valor da expressão à direita deve ser armazenado na variável à esquerda. Os dados de saída devem ser mostrados através dos comandos de escrita. ou o valor de uma variável ou constante seja armazenado em uma variável.A + 2 Comandos de Entrada e Saída • Os comandos de entrada e saída são usada para inserir dados em um programa (ler) ou apresentar os resultados de um programa (escrever). Comando de Atribuição • Um comando de atribuição permite que o resultado de uma expressão. O comando de atribuição indica que a variável deve receber um conteúdo. ser Os comandos mais comuns usados em algoritmos são de atribuição e de entrada e saída. • • • • DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág.: 23 . EXEMPLO 1: atribuir o valor 5 à variável A A <.5 EXEMPLO 2: atribuir o valor de A somado de 2 unidades à variável B B <.Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação COMANDOS • • Os comandos definem operações que devem executadas ou processadas pelo computador. A expressão a ser escrita pode ser o nome de uma variável. Com este comando o algoritmo aguarda que o usuário insira um valor que será armazenado na memória do computador. Com este comando o algoritmo mostra o resultado de uma expressão definida pelo usuário. Este comando exige que seja colocado o nome da variável onde a informação digitada será armazenada. SINTAXE: leia (variável) EXEMPLO 1: aguarda que seja digitado um valor a ser armazenado na variável A leia (A) EXEMPLO 2: aguarda que seja digitado um valor a ser armazenado na variável nome leia (nome) • Comando de Saída em Portugol • • • O comando de saída utilizado em algoritmos é o comando escreva. SINTAXE: escreva (expressão) EXEMPLO 1: escreve o valor da variável X escreva (X) DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág.Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação Comando de Entrada em Portugol • • O comando de entrada utilizado em algoritmos é o comando leia.: 24 . um texto ou uma expressão matemática. ou até mesmo uma combinação entre estas separadas por vírgulas. Português Estruturado ou Portugol • • Português Estruturado ou Portugol é uma das formas de representação de algoritmos. A estrutura sintática básica do método representação proposto está representada abaixo.Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação EXEMPLO 2: escreve um texto escreva (“Boa noite!”) EXEMPLO 3: escreve uma expressão (o resultado da soma de 2 variáveis) escreva (A + B) EXEMPLO 4: escreve um texto e o conteúdo de uma variável) escreva (“Idade do aluno = “. idade).net) utilizado na ferramenta VisuAlg (versão 2. Neste material está sendo adotado o modelo proposto pela Apoio Informática (www.0) que é uma forma de representação de uma pseudolinguagem Portugol. algoritmo identificador <cabeçalho> <declarações> inicio <corpo do algoritmo> fimalgoritmo de • • DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág. dependendo da bibliografia ou da ferramenta utilizada.apoioinformatica.: 25 . Por não ser uma linguagem padronizada podem existir diversas construções sintáticas para o Portugol. no VisuAlg a lista de palavras reservadas pode ser verificada na Ajuda da linguagem. constantes e funções. no VisuAlg os nomes das variáveis devem começar por uma letra e depois conter letras. os nomes dos identificadores devem ser explicativos em relação ao seu conteúdo.identificador: são nomes criados pelo programador. Na estrutura sintática apresentada a palavra identificador indica que o programador pode dar um nome ao seu algoritmo. até um limite de 30 caracteres.Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação • Nesta definição importantes: observam-se alguns conceitos .cabeçalho: corresponde a comentários que devem ser inseridos para permitir a identificação do algoritmo como. DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág. inicio. . por exemplo.declarações: corresponde a uma área específica para a declaração de identificadores. no VisuAlg as linhas de comentários devem ser iniciadas pelos caracteres //. Outros exemplos de identificadores são nomes de variáveis. números ou underline. Além disso. . o que ele faz.palavras reservadas: são palavras exclusivas da linguagem que tem algum significado semântico e que devem ser usadas pelo programados apenas dentro de um determinado contexto previamente estabelecido. fimalgoritmo. . quem fez e quando fez.: 26 . . Na estrutura apresentada anteriormente são exemplos de palavras reservadas: algoritmo.corpo do algoritmo: corresponde a área onde devem ser inseridos os comandos e instruções a serem executados pelo algoritmo. 2.largura * comprimento //escrever a área escreva ("Area da sala = ". utilizando a base de testes PROFESSOR: Maurício Capobianco Lopes pág. BASE DE TESTES Largura: 10 Largura: 5 Largura: 3 Comprimento: 10 Comprimento: 7 Comprimento: 90 Área: 100 Área: 35 Área: 270 5. Largura Comprimento 3. Calcular área da sala 6. descreva um algoritmo para calcular sua área. Dada a largura e o comprimento em metros de uma sala retangular.Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação Exercícios Resolvidos 1. DADOS ENTRADA DE Identifique e descreva os dados ou recursos (substantivos) disponíveis para a solução do problema. area) fimalgoritmo 7. PROBLEMA (INTERPRETAÇÃO) Dada a largura e o comprimento em metros de uma sala retangular. Descreva os passos gerais para a solução do problema. DADOS DE SAÍDA Identifique e descreva os resultados desejados para o problema. comprimento. procurando observar se todas as entradas ou recursos necessários estão disponíveis. 1. Ler largura e comprimento Calcular a área (largura * comprimento) Escrever a área Descreva o algoritmo em Portugol para a solução do problema. algoritmo "area" // Função : Este algoritmo calcula a área de uma sala retangular // Autor : Mauricio Capobianco Lopes // Data : 12/3/2006 var largura. visando montar uma base de testes para o problema. area : inteiro inicio //ler largura e comprimento escreva ("Digite largura da sala: ") leia (largura) escreva ("Digite o comprimento da sala: ") leia (comprimento) //calcular a área area <.: DISCIPLINA: Introdução a Programação 27 . descreva um algoritmo para calcular sua área. Verifique atentamente se o problema está bem definido. PROCESSAMENTO Identifique os verbos que indiquem as operações que devem ser realizadas para a solução do problema. se não há ambigüidades ou informações incompletas e irrelevantes. TESTES Execute as operações descritas no passo 6. DESCRIÇÃO DO Descreva a seqüência de instruções necessárias para a solução do ALGORITMO problema. Área 4. Defina um conjunto de informações de entrada com suas respectivas saídas. Destaque aqui as ambigüidades ou informações incompletas Não há. 0 3: 10.0 3: 3. considerando que ele tem 3 notas do aluno e que a média é calculado de forma aritmética.0 5. Descreva um algoritmo para auxiliá-lo nesta tarefa.5 4. Em algumas situações é necessário registrar informações intermediárias para acompanhar a execução dos passos.0 9.5 6. Descreva um algoritmo para auxiliá-lo nesta tarefa.: 28 .0 – – – – – Nota Nota Nota Nota Nota 2: 2: 2: 2: 2: 6. considerando que ele tem 3 notas do aluno e que a média é calculado de forma aritmética.Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação descrita no passo 4 para verificar se os resultados desejados estão corretos.0 9. mesmo se estiver correta. Defina um conjunto de informações de entrada com suas respectivas saídas.0 3: 9. 2.0 (S) (S) (S) (S) (S) Média: Média: Média: Média: Média: 6. Caso encontre possibilidades de melhoria retorne ao passo 6. PROCESSAMENTO Identifique os verbos que indiquem as operações que devem ser realizadas para a solução do problema. Verifique atentamente se o problema está bem definido. 1. para eliminar eventuais possibilidades de erro e melhorar a maneira de descrever ou o modo como está sendo feito. PROBLEMA (INTERPRETAÇÃO) Um professor precisa calcular a média de um aluno.0 – – – – – Nota Nota Nota Nota Nota 3: 7. Calcular a média do aluno DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág. OTIMIZAÇÃO Comprimento: 10 Comprimento: 7 Comprimento: 90 Área: 100 Área: 35 Área: 270 Reveja a solução proposta. Média 4. 2. Nota 1 Nota 2 Nota 3 3. BASE DE TESTES (E) (E) (E) (E) (E) Nota Nota Nota Nota Nota 1: 1: 1: 1: 1: 5.0 5.0 8.5 8. visando montar uma base de testes para o problema. Um professor precisa calcular a média de um aluno.0 6. DADOS ENTRADA DE Identifique e descreva os dados ou recursos (substantivos) disponíveis para a solução do problema.0 6.5 1. procurando observar se todas as entradas ou recursos necessários estão disponíveis.0 5. Destaque aqui as ambigüidades ou informações incompletas Não há. DADOS DE SAÍDA Identifique e descreva os resultados desejados para o problema. se não há ambigüidades ou informações incompletas e irrelevantes.0 3: 10. Largura: 10 Largura: 5 Largura: 3 8.0 7. Uma solução eficiente deve usar menos memória possível e ser a mais rápida possível. para eliminar eventuais possibilidades de erro e melhorar a maneira de descrever ou o modo como está sendo feito.0 9.0 7.0 8.0 6.0 18.5 8.0 3: 9. soma. utilizando a base de testes descrita no passo 4 para verificar se os resultados desejados estão corretos.5 1. TESTES de um aluno Execute as operações descritas no passo 6.0 5. Caso encontre possibilidades de melhoria retorne ao passo 6.0 15.0 3: 3.5 6.5 4. Descreva os passos gerais para a solução do problema. DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág.0 9. mesmo se estiver correta.0 8. Ler notas do aluno Somar as notas do aluno (nota1 + nota2 + nota3) Calcular a média do aluno (soma das notas / 3) Escrever a média Descreva o algoritmo em Portugol para a solução do problema.0 (P)Soma: (P)Soma: (P)Soma: (P)Soma: (P)Soma: 18.nota1 + nota2 + nota3 //calcular a média media <. (E)Nota (E)Nota (E)Nota (E)Nota (E)Nota 1: 1: 1: 1: 1: 5.0 (S)Média: (S)Média: (S)Média: (S)Média: (S)Média: 6. media) fimalgoritmo 7. DESCRIÇÃO DO Descreva a seqüência de instruções necessárias para a solução do ALGORITMO problema. OTIMIZAÇÃO Reveja a solução proposta.: 29 .0 27.0 21.Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação 6. algoritmo "media" // Função : Este algoritmo calcula a média considerando // 3 notas // Autor : Mauricio Capobianco Lopes // Data : 12/3/2006 var nota1.0 Nota Nota Nota Nota Nota 3: 7.0 3: 10. nota2.0 3: 10.0 5.0 Nota Nota Nota Nota Nota 2: 2: 2: 2: 2: 6.soma / 3 //escrever a média escreva ("Média = ". Em algumas situações é necessário registrar informações intermediárias para acompanhar a execução dos passos. media : real inicio //ler notas do aluno escreva ("Digite a primeira nota do aluno: ") leia (nota1) escreva ("Digite a segunda nota do aluno: ") leia (nota2) escreva ("Digite a terceira nota do aluno: ") leia (nota3) //somar as notas soma <.0 6. Uma solução eficiente deve usar menos memória possível e ser a mais rápida possível. nota3. MATRÍCULA. o número de matrícula e o sexo de um aluno. Astrogilda pintou em sua camiseta: 'Preserve o meio ambiente'. Pare : caracter 2 : inteiro José subiu 5 degraus para pegar 1 maçã boa.3 segundos nos 100 metros rasos. Determine qual é o tipo primitivo da informação sublinhada presente nas sentenças abaixo: a) b) c) A placa 'Pare' tinha 2 furos de bala. SEXO sejam utilizadas para armazenar a nota. Assinale os identificadores (nomes de variáveis) válidos e indique quais e o porquê dos identificadores (nomes de variáveis) inválidos: a) b) c) d) e) f) g) h) i) j) k) l) m) n) o) valor (X)Válido nome empresa ( )Válido x2 ( )Válido 3x4 ( )Válido M{a} ( )Válido Xyz ( )Válido 'nota' ( )Válido Salário ( )Válido nota*do*aluno( )Válido maria ( )Válido ah! ( )Válido b248 ( )Válido a1b2c3 ( )Válido km/h ( )Válido sala215 ( )Válido ( )Inválido: (X)Inválido: ( )Inválido: ( )Inválido: ( )Inválido: ( )Inválido: ( )Inválido: ( )Inválido: ( )Inválido: ( )Inválido: ( )Inválido: ( )Inválido: ( )Inválido: ( )Inválido: ( )Inválido: _______________________ tem espaços em branco _______________________ _______________________ _______________________ _______________________ _______________________ _______________________ _______________________ _______________________ _______________________ _______________________ _______________________ _______________________ _______________________ 3. João recebeu sua 18o medalha por ter alcançado a marca de 57. DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág.50 ao vendedor de tintas. Albertina levou 3 ½ horas para chegar ao hospital onde concebeu 1 criança de sexo 'F'. d) e) 2. o nome. e ficou devendo R$ 100. Supondo que as variáveis NOTA. declare-as.: 30 .Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação Exercícios Propostos 1. NOME. 0 b <.x / y ^ 2 z <.5 j <.r / s d) Comandos a <.x / 2 y <.10 z <.2.y * 6 x <.1 y <.(j + i)^2 m <.4 + y / 3 y <.Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação 4. Indique o tipo de cada uma das variáveis em cada seqüência de comandos e mostre os conteúdos das variáveis durante sua execução: a) Comandos x <.67 1 4 4.w \ z w <.y .i k <.67 i j k m r s t v a b c x y z x y z w a b c d DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág.(t + 1) + s .-7 b <.0 c <.10 w <.y + z x <.3 s <.: 31 .25 c <.b / a + (b .10.(x * 5 .0.67 5 4 4.r v <.1600 y <.k % 3 c) Comandos r <.25.a) / 2 a <.s \ 9 t <.4 + x \ 3 x <.x + y b) Comandos i <.5) e) Comandos x <.x .r ^ r t <.w % z g) Comandos a <.10) / 40 + 1 z <.b + 10 x y z inteiro inteiro real 1 1 2 1 2 4.z / 2 f) Comandos x <.(x + y) / 13 y <.2 z <.34 y <.c ^ (b / a . C (caracter). L (lógico) ou N (quando não for possível defini-lo): a) (I) a + b + c b) (N) l1 ^ l2 c) ( ) a + b + z d) ( ) nome + rua e) ( ) a > b f) ( ) a > y g) ( ) nome > rua h) ( ) l1 ou l2 i) ( ) (rua ≠ nome) e não (a = b) j) ( ) a + b / c k) ( ) a + z / a l) ( ) a > b = l1 m) ( ) x + y / z n) ( ) x + z / a 7.5 9 'ANA' 'professor' 12 100 'Ana' 'medico' 10 150 'Carlos' 'professor' 6. z : real nome. <<<<<- a b (b d c + + - b a c) b b + * c 2 Dada a seguinte declaração de variáveis: a.Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação d b a b d 5. b. “noite” e “frio” e que existe uma variável lógica L cujo valor é falso: a) b) B = A * C e L ou verdadeiro ‘dia’ = D ou E <> ‘clima’ ( )F ( )F (X)V ( )V pág. R (real). B.: DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes 32 . Determine os resultados obtidos na avaliação das expressões abaixo. preenchendo os espaços em branco com os valores lógicos (verdadeiro ou falso) obtidos como resultados das relações. D. E contêm respectivamente 2. l2 : logico Classifique as expressões seguintes de acordo com o tipo de dado do resultado de sua avaliação: I (inteiro). C. sabendo que A.5. tendo em vista os valores atribuídos a estas variáveis: Variáveis Relações a B nome profissao a^2+1 >= b profissão nome ≠ = 'medico' 'Ana' 3 16 'Miriam' 'advogado' falso verdadeiro falso 5 14 'Pedro' 'medico' 2. Dada a declaração de variáveis: a. rua : caracter[20] l1. profissao : caracter[30] Complete o quadro a seguir. 7. b : inteiro nome. c : inteiro x. 3. y. o valor recebido por hora e o número de dependentes. Descreva um algoritmo que dado uma temperatura em °F informe o seu valor em °C: FÓRMULA: °F = (9/5)°C + 32 DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág. FÓRMULA: hipotenusa2 = cateto12 + cateto22 11. O salário bruto é calculado multiplicando-se o número de horas trabalhadas pelo valor recebido por hora.00 por dependente (valor para cálculo do salário família) e são feitos descontos de 8. Descreva um algoritmo que leia o comprimento dos catetos de um triângulo retângulo e calcule o comprimento da hipotenusa.5% sobre o salário trabalho para o INSS e de 5% sobre o salário trabalho para o imposto de renda. Considerando que o atendente tem a cotação do dólar. A empresa paga R$ 10. descreva um algoritmo para calcular quantos reais o atendente deve devolver para a pessoa. Descreva um algoritmo que informe o nome. Descreva um algoritmo que calcule o volume de uma lata de óleo. Descreva um algoritmo que leia os nomes de 4 pessoas e escreva-os em ordem inversa à ordem de leitura.00 por hora (valor para cálculo do salário trabalho) e R$ 60. L e B \ A >= C ou não A<= C ( )F B**2 // 3 = 14 / A ou (B .: 33 . o salário bruto e o salário líquido do funcionário. FÓRMULA: volume = π * raio2 * altura 9. 12. Para isto ela entregou um valor em dólares para o atendente. 14. acrescido de 10% por dependente. o número de horas trabalhadas mensais e o número de dependentes.5) ( )F não L ou verdadeiro e C >= A \ A ( )F B + (-2) = (2 * C) ^ 2 / 10 ( )F ( ( ( ( )V )V )V )V Uma pessoa foi até uma casa de câmbio trocar dólares por reais. 13.Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação c) d) e) f) 8. 10. Descreva um algoritmo que calcule o salário bruto de um funcionário sabendo o seu número de horas trabalhadas mensais. Uma empresa tem para um funcionário os seguintes dados: o nome.3 <= C + 0. 10 e 1 reais. 17. 18. colocando um mourão a cada 3 metros. Suponha que um caixa disponha apenas de notas de 100. sabendo que o automóvel faz 12 km por litro. o gasto total. e e f. Suponha que o sistema monetário não utilize centavos. faça um algoritmo que determine e escreva o número mínimo de notas que o caixa deve fornecer como troco. Considerando que alguém está pagando uma compra. o gasto em mourões e o gasto em arame.cd) / (ae – bd) Descreva um algoritmo que tendo os valores a. supondo que a cerca seja feita com 4 fios de arame. Escreva também o número de cada tipo de nota a ser fornecido como troco.bf) / (ae – bd) y = (af . Descreva um algoritmo que a partir da distância percorrida e o do tempo gasto por um motorista durante uma viagem de final de semana. b.Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação 15. DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág. c. Descreva um algoritmo que a partir das medidas dos 4 lados de um terreno. calcule e informe os valores de x e y. 16. o preço de um mourão e o preço de um metro de arame farpado informe: a) b) o número de mourões necessários para cercar o terreno. d.: 34 . Um sistema de equações lineares da forma: ax + by = c dx + ey = f pode ser resolvido utilizando-se as seguintes fórmulas: x = (ce . calcule a velocidade média e a quantidade de combustível gasto na viagem. As estruturas de seleção podem ser: seleção simples. As estruturas de seleção permitem a escolha de um grupo de comandos (instruções) a ser executado quando determinadas condições são ou não satisfeitas. se <expressão-lógica> entao <seqüência-de-comandos> fimse DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág.Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação 4 Estruturas de Controle em Nível de Instrução – Seleção • • As estruturas de controle em nível de instrução podem ser classificadas em: SELEÇÃO ou REPETIÇÃO.: 35 . • • Seleção Simples • As estruturas de seleção simples apresentam apenas uma condição. seleção composta e seleção de múltipla escolha. As estruturas de seleção avaliam expressões lógicas tendo como resultado verdadeiro ou falso. seleção encadeada. Exemplos: Se está chovendo então abra o guarda-chuva Se a biblioteca está aberta então empreste o livre Se tem açúcar então adoce a limonada Se não está frio então tire o casaco • Sintaxe em Portugol (VisuAlg). : 36 .0 entao escreva (“Aluno aprovado”) fimse Seleção Encadeada • As estruturas de seleção encadeadas apresentam alternativas de ação diferentes de acordo com a situação avaliada.Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação • Exemplo simplificado para verificar se um aluno está aprovado em uma disciplina: leia (nota) se nota >= 6.0 entao escreva (“Aluno aprovado”) senao escreva (“Aluno reprovado”) DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág. Exemplos: Se está chovendo então vou de carro senão vou de ônibus Se gosto de limonada com açúcar então coloco açúcar na limonada senão se gosto da limonada com adoçante então coloco adoçante na limonada • Sintaxe em Portugol (VisuAlg). se <expressão-lógica> entao <seqüência-de-comandos-expressão-verdadeira> senao <seqüência-de-comandos-expressão-falsa> fimse • Exemplo simplificado para informar se um aluno está aprovado ou reprovado em uma disciplina: leia (nota) se nota >= 6. As estruturas de seleção compostas podem ser simples ou encadeadas. Devem ser utilizadas com os operadores lógicos E ou OU. Apenas devem ser acrescidas mais expressões lógicas. As expressões lógicas devem ser delimitadas por parênteses. Exemplos: Se está com sede e tem dinheiro então compre uma garrafa de água Se o computador está ligado e tem browser então acesse a internet Se está calor ou a água está quente então mergulhe na piscina Se está chovendo e está fazendo frio e você está em casa então coma uma pipoca tome um chá quente Se é final de semana e o tempo está bom então vou à praia Senão fico em casa • A sintaxe em Portugol (VisuAlg) não muda.Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação fimse Seleção Composta • • • As estruturas de seleção compostas apresentam mais de uma condição. utilizando os operadores lógicos.: 37 . • DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág. . ..Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação • Exemplo simplificado de um algoritmo para verificar se uma pessoa pode nadar em uma pisicina: leia (temperatura) leia (situacao_agua) se (temperatura > 25) “limpa”) então escreva (“Pode nadar”) fimse e (situacao_agua = Seleção Múltipla • As estruturas de seleção múltipla permitem avaliar uma entre diversas alternativas. .. <exp12>. escolha <expressão-de-seleção> caso <exp11>. . <exp1n> <seqüência-de-comandos-1> caso <exp21>.. <exp2n> <seqüência-de-comandos-2> . <exp22>.: 38 . DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág... outrocaso <seqüência-de-comandos-extra> fimescolha • A opção outrocaso é opcional e indica que nenhuma das opções anteriores foi validada. Escolha o tempo sol : vou à praia chuva : fico em casa Escolha a cor verde : tenho esperança vermelho : estou apaixonado azul : está tudo tranquilo • Sintaxe em Portugol (VisuAlg). se não há 1. Valor inteiro 3. Identifique se há a necessidade de uso de estruturas de seleção e que tipo de avaliação deve ser feita."F" escreva ("Feminino") caso "m". procurando observar se todas as entradas ou recursos necessários estão disponíveis.1 Operações a serem realizadas Informar se um determinado valor é par ou ímpar 5. DADOS DE SAÍDA 4."M" escreva ("Masculino") outrocaso escreva ("Sexo indefinido") fimescolha Exercícios Resolvidos 1. Defina um conjunto de informações de entrada com suas respectivas saídas. Dado um valor inteiro maior do que 0 informe se o valor é par ou ímpar. ambigüidades ou informações incompletas e irrelevantes. DADOS ENTRADA DE Identifique e descreva os dados ou recursos (substantivos) disponíveis para a solução do problema. DESCRIÇÃO DO Descreva a seqüência de instruções necessárias para a solução do problema. Destaque aqui as ambigüidades ou informações incompletas Não há. Ler o valor Se o número é par então Informar que o número é par Senão Informar que o número é ímpar DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág. (E) Valor: 5 (S) “Ímpar” (E) Valor: 10 (S) “Par” (E) Valor:5786 (S) “Par” 5. BASE DE TESTES Mensagem se o valor é par ou ímpar. 5.2 Uso de estruturas de seleção Verificar se o número é par ou ímpar 6. 2.Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação • Exemplo simplificado de um algoritmo para escrever por extenso o sexo de uma pessoa dada a digitação de F ou M: leia (sexo) escolha sexo caso "f".1 Descreva os passos gerais para a solução do problema. Verifique atentamente se o problema está bem definido. ALGORITMO 6. PROBLEMA (INTERPRETAÇÃO) Dado um valor inteiro maior do que 0 informe se o valor é par ou ímpar. PROCESSAMENTO Identifique os verbos que indiquem as operações que devem ser realizadas para a solução do problema. Identifique e descreva os resultados desejados para o problema.: 39 . visando montar uma base de testes para o problema. utilizando a base de testes descrita no passo 4 para verificar se os resultados desejados estão corretos. procurando observar se todas as entradas ou recursos necessários estão disponíveis. Valor1 Valor2 3. (E) Valor 1: 5 – Valor 2: 6 (S) Maior = 6 (E) Valor 1: 9 – Valor 2: -8 (S) Maior = 9 (E) Valor 1: 6 – Valor 2: 6 (S) “Valores iguais” 5. OTIMIZAÇÃO Reveja a solução proposta. ambigüidades ou informações incompletas e irrelevantes. Em algumas situações é necessário registrar informações intermediárias para acompanhar a execução dos passos. 2. Dados dois números inteiros descreva um algoritmo para informar o maior valor entre eles. BASE DE TESTES Identifique e descreva os resultados desejados para o problema. Identifique se há a necessidade de uso de estruturas de seleção e que tipo de avaliação deve ser feita. DADOS DE SAÍDA 4. 2. Maior Valor ou mensagem se são iguais.: 40 .1 Operações a serem realizadas Informar o maior valor DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág. Caso encontre possibilidades de melhoria retorne ao passo 6. PROCESSAMENTO Identifique os verbos que indiquem as operações que devem ser realizadas para a solução do problema. se não há 1. mesmo se estiver correta. visando montar uma base de testes para o problema. PROBLEMA (INTERPRETAÇÃO) Dados dois números inteiros descreva um algoritmo para informar o maior valor entre eles Destaque aqui as ambigüidades ou informações incompletas Não há previsão para a situação dos dois serem iguais. Defina um conjunto de informações de entrada com suas respectivas saídas.2 Descreva o algoritmo em Portugol para a solução do problema. Neste caso será apresentada uma mensagem informando sobre a igualdade. (E) numero: 5 (S) “Ímpar” (E) numero: 10 (S) “Par” (E) numero: 5786 (S) “Par” 8. para eliminar eventuais possibilidades de erro e melhorar a maneira de descrever ou o modo como está sendo feito. DADOS ENTRADA DE Identifique e descreva os dados ou recursos (substantivos) disponíveis para a solução do problema. Uma solução eficiente deve usar menos memória possível e ser a mais rápida possível. algoritmo "ParImpar" // Função : Este algopritmop informa se um número é par ou ímpar // Autor : Maurício Capobianco Lopes // Data : 15/3/2006 var numero : inteiro inicio //ler o número escreva ("Digite um número: ") leia (numero) //verificar se o número é par ou ímpar se numero % 2 = 0 entao escreva ("Número Par") senao escreva ("Numero Impar") fimse fimalgoritmo 7.Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação 6. 5. TESTES Execute as operações descritas no passo 6. Verifique atentamente se o problema está bem definido. Uma solução eficiente deve usar menos memória possível e ser a mais rápida possível.: DISCIPLINA: Introdução a Programação 41 . Em algumas situações é necessário registrar informações intermediárias para acompanhar a execução dos passos.2 Uso de estruturas de seleção Comparar os valores 6. OTIMIZAÇÃO Reveja a solução proposta. TESTES Execute as operações descritas no passo 6. valor2) senao escreva ("Os valores são iguais") fimse fimse fimalgoritmo 7. Ler os valores (valor1 e valor2) Se o valor1 é maior do que o valor2 então Informar valor1 Senão Se valor2 é maior do que o valor1 então Informar o valor2 Senão Informar que os valores são iguais.1 Descreva os passos gerais para a solução do problema. Considerando que o sistema apresenta 3 cursos disponíveis (1 – Ciência da Computação. utilizando a base de testes descrita no passo 4 para verificar se os resultados desejados estão corretos. algoritmo "maior" // Função : Algoritmo para informar o maior entre 2 valores // Autor : Mauricio Capobianco Lopes // Data : 15/3/2006 var valor1. para eliminar eventuais possibilidades de erro e melhorar a maneira de descrever ou o modo como está sendo feito. valor2 : inteiro inicio //ler os valores escreva ("Informe o primeiro valor: ") leia (valor1) escreva ("Informe o segundo valor: ") leia (valor2) //comparar os valores se (valor1 > valor2) entao escreva ("Maior = ". 3. ALGORITMO 6. valor1) senao se (valor2 > valor1) entao escreva ("Maior = ". 2 – Licenciatura da Computação e 3 – Sistemas de Informação) descreva um algoritmo para ler a opção do aluno e escrever uma mensagem informando o título que o aluno vai receber caso opte por aquele curso. As titulações são respectivamente: PROFESSOR: Maurício Capobianco Lopes pág. Caso encontre possibilidades de melhoria retorne ao passo 6. mesmo se estiver correta. 6. (E) Valor 1: 5 – Valor 2: 6 (S) Maior = 6 (E) Valor 1: 9 – Valor 2: -8 (S) Maior = 9 (E) Valor 1: 6 – Valor 2: 6 (S) “Valores iguais” 8.Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação 5.2 Descreva o algoritmo em Portugol para a solução do problema. DESCRIÇÃO DO Descreva a seqüência de instruções necessárias para a solução do problema. Um aluno está em dúvida sobre o título que vai receber após concluir seu curso de graduação. Escrever os nomes dos cursos Ler a opção Se o curso é Ciência da Computação então Informar o título de Bacharel em Ciência da Computação Senao Se o curso é Licenciatura em Computação então Informar o título de Licenciado em Computação Senao Informar o título de bacharel em Sistemas de Informação 6. Opção de curso 3. 2. PROBLEMA (INTERPRETAÇÃO) Verifique atentamente se o problema está bem definido.Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação “Bacharel em Ciência da Computação”. 1.1 Operações a serem realizadas Informar o título do aluno de acordo com o curso desejado 5. algoritmo "Titulo" // Função : Este algopritmo informa o título de um aluno de acordo com o curso // escolhido.1 Descreva os passos gerais para a solução do problema. Identifique e descreva os resultados desejados para o problema. 2 – Licenciatura da Computação e 3 – Sistemas de Informação) descreva um algoritmo para ler a opção do aluno e escrever uma mensagem informando o título que o aluno vai receber caso opte por aquele curso. BASE DE TESTES (E) 1 (S) “Bacharel em Ciência da Computação” (E) 2 (S) “Licenciado em Computação” (E) 3 (S) “Bacharel em Sistemas de Informação” 5. ALGORITMO 6. se não há Um aluno está em dúvida sobre o título que vai receber após concluir seu curso de graduação.2 Descreva o algoritmo em Portugol para a solução do problema. As titulações são respectivamente: “Bacharel em Ciência da Computação”. // Autor : Maurício Capobianco Lopes // Data : 15/3/2006 var DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág. PROCESSAMENTO Identifique os verbos que indiquem as operações que devem ser realizadas para a solução do problema. DADOS ENTRADA DE Identifique e descreva os dados ou recursos (substantivos) disponíveis para a solução do problema. Defina um conjunto de informações de entrada com suas respectivas saídas. DADOS DE SAÍDA Titulação 4. 5. Trataremos as informações como sendo fixas. DESCRIÇÃO DO Descreva a seqüência de instruções necessárias para a solução do problema. visando montar uma base de testes para o problema. ambigüidades ou informações incompletas e irrelevantes. “Licenciado em Computação” e “Bacharel em Sistemas de Informação”.: 42 . Considerando que o sistema apresenta 3 cursos disponíveis (1 – Ciência da Computação.2 Uso de estruturas de seleção Testar qual é o curso desejado 6. Destaque aqui as ambigüidades ou informações incompletas Não está claro se os nomes e as titulações dos cursos são fixos ou devem ser digitados. procurando observar se todas as entradas ou recursos necessários estão disponíveis. Identifique se há a necessidade de uso de estruturas de seleção e que tipo de avaliação deve ser feita. “Licenciado em Computação” e “Bacharel em Sistemas de Informação”. c. b e c iguais a 1. Exercícios Propostos 1. respectivamente. c) se (a > b) e (a > c) entao max <. TESTES Execute as operações descritas no passo 6.c PROFESSOR: Maurício Capobianco Lopes pág. Quantas e quais expressões lógicas são avaliadas? algoritmo "exercicio_2b" var a.Ciência da Computação") escreval ("2 .Sistemas de Informação") //ler a opção do curso escreva ("Digite o número do curso desejado: ") leia (opcao) //verificar a opcao desejada e escrever a titulação escolha opcao caso 1 escreva ("Bacharel em Ciência da Computação") caso 2 escreva ("Licenciado em Computação") caso 3 escreva ("Bacharel em Sistemas de Informação") outrocaso escreva ("Opção indisponível") fimescolha fimalgoritmo 7. Uma solução eficiente deve usar menos memória possível e ser a mais rápida possível. 3 e 15. max : inteiro inicio escreval ("Digite valores:") leia (a. mesmo se estiver correta. b. Caso encontre possibilidades de melhoria retorne ao passo 6.Licenciatura em Computação") escreval ("3 .: algoritmo "exercicio_2a" var a. Em algumas situações é necessário registrar informações intermediárias para acompanhar a execução dos passos. c) se a > b entao se a > c entao max <. (E) opcao = 1 (S) “Bacharel em Ciência da Computação” (E) opcao = 2 (S) “Licenciado em Computação” (E) opcao = 3 (S) “Bacharel em Sistemas de Informação” 8. Determine o resultado da execução dos algoritmos abaixo. c. OTIMIZAÇÃO Reveja a solução proposta.b fimse se (c > a) e (c > b) entao max <.a fimse se (b > a) e (b > c) entao max <. utilizando a base de testes descrita no passo 4 para verificar se os resultados desejados estão corretos. para eliminar eventuais possibilidades de erro e melhorar a maneira de descrever ou o modo como está sendo feito.c fimse senao se b > c entao DISCIPLINA: Introdução a Programação 43 .a senao max <. max : inteiro inicio três escreval ("Digite três valores:") leia (a. b. b.Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação opcao : inteiro inicio //escrever as opções de curso escreval ("1 . sendo os valores das variáveis a. b. Uma empresa decidiu conceder um aumento de salário a seus funcionários de acordo com a seguinte tabela: PROFESSOR: Maurício Capobianco Lopes pág. escreva os 3 valores de forma que o maior valor entre a. Dados 3 valores x. ‘R’: calcular a área de um retângulo de base b e altura h. Em caso afirmativo. " = ". 4.c a. y. informe que os mesmos não formam um triângulo. descreva um algoritmo para: a) b) c) d) 7. Dado uma letra descreva um algoritmo que informe se ela é ou não uma vogal. Dados 3 valores. escreva os 3 valores a.: 9. c fique entre os outros 2. b.b fimse senao escreva ("maior valor entre ". se se se se opção opção opção opção = = = = ‘T’: calcular a área de um triângulo de base b e altura h. se a opção for 2 escreva o segundo número. se a opção for 3 escreva o terceiro e se a opção for outro valor qualquer escreva “opção inválida”. " = ". Considere que: a) b) c) d) o comprimento de cada lado de um triângulo é menor que a soma dos comprimentos dos outros lados um triângulo eqüilátero tem três lados iguais um triângulo isósceles tem dois lados iguais e um diferente um triângulo escaleno tem três lados diferentes 8. z. DISCIPLINA: Introdução a Programação 44 . max <. verifique e informe se é ‘triângulo eqüilátero’. ‘C’: calcular a área de um círculo de raio r. ‘Q’: calcular a área de um quadrado de lado l. Dados dois valores inteiros descreva um algoritmo que informe se eles são múltiplos ou não. Dado um caracter indicando uma opção. ‘triângulo isósceles’ ou ‘triângulo escaleno’. max) fimse fimalgoritmo fimse escreva ("maior valor entre ". Em caso afirmativo. c em ordem decrescente se opção = 3. Em caso negativo. descreva um algoritmo que informe-os em uma determinada ordem a partir de um menu de opções: c) d) e) 6. b. 3. 5.Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação max <. escreva os 3 valores em ordem crescente se opção = 2. c. y. c. Em caso negativo. b. se opção = 1. b. Dados 3 valores x. informe que os mesmos não formam um triângulo. z. Dados 3 valores descreva um algoritmo que informe o seu conteúdo a partir de um menu de opções da seguinte maneira: se a opção digitada for 1 escreva o primeiro número. descreva um algoritmo que verifique se os mesmos podem ser os comprimentos dos lados de um triângulo. descreva um algoritmo que verifique se os mesmos podem ser os comprimentos dos lados de um triângulo. a. max) fimalgoritmo 2. verifique e informe se é ou não é ‘triângulo retângulo’ (h2= a2 + b2). Se o índice atingir 0.00 < salário ≤ 1000.00 400.25. Normalmente os valores caem entre 0.: 45 .00 salário > 2000.58 e para mulheres o peso ideal é igual a (62.05 e 0. Dada a hora e os minutos de início e a hora e os minutos do final do jogo (considerando apenas horas inteiras).1 * altura) 44.Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação Salário em R$ salário ≤ 400. Isso é controlado regularmente.0 e < 6.0 E O algoritmo deve escrever a média de aproveitamento. descreva um algoritmo para calcular sua duração em horas e minutos. Dadas 3 notas obtidas por um aluno em 3 provas e a média dos exercícios. indústrias de todas as 3 listas serão avisadas para suspenderem as atividades. usando a fórmula: média de aproveitamento = (notaProva1 + notaProva2 * 2 + notaProva3 * 3 + notaExercicios) / 7 A atribuição dos conceitos obedece à tabela abaixo: média de aproveitamento conceito >= 9.00 1500.00 < salário ≤ 700. Se o valor atingir 0. considerando que para homens o peso ideal é igual a (72. Faça um algoritmo para ler o índice de poluição e indicar as notificações apropriadas. o conceito correspondente e a mensagem ‘aprovado’ caso o conceito seja A. as indústrias da lista B serão notificadas também. Dado o sexo e altura de uma pessoa descreva um algoritmo para calcular seu peso ideal.00 700. 11.5 e < 9. descreva um algoritmos que calcule a média de aproveitamento e o conceito do aluno.00 < salário ≤ 1500.7 * altura) . B ou C.00 1000.0 B >= 6.50.00 Índice de Aumento 15% 12% 10% 7% 4% sem aumento Descreva um algoritmo que dado o salário atual informe o índice de aumento e o valor do novo salário.0 e < 7.7.0 D < 4.40.30. lista B e lista C) de indústrias conhecidas por serem altamente poluentes da atmosfera. sabendo que o tempo máximo de duração do jogo é de 24 horas e que o jogo pode iniciar em um dia e terminar no dia seguinte. 13.0 A >= 7. Se o índice exceder 0. Os resultados de várias medidas são combinados para formar o que é chamado de “índice de poluição”.5 C >= 4. e ‘reprovado’ caso o conceito seja D ou E. DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág. as indústrias da lista A serão chamadas a suspender as operações até que os valores retornem ao intervalo normal.00 < salário ≤ 2000. O departamento do meio ambiente mantém 3 listas (lista A. 10. 12. Para valores menores do que 1 ou maiores do que 12 informe que o valor não é válido. 16. resultado : real inicio leia (operador.20 anos adulto maiores de 21 anos 15.Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação 14.nro -1 DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág.10 anos infantil 11 .17 anos juvenil 18 . b. Estabeleça valores para as variáveis a.b senao se operador = "*" entao resultado:= a * b senao se operador = "/" entao resultado:= a / b fimse fimse fimse fimse escreva (resultado) fimalgoritmo 17.7 anos mirim 8 .nro \ 2 senao se (nro % 2 <> 0) entao nro <. Descreva o objetivo do algoritmo abaixo. Dada a idade de um nadador descreva um algoritmo que o classifique em das seguintes categorias: pré-mirim 5 . Descreva um algoritmo que leia um número inteiro representando um determinado mês do ano e escreva o mês por extenso. algoritmo "exercício" var operador : caracter a . Reescreva o algoritmo abaixo usando o comando de seleção ESCOLHA.: 46 . a.13 anos infanto-juvenil 14 . Dado o algoritmo abaixo: algoritmo "exercicio" var nro : inteiro inicio leia (nro) se (nro % 2 = 0) e (nro > 0) entao nro <. b e operador e informe qual o valor armazenado na variável resultado. b) se operador = "+" entao resultado:= a + b senao se operador = "-" entao resultado:= a . nro % 2 outrocaso se (nro > 50) entao nro <.: 47 .nro * (-1) fimse fimescolha fimse fimse escreva ("nro. nro) fimalgoritmo Quais valores serão escritos considerando que o valor armazenado na variável nro pode ser 10.Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação escolha nro caso 1 ate 5 nro <. DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág.nro \ 10 senao nro <. 101 e –10?.: ".nro * 2 caso 10 ate 50 nro <. As estruturas de repetição também são chamadas de laços. Exemplos: Para 10 carros faça lave o carro Para 5 bombons faça coma o bombom Para 40 alunos faça calcule a média do aluno • Sintaxe em Portugol (VisuAlg) para <variável-de-controle> de <valor-inicial> ate <valor-final> [passo <incremento>] faca <seqüência-de-comandos> fimpara . As estruturas de repetição podem ser: condicionais (enquanto-faça ou repita-até) ou com contador (parafaça). DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág.Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação 5 Estruturas de Controle em Nível de Instrução – Repetição • As estruturas de repetição permitem que um grupo de comandos (instruções) seja executado um determinado número de vezes. • • Repetição com Contador (Para-faça) • As estruturas de repetição com contador permitem a execução de um grupo de comandos num determinado número conhecido de vezes.variável-de-controle: é a variável que controla o número de repetições do laço.: 48 . Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação . . para o valor final e para o incremento devem ser do tipo inteiro. A condição sempre será avaliada como verdadeira ou falsa. As estruturas condicionais mais comuns são: enquantofaça e repita-até.: . Seu valor padrão é 1. Exemplo simplificado para ler e escrever o nome de 10 alunos: para contador de 1 ate 10 faca leia (nome) escreva (nome) fimpara • Repetição Condicional • As estruturas de repetição condicionais avaliam uma determinada condição lógica para fazer a execução do laço de repetição. bem como. a expressão para o valor inicial.valor-final: é uma expressão que especifica o valor máximo que a variável de controle pode alcançar. É opcional. • No VisuAlg a variável de controle. Exemplos: Enquanto tem carros para lavar faça lave o carro Enquanto tem bombons para comer faça coma o bombom 49 • • DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág.valor-inicial: é uma expressão que especifica o valor de inicialização da variável de controle. .incremento: é uma expressão que especifica o incremento que será acrescentado à variável de controle em cada repetição do laço. DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág.expressão-lógica: é a expressão avaliada antes de cada repetição do laço. • • Exemplo simplificado para ler e escrever o nome de alunos: leia(nome) enquanto nome <> “fim” faca escreva (nome) leia (nome) fimenquanto • No exemplo apresentado pode ser observado o uso de um flag (“fim”).: 50 . O flag indica o fim de um determinado conjunto de dados. Sintaxe em Portugol (VisuAlg) enquanto <expressão-lógica> faca <seqüência-de-comandos> fimenquanto . <seqüência-de-comandos> é executada. Na expressão lógica podem ser usados os operadores lógicos NAO.Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação Enquanto não encontrei o livro na biblioteca faça procure em outra estante Repita calcule a média do aluno Até não ter mais alunos Enquanto-faça • A estrutura enquanto-faça executa um conjunto de instruções enquanto a expressão lógica for avaliada como verdadeira. Quando seu resultado for VERDADEIRO. E ou OU. Exercícios Resolvidos 1. Verifique atentamente se o problema está bem definido. Sintaxe em Portugol (VisuAlg) repita <seqüência-de-comandos> ate <expressão-lógica> . • • Como a expressão lógica está após a seqüência de comandos. Na expressão lógica podem ser usados os operadores lógicos NAO. se não há 1. PROFESSOR: Maurício Capobianco Lopes pág. Descreva um algoritmo para escrever a tabuada de um determinado número fornecido pelo usuário.expressão-lógica: é a expressão avaliada após cada repetição do laço. E ou OU. isto garante que os comandos sejam executados pelo menos uma vez. Quando seu resultado for FALSO <seqüência-de-comandos> é executada. ambigüidades ou informações incompletas e irrelevantes. Destaque aqui as ambigüidades ou informações incompletas Não há. Exemplo simplificado para ler e escrever o nome de alunos: repita leia(nome) escreva (nome) ate nome = “fim” • • No exemplo apresentado deve ser observado que também o nome “fim” será apresentado. PROBLEMA (INTERPRETAÇÃO) Descreva um algoritmo para escrever a tabuada de um determinado número fornecido pelo usuário.Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação Repita-até • A estrutura repita-até executa um conjunto de instruções até que a expressão lógica seja avaliada como verdadeira.: DISCIPLINA: Introdução a Programação 51 . 2. DADOS DE Identifique e descreva os dados ou recursos (substantivos) disponíveis para a solução do problema. Identifique se há a necessidade de uso de estruturas de repetição e o número ou as condições de ocorrência das repetições. contador : inteiro inicio //ler número escreva ("Informe o número para calcular sua tabuada ") leia (numero) //para valores de 1 a 10 para contador de 1 ate 10 faca //calcular e escrever a tabuada do número escreval (numero:2.3 Uso de estruturas de repetição Repetição de 1 a 10 para multiplicação do número 6.2 Descreva o algoritmo em Portugol para a solução do problema. Numero = 5 Contador 1 2 3 4 Mensagem 5 X 1 = 5 5 X 2 = 10 5 X 3 = 15 5 X 4 = 20 PROFESSOR: Maurício Capobianco Lopes pág.1 Operações a serem realizadas Calcular a tabuada do número 5. Em algumas situações é necessário registrar informações intermediárias para acompanhar a execução dos passos. PROCESSAMENTO Identifique os verbos que indiquem as operações que devem ser realizadas para a solução do problema. utilizando a base de testes descrita no passo 4 para verificar se os resultados desejados estão corretos. visando montar uma base de testes para o problema. " X ".2 Uso de estruturas de seleção Não é necessário 5. Ler numero Para contador de 1 a 10 faça Escrever a multiplicação do contador pelo número algoritmo "tabuada" // Este algoritmo escreve a tabuada de um número // Autor : Mauricio capobianco Lopes // Data : 28/3/2006 var 6. DADOS DE SAÍDA Identifique e descreva os resultados desejados para o problema. TESTES Execute as operações descritas no passo 6.Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação ENTRADA Número 3. numero * contador:3) fimpara fimalgoritmo 7. Tabuada do número 4. ALGORITMO 6. Identifique se há a necessidade de uso de estruturas de seleção e que tipo de avaliação deve ser feita.: DISCIPLINA: Introdução a Programação 52 . " = ". contador:2. 5. numero. DESCRIÇÃO DO Descreva a seqüência de instruções necessárias para a solução do problema. Defina um conjunto de informações (no mínimo 3) de entrada com suas respectivas saídas. procurando observar se todas as entradas ou recursos necessários estão disponíveis.1 Descreva os passos gerais para a solução do problema. BASE DE TESTES (E) 5 (S) 5x1=5 5x2=10 5x3=15 5x4=20 5x5=25 5x6=30 5x7=35 5x8=40 5x9=45 5x10=50 5. Dada uma turma de alunos. Identifique e descreva os resultados desejados para o problema. ambigüidades ou informações incompletas e irrelevantes. Será usada media aritmética. Identifique se há a necessidade de uso de estruturas de seleção e que tipo de avaliação deve ser feita. contendo seu nome e nota de duas provas descreva um algoritmo para informar a média de cada aluno. procurando observar se todas as entradas ou recursos necessários estão disponíveis.0 Maria 7. Nome e duas notas de alunos 3.1 Operações a serem realizadas Calcular a média de uma turma de alunos 5.: 53 . mesmo se estiver correta.0 fim (S) (S) (S) (S) (S) 5.0 6. Destaque aqui as ambigüidades ou informações incompletas 2.2 Uso de estruturas de seleção Não é necessário 5.0 5. contendo seu nome e nota de duas provas descreva um algoritmo para informar a média de cada aluno. PROBLEMA (INTERPRETAÇÃO) Dada uma turma de alunos. 5. Defina um conjunto de informações (no mínimo 3) de entrada com suas respectivas saídas. Considere que a leitura dos dados deve ser finalizada quando o nome do aluno for “fim”.0 Ana 9. Identifique e descreva os dados ou recursos (substantivos) disponíveis para a solução do problema. Ler nome Enquanto nome <> “fim” faça Ler notas Calcular a média DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág. PROCESSAMENTO Identifique os verbos que indiquem as operações que devem ser realizadas para a solução do problema. Considere que a leitura dos dados deve ser finalizada quando o nome do aluno for “fim”.0 Pedro 10. ALGORITMO 6.1 Descreva os passos gerais para a solução do problema. Identifique se há a necessidade de uso de estruturas de repetição e o número ou as condições de ocorrência das repetições.0 10. se não há 1.0 7. 2. Verifique atentamente se o problema está bem definido. visando montar uma base de testes para o problema.0 7. DADOS DE SAÍDA 4. para eliminar eventuais possibilidades de erro e melhorar a maneira de descrever ou o modo como está sendo feito. Caso encontre possibilidades de melhoria retorne ao passo 6.5 8. DESCRIÇÃO DO Descreva a seqüência de instruções necessárias para a solução do problema. OTIMIZAÇÃO 5 5 5 5 5 5 X X X X X X 5 = 25 6 = 30 7 = 35 8 = 40 9 = 45 10 = 50 Reveja a solução proposta.5 6. DADOS ENTRADA DE Não há a fórmula do cálculo da média.0 9.5 5. Uma solução eficiente deve usar menos memória possível e ser a mais rápida possível.0 6. BASE DE TESTES Média de cada aluno (E) (E) (E) (E) (E) (E) João 5.3 Uso de estruturas de repetição Repetição da leitura dos dados dos alunos até encontrar o nome “fim” 6.Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação 5 6 7 8 9 10 8.0 José 8. media:4:1) //ler nome de outro aluno escreva ("Digite o nome do aluno: ") leia (nome) fimenquanto fimalgoritmo 7. 8.: 54 .0 10. utilizando a base de testes descrita no passo 4 para verificar se os resultados desejados estão corretos.0 8.0 7.5 Reveja a solução proposta.5 10.0 6.2 Descreva o algoritmo em Portugol para a solução do problema. mesmo se estiver correta. PROFESSOR: Maurício Capobianco Lopes DISCIPLINA: Introdução a Programação pág.5 7.(nota1 + nota2) / 2 //calcular e escrever a média do aluno escreval ("Média = ". OTIMIZAÇÃO 3. escreva o maior valor escreva o menor valor escreva se existem valores iguais saia do programa se não há 1. media : real inicio //ler nome do aluno escreva ("Digite o nome do aluno: ") leia (nome) //enquanto não for digitado nome "fim" faça enquanto nome <> "fim" faca //ler notas dos alunos escreva ("Digite a primeira nota do aluno: ") leia (nota1) escreva ("Digite a segunda nota do aluno: ") leia (nota2) //calcular a media media <.0 7. Nome João Pedro Maria José Ana Fim nota1 nota2 media 5. Dados 3 valores. Uma solução eficiente deve usar menos memória possível e ser a mais rápida possível.0 5. PROBLEMA Verifique atentamente se o problema está bem definido. para eliminar eventuais possibilidades de erro e melhorar a maneira de descrever ou o modo como está sendo feito.0 6.0 9. 4.0 9.0 8. nota2. TESTES Execute as operações descritas no passo 6.0 5.Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação Informar a média Ler outro nome 6. 3. Caso encontre possibilidades de melhoria retorne ao passo 6. algoritmo "media" // Este algoritmo informa a média de uma turma de alunos dadas 2 // notas // Autor : Mauricio Capobianco Lopes // Data : 28/3/2006 var nome : caracter nota1. Em algumas situações é necessário registrar informações intermediárias para acompanhar a execução dos passos. 2.0 6. descreva um algoritmo que a partir de um menu de opções faça: a) b) c) d) se se se se opção opção opção opção = = = = 1. ambigüidades ou informações incompletas e irrelevantes. 2. PROCESSAMENTO 5.0 3 (S) “não existem valores iguais” 9. BASE DE TESTES Defina um conjunto de informações (no mínimo 3) de entrada com suas respectivas saídas. DESCRIÇÃO DO Descreva a seqüência de instruções necessárias para a solução do problema. opções faça: a) se opção = 1.1 Descreva os passos gerais para a solução do problema.0 2 (S) 6. Identifique e descreva os resultados desejados para o problema.0 1 (S) 8. (E) (E) (E) (E) (E) (E) (E) (E) Valor1 Opção Opção Opção Valor1 Opção Opção Opção = = = = = = = = 7. procurando observar se todas as entradas ou recursos necessários estão disponíveis. dependendo da opção selecionada 4.1 Operações a serem realizadas Informar ou maior.0 Valor3 = 6. o menor ou se existem valores iguais.2 Uso de estruturas de seleção Verificar o maior Verificar o menor Verificar se existem valores iguais 5. 5. Identifique se há a necessidade de uso de estruturas de repetição e o número ou as condições de ocorrência das repetições. c) se opção = 3. visando montar uma base de testes para o problema.0 Valor2 = 9.0 Valor3 = 8.0 1 (S) 9. Identifique se há a necessidade de uso de estruturas de seleção e que tipo de avaliação deve ser feita. Ler 3 números Repita Escrever o menu de opções Ler opção Escolher opção 1 : Verificar o maior valor (REFINAMENTO: Se o primeiro valor é maior que o segundo e o terceiro valores então Escrever o primeiro valor Senão Se o segundo é maior que o terceiro então Escrever o segundo valor DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág.: 55 . DADOS ENTRADA descreva um algoritmo que a partir de um menu de escreva escreva escreva saia do o maior valor o menor valor se existem valores iguais programa Destaque aqui as ambigüidades ou informações incompletas DE Identifique e descreva os dados ou recursos (substantivos) disponíveis para a solução do problema.0 3 (S) “existem valores iguais” Identifique os verbos que indiquem as operações que devem ser realizadas para a solução do problema.3 Uso de estruturas de repetição Repetição para a leitura da opção informada pelo usuário 6. DADOS DE SAÍDA O maior.0 2 (S) 4. d) se opção = 4.Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação (INTERPRETAÇÃO) Dados 3 valores. Três valores e a opção 3. b) se opção = 2. ALGORITMO 6. Não há. o menor ou se existem valores iguais 5.0 Valor2 = 4. Maior valor") escreval ("2 . saia do Capobianco o maior valor o menor valor se existem valores iguais programa Lopes valor1.Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação Senão Escrever o terceiro valor ) 2 : Verificar o menor valor (REFINAMENTO: idem ao maior comparando com o menor ) 3 : Verificar se existem valores iguais (REFINAMENTO: Se o primeiro valor é igual ao segundo ou o segundo é igual ao terceiro ou o primeiro é igual ao terceiro então “Existem valores iguais” Senão “Não existem valores iguais” ) Até opção = 4 6. valor2) DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág. escreva 3.: 56 .2 Descreva o algoritmo em Portugol para a solução do problema. opcao : inteiro inicio //ler os valores escreva ("Digite o primeiro valor: ") leia (valor1) escreva ("Digite o segundo valor: ") leia (valor2) escreva ("Digite o terceiro valor: ") leia (valor3) //repetir para leitura das opções repita //montar o menu escreval ("1 . valor1) senao se (valor2 > valor3) entao escreval ("Maior = ".Menor valor") escreval ("3 .Sair do programa") //ler a opção leia (opcao) //escolher opcao escolha opcao caso 1 //procurar o maior valor se (valor1 > valor2) e (valor1 > valor3) entao escreval ("Maior = ". valor3. de opções faça: // a) se opção = // b) se opção = // c) se opção = // d) se opção = // Autor : Mauricio // Data : 28/3/2006 var descreva um algoritmo que a partir de um menu 1. escreva 2. valor2. escreva 4.Valores iguais") escreval ("4 . algoritmo "opcoes" // Dados 3 valores. indicar porque. Caso encontre possibilidades de melhoria retorne ao passo 6.0 Menor = 6.0 1 – 2 – 3 - Valor2 = 4. Uma solução eficiente deve usar menos memória possível e ser a mais rápida possível. Em cada um dos seguintes segmentos de algoritmo. Valor1 Opção Opção Opção Valor1 Opção Opção Opção = = = = = = = = 7.0 “Não existem valores iguais” Valor2 = 9. OTIMIZAÇÃO Exercícios Propostos 1. TESTES Execute as operações descritas no passo 6. 8. valor3) fimse fimse caso 3 //verificar se existem iguais se (valor1 = valor2) ou (valor1 = valor3) ou (valor2 = valor3) entao escreval ("Existem valores iguais") senao escreval ("Não existem valores iguais") fimse fimescolha //terminar quando for digitada a opcao 4 ate opcao = 4 fimalgoritmo 7.0 “Existem valores iguais” Reveja a solução proposta. utilizando a base de testes descrita no passo 4 para verificar se os resultados desejados estão corretos.0 Menor = 4.: 57 . a) contador ←1 DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág.0 Valor3 = 8. valor2) senao escreval ("Menor = ". mesmo se estiver correta.0 Maior = 8. indicar se a repetição termina ou não. Em caso negativo.0 Maior = 9. Assuma que todas as variáveis são do tipo INTEIRO. Mostre também os valores armazenados em cada uma das variáveis.0 Valor3 = 6. para eliminar eventuais possibilidades de erro e melhorar a maneira de descrever ou o modo como está sendo feito. valor3) fimse fimse caso 2 //procurar o menor valor se (valor1 < valor2) e (valor1 < valor3) entao escreval ("Menor = ".Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação senao escreval ("Maior = ".0 1 2 – 3 9. valor1) senao se (valor2 > valor3) entao escreval ("Menor = ". Em algumas situações é necessário registrar informações intermediárias para acompanhar a execução dos passos. 0 enquanto numero < 10 faca DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág.: 58 .0 soma <.4 termo <.Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação total ← 0 repita total ← total + 1 escreva (total) ate contador < 0 b) contador ← 0 total ← 0 repita total ← total + 2 contador ← contador + 1 ate contador > 10 escreva (total) c) repita escreva (“a repetição pára?”) ate 3 < 2 d) numero ← 45 repita escreva (número) ate número = 100 e) número ← 45 repita escreva (número) ate número <= 100 2. soma. q.termo * q ate termo >= 200 fimalgoritmo b) algoritmo "exercício_1a" var numero. Quais valores serão escritos durante a execução dos algoritmos abaixo: a) algoritmo “exercício” var a.1 q <.a repita escreva (termo) termo <. termo : inteiro inicio a <. qdo : real inicio numero <. . 6. O valor n deve ser lido e deve ser maior do que 2..1 y <...0 enquanto y < 6 faca x <.x * (. + 100 4. 2. Descreva um algoritmo que calcule e escreva a soma da seguinte série de 100 termos: 1 1 5. DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág. . Descreva um algoritmo que escreva os n primeiros termos da seguinte seqüência de números 8. + 1 2 + 1 3 + 1 4 + .. 13.numero^2 escreva (numero. 32..1) y <.soma + qdo fimenquanto escreva (soma) fimalgoritmo c) algoritmo "exercício_1b" var x. 16. Descreva um algoritmo que escreva a série até o n-ésimo termo. 8. 7. 100 A série de Fibonacci é formada pela seqüência: 1.numero + 1 qdo <.y + 1 se x > 0 entao escreva (y) senao escreva (-y) fimse fimenquanto fimalgoritmo 3.: 59 . Considere os 20 primeiros termos da série.. 34. 18. Descreva um algoritmo para calcular o valor de S dado por: S = 3 2 + 5 6 + 7 12 + 9 20 + 11 30 + . 10. 64 . Descreva um algoritmo que calcule e escreva a soma da seguinte série de 100 termos: 1 + 2 + 3 + 4 + 5 . qdo) soma <.. . 5. 3. 1. y : inteiro inicio x <.. O valor n deve ser lido e deve ser maior do que 2. + 1 .Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação numero <.. Uma turma tem 50 alunos. 13. o percentual de audiência. 12 6 A leitura deve ser finalizada quando for digitado o valor 0. se o mesmo é par ou ímpar. para cada número lido. A leitura deve ser finalizada com o flag 0 para a altura. 12) e o número de pessoas que estavam assistindo a TV naquele horário. Dado o nome e idade de cada aluno descreva um algoritmo que: a) b) escreva os nomes dos alunos que tem 18 anos. escreva a quantidade de alunos que tem idade acima de 20 anos. 12. Descreva um algoritmo que calcule e escreva a soma dos números pares e a soma dos números ímpares entre 1 e 100. Baseado nisto descreva um algoritmo que calcule e escreva. 4. descreva um algoritmo que: a) b) escreva o menor valor negativo. Descreva um algoritmo que leia 20 números inteiros e escreva. Foi feita uma pesquisa de audiência de canal de TV em n casas de um determinado bairro de uma cidade. 5. Em casas onde a televisão estava desligada.Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação 8. 3. 9. Dado um determinado grupo de pessoas. Descreva um algoritmo que leia a altura de 20 pessoas e calcule a média de altura das mesmas. 15. Descreva um algoritmo que leia n pares de valores. 6. Para cada casa visitada. 14. 9. 2. 11.: 60 . considerando que em cada casa só existia uma televisão. escreva a média dos números positivos. sendo o primeiro valor o número de inscrição de um atleta em uma competição e o segundo a altura (em cm) do atleta e informe: a) b) c) o número de inscrição e a altura do atleta mais alto. em um certo dia do mês. 16. os divisores e quantidade de divisores. foi registrado zero para o número do canal e para o número de pessoas. 10. foi fornecido o número do canal (4. descreva um algoritmo que a partir da altura e do sexo (sexo = 'M' ou sexo = 'm' para masculino e sexo = 'F' e sexo = 'f' para feminino) de cada pessoa informe a média da altura das mulheres e a média de altura do grupo. A leitura deve ser finalizada com o flag 0 para o número de inscrição. para cada número lido. a altura média do grupo de atletas. Na pesquisa foi utilizado um coletor de dados portátil. para cada emissora. O número de casas (n) deve ser informado. EXEMPLO: número lido divisores quantidade divisores = = = 12 1. Dados 20 números inteiros. DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág. o número de inscrição e a altura do atleta mais baixo. Faça um algoritmo que leia n números inteiros e escreva. a massa final e o tempo. Escreva a massa inicial. 20. descreva um algoritmo que determine o tempo necessário para que essa massa se torne menor que 0. 3. após 1 hora ela quebra 1 biscoito. em um determinado mês. Informe também o valor total recebido pela loja ao final do dia. 61 DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág. total de vendas (em R$) e salário de cada vendedor. 18. Descreva um recepcionista: 1. Faça um algoritmo que calcule quantos biscoitos são quebrados no final de cada dia (a máquina opera 16 horas por dia). 2. na segunda hora ela quebra 3 biscoitos. 19. Cada vendedor. Caso a opção escolhida seja a segunda.50 por diária. 21. O departamento de pessoal deseja obter um relatório com: nome. Uma grande loja de departamentos paga aos vendedores um salário com base nas vendas efetuadas durante o mês. Dada a sua massa inicial em Kg. informe o número de hóspedes que deixaram o hotel (número de contas encerradas). que é igual a 30% de comissão sobre o preço de cada produto vendido. vende n produtos. Para prosseguir com a entrada de dados o algoritmo deve apresentar a seguinte mensagem: “deseja digitar os dados de mais um vendedor: s (SIM) / n (NÃO)?”. Uma loja de departamentos oferece para seus clientes um determinado desconto de acordo com o valor da compra efetuada.00 de diária por hóspede e mais uma taxa de serviços.00 e de 15% caso seja menor ou igual. leia o nome e o número de diárias do hóspede e escreva o nome e total a ser pago. O desconto é de 20% caso o valor da compra seja maior que R$ 500.5 gramas. Descreva um algoritmo que gere o relatório desejado. A taxa de serviços é de: R$ 7. R$ 5. Descreva um algoritmo que leia o valor da compra e escreva o total a pagar a cada compra. para cada produto tem-se o preço unitário e a quantidade vendida. algoritmo que apresente as seguintes opções ao encerrar a conta de um hóspede verificar número de contas encerradas sair Caso a opção escolhida seja a primeira. e assim por diante. Um determinado material radioativo perde metade de sua massa a cada 50 segundos. A leitura deve ser finalizada com o flag 0 para o valor da compra. Quando ligada.50 por diária. caso o número de diárias seja menor que 15.Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação 17. onde.: . R$ 6. O número de produtos (n) de cada vendedor deve ser informado. na hora seguinte ela quebra 3 vezes a quantidade de biscoitos quebrados na hora anterior. Uma máquina de biscoito está com problemas.00 por diária. Um hotel cobra R$ 50. Caso a opção escolhida seja a terceira finalize a execução do algoritmo. caso o número de diárias seja maior que 15. caso o número de diárias seja igual a 15. DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág. e E. foi registrado o valor do odômetro e a quantidade de combustível comprado para reabastecer o veículo (suponha que o tanque foi enchido a cada parada). Descreva um algoritmo que leia o número total de reabastecimentos feitos e os dados registrados relativos à compra de combustível.Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação 22.PC) / PC * 100 determine e escreva o valor total de compra e de venda de todas as mercadorias.: 62 . caso a primeira condição não seja atendida. o preço de compra (PC) e o preço de venda (PV). 24. o jogador com mais de 21 pontos conseguir uma diferença de dois pontos sobre o adversário. Antes de sair de viagem e imediatamente após retornar. Escreva também quanto a revendedora gasta em folha de pagamento. 26. Calcule e escreva: a) b) a quilometragem obtida por litro de combustível em cada parada. para n vendedores. ponto para o jogador do lado esquerdo da mesa. 25. onde o percentual de lucro é calculado da seguinte forma: % = (PV . o motorista encheu o tanque do veículo e registrou as medidas do odômetro. Um comerciante deseja fazer um levantamento do lucro das 20 mercadorias que comercializa. Para prosseguir com a entrada de dados de pesos de cada peixe o algoritmo deve apresentar a seguinte mensagem: “deseja informar o peso de mais um peixe: s (SIM) / n (NÃO)?”. a quilometragem média obtida por litro de combustível em toda a viagem. e escreva o salário mensal de cada vendedor. o número de carros vendidos e o valor total de suas vendas. mais uma comissão também fixa para cada carro vendido e mais 5% do valor das vendas por ele efetuadas. assim como o lucro total. Descreva um algoritmo que leia o limite diário (em quilogramas) e então leia o peso (em gramas) de cada peixe e escreva o peso total da pesca obtido até aquele ponto. Em cada parada feita durante a viagem. Descreva um algoritmo que: a) b) escreva quantas mercadorias proporcionam: (lucro < 10%). Quando o limite diário for excedido escreva uma mensagem e encerre a execução do algoritmo. Descreva um algoritmo que leia o valor do salário fixo e o valor da comissão e. 23. Em uma disputa de pingue-pongue os pontos são anotados como D. O salário bruto mensal dos vendedores de uma revendedora de carros usados é composto por um salário fixo. Descreva um algoritmo que leia o código do ponto de cada jogada e determine o vencedor. (10% ≤ lucro ≤ 20%) e (lucro > 20%). Para cada mercadoria ele tem o nome. ponto para o jogador do lado direito. Um motorista acaba de voltar de um feriado prolongado. A partida encerra quando: a) b) um dos jogadores chegar a 21 pontos e a diferença de pontos entre os jogadores for maior ou igual a dois. Os regulamentos de uma competição de pesca impõem um limite no peso total de pesca de um dia. Uma emissora de rádio decidiu promover uma eleição para determinar o melhor conjunto do ano segundo a opinião dos ouvintes. 28. o percentual de funcionários em cada categoria em relação de funcionários. O algoritmo deve apresentar ao usuário a seguinte mensagem: mais um voto: s (SIM) / n (NÃO)? antes de prosseguir com a entrada de dados.1% e que a população de um país B seja de 200 milhões de habitantes com uma taxa anual de crescimento de 1. Os votos são informados através de códigos: código 1 2 3 4 conjunto Nenhum de Nós CPM22 Skank Jota Quest Descreva um algoritmo que: a) informe o total de votos para cada grupo. DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág. o número de médio de funcionários das empresas. b) informe o percentual dos votos para cada grupo. Supondo que a população de um país A seja da ordem de 90 milhões de habitantes com uma taxa anual de crescimento de 3. Descreva um algoritmo que informe quantos anos serão necessários para que a população do país A ultrapasse a do país B. mantidas as taxas atuais de crescimento. 29. descreva um algoritmo que: a) b) c) d) informe informe informe informe ao total os dados da empresa com maior número de funcionários os dados da empresa com menor número de funcionários.5%. Entraram na disputa apenas os quatro conjuntos mais solicitados durante o ano. Sabendo que para cada empresa tem-se o nome.Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação 27. c) informe o grupo vencedor. o número de funcionários e a categoria. Uma agência de publicidade quer prestar serviços grandes empresas.: 63 . Exemplo 3: a loja do exemplo 2 quer fazer um controle mensal de suas vendas.Exemplo 2: uma loja registrou em um dia a quantidade vendida de cada um de seus 200 produtos. em ordem decrescente de média. .) informe o caminho que tem a menor distância entre A e F.Exemplo 1: dado o nome de 50 pessoas. Quantas variáveis teriam que ser criadas para resolver este problema? . Para isto ela mantém os dados de cada um de seus produtos vendidos em cada dia do mês. escreva estes dados em ordem alfabética. além das 30 médias. de B a C.Exemplo 4: um professor tem o código. Problema: neste caso criaríamos uma variável para cada nome? E se fossem 1000 nomes? . de B a D. o nome e as 5 notas de seus 30 alunos em uma disciplina. todos os dados de cada aluno.Matrizes • Os problemas computacionais muitas vezes exigem o armazenamento de grande quantidade de dados em memória para posterior processamento.Exemplo 5: uma pessoa quer ir de uma cidade A até uma cidade F.: 64 . DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág. Considerando que há vários caminhos possíveis e que são registradas as distâncias intermediárias entre as cidades (ex. de A a B. Problema: neste caso criaríamos 200 variáveis. Problema: quantas variáveis teríamos que criar neste caso? . etc. Informe. Problema: neste caso estamos falando de 30 códigos.Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação 6 Estrutura de Dados Homogêneas . uma para cada produto? . Informe o código dos produtos que tiveram vendas acima da média. 30 nomes e 150 notas. matrizes. C109. pilhas. O índice define a ordem do elemento dentro da estrutura. listas. C-103. filas. Neste capítulo estudaremos as estruturas de dados homogêneas também chamadas de vetores ou matrizes. Cada porta está identificada por seu número: C-101. pois permitem armazenar diversas informações a partir da definição de uma única variável. Exemplo: Uma pessoa está diante de um corredor com 5 portas. árvores. As estruturas de dados ampliam o conceito de variáveis. Outra pessoa. vetores. C105. entre outras. Cada informação armazenada é identificada por um índice. • • • Matrizes Unidimensionais (Vetores) • As estruturas de dados homogêneas do tipo Matriz permitem armazenar diversos dados de um mesmo tipo (homogênea) em uma única variável. As estruturas de dados podem ser homogêneas (armazenam dados de um mesmo tipo) ou heterogêneas (armazenam dados de diversos tipos) Existem diversos tipos de estruturas de dados. C107. tais como. que não percebe que as portas estão numeradas chega e PROFESSOR: Maurício Capobianco Lopes pág. ou seja. arquivos. a posição em que se encontra dentro da estrutura.: • • • DISCIPLINA: Introdução a Programação 65 .Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação Problema: neste caso quantos caminhos vamos armazenar? Como vamos totalizar parcialmente as distâncias de cada caminho? • • Para a solução destes exemplos é necessário o uso de estruturas de dados. : 66 .77 18.Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação lhe pergunta. .Vetor de caracteres (tamanho: 12) 1 Q 2 @ 3 Y 4 O 5 [ 6 7 7 D 8 > 9 J 10 M 11 R 12 = • As informações em um vetor são identificadas por um índice que normalmente é dado entre colchetes []. A estrutura onde cada informação é identificado por um único índice recebe o nome de Matriz Unidimensional.no vetor de nomes o elemento [3] é “Maria”.8 1. conforme o exemplo a seguir: 1 2 3 4 5 6 7 8 9 10 • No exemplo foi definida uma tabela de 10 valores. você está usando o “índice” da porta no corredor para identificá-la.2 17.0 10.7 33. Neste caso.Vetor de números reais (tamanho: 15) • • 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 5.3 8. também conhecido como Vetor.5 0. • A representação mais comum para uma Matriz é uma tabela indexada.59 32.87 56.5 7.01 . Onde é a sala C-105? Sua resposta poderá ser: é a terceira porta à direita.7 0.5 6. DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág.Vetor de números inteiros (tamanho: 18) 1 2 3 4 5 6 20 89 132 45 666 58 7 3 8 9 10 11 12 13 14 15 16 17 18 47 99 125 255 23 139 47 2 13 931 409 . nesta estrutura podem ser armazenados até 10 valores de um determinado tipo de dado.32 99.no vetor de números reais a posição [7] armazena 8.Vetor de nomes (tamanho: 10) 1 João 2 Pedro 3 Maria 4 José 5 Darci 6 Chico 7 8 9 10 Elvira Eulália Manoel Betânia .5 5. ou seja. .5. Exemplos de Vetores em Computador: . : 67 .no vetor de caracteres a posição [11] armazena “R”.no vetor de números inteiros o elemento [15] é 2. . DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág.Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação . : 68 . . Pode ser definido através de valores constantes.. Em linguagens importantes como C e Java não se define o índice inicial e final. variáveis ou expressões. .Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação • As aplicações mais comuns destes tipos de estruturas para posterior processamento são: .armazenamento parcial de dados.totalizar os votos para cada candidato à medida que o eleitor for votando. com seu índice inicial e índice final. . • Exemplo de uso de vetores em uma urna eletrônica pode-se: . Manipulação de Matrizes Unidimensionais • Sintaxe em Portugol (VisuAlg) Na declaração var identificador : vetor [faixa] de tipo No corpo do programa identificador[indice] .ÍNDICE: define a posição do elemento no vetor. 1 DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág. mas apenas o número de elementos do vetor.índice_final]1. .pesquisar se um determinado candidato teve votação naquela urna.ordenação. separado por .ordenar os votos em ordem decrescente para ter as maiores votações..FAIXA: define o número de elementos do vetor. .pesquisa/busca de informações. O índice inicial está sempre na posição 0 (zero). do seguinte modo: [índice_inicial. Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação • Limitações do VisuAlg: - o valor de faixa e índice deve ser do tipo INTEIRO. Em outras linguagens existem variações no uso destes indexadores; - o vetor é limitado a no máximo 499 elementos. Exemplo: var valores : vetor [1..5] de inteiro inicio leia (valores[1]) leia (valores[2]) valores[3] <- valores[2] i <- 4 valores[4] <- 70 valores[i+1] <- valores[4] * 2 escreva (valores[5]) fimalgoritmo • As operações de atribuição, leitura e escrita de elementos armazenados em um vetor devem ser feitas em um elemento por vez, devendo ser indicado o nome da variável que armazenará o valor lido e o índice da posição entre colchetes. O tamanho de um vetor é dado pelo número de elementos entre o índice inicial e índice final. Para saber o número de bytes ocupados em memória deve-se multiplicar o número de elementos pelo número de bytes ocupados pelo tipo do dado armazenado no vetor. Descreva um algoritmo para ler 20 números inteiros e escreva-os na ordem inversa à lida. se não há • Exercícios Resolvidos 1. Verifique atentamente se o problema está bem definido, 1. PROBLEMA ambigüidades ou informações incompletas e irrelevantes. (INTERPRETAÇÃO) Destaque aqui as ambigüidades ou informações incompletas Não há. 2. DADOS DE ENTRADA Identifique e descreva os dados ou recursos (substantivos) disponíveis PROFESSOR: Maurício Capobianco Lopes pág.: DISCIPLINA: Introdução a Programação 69 Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação para a solução do problema. 20 números inteiros 3. DADOS DE SAÍDA 4. BASE DE TESTES Identifique e descreva os resultados desejados para o problema, procurando observar se todas as entradas ou recursos necessários estão disponíveis. Defina um conjunto de informações (no mínimo 3) de entrada com suas respectivas saídas, visando montar uma base de testes para o problema. Números lidos na ordem inversa do que foi escrito (E) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 (S) 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 5. PROCESSAMENTO Identifique os elementos fundamentais de processamento para a solução do problema 5.1 Identifique os verbos que indiquem as operações que devem ser realizadas para a solução do problema: Escrever os números na ordem inversa Não é necessário 5.2 Identifique se há a necessidade de uso de estruturas de seleção e que tipo de avaliação deve ser feita: 5.3 Identifique se há a necessidade de uso de estruturas de repetição e o número ou as condições de ocorrência das repetições: Repetição de 1 a 20 para ler os números Repetição de 1 a 20 para escrever os números 5.4 Identifique se há a necessidade de uso de matrizes e defina qual o seu tamanho limite: Será usado um vetor de 20 elementos para armazenar os valores 6. DESCRIÇÃO DO Descreva a seqüência de instruções necessárias para a solução do problema. ALGORITMO 6.1 Descreva os passos gerais para a solução do problema. Para contador de 1 até 20 faça Ler o número[contador] Fim para Para contador de 20 até 1 faça Escrever o número[contador] Fim para 6.2 Descreva o algoritmo em Portugol para a solução do problema. algoritmo "vetor" // Este algoritmo lê 20 elementos e os escreve na ordem inversa à // lida // Autor : Mauricio Capobianco Lopes - Data : 25/04/2006 var vet : vetor [1..20] de inteiro cont : inteiro inicio //para 20 elementos faça para cont de 1 ate 20 faca //ler o elemento da posição cont escreva ("Digite o valor ", cont, ": ") leia(vet[cont]) fimpara //para 20 elementos faça para cont de 20 ate 1 passo -1 faca //escrever o elemento da posição cont escreva(vet[cont]:4) fimpara fimalgoritmo 7. TESTES Execute as operações descritas no passo 6, utilizando a base de testes descrita no passo 4 para verificar se os resultados desejados estão corretos. Em algumas situações é necessário registrar informações intermediárias para PROFESSOR: Maurício Capobianco Lopes pág.: DISCIPLINA: Introdução a Programação 70 Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação acompanhar a execução dos passos. De acordo com as entradas. 8. OTIMIZAÇÃO Reveja a solução proposta, mesmo se estiver correta, para eliminar eventuais possibilidades de erro e melhorar a maneira de descrever ou o modo como está sendo feito. Uma solução eficiente deve usar menos memória possível e ser a mais rápida possível. Caso encontre possibilidades de melhoria retorne ao passo 6. 2. Descreva um algoritmo para ler 50 números inteiros e informar a média e quantos são maiores que a média. se não há Verifique atentamente se o problema está bem definido, 1. PROBLEMA ambigüidades ou informações incompletas e irrelevantes. (INTERPRETAÇÃO) Destaque aqui as ambigüidades ou informações incompletas Não há. 2. DADOS DE ENTRADA Identifique e descreva os dados ou recursos (substantivos) disponíveis para a solução do problema. Identifique e descreva os resultados desejados para o problema, procurando observar se todas as entradas ou recursos necessários estão disponíveis. 50 números inteiros 3. DADOS DE SAÍDA Média Quantidade de números maiores que a média 4. BASE DE TESTES Defina um conjunto de informações (no mínimo 3) de entrada com suas respectivas saídas, visando montar uma base de testes para o problema. (E) 475 171 891 683 979 195 398 976 316 319 728 394 209 995 735 42 247 708 1 659 353 480 333 741 271 470 (S) Média = 499 Quantidade de números acima 5. PROCESSAMENTO 612 841 778 723 440 743 890 196 121 177 23 577 676 637 78 221 348 753 253 853 336 305 839 791 da média = 23 Identifique os elementos fundamentais de processamento para a solução do problema. 5.1 Identifique os verbos que indiquem as operações que devem ser realizadas para a solução do problema: Calcular a média Contar a quantidade de números maiores que a média 5.2 Identifique se há a necessidade de uso de estruturas de seleção e que tipo de avaliação deve ser feita: Verificar se cada número é maior que a média dos números 5.3 Identifique se há a necessidade de uso de estruturas de repetição e o número ou as condições de ocorrência das repetições: Repetição de 1 a 50 para armazenar os números e ler a média Repetição de 1 a 50 para verificar os números maiores que a média Será usado um vetor de 50 elementos para armazenar os valores 5.4 Identifique se há a necessidade de uso de matrizes e defina qual o seu tamanho limite: 6. DESCRIÇÃO DO Descreva a seqüência de instruções necessárias para a solução do problema. ALGORITMO 6.1 Descreva os passos gerais para a solução do problema. Inicializar soma Para contador de 1 até 50 faça Ler o número[contador] Somar o número[contador] Fim para Calcular a média Inicializar contador de números maiores que a média Para contador de 1 até 50 faça Se o número[contador] é maior que a média Contar o número DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág.: 71 50 //Inicializar soma soma <. contMaiores. para eliminar eventuais possibilidades de erro e melhorar a maneira de descrever ou o modo como está sendo feito. tamanho : inteiro valores : vetor [1. media. De acordo com as entradas. 1000 tamanho <.2 Descreva o algoritmo em Portugol para a solução do problema. Uma solução eficiente deve usar menos memória possível e ser a mais rápida possível.50] de inteiro inicio aleatorio 1.0 //Para contador de 1 até 50 faça para cont de 1 ate tamanho faca //Ler o número[contador] escreva ("Digite o número ". cont. Caso encontre possibilidades de melhoria retorne ao passo 6. Seja o seguinte vetor v: PROFESSOR: Maurício Capobianco Lopes pág. ": ") leia (valores[cont]) //Somar o número[contador] soma <. mesmo se estiver correta.soma \ tamanho //Inicializar contador de números maiores que a média contMaiores <. utilizando a base de testes descrita no passo 4 para verificar se os resultados desejados estão corretos. Em algumas situações é necessário registrar informações intermediárias para acompanhar a execução dos passos.soma + valores[cont] fimpara //Calcular a média media <. Reveja a solução proposta. cont. TESTES ".0 //Para contador de 1 até 50 faça para cont de 1 ate tamanho faca // Se o número[contador] é maior que a média se (valores[cont] > media) entao // Contar o número contMaiores <. media) escreval ("Numero de elementos maiores que a média = contMaiores) fimalgoritmo 7.: DISCIPLINA: Introdução a Programação 72 .contMaiores + 1 fimse fimpara //escrever o resultado escreval ("Media = ". Execute as operações descritas no passo 6. 8. OTIMIZAÇÃO Exercícios Propostos 1.. algoritmo "maiores" // Este algoritmo conta a quantidade de números maiores que a // média de 50 números // Autor : Mauricio Capobianco Lopes Data : 25/4/2006 var soma.Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação Fim se Fim para Escrever a média Escrever o número de elementos maiores que a média 6. Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação v 1 2 2 6 3 8 4 3 5 10 6 16 7 1 8 21 9 33 10 -14 e as variáveis x = 2 e y = 4. Quais os valores correspondentes à: v[1] v[x+1] V[x*1] v[x+y] v[y*2+v[1]] v[2] v[x+2] V[x*2] v[v[x+y]] v[v[1]*v[4]] v[3] v[x+3] V[x*3] v[v[4]] v[v[3]\v[1]] v[4] v[x+4] V[x*4] v[v[v[7]]] V[v[6]-x*y] 2. Indique os valores armazenados na variável vet após a execução dos trechos de algoritmos abaixo: a) algoritmo "itema" var vet: vetor [1..10] de inteiro i : inteiro inicio para i de 1 ate 10 faca vet [i] <- i fimpara para i de 1 ate 10 faca vet [i] <- vet [11 -i] fimpara ... fimalgoritmo b) algoritmo "item_b" var vet: vetor [1..10] de inteiro i : inteiro inicio para i de 1 ate 10 faca vet[i] <- 10 * i fimpara para i de 1 ate 10 faca vet[i] <- vet[i] \ vet[1] fimpara ... fimalgoritmo 3. 4. Altere o algoritmo resolvido número 1 para ler 100 números inteiros e escrevê-los na ordem inversa à lida. Considere 1000 elementos inteiros armazenados em um vetor. Descreva um algoritmo que: a) b) c) d) e) informe informe informe informe informe a a o o a soma total dos valores do vetor; média dos valores do vetor; maior valor do vetor; menor valor do vetor; quantidade de números pares nas posições pares do vetor; 73 DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág.: Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação f) g) 5. informe a quantidade de números ímpares nas posições ímpares do vetor; informe se há valores repetidos no vetor; Em uma pesquisa populacional, registrou-se a idade de todos os membros da população recenseada (idade em anos). Descreva um algoritmo que leia as idades de cada membro da população (para encerrar será informado 999 para a Idade) e conte a distribuição etária em grupos, com intervalos de 10 anos da seguinte forma: Grupo Faixa etária 1 0 a 9 anos 2 10 a 19 anos 3 20 a 29 anos 4 30 a 39 anos 5 40 a 49 anos 6 50 a 59 anos 7 60 a 69 anos 8 70 a 79 anos 9 80 a 89 anos 10 90 a 99 anos 11 Acima de 99 anos Ao final, escreva os percentuais de cada grupo com relação ao total da população. 6. O Centro Técnico Aeroespacial de São José dos Campos mantém registros pluviométricos anuais de n cidades do Nordeste. Descreva um algoritmo que leia a quantidade de chuva (em cm) de cada uma das cidades e informe para cada grupo especificado na tabela abaixo o número de cidades cuja quantidade de chuva esteja nos intervalos do grupo. grupo 1 2 3 4 5 6 7 8 9 10 quantidade de chuva (em cm) 0-9 10-19 20-29 30-39 40-49 50-59 60-69 70-79 80-89 90-99 7. Descreva um algoritmo que leia o nome e a nota de uma turma de n estudantes (n ≤ 50) e escreva o nome dos estudantes cuja nota é maior do que a nota média da turma. Informe também quantos estudantes obtiveram nota maior do que a nota média da turma. Uma empresa de turismo fez uma pesquisa, na temporada de verão, questionando sobre a praia de preferência e a renda mensal de um grupo composto por n turistas. As praias foram identificadas por códigos. Faça PROFESSOR: Maurício Capobianco Lopes pág.: 8. DISCIPLINA: Introdução a Programação 74 Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação um algoritmo que escreva, por praia, o número de turistas que a preferem e a renda média destes turistas. código da praia 01 ... 42 9. número de turistas 200 10 renda média (r$) 1.700,00 1.000,00 Uma loja de departamentos tem 25 vendedores. As vendas são registradas diariamente e um determinado vendedor pode efetuar várias vendas por dia. Ao final de cada dia, é emitido um relatório contendo número, nome e total de vendas de cada um dos 25 vendedores. Faça um algoritmo que: a) b) c) leia número e nome de cada um dos 25 vendedores; leia informações sobre as vendas diárias, quais sejam, número do vendedor e valor de venda; escreva, para cada vendedor, número, nome e valor total de vendas diárias efetuadas. As informações sobre as vendas diárias não estão em seqüência. O algoritmo deve apresentar a seguinte mensagem: mais um vendedor: s (SIM) / n (NÃO)? antes de prosseguir com a entrada de dados. número do vendedor nome do vendedor total de vendas 01 Andréa 5.700,00 ... 25 Ronaldo 1.000,00 10. Descreva um algoritmo que leia dois vetores V e W com n (n ≤ 30) números reais. Determine os vetores resultantes: da soma de V e W, da subtração de V e W, da multiplicação de V e W, da divisão de V e W, elemento a elemento. Determine também o produto escalar de V e W, definido como: Σ (vi * wi) = v1 * w1 + v2 * w2 + ...+ vn * wn. Caso o produto escalar seja igual a zero, os vetores são classificados como ORTOGONAIS. 11. Uma empresa codificou seus produtos de 1 a n. Sabendo que ela tem o estoque inicial dos produtos, descreva um algoritmo que: a) leia os lançamentos de entrada e saída de produtos ao longo do dia e atualize o estoque. Estes lançamentos são dados da seguinte forma: código do produto, letra indicando a operação (E para Entrada ou S para Saída) e a quantidade de produtos que entraram ou saíram. escreva os estoques atualizados de todos os produtos ao final do dia. b) As informações sobre os lançamentos diários não estão em seqüência. Assim, o algoritmo deve apresentar a seguinte mensagem: mais um lançamento: s (SIM) / n (NÃO)? antes de prosseguir com a entrada de dados. DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág.: 75 São apresentadas duas implementações do método da bolha: uma versão mais simplificada. na passada seguinte. Vamos apresentar ordenação: aqui três métodos comuns de . Os algoritmos para esta tarefa são inúmeros e são muito conhecidos. Esta lógica garante que na primeira passada o maior elemento irá para a última posição do vetor.Método da Ordenação por Seleção ou SelectionSort. indo apenas até a posição do penúltimo e assim por diante. Com isto. • • Será considerada a ordenação em ordem crescente. • • • DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág. não é mais necessário comparar o último.: 76 . mas de pouca eficiência e uma versão melhorada um pouco mais eficiente.Método da Bolha ou BubbleSort . .Método da Ordenação por Inserção ou InsertSort. Método da Bolha ou BubbleSort O método da Bolha tem como característica comparar elementos vizinhos e trocá-los caso o atual seja maior que seu sucessor (ordenação em ordem crescente).Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação Algoritmos de Ordenação de Vetores • • • Uma das operações mais comuns sobre vetores é a ordenação dos elementos. 5 28.10] de real i.5 28.9 82.6 95.6 78.8 83.8 95.6 78.6 69.7 25.7 83.8 6.7 83.". As colunas mais escuras indicam que o elemento já está em sua posição correta e não é mais visitado.8 6.9 9 82.8 6.7 28.9 82.temp fimse fimpara fim <.9 95.6 78.1 81.7 6.8 6.8 40.8 95.8 6.1 81.8 40.5 28.7 25.8 6.7 8 25.8 6.9 82.7 83.8 6.6 69.6 78.7 25.5 28.1 81.8 25.7 25.9 82.8 40.6 78.8 40.7 25.1 81.5 28.1 81.6 78.7 25.6 78.vet[cont] vet[cont] <.6 69.7 25.6 69.8 6 69.6 78.1 fimpara // Escrever o vetor ordenado para cont de 1 ate 10 faca escreval(cont:3.7 83.8 40.1 faca //compara o elemento na posição atual com seu próximo se (vet[cont] > vet[cont+1]) entao //troca os elementos de posição temp <.8 6.5 28.1 81.9 82.9 82.1 81.8 95.6 95.6 69.6 78.5 28.6 5 28.6 69.8 6.7 95.7 83.7 83.7 69. I=1 1 81.1 81.8 78.1 81. vet[cont] : 10 : 3) fimpara fimalgoritmo • Na execução do método da bolha mostrada a seguir os valores assinalados indicam troca de posição entre os elementos.8 82.1 81.7 83.9 82.7 25.5 28.1 81.8 pág.1 81.8 6.8 40.8 40.5 28.: I=2 DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes 77 .8 40.6 69.6 69.8 28.9 82.6 69.7 25.5 95.7 25.8 95.8 40.1 2 95.Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação algoritmo "Bubble Sort" var vet : vetor[1.10 para i de 1 ate 10 faca //percorre os elementos não ordenados para cont de 1 ate fim .9 82." .7 25.8 69.9 82.8 95.5 83.6 69.7 83.6 78.6 83. cont.9 82.8 40..8 95.6 78. fim : inteiro temp : real inicio //ler o vetor para cont de 1 ate 10 faca leia(vet[cont]) fimpara // iniciar o final da comparação fim <.1 81.5 28.5 4 40.8 95.vet[cont+1] vet[cont+1] <.5 28.7 7 6.8 83.7 95.fim .8 3 83.6 69.6 10 78.7 25.8 83.8 6.9 82.8 40.6 78.8 40.7 40. 8 6.8 69.6 69.8 95.1 81.8 40.Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação 81.8 95.7 25.9 82.6 82.7 83.1 82.6 81.6 83.5 28.8 95.6 78.6 78.1 81.8 81.6 69.6 78.8 95.8 95.1 81.1 81.7 25.8 6.7 83. 6 e 7.8 i=4 i=5 i=6 i=7 i=8 i=9 • Nesta execução destacam-se duas questões: .7 83.7 25.8 40.8 6.8 40.8 40.5 40.8 40.6 69.7 25.6 69.9 82.9 82.7 83.6 78.7 83.6 69.6 25.7 83.7 83.6 78.8 95.6 69.8 6.5 28.5 28.7 25.7 25.6 78.7 25.5 28.5 6.8 6.6 69.8 28.9 82.7 83.7 25.8 25.8 95.8 6.8 40.8 40.: 78 .6 69.8 95.8 95.9 82.1 81.8 6.9 82.8 6.1 81.7 83.1 81.6 78.5 28.9 82.8 6.7 25.8 40.7 83.8 95.8 40.6 81.7 83.8 40.7 83.6 78.9 82.8 6.1 81.5 28.7 83.7 25.8 40.5 28.7 25.5 28.9 82.6 78.7 25.6 78.6 69.8 95.6 69.5 28.8 6.8 40.6 69.8 6.8 40.8 81.6 25.7 83.6 69.9 82.1 81.1 81.8 28.6 78.5 69.1 28.5 28.6 69.6 69.7 83.5 28.8 6.6 78.8 6.6 78.6 78.7 25.8 40.8 40.7 95.7 28.6 69.7 83.1 81.5 28.6 69.7 25.8 6.1 81.8 40.6 69.1 81.8 95.7 25.7 83.7 25.6 78.7 25.7 78.5 28.8 95.8 6.9 82.1 78.6 69.5 28.7 81.1 i=3 40.8 95.8 95.8 6.8 6.7 83.8 95.7 83.9 82.8 40.6 78.6 78.8 40.7 69.1 81.1 81.9 82.9 82. DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág.8 40.1 81.5 28.7 83.9 82.8 95.7 83.1 81.8 95.7 25.5 28.8 95.7 83.6 69.8 6.8 40.9 82.7 25.6 78.5 28.7 25.quando o i chegou em 6 não havia mais necessidade de prosseguir o algoritmo pois o vetor estava ordenado.quando o i chegou em 5 só os quatro primeiro elementos não estavam mais ordenados sendo desnecessário o teste das posições 5.6 69.1 25.5 28.5 28.8 95.8 95.8 40.9 82.8 40.8 40.7 28.8 95.7 25.6 78.8 95.1 69.8 40.8 6.7 83.6 78.8 40.9 82.7 83.6 78.7 25.1 81.6 78.5 28.9 82.6 78.8 6.6 69.8 95.1 81.1 81.7 25.1 81.8 95.7 25.9 82.5 28.8 6.8 95.7 83.6 69.9 78.8 95.1 81.9 78.7 83.7 40.6 78.8 95.6 69.8 95.8 6.6 78. .8 40.5 28.9 82.9 82.6 78.8 6.5 28.6 6.5 25.7 25.9 82.7 83.8 6.8 6.8 95.7 25.9 82.9 82.6 69.8 40.9 82.6 78.9 82.9 82.1 81.7 82.6 69.5 28.8 6.6 83.5 81.5 28.5 28.8 6.6 69.9 83.8 40.6 69.7 83.1 6.1 81. vet[cont] : 10 : 3) fimpara fimalgoritmo DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág.".Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação • Para minimizar estes problemas há a proposta de uma versão mais otimizada do método.temp //define que houve troca e portanto a repetição terá que ser feita mais uma vez troca <. fim : inteiro temp : real troca : logico inicio //ler o vetor para cont de 1 ate 10 faca leia(vet[cont]) fimpara // iniciar o final da comparação fim <.verdadeiro //armazena a posição da troca postroca <.falso //percorre os elementos não ordenados para cont de 1 ate fim .vet[cont+1] vet[cont+1] <.10] de real postroca. cont.postroca ate (nao troca) // Escrever o vetor ordenado para cont de 1 ate 10 faca escreval(cont:3.cont fimse fimpara //define até que posição os dados serão comparados na próxima execução fim <.vet[cont] vet[cont] <.1 faca //compara o elemento na posição atual com seu próximo se (vet[cont] > vet[cont+1]) entao //troca os elementos de posição temp <." .10 //repetir até não ter maisl elementos para trocar repita //define que não haverá troca troca <. algoritmo "Bubble Sort 2" var vet : vetor[1..: 79 . 7 83.8 40.9 82.8 78.5 28.8 2 3 4 5 6 7 • O método da bolha é o mais ineficiente método de ordenação que existe.8 95.8 5 28.7 83.6 69.8 6.6 83.7 25.6 78.1 40.8 95.1 81. conforme pode ser verificado na tabela a seguir.8 6.8 95.8 40.7 83.6 83.6 69.1 81.7 83.7 83.7 81.7 25.6 78.6 78.8 95.8 40. DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág.6 69.8 40.6 69.5 28.6 69.9 82.9 82.8 40.5 28.Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação • Nesta execução são necessárias menos comparações do que no exemplo anterior.8 6.8 40.6 69.7 83.9 82.8 6.7 83.8 95.6 78.1 81.7 25.8 95.1 28.8 40.6 69.8 40.8 95.8 6.8 40.9 82.7 25.6 78.6 78.6 78.7 82.8 40.6 69.8 28.6 69.: 80 .8 6.8 95.6 69.9 82.6 78.6 78.7 25.7 25.7 83.1 78.9 82.1 81.5 95.1 81.6 78.7 25.9 82.8 28.5 25.8 40.5 6.8 95.7 25.7 25.9 82.8 6.6 78.9 82.8 6.7 25.8 40.6 95.8 40.8 6.1 8 25.8 6.8 95.1 81.7 25.7 25.8 6.7 25.7 83.6 69.5 28.8 6.7 25.8 40.8 40.8 95.8 95.1 81.5 28.1 81.7 69.8 6.9 83.7 83.1 81.5 28.5 28.8 6. Sendo assim.6 78.1 81.5 28.7 28.6 69.5 28.1 81.1 81.8 82.7 95.7 25.7 83.8 40.6 78.8 95.8 40.1 81.9 82.7 25.7 6.1 81.8 95.7 25.9 82.8 40.8 40.7 83.7 10 78.1 81.6 78.8 95.8 6.6 78.7 69.5 28.9 82.6 69.7 25.8 6.8 6.8 40.6 78.6 69.5 28.7 25.7 25.6 78.7 83.7 25.7 25.5 28.8 40.1 69.8 69.9 82.8 40.8 40.6 69.6 69.6 78.6 69.1 81.5 28.5 28.9 9 82.6 6.6 69.7 83.6 69.7 25.8 95.6 69.7 83.7 83.6 78.9 82.8 95.8 25.6 78.7 25.6 69.1 81.5 28.7 83.8 6.8 40.8 6.5 28.7 25.8 2 95.9 82.8 81.6 69.7 83.8 40.8 6.8 40.5 28.8 95.6 69.8 40.9 82.1 81.6 78.5 81.6 78.8 69.1 81.8 6.7 28.8 95.9 82.9 82.5 28.8 83.8 40.6 78.8 95.8 95.6 69.8 6.8 6.8 40.9 82. outros métodos devem ser estudados e implementados.9 82.8 6.6 78.8 25.7 83.8 95.7 83.8 81.1 81.5 28.8 6.9 82.7 83.7 95.7 25.7 83.6 69.9 82. 1 1 81.8 95.8 95.7 25.7 3 83.6 69.7 83.6 78.5 28.6 82.5 40.6 78.6 78.8 6.5 28.5 28.5 28.7 25.9 82.9 78.6 78.6 69.6 78.8 6.5 28.1 81.7 25.6 25.6 69.5 4 40.7 25.8 83.8 6.6 7 6.8 95.1 81.5 28.5 28.6 81.7 83.9 82.8 83.7 25.9 82.5 28.7 40.5 28.8 40.7 83.1 81.8 6.7 83.1 81.9 82.6 6 69.1 6.9 82.8 95.5 28.7 83.1 81.8 40.6 78.1 81.8 95.6 69.8 28.6 78.6 95.8 6.5 28.8 40.6 78.8 95.1 81.1 81.1 81.7 25.1 81.9 95.9 82.7 78.9 82.8 6.7 83.8 6.5 28.8 95.7 83.6 69.6 78.8 6.1 25.8 95.7 40.7 83.9 82.9 82.8 40.9 82.6 69.1 81.8 95.5 83.6 69.6 81.9 82. posMenor : inteiro temp : real inicio //ler o vetor para cont de 1 ate 10 faca leia(vet[cont]) fimpara //percorrer o vetor para cont de 1 ate 9 faca //define a posição do menor como sendo a posição atual posMenor <.10] de real i..i //guarda a posição do elemento fimse fimpara //se encontrou elemento menor troca a posição se (cont <> posMenor) entao temp <.Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação Método da Ordenação por Seleção SelectionSort • O método da ordenação por seleção tem como característica encontrar o menor elemento do vetor e colocar na primeira posição (ordenação em ordem crescente). A implementação do método é apresentada a seguir. vet[cont] : 10 : 3) fimpara fimalgoritmo • • • DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág.vet[posMenor] vet[posMenor] <.vet[cont] vet[cont] <. Após esta primeira passada a partir da segunda posição encontra-se novamente o menor e o coloca na segunda posição e assim por diante." . algoritmo "Selection Sort" var vet : vetor[1. cont.temp fimse fimpara // Escrever o vetor ordenado para cont de 1 ate 10 faca escreval(cont:3.". devendo iniciar do segundo.cont //percorre o restante do vetor procurando o menor valor para i de cont+1 ate 10 faca //compara o elemento atual com o da posição do menor se (vet[i] < vet[posMenor]) entao posMenor <. Com isto.: 81 . na segunda passada não se deve mais comparar o primeiro valor. 8 40.8 40. o número de elementos trocados de posição é muito menor que o método da bolha otimizado.7 3 83.7 25.1 81. • Método da Ordenação por Inserção InsertSort • O método da ordenação por inserção tem como característica ordenar o vetor por partes a partir de su início.6 78.5 28.8 40.1 81.5 4 40.8 6.8 6.6 69.7 78.6 78.: 82 .6 78.1 6. Após a primeira passada ordenam-se os dois primeiros elementos do vetor.8 6.5 83.7 25.6 69.7 83.6 78.6 69. Os valores assinalados demonstram as trocas realizadas.8 6.8 40.8 6.1 81.7 25.9 82.1 81.6 83. entretanto.9 82.9 82.1 8 25.7 83.8 25.9 82.9 82.7 25.5 28.8 6. Na passada seguinte os três primeiros e assim por diante.8 6.7 95.7 10 78.6 7 6.6 69.8 40.9 9 82.7 83.8 2 95.5 28.1 81.5 28.7 25.8 95.8 40.8 40. • DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág.6 69.6 78.7 25.6 78.8 81.7 25.8 95.8 40.5 28.8 82.1 81.7 95.8 40.6 83.8 6.9 95.8 5 28.Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação • A execução deste algoritmo está apresentada na tabela a seguir.9 82.6 78.7 25.7 83.9 82.8 95.1 81. que o número de comparações feitas para se achar o menor valor tornam o método com complexidade semelhante ao método da bolha.8 95. 1 2 3 4 5 6 7 8 9 1 81.6 6 69.8 95.6 69.8 95.6 69.7 83.5 28.5 28.6 69.9 82.7 69.7 28.8 83.1 81.6 78.8 • Como pode-se perceber. Destaca-se.5 28. verdadeiro fimse ate posicao //coloca o elemento na sua nova posição vet[j] <.Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação • A implementação do método é apresentada a seguir.verdadeiro fimse //se o elemento é maior foi encontrada sua posição senao posicao <. j.temp fimpara // Escrever o vetor ordenado para cont de 1 ate 10 faca escreval(cont:3.vet[j] //procura a posição do novo elemento posicao <.j . cont.10] de real i.1 //se está no início do vetor se (j = 1) entao posicao <.vet[j-1] //decrementa o j para comparar com o elemento anterior j <.falso repita //testa se o elemento é menor que o elemento atual se (temp < vet[j-1]) entao //desloca o elemento para a posição posterior vet[j] <."." .i //guarda o próximo elemento a ser testado temp <. algoritmo "Insert Sort" var vet : vetor[1. vet[cont] : 10 : 3) fimpara fimalgoritmo DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág.: 83 .. fim : inteiro temp : real posicao : logico inicio //ler o vetor para cont de 1 ate 10 faca leia(vet[cont]) fimpara para i de 2 ate 10 faca //define a última posição de teste j <. Esta característica os define como estruturas de dados seqüenciais e indexadas.6 69.6 69.5 28.7 25.8 95.8 95.8 6.6 78.9 82.8 95.7 83.5 28.6 69.1 81.7 83.6 69.5 28.9 82.8 95.9 82.1 81.8 6.8 28.8 83. Os valores assinalados demonstram as trocas realizadas.6 69.7 25.6 78.1 69.5 28.7 25.8 6.7 83. DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág.6 69.5 28.9 82.6 95.8 40.6 78.8 6.8 40.7 83.8 6.8 95.6 78.7 83.8 83.8 95.6 78.1 81.8 95.7 10 78.7 25.8 95.8 40.8 40.1 81.9 9 82.7 25.5 28.5 28.6 78.6 69.1 81.6 78.1 81.5 28.7 83.8 83.8 40.6 78.6 69.8 40.6 69.8 6.1 81.6 69.7 83.1 81.1 81.5 95.6 40.7 25.5 28.9 82.5 28.1 81.5 28.8 83.7 25.6 69.7 83.9 82.9 82.7 83.8 28.7 83.5 28.9 82.Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação • A execução deste algoritmo está apresentada na tabela a seguir.1 81.6 69.7 25.8 6.7 81.8 5 6 7 8 9 10 Algoritmos de Busca em Vetores • • Nos vetores um elemento está posicionado logo após o outro.7 83.6 69.8 40.9 82.8 95.1 81.7 25.7 25.1 81.8 6.9 82.6 6 69.6 69.6 78.6 69.7 83.1 81.1 81.8 95.6 69.5 28.9 82.6 78.6 78.7 25.6 78.8 6.8 6.1 81.8 95.6 78.8 95.5 28.1 81.8 83.7 83.8 83.8 40.5 28.7 25.8 95.6 69.7 83.8 40.7 83.8 95.7 83.8 40.7 25.7 83.8 95.7 25.5 28.8 40.7 25.7 83.7 83.9 82.7 3 83.8 95.8 95.8 40.1 81.1 81.6 78.5 28.8 28.5 4 40.7 83.1 69.6 69.1 40.8 40.8 95.1 81.8 6.9 82.7 25.7 83.8 6.8 95.8 95.8 40.8 40.6 78.1 81.9 82.8 6.6 78.1 81.7 25.7 83.8 40.8 40.1 81.8 6.8 83.6 69.1 81.6 69.5 28.7 83.7 83.1 7 6.5 6.8 6.8 95.9 82.8 95.5 28.1 81.9 95.6 78.8 6.8 2 95.1 81.8 95.6 78.1 81.8 95.8 5 28.9 82.7 95.7 25.7 25.9 82.8 95.8 6.6 69.1 81.6 69.7 83.7 83.1 81.8 95.7 81.7 25.6 69.8 40.5 28.9 82.8 40.8 95.6 78.7 25.8 40.8 83.5 28.6 78.5 28.7 81.1 8 25.8 40.6 69.9 82.6 69.7 25.6 78.8 40.1 81.1 81.6 69.9 82.8 6.8 95.6 78.7 25.7 25.: 84 . não existindo posições não preenchidas.5 28.8 6.8 6.6 78.8 40.7 82.8 6.8 40.1 81.9 82.9 82.9 82.7 25.8 95.6 69.8 95.8 40.7 25.9 82.6 78.8 95.7 81.7 95.8 95.8 40.8 95.8 95.6 69.9 82.8 6.7 83.6 69.1 40.7 83.5 28.5 28.7 83.6 78.1 81.6 78.7 83.8 40.6 95.9 82.6 40.8 95.5 25.6 78.8 6.7 81.8 40.9 81.5 28.7 25.8 95.9 82.5 28.7 83.9 82.1 81.8 6.8 40. 2 3 4 1 81.9 82.6 69.5 28.5 28.8 6.6 78.7 82.1 69.8 40.9 82.8 6.9 82.8 6.6 78.6 78.7 83. os dois algoritmos clássicos de busca em vetores são: . valor : inteiro vet : vetor[1.cont + 1 fimse ate (achou=verdadeiro) ou (cont>10) se achou entao escreval("Valor encontrado na posição ". cont) senao escreval("Valor não encontrado.pesquisa seqüencial.Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação • Deste modo.pesquisa binária.1 repita //verifica se o valor do vetor é igual ao pesquisado se vet[cont] = valor entao achou <.: 85 . A implementação deste método é demonstrada a seguir.10] de inteiro achou : logico inicio //ler o vetor para cont de 1 ate 10 faca leia(vet[cont]) fimpara //ler o valo a ser pesquisado escreva("Entre com o valor a ser pesquisado :") leia(valor) //inicializar a variável que indica se o elemento foi ou não encontrado achou <. .falso // inicializar o contador cont <.") fimse fimalgoritmo • DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág. Método da Pesquisa Seqüencial • O método da pesquisa seqüencial é muito simples e consiste em percorrer o vetor a partir de sua posição inicial até encontrar o elemento desejado. algoritmo "Sequencial" var cont..verdadeiro senao cont <. Se o elemento procurado for maior que o elemento do meio. A seguir está a implementação deste método algoritmo "Binaria" var cont. Inicialmente encontra-se a posição do meio do vetor.falso // definir o inicio e fim da pesquisa ini <. pesquisa-se os dados à direita do meio.meio + 1 senao //valor menor que o meio //redefine a posição de fim fim <.(ini + fim) \ 2 //testar se é o elemento pesquisado se valor = vet[meio] entao achou <.. meio : inteiro vet : vetor[1. A pesquisa binária só pode ser aplicada a vetores ordenados.Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação Método da Pesquisa Binária • • O método da pesquisa binária consiste em fazer a pesquisa quebrando o vetor em partes.: 86 . fim.1 fim <.meio .10] de inteiro achou : logico inicio //ler o vetor para cont de 1 ate 10 faca leia(vet[cont]) fimpara //ler o valo a ser pesquisado escreva("Entre com o valor a ser pesquisado :") leia(valor) //inicializar a variável que indica se o elemento foi ou não encontrado achou <.verdadeiro senao //testar se é maior que o meio se valor > vet[meio] entao //redefine a posição de inicio ini <. ini.10 repita //calcular o elemento do meio meio <.1 fimse • • DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág. Caso contrário pesquisa-se à esquerda. valor. Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação fimse ate (achou=verdadeiro) ou (ini>fim) se achou entao escreval("Valor encontrado na posição ". leia o nome e as respostas dos alunos para cada questão e informe o nome e a média do aluno. Pesquisar Obra: informa se uma determinada obra pertence ao acervo. informe sua média. Baseado nisto descreva um algoritmo que: a) b) 3. informe o percentual de alunos aprovados. PROFESSOR: Maurício Capobianco Lopes pág. Alterar Obra: altera os dados de uma obra do acervo. Caso seja possível.: DISCIPLINA: Introdução a Programação 87 . informe o nome e a média do aluno que teve nota mais alta. Listar Obras: lista o nome e a área de todas as obras do acervo em ordem alfabética. sendo 50 volumes de cada área. 2. independente da área. 4. Para finalizar o algoritmo deve ser apresentada a seguinte mensagem: mais um aluno: s (SIM) / n (NÃO)? 5. Considerando que a prova tem n questões (n <= 10) descreva um algoritmo que: a) b) c) d) e) f) g) leia o gabarito da prova e armazene em um vetor. Baseado nisto descreva um algoritmo que monte um menu com as seguintes opções: a) b) c) d) e) f) Cadastrar Obra: insere uma obra no acervo. Excluir Obra: exclui uma obra do acervo. Um professor tem n (n ≤ 20) nomes de alunos de uma turma. constituídos do código da mercadoria e quantidade desejada e verifique. Descreva um algoritmo que leia n (n ≤ 20) números inteiros e escreva-os em ordem decrescente. Sair do Programa: sai do programa. meio) senao escreval("Valor não encontrado. considerando que a nota mínima de aprovação é 6. totalizando 100 volumes. Uma loja tem o código e estoque de suas 100 mercadorias. permita pesquisar se existem determinados nomes de alunos na lista: Uma determinada biblioteca possui o nome de obras de ciências exatas e ciências humanas. ordene os dados dos alunos em ordem alfabética.") fimse fimalgoritmo Exercícios Propostos 1. informe a média da turma. Baseado nisto descreva um algoritmo que leia os pedidos dos clientes. dado o nome de uma aluno. O nome e a média devem ser armazenados em um vetor. Um professor deseja corrigir provas de múltipla escolha. para cada pedido. informe o nome e a média do aluno que teve nota mais baixa. se ele pode ser integralmente atendido. Em caso negativo. DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág.: 88 . escreva o código e estoque das 20 mercadorias com maior quantidade em estoque e das 20 mercadorias com menor quantidade em estoque. escreva a mensagem "Não temos a mercadoria em estoque". No final.Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação atualize o estoque da mercadoria. A modularização de programas é uma técnica de solução de problemas que visa quebrar o problema em partes visando facilitar a construção de sua solução.ineficiência na solução dos problemas. • • Algoritmos muito extensos causam: . Exemplo: imagine que você é um confeiteiro e lhe foi passada uma tarefa de fazer um bolo com recheio e cobertura. . Tarefas repetitivas causam: . repetitivas.códigos muito extensos. Como poderia ser um algoritmo para a solução deste problema? Fazer a primeira camada de massa Fazer o recheio Colocar o recheio sobre a primeira camada de massa Fazer a segunda camada de massa Colocar a segunda camada de massa sobre o recheio que está sobre a primeira camada de massa Fazer a cobertura Cobrir as camadas de massa com a cobertura • DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág. • • Para contornar este problema a programação estruturada define a modularização de programas. .dificuldade de compreensão do problema.Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação 7 Modularização • No trabalho cotidiano de programação o programador tem que lidar com tarefas extensas e.dificuldade de manutenção (corretiva ou preventiva) do código. em muitos casos.: 89 . • A modularização de programas tem.facilitar a manutenção (MANUTENIBILIDADE). o objetivo de: . . tais como: como se faz a massa? Como se faz o recheio? Como se faz a cobertura? .reaproveitar código já programado (PRODUTIVIDADE). PROFESSOR: Maurício Capobianco Lopes pág. seria necessário apresentar a descrição da confecção da segunda massa? Se as massas forem iguais a resposta é não! Mas e se o modo de fazer a massa fosse o mesmo mas com outros ingredientes? A resposta também é não! Basta mudar os ingredientes. corretiva e preventiva • • Esta técnica também é chamada de refinamentos sucessivos ou top-down.a partir da solução refinada imagine a descrição da solução deste problema em um único texto por extenso. para depois decidir como fazer. Isto permite uma visão geral do problema.esta solução precisa ser refinada pois há questões ainda não resolvidas.deixar o código (LEGIBILIDADE). . sendo que os detalhes vão aparecendo à medida que refinamos sua solução.Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação • Na solução apresentada chama-se a atenção para algumas questões: . dos programas mais conciso .existe uma tarefa feita duas vezes neste problema: a confecção da massa. A construção de programas baseada nesta técnica permite primeiro determinar o que fazer. A solução de problemas baseada em modularização deixa os algoritmos mais próximos do que expressamos em linguagem natural. Uma vez que já foi feita a descrição da confecção da primeira massa.: • DISCIPLINA: Introdução a Programação 90 . portanto. Nesta disciplina usaremos apenas procedimentos sem parâmetros.rotinas (pequenos programas) determinada função específica. As bibliotecas mais comuns são de funções matemáticas.: 91 . • Uma vez feito um subprograma ele pode ser utilizado em qualquer ponto do programa ou até em outro subprograma. subprogramas para manipulação de caracteres e subprogramas para entrada e saída de dados.funções: retornam um valor como resultado.procedimentos: retornam nenhum ou mais valores. procedimento <nome-de-procedimento> declarações-de-parâmetros>)] // Seção de Declarações Internas inicio // Seção de Comandos fimprocedimento [(<seqüência-de- • • • DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág. Derivam do conceito de função da matemática. Sintaxe em VisuAlg. que realizam uma . .estruturas de controle em nível de unidade.Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação • • A modularização de programas é feita através da construção de Subprogramas. • • • Todas as linguagens têm bibliotecas de funções e procedimentos disponibilizadas ao programador. Subprogramas são: . Os tipos de subprogramas existentes são: . Normalmente os subprogramas contém parâmetros que permitem a entrada e saída de dados do seu corpo. Descreva um algoritmo para ler dois valores reais e trocá-los de variável através de um módulo. Ao final escreva os dois valores.3 Identifique se há a necessidade de uso de estruturas de repetição e o número ou as condições de ocorrência das repetições: DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág.globais: existem e podem ser usadas em todo o programa.Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação Escopo de Variáveis • • O escopo de uma variável define a sua visibilidade perante os diversos módulos integrantes do algoritmo. .locais: existem e podem ser chamadas apenas no procedimento em que estão declaradas. DADOS DE ENTRADA Identifique e descreva os dados ou recursos (substantivos) disponíveis para a solução do problema.2 Identifique se há a necessidade de uso de estruturas de seleção e que tipo de avaliação deve ser feita: 5. uma vez que elas ocupam espaço apenas enquanto o procedimento está em execução. Dois valores reais 3. visando montar uma base de testes para o problema. PROCESSAMENTO valor2: 6 valor2: 7 valor2: 9 (S) valor1: 6 (S) valor1: 7 (S) valor1: 9 valor2: 5 valor2: 1 valor2: 2 Identifique os elementos fundamentais de processamento para a solução do problema 5. BASE DE TESTES Dois valores reais em variáveis trocadas em relação à entrada (E) valor1: 5 (E) valor1: 1 (E) valor1: 2 5.: 92 . (INTERPRETAÇÃO) Destaque aqui as ambigüidades ou informações incompletas Não há. se não há Verifique atentamente se o problema está bem definido. As variáveis podem ser de dois tipos: . Defina um conjunto de informações (no mínimo 3) de entrada com suas respectivas saídas. As variáveis globais ocupam espaço durante toda a execução do programa. • As variáveis locais ajudam na economia de memória. 2. procurando observar se todas as entradas ou recursos necessários estão disponíveis. PROBLEMA ambigüidades ou informações incompletas e irrelevantes.1 Identifique os verbos que indiquem as operações que devem ser realizadas para a solução do problema: Trocar os valores lidos de variável Não há 5. 1. DADOS DE SAÍDA 4. na memória • Exercícios Resolvidos 1. Identifique e descreva os resultados desejados para o problema. 1 Descreva os passos gerais para a solução do problema.valor1 valor1 <.valor2 valor2 <. 6.2 Descreva o algoritmo em Portugol para a solução do problema. Em algumas situações é necessário registrar informações intermediárias para acompanhar a execução dos passos. valor2 : real procedimento trocarvalores //troca os valores de variável var aux : real inicio //usa uma variável auxiliar para trocar os valores aux <.Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação Não há 5.aux fimprocedimento inicio //ler os valores escreva ("Digite o valor 1: ") leia (valor1) escreva ("Digite o valor 2: ") leia (valor2) //trocar os valores de variável trocarvalores //escrever os valores escreval ("Valor 1 = ". algoritmo "troca" var valor1. valor2) fimalgoritmo 7. Ler os valores Trocar os valores de variável Escrever os valores MÓDULO: Guardar Guardar Guardar Trocar os valores de variável o valor da primeira variável em um auxiliar o valor da segunda variável na primeira variável o valor do auxiliar na segunda variável 6. (E) Valor1: 5 (E) Valor1: 1 (E) Valor1: 2 Valor2: 6 Valor2: 7 Valor2: 9 (S)Valor 1 = 6 (S)Valor 1 = 7 (S)Valor 1 = 9 Valor 2 = 5 Valor 2 = 1 Valor 2 = 2 DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág. Destaque os passos onde é necessário o refinamento da solução do problema e os descreva separadamente na forma de um módulo. utilizando a base de testes descrita no passo 4 para verificar se os resultados desejados estão corretos.4 Identifique se há a necessidade de uso de matrizes e defina qual o seu tamanho limite: Não há 6. valor1) escreval ("Valor 2 = ". TESTES Execute as operações descritas no passo 6. DESCRIÇÃO DO ALGORITMO Descreva a seqüência de instruções necessárias para a solução do problema.: 93 . 1 Identifique os verbos que indiquem as operações que devem ser realizadas para a solução do problema: Verificar se o dígito verificador está correto 5. Conta 23456 Dígito: 7 Ex1.1 Descreva os passos gerais para a solução do problema. DADOS DE ENTRADA Identifique e descreva os dados ou recursos (substantivos) disponíveis para a solução do problema. PROBLEMA ambigüidades ou informações incompletas e irrelevantes. Destaque os passos onde é necessário o refinamento da solução do problema e os descreva separadamente na forma de um módulo. INCORRETO 9+9+9+9+9=45 resto 9 = 0.4 Identifique se há a necessidade de uso de matrizes e defina qual o seu tamanho limite: Não há 6. ALGORITMO 6. Considerando que o dígito verificador de uma conta bancária é dado pelo resto da soma de cada um dos seus caracteres por 9. BASE DE TESTES Identifique e descreva os resultados desejados para o problema.Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação 2.2 Identifique se há a necessidade de uso de estruturas de seleção e que tipo de avaliação deve ser feita: Comparar o dígito verificador calculado com o digitado Separar os dígitos do número da conta 5. denominado também de dígito verificador. visando montar uma base de testes para o problema. número de conta corrente. (INTERPRETAÇÃO) Destaque aqui as ambigüidades ou informações incompletas Não há 2. Considere que as contas vão de 10000 a 99999. Ex1. DADOS DE SAÍDA 4.: 94 . Defina um conjunto de informações (no mínimo 3) de entrada com suas respectivas saídas. descreva um algoritmo que leia o número de uma conta e o digito verificador e informe se o dígito está correto..3 Identifique se há a necessidade de uso de estruturas de repetição e o número ou as condições de ocorrência das repetições: 5. CPF. Conta 99999 Dígito: 0 2+3+4+5+6=20 resto 9 = 2. DESCRIÇÃO DO Descreva a seqüência de instruções necessárias para a solução do problema. Para evitar erros de digitação de seqüências de números como código de barras. 1. PROCESSAMENTO Identifique os elementos fundamentais de processamento para a solução do problema 5. Mensagem se o dígito verificador digito está correto ou não (E) Conta: 23456 Digito: 7 (S) “INCORRETO” (E) Conta: 99999 Digito: 0 (S) “CORRETO” (E) Conta: 10000 Digito: 5 (S) “INCORRETO” 5. Ler o número da conta Ler o dígito verificador Calcular o dígito correto Se o dígito calculado é diferente do digitado então Msg: INCORRETO Senão Msg: CORRETO DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág. procurando observar se todas as entradas ou recursos necessários estão disponíveis. Número da Conta Dígito Verificador 3. etc. geralmente se adiciona ao número um dígito de controle. O cálculo do dígito verificador correto deve ser feito em um módulo. CORRETO se não há Verifique atentamente se o problema está bem definido. 0 //usar uma variável auxiliar para a conta auxConta <. utilizando a base de testes descrita no passo 4 para verificar se os resultados desejados estão corretos.conta //enquanto o auxiliar é maior do que 0 enquanto auxConta > 0 faca //soma o dígito pegando o resto da divisão da conta por 10 soma <. Correto = 2” (E) Conta: 99999 Digito: 0 (S) “Digito CORRETO” (E) Conta: 10000 Digito: 5 (S) “Digito INCORRETO. digitoCorreto : inteiro procedimento calcularDigito //calcular o digito verificado correto var soma.soma + auxConta % 10 //recalcular o auxiliar da conta tirando o último dígito auxConta <. Exemplo do algoritmo SelectionSort com procedimentos. Em algumas situações é necessário registrar informações intermediárias para acompanhar a execução dos passos.soma % 9 fimprocedimento inicio //ler a conta escreva ("Digite o número da conta: ") leia (conta) //ler o digito escreva ("Digite o dígito verificador: ") leia (digito) //calcular digito correto calcularDigito //comparar digitos e escrever o resultado se digito = digitoCorreto entao escreva ("Digito CORRETO") senao escreva ("Digito INCORRETO. auxConta : inteiro inicio //inicializar a soma dos dígitos soma <.auxConta \ 10 fimenquanto //calcula o dígito verificador correto da conta digitoCorreto <. Correto = 1” 3. Correto = ". digito. (E) Conta: 23456 Digito: 7 (S) “Digito INCORRETO. PROFESSOR: Maurício Capobianco Lopes pág. digitoCorreto) fimse fimalgoritmo 7.2 Descreva o algoritmo em Portugol para a solução do problema.Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação MÓDULO: Calcular o dígito correto Inicializar soma Para cada dígito da conta Somar dígito Dividir o resultado da soma por 9 e pegar o resto 6. TESTES Execute as operações descritas no passo 6.: DISCIPLINA: Introdução a Programação 95 . algoritmo "digito" var conta. vet[cont] : 10 : 3) fimpara fimprocedimento //programa principal inicio DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág.".cont //percorre o restante do vetor procurando o menor valor para i de cont+1 ate 10 faca //compara o elemento atual com o da posição do menor se (vet[i] < vet[posMenor]) entao //guarda a posição do elemento posMenor <.: 96 . cont.vet[cont] vet[cont] <." .10] de real procedimento lerVetor //ler os dados e armazenar em um vetor var cont : inteiro inicio para cont de 1 ate 10 faca leia(vet[cont]) fimpara fimprocedimento procedimento ordenarVetor //ordena o vetor utilizando o SelectionSort var i.vet[posMenor] vet[posMenor] <. posMenor : inteiro temp : real inicio //percorrer o vetor para cont de 1 ate 9 faca //define a posição do menor como sendo a posição atual posMenor <.temp fimse fimpara fimprocedimento procedimento escreverVetor //escreve o conteúdo do vetor var cont : inteiro inicio para cont de 1 ate 10 faca escreval(cont:3.i fimse fimpara //se encontrou elemento menor troca a posição se (cont <> posMenor) entao //troca os elementos de posição temp <.Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação algoritmo "Selection Sort" var vet : vetor[1.. : 97 .Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação lerVetor ordenarVetor escreverVetor fimalgoritmo DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág. sexo.Exemplo 1: nome.uma disciplina pode ser definida por seu código. . endereço. etc.uma pessoa pode ser definida por seu nome. . Exemplos: . Questão: nestes casos criaríamos uma variável para cada item? E se quiséssemos criar matrizes de pessoas. rg. endereço. rg e data de nascimento são campos do registro pessoa.um produto pode ser definido por seu código. . etc. preço.um aluno pode ser definido como uma pessoa e mais o seu código de matrícula. . nome. curso. entre outras informações. quantidade em estoque. sexo. de disciplinas ou de produtos? • • • • Para facilitar a manipulação destes tipos de dados usamos os registros.Exemplo 2: o código. fornecedor. telefone.: 98 . data de nascimento. de alunos. disciplinas em que está matriculado. Os registros são constituídos por tuplas também chamadas de campos.Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação 8 Estrutura de Dados Heterogêneas . nome. Os registros são estruturas de dados heterogêneas pois podem conter dados de diversos tipos. horário. . etc. telefone. professor e horário são campos so registro disciplina. professor. DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág.Registros • Os problemas computacionais muitas vezes exigem a manipulação de diversas informações sobre uma mesma entidade. Normalmente a definição de um registro é feita através da criação de um tipo abstrato de dados.Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação • O campo do registro pode ser definido com base em um tipo primitivo ou derivado de um tipo definido pelo próprio programador.campo1 identificador_registro. quanto na especificidade de cada campo. (ponto). PROFESSOR: Maurício Capobianco Lopes pág. o curso ser definido como string matriculado podem ser • A manipulação de um registro pode ser feita tanto na sua totalidade.campo2 2 O VisuAlg não permite a definição de registros.: DISCIPLINA: Introdução a Programação 99 . ou seja. todos os campos ao mesmo tempo. o número de matrícula do tipo inteiro. separado por um . identificador_registro. . Um tipo abstrato de dados é um tipo criado e definido pelo programador o qual pode ser usado na declaração de variáveis de um programa. campon : tipo fimregistro var //área de declaração de variáveis identificador_registro : nome_do_registro • • • • Sintaxe de Uso: para fazer referência a um campo de um registro deve-se utilizar o nome da variável do tipo registro seguido do nome do campo que se deseja utilizar.Exemplo: no registro de aluno pode ser definido como sendo onde ele está matriculado pode e as disciplinas onde ele está definidas como sendo um vetor. Sintaxe de Definição2: tipo //área de declaração de tipos nome_do_registro = registro campo1 : tipo campo2 : tipo . sexo) escreva (pessoa1. 1. A atribuição de um registro completo pode ser feita referenciando-se o próprio registro. Uma empresa tem o código. ela só pode ser feita entre variáveis do mesmo tipo.rg) fimalgoritmo • As operações de leitura e escrita tem que ser feitas referenciando-se diretamente o campo do registro que será manipulado.rg) pessoa1 <. cargo e salário de funcionários DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág. cargo e salário de seus funcionários.pessoa escreva (pessoa1. descreva um algoritmo que leia os dados dos funcionários e escreva todas as informações do funcionário que tem o maior salário e do que tem o menor salário. procurando observar se todas as entradas ou recursos necessários estão disponíveis. DADOS DE ENTRADA 3. Identifique e descreva os resultados desejados para o problema. nome.Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação • Exemplo: tipo //área de declaração de tipos RegPessoa = registro nome : caracter sexo : caracter rg: inteiro fimregistro var //área de declaração de variáveis pessoa. Baseado nisto. 2. pessoa1 : RegPessoa inicio leia (pessoa. se não há Verifique atentamente se o problema está bem definido.nome) escreva (pessoa1.sexo) leia (pessoa. • Exercícios Resolvidos 4. código. Será utilizado código = 0. (INTERPRETAÇÃO) Destaque aqui as ambigüidades ou informações incompletas Não há referência a como encerrar a leitura.nome) leia (pessoa. nome. DADOS DE SAÍDA Identifique e descreva os dados ou recursos (substantivos) disponíveis para a solução do problema.: 100 . PROBLEMA ambigüidades ou informações incompletas e irrelevantes. Entretanto. algoritmo “salario” tipo RegFuncionario = registro codigo : inteiro nome : caracter cargo : caracter salario : real fimregistro var funcionario.: 101 .00 5.4 Identifique se há a necessidade de uso de matrizes e defina qual o seu tamanho limite ou se há a necessidade do uso de registros e defina seus campos: Não é necessário matrizes.3 Identifique se há a necessidade de uso de estruturas de repetição e o número ou as condições de ocorrência das repetições: Repetir até que seja digitado o código 0 para o funcionário 5.1 Identifique os verbos que indiquem as operações que devem ser realizadas para a solução do problema: Achar o maior e o menor salário 5.2 Descreva o algoritmo em Portugol para a solução do problema.00 Funcionário com menor salário 4 Beá Faxineira 400. (E) 1 2 3 4 JJ Pedreiro 4500. funcMaior. Destaque os passos onde é necessário o refinamento da solução do problema e os descreva separadamente na forma de um módulo.00 Mia Secretária 5000. nome.00 Beá Faxineira 400. BASE DE TESTES Defina um conjunto de informações (no mínimo 3) de entrada com suas respectivas saídas. DESCRIÇÃO DO Descreva a seqüência de instruções necessárias para a solução do problema. PROCESSAMENTO Identifique os elementos fundamentais de processamento para a solução do problema 5. visando montar uma base de testes para o problema.2 Identifique se há a necessidade de uso de estruturas de seleção e que tipo de avaliação deve ser feita: Comparar o salário para encontrar o maior e o menor salário 5. cargo e salário do funcionário com maior salário código. cargo e salário. 6. nome.00 Cacá Diretor 30000.1 Descreva os passos gerais para a solução do problema.Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação código. Inicializar maior e menor salário Ler código do funcionário Enquanto código diferente de 0 Ler nome. cargo e salário Se é o maior salário Armazenar dados do funcionário Se é o menor salário Armazenar dados do funcionário Ler código do funcionário Fimenquanto Escrever dados do funcionário com maior salário Escrever dados do funcionário com menor salário 6. ALGORITMO 6. menor : inteiro inicio //Inicializar maior e menor salário DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág. cargo e salário do funcionário com menor salário 4. nome.00 (S) Funcionário com maior salário 3 Cacá Diretor 30000. Será utilizado um registro para os funcionários contendo código. funcMenor : RegFuncionario maior. “. funcMaior. DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág.00 8. “ “. utilizando a base de testes descrita no passo 4 para verificar se os resultados desejados estão corretos.00 Cacá Diretor 30000.nome. (E) 1 2 3 4 JJ Pedreiro 4500.cargo.00 (S) Funcionário com maior salário 3 Cacá Diretor 30000. funcMenor. “ “.salario < menor) entao //Armazenar dados do funcionário menor <.salario funcMaior <.00 Funcionário com menor salário 4 Beá Faxineira 400. funcMaior. para eliminar eventuais possibilidades de erro e melhorar a maneira de descrever ou o modo como está sendo feito.00 Beá Faxineira 400.salario) //Se é o maior salário se (funcionario.salario) //Escrever dados do funcionário com menor salário escreval (“Funcionário com menor salário”) escreval (funcMenor. “ “. “ funcMenor. OTIMIZAÇÃO Reveja a solução proposta.Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação maior = 0 menor = 999999 //Ler código do funcionário escreva (“Digite o codigo do funcionario (0 para sair)”) leia (funcionario. mesmo se estiver correta.cargo.codigo. Caso encontre possibilidades de melhoria retorne ao passo 6.funcionario fimse //Se é o menor salário se (funcionario.salario funcMenor <.codigo) fimenquanto //Escrever dados do funcionário com maior salário escreval (“Funcionário com maior salário”) escreval (funcMaior. Execute as operações descritas no passo 6. Uma solução eficiente deve usar menos memória possível e ser a mais rápida possível.funcionario.salario > maior) entao //Armazenar dados do funcionário maior <.00 Mia Secretária 5000.codigo.: 102 .cargo) escreva (“Digite o salario do funcionario”) leia (funcionario.nome. “ “. funcMenor.codigo) <> 0 faca //Ler nome. Em algumas situações é necessário registrar informações intermediárias para acompanhar a execução dos passos.salario) fimalgoritmo 7.codigo) //Enquanto código diferente de 0 enquanto (funcionario. cargo e salário escreva (“Digite o nome do funcionario”) leia (funcionario.funcionario fimse //Ler código do funcionário escreva (“Digite o codigo do funcionario (0 para sair)”) leia (funcionario.funcionario. “ funcMaior. TESTES “.nome) escreva (“Digite o cargo do funcionario”) leia (funcionario. em seguida. e acumule a quantidade de reservas não efetuadas. leia cada intenção de voto. leia o código do aluno. A segunda chave de ordenação é o nome do veículo também em ordem crescente e a terceira chave é o ano do veículo. 2. marca. A empresa deseja imprimir uma lista ordenada da seguinte forma: a primeira chave de ordenação é a marca do veículo em ordem crescente. descreva um algoritmo que leia os dados sobre os candidatos e os armazene em um vetor e. ano. “b”. registrando o número do candidato. Uma revendedora de automóveis tem o código. escreva uma mensagem informando a inexistência de lugares. “c”. registre a reserva para o passageiro e atualize o número de lugares disponíveis no vôo. de reservas e para emissão de relatórios. Considerando que o IBGE tem a lista com o número e o nome do candidato. Caso contrário. DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág. Baseado nisto.: 103 . Considere uma prova de múltipla escolha (opções “a”. 5. o nome do candidato e o seu respectivo total de intenções de voto. o destino. O IBOPE fez uma pesquisa de intenção de votos para os candidatos à presidência. emita um relatório de cada vôo com suas respectivas listas de passageiros e os dados de todos os vôos onde houve falta de lugares. 3. Para isto ela mantém o número dos vôos. constituídos do número da identidade. b) Use um menu de opções para o cadastro de vôos. A leitura dos dados sobre os candidatos e a leitura dos dados de intenção de votos deve ser finalizada quando for digitado 0 no número do candidato. modelo e preço de venda de seus automóveis. totalizando para o respectivo candidato. a origem. Ao final. descreva um algoritmo que leia os dados dos automóveis e escreva todas as informações considerando as chaves de ordenação apresentadas. imprima primeiramente uma lista dos alunos aprovados e em seguida uma lista dos alunos reprovados. e a quantidade de lugares disponíveis (1 <= número de vôos <= 70). Em caso afirmativo.Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação Exercícios Propostos 1. nome do passageiro e número do vôo desejado e verifique se há disponibilidade no vôo. Considere que a média para aprovação é 6.0 sendo calculada de forma aritmética. imprima o número do candidato. nome. nome e três notas dos 40 alunos de sua disciplina. “d” e “e”) com 10 questões. cada questão valendo um ponto. Uma empresa de passagens aéreas quer fazer um controle de reservas de passagens em seus vôos. Baseado nisto. seu nome e as respostas de cada aluno para cada questão. Um professor tem o código. Baseado nisto descreva um algoritmo que: a) leia pedidos de reserva dos passageiros. Baseado nisto descreva um algoritmo que: a) b) leia o gabarito da prova. 4. seu nome e a relação de 5 disciplinas em que ele está matriculado. Considere que o número de alunos pode variar de 1 a 200. O coordenador do curso tem o código do aluno. descreva um algoritmo que: a) b) informe os dados dos alunos que estão cursando duas disciplinas A e B simultaneamente. 6. informe os dados da(s) mulher (es) mais velha(s) e mais nova(s). 7.: 104 . informe a quantidade de candidatos de cada sexo. informe a média de idade dos homens com experiência no serviço.0). Baseado nisto. informe o(s) número(s) da(s) questão(ões) que mais foi(ram) acertada(s) pelos alunos informe o(s) número(s) da(s) questão(ões) que menos foi(ram) acertada(s) pelos alunos informe a nota que teve maior freqüência absoluta. contendo: código de inscrição do candidato. informe a porcentagem de alunos aprovados e reprovados. informe os dados do(s) homem(ns) mais velho(s) e mais novo(s). dado o nome de uma determinada disciplina. ou seja. Baseado nisto descreva um algoritmo que: a) b) c) d) e) f) g) leia um conjunto de informações para cada candidato.Universidade Regional de Blumenau / Centro de Ciências Exatas e Naturais / Departamento de Sistemas e Computação c) d) e) f) g) informe o código. Obs: para encerrar será informado código de inscrição do candidato igual a zero. informe a lista dos alunos matriculados. DISCIPLINA: Introdução a Programação PROFESSOR: Maurício Capobianco Lopes pág. a nota que apareceu o maior número de vezes (supondo que não existem empates). informe a quantidade de mulheres com idade inferior a 35 anos e com experiência no serviço. idade (em anos). Considere que o número de alunos pode variar de 1 a 200. informe a menor idade entre as mulheres que já tem experiência no serviço. Uma empresa decidiu fazer um levantamento em relação aos candidatos que se apresentarem para preenchimento de vagas no seu quadro de funcionários (1 <= número de candidatos <= 100). o nome e a nota dos alunos aprovados e dos alunos reprovados (considere aprovado o aluno com nota maior ou igual a 6. sexo (m/f) e experiência no serviço (s/n).