Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas

Apostila de Algoritmos, Notas de estudo de Algoritmos

algoritmo - algoritmo

Tipologia: Notas de estudo

Antes de 2010
Em oferta
30 Pontos
Discount

Oferta por tempo limitado


Compartilhado em 27/09/2009

matheus-marcus-3
matheus-marcus-3 🇧🇷

4.3

(3)

15 documentos

Pré-visualização parcial do texto

Baixe Apostila de Algoritmos e outras Notas de estudo em PDF para Algoritmos, somente na Docsity! Algoritmo CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE CAMPOS Curso Técnico de Informática Industrial Apostila de Algoritmos 2007 1 EMENTA: Estudo das formas para representação do pensamento lógico através de técnicas de desenvolvimento de algoritmos. Representação e manipulação de dados. Construções de algoritmos seqüenciais, condicionais e com estruturas de repetição. Manipulação de estruturas de dados homogêneas e heterogêneas e utilização de sub-rotinas. OBJETIVOS: Fornecer elementos e técnicas que capacitem o aluno a construir algoritmos, através da identificação dos passos ou ações necessários para transformar um conjunto de dados de entrada em informações de resultado, promovendo dessa forma, um ambiente de prática da lógica de programação. CONTEÚDO PROGRAMÁTICO: 1. Algoritmo Básico 1.1. Pascal 2. Conceitos Básicos 2.1. Lógica(problemas, solução e resultado) 3. Definição de Algoritmo e Pseudocódigo 4. Algoritmo cotidiano X Algoritmos Computacionais 5. Conceitos básicos do funcionamento do computador e da memória 6. Defini~]ao de variáveis, constantes e tipos primitivos 7. Estruturas Seqüenciais e Estruturas de Seleção 7.1. Comando de Atribuição 7.2. Operadores aritméticos e funções matemáticas 7.3. Comandos de entrada e saída 7.4. Operadores relacionais e operadores lógicos 7.5. Estrutura de seleção simples 7.6. Estrutura de seleção composta 7.7. Estrutura de múltipla escolha 8. Estrutura de repetição 8.1. Conceito de contador e acumulador 8.2. Repetição com teste no início (enquanto) 8.3. Repetição com teste no fim (repita) 8.4. Repetição com variável de controle (para) 9. Tipos Estruturados Homogêneos (vetores e matrizes) BIBLIOGRAFIA BÁSICA (LIVROS TEXTOS): Manzano, J. A.; Oliveira, J. F.: “Algoritmos - Lógica para desenvolvimento de Programação”. Érica. SP. pp. 265. 1996. Forbellone, A. L. V; Eberspächer, H. F. “ Lógica de Programação”. São Paulo, Ed. McGraw-Hill, 1993. Lages, G.: “Algoritmos e Estruturas de Dados”. São Paulo, Ed. LTC,1988. Tremblay, B.: “Ciência dos Computadores. Uma abordagem Algorítmica”. São Paulo, Ed. McGraw-Hill, 1985. Algoritmo Para se trocar a lâmpada, é seguida uma determinada seqüência de ações, representadas através desse algoritmo. Como isso pode ser seguido por qualquer pessoa, estabelece-se aí um padrão de comportamento. A sequencialização tem por objetivo reger o fluxo de execução, determinando qual ação vem a seguir. O algoritmo anterior tem um objetivo bem específico: trocar uma lâmpada. E se a lâmpada não estiver queimada? O algoritmo faz com ela seja trocada do mesmo modo, não prevendo essa situação. Para solucionar este problema, podemos efetuar um teste seletivo, verificando se a lâmpada está ou não queimada: - pegar uma escada; - posicionar embaixo da lâmpada; - buscar uma lâmpada nova; - ligar o interruptor; - se a lâmpada não acender, então: - subir na escada; - retirar a lâmpada velha; - colocar a lâmpada nova. Dessa forma, algumas ações estão ligadas à condição (lâmpada não acender). No caso da lâmpada acender, as três linhas: - subir na escada; - retirar a lâmpada velha; - colocar a lâmpada nova. não serão executadas. Em algumas situações, embora o algoritmo resolva o problema proposto, a solução pode não ser a mais eficiente. Exemplo: três alunos devem resolver um determinado problema: - O aluno A conseguiu resolver o problema executando 35 linhas de programa. - O aluno B resolveu o problema executando 10 linhas de programa - O aluno C resolveu o problema executando 54 linhas de programa. Obviamente, o algoritmo desenvolvido pelo aluno B é menor e mais eficiente que os demais. Isso significa que há código desnecessário nos demais programas. Dessa forma, podemos otimizar o algoritmo anterior, uma vez que buscamos a escada e a lâmpada sem saber se serão necessárias: - ligar o interruptor; - se a lâmpada não acender, então: - pegar uma escada; - posicionar a escada embaixo da lâmpada; - buscar uma lâmpada nova; - subir na escada; - retirar a lâmpada velha; - colocar a lâmpada nova. Podemos considerar ainda que a lâmpada nova pode não funcionar. Nesse caso devemos trocá-la novamente, quantas vezes for necessário, até que a lâmpada acenda: - ligar o interruptor; - se a lâmpada não acender, então: - pegar uma escada; - posicionar a escada embaixo da lâmpada; 5 Algoritmo - buscar uma lâmpada nova; - subir na escada; - retirar a lâmpada velha; - colocar a lâmpada nova; - se a lâmpada não acender, então: - retirar a lâmpada; - colocar outra lâmpada; - se a lâmpada não acender, então: ... Observamos que o teste da lâmpada nova é efetuado por um conjunto de ações: - se a lâmpada não acender então: - retire a lâmpada - coloque outra lâmpada Em vez de escrevermos várias vezes este conjunto de ações, podemos alterar o fluxo sequencial de execução do programa, de forma que, após executar a ação “coloque outra lâmpada”, voltemos a executar a ação “se a lâmpada não acender”. Precisa-se então determinar um limite para tal repetição, para garantir que ela cesse quando a lâmpada finalmente acender: - enquanto a lâmpada não acender, faça: - retire a lâmpada - coloque outra lâmpada Uma versão final do algoritmo, que repete ações até alcançar o seu objetivo: trocar a lâmpada queimada por uma que funcione, é apresentada abaixo. - ligar o interruptor; - se a lâmpada não acender, então: - pegar uma escada; - posicionar a escada embaixo da lâmpada; - buscar uma lâmpada nova; - subir na escada; - retirar a lâmpada velha; - colocar a lâmpada nova; - enquanto a lâmpada não acender, faça: - retirar a lâmpada; - colocar outra lâmpada. Até agora, estamos efetuando a troca de uma única lâmpada. Todo o procedimento poderia ser repetido 10 vezes, por exemplo, no caso de querermos trocar 10 lâmpadas. Inicialmente, tínhamos um pequeno conjunto de ações que deveriam ser executadas (estrutura seqüencial). Através de uma condição, incluímos posteriormente uma estrutura de seleção. Na necessidade de repetir um determinado trecho do algoritmo, construiu-se no final uma estrutura de repetição. Fatores a serem levados em consideração na construção de um algoritmo 1. Complexidade Percebeu-se, na medida em que colocávamos situações novas no problema a ser resolvido, que ia 6 Algoritmo aumentando a complexidade do algoritmo. Esse certamente é o maior problema envolvido na construção de algoritmos. A complexidade pode ser vista como um sinônimo de variedade (quantidade de situações diferentes que um problema pode apresentar), as quais devem ser previstas na sua solução. Já que conviver com a complexidade é um mal necessário, é saudável fazer o possível para diminuí-la ao máximo, a fim de controlar o problema e encontrar sua solução. Deve-se diferenciar O que de Como. Muitos programadores aumentam a complexidade de um devido problema desnecessariamente. A forma errada de interpretação de um problema pode levar a respostas irrelevantes à solução almejada ou até mesmo a nenhuma solução, gerando algoritmos mais complexos do que o necessário. Exemplo: digamos que se pergunte a um leigo a respeito de um relógio: - Como é um relógio? = É um instrumento com três ponteiros concêntricos. Como a descrição não é relevante, poderíamos indagar: - Um relógio com 2 ponteiros é possível? = É... pode ser! Poderíamos ainda indagar: - E um relógio com apenas 1 ponteiro não poderia ser uma possibilidade? = Bem... Pode ser com 3, 2 ou 1 ponteiro. - E sem ponteiro pode? = Ah!, Sim! Pode ser digital Já a pergunta: “O que é um relógio?”, poderia resultar na resposta: - É um instrumento cuja finalidade é marcar o decorrer do tempo. Ou seja, algumas variáveis podem aumentar ou diminuir a complexidade de um sistema quando forem bem ou mal utilizadas. 2. Legibilidade Mede a capacidade de compreensão de um algoritmo por qualquer observador (que não o construiu); a clareza com que sua lógica está exposta. Quanto mais legível for um algoritmo, menor será sua complexidade. 3. Portabilidade Devido a quantidade enorme de linguagens de programação existentes, não será adotada nenhuma linguagem específica para trabalhar os algoritmos (ex: C, pascal, Java, etc.). Isso porque a solução do problema fica ligada a características e recursos da linguagem na qual ela foi concebida. Utilizaremos uma pseudo-linguagem (linguagem fictícia) que visa a permitir a representação dos algoritmos através da língua portuguesa (português estruturado). Esses algoritmos poderão ser convertidos facilmente para qualquer linguagem de programação usual (Basic estruturado, C, pascal, Java). 4. Técnica de resolução por método cartesiano A famosa frase de Descartes “Dividir para conquistar” é muito importante dentro da programação. É um método que ataca um problema grande, de difícil solução, dividindo-o em problemas menores, de solução 7 Algoritmo Tipos de Informações Podemos classificar os tipos de informações a serem processadas, a grosso modo, em dados e instruções. Dados São as informações a serem processadas por um computador. Consideremos 3 tipos de dados: numéricos (inteiros e reais), caracteres e lógicos. Tipos primitivos de dados: 1.a) Inteiro: toda e qualquer informação numérica que pertença ao conjunto dos números inteiros (negativa, nula ou positiva). Exemplos: 39, 0, -56 entre outros. a) Ele tem 15 irmãos. b) A temperatura desta noite será de -2 graus. 1.b) Real: toda e qualquer informação numérica que pertença ao conjunto dos números reais (negativa, nula ou positiva, inteiro ou fracionário). Exemplos:- 4, 3, 0, 35, 1,23 a) Ela tem 1,73 metro de altura. b) Meu saldo bancário é de - R$ 121,07. 2) Caractere: São caracterizadas como tipos caracteres, as seqüências contendo letras, números e símbolos especiais. Uma seqüência de caracteres deve ser indicada entre aspas (““). Este tipo de dado é também conhecido como alfanumérico, string, literal ou texto. Exemplos: “Rua Alfa, 52 Apto 1”, “Fone: 574-9988”, “04387-456”, “ “, “7”. a) Constava na prova: “Use somente caneta!”. 3) Lógico: São caracterizados como tipos lógicos, os dados com valores verdadeiro e falso, sendo que este tipo de dado poderá representar apenas um dos dois valores. Ele é chamado por alguns de tipo boleano, devido à contribuição do filósofo e matemático inglês George Boole na área da lógica matemática. Os dados do tipo lógico, poderão ser apresentados e delimitados pelo caractere ponto (.) : ou não falso, .f. , verdadeiro ou .v. Exemplo: você pode entrar. A tabela abaixo resume os tipos de dados mais comuns e sua definição nas linguagens mais conhecidas: Tipo Exemplo Basic (VB) Pascal/Delphi Java/C++ Inteiro 2 | 45 | 100 Integer Integer int Real 2,456 | 101,19 Single Real float Caractere / String “A” | “4” | “Algoritmos” Byte / String Char / String Char / String Lógico Verdadeiro | Falso | .V. | .F. True / False True / False True / False Exercícios de Fixação Determine qual é o tipo primitivo de informação presente nas sentenças abaixo: a) A placa “Pare!” tinha dois furos de bala. b) Josefina subiu 5 degraus para pegar uma maçã boa. c) Alberta levou 3 horas e meia para chegar ao hospital onde concebeu uma garota. d) Julia escreveu em sua casa: “Preserve o meio ambiente”, e ficou devendo R$ 20,59 ao vendedor de tintas. e) José recebeu sua 18 a medalha na natação por ter alcançado a marca de 57,3 segundos nos 100 metros rasos. 10 Algoritmo Constantes x Variáveis: Entende-se por uma informação constante, aquela que não sofre nenhuma alteração no decorrer do tempo. Por exemplo, na fórmula a seguir, o que é constante e o que é variável? RESULTADO ← ENTRADA + 2.25 O uso de Variáveis: Tem-se como definição de variável tudo aquilo que é sujeito a variações. Variáveis são espaços de memória que são alocados para armazenar informações. Por que precisa-se de variáveis? R: Para armazenar valores que serão utilizados posteriormente. Ex.: em um cálculo complexo, resultados intermediários podem ser armazenados e posteriormente processados para se obter o resultado final. Imagine que a memória de um computador é um grande armário com diversas gavetas, onde cada gaveta pode conter somente um valor (numérico, caractere ou lógico). Deve-se concordar que é necessário identificar cada gaveta para sua utilização posterior, através de um nome. Nomenclatura e declaração das variáveis: O nome de uma variável faz referência ao endereço de memória onde essa variável se encontra . Existem algumas regras para a utilização das variáveis: • Nome de variável pode ter 1 ou mais caracteres • O primeiro caractere de uma variável sempre deve ser uma letra • Nenhuma variável pode ter espaço em branco em seu nome • Nenhum nome de variável pode ser uma palavra reservada a uma instrução da linguagem usada • Poderão ser utilizados somente letras, números e sublinhado (embora algumas linguagens aceitem o cedilha e acentuação). • Procure sempre utilizar variáveis que tenham sentido (Mnemônicos). Ex: alt_homens ao invés de x. A declaração de uma variável também depende da linguagem. A variável X será declarada do tipo inteiro e a variável Y do tipo real. Observe a definição em cada linguagem: Linguagem Variável X Variável Y Visual Basic / Basic Dim X as integer Dim Y as single Pascal / Delphi X: integer; Y: real; Java / C++ Int X; Float Y; Nos algoritmos, não será cobrada a distinção entre inteiro e real. Utilizaremos a declaração das variáveis simplesmente como numérica, na forma apresentada abaixo: variáveis numérico a,b,c -> 1, 3, 5.4, 8.72, 0 caracter d -> a, b, teste, Juca lógico entra -> verdadeiro ou falso 11 Algoritmo Atribuição de variáveis: O comando de atribuição (=, := ou ←) permite fornecer um valor a uma certa variável, onde o tipo de informação deve ser compatível com o tipo de variável utilizada, ou seja, somente poderemos atribuir “Pedro” a uma variável do tipo caractere. Exemplos: a ← “mesa” b := 2 + 5 - XB c = -5.4 - b • Quando uma variável é declarada (criada) qual o seu valor inicial? R: Não se pode saber o valor inicial de uma variável, pois na memória existem várias informações armazenadas, muitas delas estão sendo utilizadas pelo computador, mas podem existir espaços em que foram armazenadas informações anteriormente mas que não estão mais em uso. Esses espaços, mesmo com informação estão disponíveis para novas variáveis. Uma variável pode ser criada em um desses espaços, e seu valor será um "lixo" qualquer da memória. Mas uma variável pode ser criada em um espaço vazio da memória, nesse caso seu valor será nulo. Para resolver esse problema do valor inicial da variável, algumas linguagens inicializam suas variáveis com 0 (zero) ou nulo. Suponha que fosse atribuído os seguintes valores às seguintes variáveis: A := “mesa” B := 0 C := 2 D := -5.4 E := “João” F := 5.656 Veja abaixo como poderia ficar a Memória do computador: 1 2 Mesa 0 C:\ 125 endereço BA TXT -5,4 xYz 2 João 30 5656 Utilizado , ( )Não vazio não utilizado lixo , V a z io n ã o u t i l iz a d o Operadores Aritméticos: Unários ou binários, têm uma ordem de prioridade que é alterada somente com utilização de parênteses. Operador Operação Tipo Prioridade matemática - Inversão de sinal Unário 1 ^, ** Exponenciação Binário 2 / Divisão Binário 3 * Multiplicação Binário 3 + Adição Binário 4 - Subtração Binário 4 Funções matemáticas Somente será permitida a utilização das seguintes funções nos algoritmos: inteiro(x): retorna o valor inteiro de x. Se por exemplo, x=3,452, retornará 3 abs(x): retorna o valor absoluto de x. Se por exemplo, x= -2,45, retornará 2,45 (não existe no AMBAP) resto(x,y): retorna o resto da divisão de x por y. Por exemplo, resto(4,3) retornará 1 12 Algoritmo 2) Supondo que as variáveis Nb, Na, Nmat e Sx sejam utilizadas para armazenar a nota de um aluno, o nome do aluno, o número de matrícula do aluno e o sexo do aluno, respectivamente. Declare-as corretamente: 3) Encontre os erros da seguinte declaração de variáveis: variaveis endereço, nfilhos, valor$, xpto, c, peso :numerico idade, x :caractere 2lâmpada :logico 4) Seguindo a prioridade dos operadores, qual é o resultado das seguintes operações a) 4 ** 2/4 + 17 - 5/2,5 b) 3 ** 3 * 2 + abs(4-6-1)/4 + 11 c) 3 * inteiro(7/2)^2 + abs(4-6)/4 + 1 + resto(4,2) 5) Assinale com um x os nomes válidos para variáveis abaixo: ( ) Alpha ( ) BJ153 ( ) A:B ( ) 5x ( ) K7 ( ) Inps ( ) E(13) ( ) X-Y ( ) FGTS ( ) 1Beta ( ) Notas/2 ( ) PE&E ( ) X ( ) Notas ( ) int ( ) ABC ( ) Médias ( ) AeQ* 6) Utilizando o seguinte trecho de algoritmo, e considerando a entrada dos valores 3 para x e -2 para y: variaveis x,y,z : numerico inicio leia (x) escreva (x, “ao cubo = “, x^3 ) leia (y) escreva (x+y) z := x / y escreva (z) z := inteiro(z) escreva (z) z := z+1 x := abs(y-z) x := resto(x,z) escreva (x) Explique o que está acontecendo em cada linha e qual será o resultado de cada ação executada. 15 Algoritmo Algoritmos propostos 1) Apresente o seguinte algoritmo: • Ler 2 valores, no caso variáveis A e B. • Efetuar a soma das variáveis A e B implicando seu resultado na variável X. • Apresentar o valor da variável X após a soma dos dois valores indicados. 2) A fórmula para calcular a área de uma circunferência é: A = πR2. Sendo que o valor de π = 3.14159 basta estabelecer: • Ler 1 valor para raio, no caso a variável R. • Efetuar o cálculo da área, elevando o valor de R ao quadrado e multiplicando por π. • Apresentar o valor da variável A. 3) Leia duas variáveis A e B. A seguir, calcule a soma entre elas e atribua à variável SOMA. A seguir escrever o valor desta variável. 4) Leia duas variáveis A e B. A seguir, calcule o produto entre elas e atribua à variável PROD. A seguir mostre a variável PROD com mensagem correspondente. 5) Leia 2 variáveis A e B, que correspondem a 2 notas de um aluno. A seguir, calcule a média do aluno, sabendo que a nota A tem peso 3,5 e a nota B tem peso 7,5. 6) Leia 3 variáveis A e B e C, que são as notas de um aluno. A seguir, calcule a média do aluno, sabendo que a nota A tem peso 2, a nota B tem peso 3 e a nota C tem peso 5. 7) Leia 4 variáveis A,B,C e D. A seguir, calcule e mostre a diferença do produto de A e B pelo produto de C e D (A*B-C*D). 8) Escreva um algoritmo que leia o número de um funcionário, seu número de horas trabalhadas, o valor que recebe por hora e calcula o salário desse funcionário. A seguir, mostre o número e o salário do funcionário. 9) Escrever um algoritmo que leia o nome de um vendedor, o seu salário fixo e o total de vendas efetuadas por ele no mês (em dinheiro). Sabendo que este vendedor ganha 15f de comissão sobre suas vendas efetuadas, informar o seu salário no final do mês. 10)Escrever um algoritmo que calcule e mostre o fatorial de 5. 11)Escrever um algoritmo que escreve os números ímpares entre 10 e 20. 12)Escrever um algoritmo que leia o código de uma peça 1, o número de peças 1, o valor unitário de cada peça 1, o código de uma peça 2, o número de peças 2, o valor unitário de cada peça 2 e calcula e mostra o valor a ser pago 13)Escrever um algoritmo para calcular o volume de uma esfera sendo fornecido o valor de seu raio. (4/3 * pi * R^3) 14)Escrever um algoritmo que leia três valores: A, B e C. A seguir, calcule e mostre: a) a área do triângulo que tem A por base e C por altura. b) a área do círculo de raio C. c) A área do trapézio que tem a e b por bases e c por altura. 16 Algoritmo d) A área do quadrado que tem lado b. e) a área do retângulo que tem lados a e b. 15)Escrever um algoritmo que leia 3 valores A, B e C. A seguir, encontre o maior dos três valores e o escreva com a mensagem “É o maior”. Utilize a fórmula: MaiorAB = (a + b + abs (a - b) ) / 2 16)Escrever um algoritmo para determinar o consumo médio de um automóvel sendo fornecidos a distância total percorrida pelo automóvel e o total de combustível gasto. 17)Escrever um algoritmo que leia dois pontos quaisquer no plano, p1(x1,y1) e p2(x2,y2) e calcule a distância entre eles. 18)Escrever um algoritmo que calcule e mostre a quantidade de litros de combustível gastos em uma viagem, utilizando-se um automóvel que faz 12 KM/L. Deve-se fornecer o tempo gasto na viagem e a velocidade média durante a mesma. Assim pode-se obter distância percorrida: Distância = Tpo * vel Litros_usados = distância/12. 19)Dois carros (x e y) saem de uma mesma cidade. O carro X sai com velocidade constante de 60 Km/h e o 2° com velocidade constante de 90 Km/h. A seguir faça a leitura de uma distância (em Quilômetros) e calcule quanto tempo leva para o carro mais veloz tomar essa distância do outro carro. 20)Considerando 3 carros (X,Y e g) que saem de uma cidade A. A seguir, considerando que o caminho a percorrer pelo carro X é de 360 Km, pelo carro Y é de 270 Km e pelo carro g é de 310 KM, faça a leitura da velocidade dos 3 carros e mostre o tempo em horas que cada um deles levará para percorrer seu percurso. 21)Escrever um algoritmo que leia um valor em Reais. A seguir, calcule o menor número de notas possíveis no qual o valor pode ser decomposto. As notas consideradas são de 100, 50, 20, 10, 5, 2 e 1. A seguir mostre o valor lido e a relação de notas necessárias. 22)Escrever um algoritmo que leia o tempo de duração em segundos de um determinado evento em uma fábrica e informe-o expresso no formato horas:minutos:segundos. 23)Escrever um algoritmo que leia a idade de uma pessoa em dias e informe-a em anos, meses e dias. 24)Leia a hora inicial e a hora final de um jogo. A seguir calcule a duração do jogo, sabendo que o mesmo pode começar em um dia e terminar em outro, tendo uma duração máxima de 24 horas. 25)Com relação ao exercício anterior, calcule o tempo considerando os minutos. d= (x2-x1)2 + (y2- y1)2 17 Considere o problema a seguir, onde se estabelecem 3 condições para se calcular o reajuste de salário de um funcionário: - Para salário < do que 500, o reajuste será de 15f - Para salário >= 500 mas <= 1000, o reajuste será de 10% - Para salário > 1000, o reajuste será de 5%f : F lu x o g r a m a Início Ler salário F F Senão salário salário < 500 V V Então Nsal ←salário * 1.15 Senão <=1000 Então Nsal ←salário * 1.05 Nsal ←salário * 1.10 escrever salário Fim Faça o algoritmo: c) se (A = 2) ou ( B < 7) entao X := (A + 2) * (B - 2) senao X := (A + B) / D * (C + D) fim_se escreva X Resposta: ____ d) se (A >= 2) ou (C <=1) entao X := (A + D)/2 senao X := D * C fimse escreva X Resposta: ____ e) se nao (A > 2) ou nao (B < 7) entao X := A + E senao X := A / E fimse escreva X Resposta: ____ f) se nao (A > 3) e não (B < 5) entao X := A + D senao X := D / B fimse escreva X Resposta: ____ g) se (C >=2) e (B <= 7) entao X := (A + D)/2 senao X := D * C fimse escreva X Resposta: ____ h) se (A > 2) ou nao (B < 7) entao X := A + B - 2 senao X := A - B fimse escreva X Resposta: ____ Algoritmos Propostos 1. Faça um algoritmo que leia 4 variáveis A,B,C e D. A seguir, se B for maior do que C e se D for maior do que A e a soma de C com D for maior que a soma de A e B e se C e D, ambos, forem positivos e se a variável A for par escrever a mensagem “valores aceitos”, senão escrever “valores não aceitos”. 2. Desenvolva um algoritmo que leia 3 valores inteiros e efetue o cálculo das raízes da equação de báscara. Se não foi possível calcular as raízes, mostre uma mensagem correspondente. Obs.: não é possível divisão por 0 (zero) e raiz quadrada de número negativo; 3. Escreva um algoritmo que leia um valor qualquer. A seguir, mostre uma mensagem dizendo em qual dos seguintes intervalos: h0,25i (25,50i, (50,75i, (75,100i o número está. Obs: por exemplo (25,... indica valores maiores que 25 Ex: 25,00001. 4. Com base na tabela abaixo, escreva um algoritmo que leia o código de um item e a quantidade deste item. A seguir, calcule e mostre o valor da conta a pagar. CÓDIGO ESPECIFICAÇÃO PREÇO UNITÀRIO 1 Cachorro Quente R$ 4.00 2 X-Salada R$ 4.50 3 X-Bacon R$ 5.00 4 Torrada simples R$ 2.00 5 Refrigerante R$ 1.50 5. Ler 4 valores (N1, N2, N3 e N4) referentes às quatro notas de um aluno. A seguir, se a média ponderada com pesos 2,3,4 e 1 para as respectivas provas for maior ou igual a 7, mostre uma mensagem: "Aluno foi aprovado". Se a nota for inferior a 5, mostrar uma mensagem: "Aluno foi reprovado". Se a média ficou entre 5 e 7, fazer a leitura de uma variável (EX) correspondente a nota de exame, recalcular a média (somar a nota do exame com a nota anterior e dividir por 2) e mostrar se o aluno foi ou não aprovado. 6. Considerando: a = 2, b = 5 e C = 6, mostre o resultado da execução dos algoritmos abaixo. SOMA DE A, B E C= a := b * c - a * b b := b ^ 2 - (a + 6) se (b > a) e não (b <= C) entao b := c * 2 - (a + 2) c := b - a * c * 2 senão c := c + 2 * a + 2 b := c * 2 - a * 2 fimse x := a + b + c escreva ( “SOMA DE A, B E C=“, x) a := b * c + a * b b := b ^ 2 + (a + 6) se (b > a) e não (b <= C) entao b := c * 2 - (a + 2) c := b - a * c * 2 senao c := c + 2 * a + 2 b := c * 2 - a * 2 fimse x := a + b + c escreva ( “SOMA DE A, B E C=“, x) SOMA DE A, B E C= 7. Faça um algoritmo que leia 2 valores (x e y), que devem representar as coordenadas de um ponto em um plano. A seguir, determine qual o quadrante ao qual pertence o ponto, ou se está sobre um dos eixos cartesianos ou na origem (x=y=0). 8. Faça um algoritmo que leia 3 valores e ordene-os em ordem crescente. No final, mostre os valores em ordem crescente e a seguir, como foram lidos. 9. Faça um algoritmo que leia 3 valores e mostre estes valores ordenados por ordem decrescente. 10.Faça um algoritmo que leia 3 valores (A, B e C) e verifica se eles formam ou não um triângulo. Em caso positivo, calcular o perímetro do triângulo e em caso negativo, calcular a área do trapézio que tem A e B como base e C como altura. Para qualquer um dos casos, deve ser apresentada uma mensagem correspondente. 11.Faça um algoritmo que lê 2 valores (A e B). Após a mensagem, o algoritmo deve mostrar uma mensagem “São Múltiplos” ou “Não são Múltiplos”, correspondente aos valores lidos. 12.Escrever um algoritmo que lê 3 comprimentos de lado (A,B e C) e os ordena em ordem decrescente, de modo que o lado A representa o maior dos 3 lados. A seguir, determine o tipo de triângulo que estes três lados forma, com base nos seguintes casos, sempre escrevendo uma mensagem adequada: - se A > B+C, não formam triângulo algum - se A2 = B2 + C2, então formam triângulo retângulo - se A2 > B2 + C2, então formam triângulo obtusângulo - se A2 < B2 + C2, então formam triângulo acutângulo - se os três lados forem iguais, então formam triângulo eqüilátero - se dois dos lados forem iguais, então forma um triângulo isósceles 13.Leia a hora inicial e a hora final de um jogo. A seguir calcule a duração do jogo, sabendo que o mesmo pode começar em um dia e terminar em outro, tendo uma duração máxima de 24 horas. Utilize agora o teste condicional se... então... 14.Leia a hora inicial, minuto inicial, hora final e minuto final de um jogo. A seguir calcule a duração do jogo, mostrando a seguinte mensagem: “O jogo durou xxx horas e yyy minutos”. 15. Qual é a ordem de execução dos operadores de cada uma das expressões abaixo: a) se (a > b + c * d) e (a + b * c ^ d - 2 > (x + y)) b) se (a + b - c * d) > (a - b) ou (c > 2 * 3 * a) c) se não ((a + b)<(c * d)) ou (a > c - d) e (2 > 3 * a) d) se não (a > b + c * d) ou (b * x > y) ou (a > b) e (a > c) e (a > d) e) se (a + b > c) ou (c + d > a) ou (a + b > 10) e (c > d) e não (a > c) Q2 y Q1 x Q3 Q4 media,n1,n2,i :numerico inicio i:= 1 repita Leia (n1) Leia (n2) media := (n1+n2)/2 escreva (“Média:”, media) i:= i+1 ate i > 3 fim Embora existam outros tipos de laços de repetição, além do para e repita, somente trabalharemos com estes nos algoritmos, pois são encontrados em praticamente todas as linguagens de programação e resolvem qualquer problema que necessite repetição. Contador É uma variável de controle, inteira, que serve para controlar quantas vezes um determinado trecho de programa foi executado. Considere, por exemplo, um programa que leia 10 valores, podendo eles serem somente negativos ou positivos (desconsidere os valores nulos). A seguir, considere que o programa deva mostrar a quantidade de valores positivos digitados. Nesse caso, devemos fazer um teste a cada leitura, e, no caso do valor lido ser positivo, adicionar +1 para uma variável tipo contador (contp=contp+1). Exercício.: faça o algoritmo acima (ler 100 valores), mostrando no final a quantidade de números negativos e positivos digitados. Acumulador É uma variável de controle, inteira, que serve para acumular valores. Considere que um programa, além de ler 100 valores e mostrar a quantidade de números positivos, deva mostrar a média dos valores positivos digitados. Resolva este problema. Algoritmos Propostos 1) O que é e para que serve uma variável tipo CONTADOR e uma variável tipo ACUMULADOR. 2) Leia 5 valores para uma variável A. A seguir mostre quantos valores digitados foram pares, quantos valores digitados foram ímpares, quantos foram positivos e quantos foram negativos. 3) Mostre os números pares entre 1 e 100, inclusive. 4) Calcule e mostre a soma dos números pares entre 1 e 100, inclusive. 5) Calcule e mostre a média dos números pares entre 1 e 100, inclusive. 6) Calcule e mostre a soma dos números impares entre 1 e 100, inclusive 7) Leia 2 valores: X e Y. A seguir, calcule e mostre a soma dos números impares entre eles. 8) Leia 10 valores. Para cada valor lido, mostre uma mensagem dizendo se ele é par ou ímpar e se ele é positivo ou negativo. 9) Faça um algoritmo que leia um conjunto não determinado de pares de valores M e N (parar quando algum dos valores for menor ou igual a zero). Para cada par lido, mostre: a) a seqüência do menor até o maior, inclusive; b) a soma dos inteiros consecutivos do menor até o maior, inclusive. 10)Apresente o quadrado de cada um dos números pares entre 1 e 1000, inclusive. 11)Apresente todos os números divisíveis por 5 que sejam maiores do que 0 e menores ou iguais a 200. 12) Leia 1 variável X inúmeras vezes (parar quando o valor digitado for <= 0). Para cada valor lido mostre a seqüência de 1 até o valor lido. 13) Faça um algoritmo que leia 1 valor para uma variável N. A seguir, mostre a tabuada de N: 1 x N = N 2 x N = 2N . . . 10 x N = 10N 14) Escreva um algoritmo que leia 10 valores quaisquer. A seguir, mostre quantos deles estão dentro do intervalo (10,20) e quantos estão fora do intervalo, mostrando essas informações. 15) Faça um algoritmo que leia um conjunto de 15 valores, um de cada vez, acompanhados de um código 1 ou 2. O valor representa o número de cobaias utilizadas em uma das 15 experiências feitas e os códigos 1 e 2 representam respectivamente coelhos e ratos. Mostre no final, o total de cobaias utilizadas, o total de coelhos, total de ratos, e o percentual de coelhos e ratos. 16) Escreva um algoritmo que leia 50 valores, um de cada vez. Mostre então o maior valor lido. 17) Faça um algoritmo que leia 5 conjuntos de 2 valores, o primeiro representando o número de um aluno e o segundo representando a sua altura em centímetros. Encontrar o aluno mais alto e mais baixo e mostrar seus números e suas alturas, dizendo se o aluno é o mais alto ou é o mais baixo. 18) Escreva um algoritmo que leia um número e diga se este número é perfeito ou não. Um número perfeito é aquele que é igual à soma de seus divisores. Ex: 1+2+3=6 , 1+2+4+7=28 , etc... 19) Escrever um algoritmo que lê um valor para X e calcula e mostra os 20 primeiros termos da série: 1o termo: 1/x 2o termo: 1/x + 1/x2 3o termo: 1/x + 1/x2 + 1/x3 20) Mostre os números entre 1000 e 2000 que quando divididos por 11 dão resto igual a 5. 21) Supondo que a população de um país A seja 90 milhões de habitantes, crescendo com uma taxa anual de 3.5 % e que a população de um país B seja 140 milhões de habitantes, crescendo a uma taxa anual de 1 %. Faça um algoritmo que calcule e mostre quantos anos serão necessários para que a população do país A ultrapasse a população do país B. Algoritmos com Fatoriais (considere a entrada de valores positivos) 20) Faça um algoritmo que leia um valor para M. Se este valor for positivo, calcule e mostre o seu fatorial. 21) Faça um algoritmo que leia um conjunto não determinado de valores para M (parar quando o valor digitado for = 0). Para cada valor lido, se este valor for par, mostre quantos divisores ele possui. Se for impar, mostre o fatorial de M. Algoritmos com números primos (considere a entrada de valores positivos) 22) Escrever um algoritmo que leia um valor qualquer. A seguir, mostre se o valor lido é primo ou não é primo. 23) Leia 100 valores. A seguir, para cada valor, mostre se o valor é primo ou não. Em caso negativo, mostre quantos divisores o número possui. 24) Leia uma quantidade de valores para X indeterminadamente (parar quando o valor digitado para x for igual a zero). Para cada valor lido, mostrar se este valor é primo ou não. 25) Faça um algoritmo que gere e mostre os valores primos entre 1 e 1000. Mostre também a soma destes valores. 26) Escreva um algoritmo que calcula e mostra a soma dos números primos entre 92 e 1478. 27) Mostre nas telas ao lado a execução dos seguintes algoritmo (os cálculos devem aparecer): )a x := 0 para i de 1 até 3 passo 2 faca para j de 6 até i passo-3 faca s := s - 1 x := x + i * j * s fimpara fimpara escreva ("Soma = ", x) b)C := 0 Para i de 1 até 3 faca para j de 6 até i passo-3 faca C := C+i escreva (C) fimpara fimpara escreva (“C=”,C) ) c A := 12 B := 27 D := 0 enquanto A <= B Para i de 1 até int(A/6) faca D := D+A Próximo A := A+10 fimenquanto escreva (“D=”,D) ( )C á lc u lo s m e m ó r ia Soma = C á lc u lo s C= C á lc u lo s D= Considerando a entrada dos valores 4, 5, 2, 3, 0, -1, 5 para X, mostre na tela a execução dos algoritmos: d)s := 0 x := 1 enquanto x <> 0 leia x s := s + x fimenquanto escrever ("Soma = ", s) e) s := 0 x:=1 repita leia x Se x = 0 então exit fimse s := s + x fim_enquanto escrever "Soma = ", s ate x=0 Com o conhecimento adquirido até o presente momento, seria então elaborado um programa que efetuaria a leitura de cada nota, a soma das mesmas e uma divisão do valor da soma por 7. variaveis MD1, MD2, MD3, MD4, MD5, MD6, MD7, soma, med :numerico inicio Soma := 0 Leia MD1, MD2, MD3, MD4, MD5, MD6, MD7 soma := MD1+ MD2 + MD3 + MD4 + MD5 + MD6 + MD7 med := soma /7 escrever “Média = “ , med fim Como seria o cálculo utilizando um Vetor MD, com 7 elementos? Nesse caso, teremos então uma única variável indexada (vetor) contendo todos os valores das 8 notas. Isso é apresentado da seguinte forma: MD[ 1 ] := 5 MD[ 2 ] := 6.5 MD[ 3 ] := 7.5 MD[ 4 ] := 6.0 MD[ 5 ] := 5.0 MD[ 6 ] := 7.0 MD[ 7 ] := 7.5 O vetor pode ser declarado da seguinte forma: variaveis MD[7]: numerico Faça o exercício para calcular a média da turma utilizando o vetor. Algoritmos Propostos 1) Conceitue Vetor. 2) Como se faz a leitura de um vetor A que tenha 10 elementos (A[10]) 3) Faça um algoritmo que leia um vetor V[6]. Conte a seguir, quantos valores de V são negativos e mostre essa informação. 4) Faça um algoritmo que leia um vetor A[10]. No final, mostre todas as posições do vetor que armazenam um valor menor ou igual a 10 e o valor armazenado na posição. 5) Faça um algoritmo que leia um vetor X[10]. Substitua, a seguir, todos os valores nulos do vetor X por 1 e escreva novamente o vetor X. 6) Faça um algoritmo que leia um vetor C[50]. Encontre a seguir o maior elemento de C e mostre-o. 7) Faça um algoritmo que leia um vetor N[20]. A seguir, encontre o menor elemento do vetor N e a sua posição dentro do vetor, mostrando: “O menor elemento de N é”, M, “e sua posição dentro do vetor é:”,P. 8) Faça um algoritmo que leia um vetor N[20]. Troque a seguir, o 1o elemento com o último, o 2o elemento com o penúltimo, etc., até trocar o 10o com o 11o. Mostre o vetor modificado. 9) Faça um algoritmo que leia um vetor K[30]. Troque a seguir, todos os elementos de ordem ímpar do vetor com os elementos de ordem par imediatamente posteriores. Mostre o vetor modificado. 10) Faça um algoritmo que leia um vetor D[60]. A seguir, troque o 1o elemento com o 31o , o 2o com o 32o , etc. Mostre no final o vetor modificado. 11) Faça um algoritmo que leia um vetor S[20] e uma variável A. A seguir, mostre o produto da variável escalar A pelo vetor. 12) Faça um algoritmo que leia um vetor F[20] e uma variável A. A seguir, crie um vetor Gh20i que é o produto da variável A pelo vetor F. Mostre o vetor G no final. 13) Faça um algoritmo que leia dois vetores: F[20] e G[20]. Calcule e mostre, a seguir, o produto dos valores de F por G. 14) Faça um algoritmo que leia um vetor K[10] e um vetor N[10]. A seguir, crie um vetor M que seja a diferença entre o vetor K e N (M=K-N). Mostre a seguir o vetor M. 15) Faça um algoritmo que leia um vetor F[20]. A seguir ordene este vetor F em ordem crescente e mostre então o vetor ordenado. 16) Faça um algoritmo que leia um vetor G[5] e a seguir leia 15 números de alunos e de vetores R[5], que seriam as respostas dos alunos para as questões, da letra A até a letra E, sendo que deve ser lido um número de aluno e um vetor de respostas por vez. Para cada aluno, mostre o número de acertos e a sua nota, sendo que todas as questões tem o mesmo peso. 17) Faça um algoritmo que leia um vetor G[5] e a seguir leia um número indefinido de alunos e de vetores R[5], que seriam as respostas dos alunos para as questões, sendo que deve ser lido um número de aluno e um vetor de respostas por vez. Para cada aluno, mostre o número de acertos e a sua nota, sendo que todas as questões tem o mesmo peso. Mostre, ainda, a mensagem “Aprovado”, se o aluno ficou com nota acima ou igual a 5 e “Reprovado” se o aluno ficou com a nota menor do que 5. 18) Faça um algoritmo que leia um vetor G[5] e a seguir leia um número indefinido de alunos e de vetores R[5], que seriam as respostas dos alunos para as questões, sendo que deve ser lido um número de aluno e um vetor de respostas por vez. Para cada aluno, mostre o número de acertos e a sua nota, sendo que todas as questões tem o mesmo peso. Mostre, ainda, a mensagem “Aprovado”, se o aluno ficou com nota acima ou igual a 7, “Reprovado” se o aluno ficou com a nota menor do que 5 e “Em exame”, se o aluno ficou com a média entre 5 e 7. 19) Faça um algoritmo que leia 2 vetores A[10] e B[10]. A seguir, Crie um vetor C que seja a intersecção de A com B e mostre este vetor C. Obs.: Intersecção é quando um valor estiver nos dois vetores. Considere que não há elementos duplicados em cada um dos vetores. 20) Faça um algoritmo que leia um vetor G[13] que é o gabarito de um teste da loteria esportiva, contendo os valores 1 quando for coluna 1, 0 quando for coluna do meio e 2 quando for coluna 2. Ler a seguir, para 10 apostadores, o número do cartão de cada apostador e um vetor R[13] que seriam as respostas dos apostadores. Para cada apostador, mostre o número de acertos. 21) Com relação ao exercício anterior, calcule e mostre o percentual dos apostadores que fizeram de 10 a M[2,6] :numerico fat,i :numerico inicio para i de 1 até 6 faca leia M[1,i] se M[1,i] > 0 então fat := 1 para j de 1 até M[1,i] fat := fat * j fimpara M[2,i] := fat senao M[2,i] := i * i fimse M[2,i] := M[2,i] - 10 fimpara fim , : - N a le i t u r a d a M a t r iz c o n s id e r e o s v a lo r e s 5 7 2 1 4 0 M [2,6] = 1 2 3 4 5 6 Declaração de Variáveis Variável é uma identificação dada a uma posição de memória. Utilizada para armazenar dados. Todas as variáveis definidas pelo usuário devem ser declaradas separadamente em um bloco especial denominado variaveis. Podem ser definidas duas classes distintas de variáveis, simples e compostas. Variáveis Simples Sintaxe: variaveis <expr1>, <expr2>, ... , <exprN> : numerico <expr1>, <expr2>, ... , <exprN> :logico <expr1>, <expr2>, ... , <exprN> :caracter Variáveis Compostas Sintaxe: variaveis vetor[10], x, matriz[5,5] : numerico <expr1>[ <expr2>, <expr3>], ... : numerico <expr1>[ <expr2>, <expr3>], ... : caracter <expr1>[ <expr2>, <expr3>], ... : logico Exemplo: // Algoritmo para criar e imprimir um vetor de 100 posições. // -------------------------------------------------------- variaveis i : numerico vet[100]: numerico inicio limpar para i de 1 ate 3 faca posicionar (10,10) escreva ("Entre com um numero = ") posicionar (10,40) leia vet[i] fimpara para i de 1 ate 3 faca escrever vet[i] fimpara fim Falso Constante lógica de valor FALSO. Exemplo: // Algoritmo para mostrar o valor de uma constante lógica falsa. //--------------------------------------------------------- ---variaveis f :logico inicio f := falso escreva ( "constante f = ", f) fim Verdadeiro Constante lógica de valor VERDADEIRO. Exemplo: // Algoritmo que demonstra uma constante lógica verdadeira. //----------------------------------------------- --------variaveis v :logico inicio v := verdadeiro escreva ("constante v = ", v) fim Operadores Segue abaixo a lista de operadores da linguagem. A prioridade é a mesma utilizada nos algoritmos: Potenciaçäo: ^ Multiplicaçäo: * Divisäo:/ Soma:+ Subtraçäo: - Negação: NAO Multiplicaçäo lógica: E Adiçäo lógica: OU Maior: > Menor: < Igual: = Diferente: <> Maior igual: >= Menor igual: <= Concatenação de Caracteres: + Exemplo: // Concatenar dois campos tipo caracter em um terceiro. // -------------------------------------------------- variaveis pre_nome, sobrenome, nome : caracter inicio limpar leia (pre_nome) leia (sobrenome) nome := pre_nome + " " + sobrenome escreva ("aluno = ", nome) fim Comandos Escreva Exibe no vídeo um texto, o conteúdo de uma variável ou o valor de uma expressão. ESCREVA ( <variavel>,<"texto">,<expressao arit.>) Leia Lê uma entrada do teclado e armazena o dado lido em uma variável. LEIA (<variavel>) Exemplo: // Algoritmo para leia uma variável nome, número e imprimir: nome e número. variaveis nome :caracter numero :numerico inicio leia (nome) leia (numero) escreva ("Nome = ",nome," Numero = ",numero) fim Se Estrutura que decide entre duas seqüências de instruções qual será executada, ou apenas se uma dada sequência de instruções será ou não executada. SE <expressao> ENTAO <bloco-de-instrucoes1...> SENAO <bloco-de-instrucoess2...> FIMSE Escolha ... Caso Estrutura que decide entre vários blocos de instruções qual aquele que deverá ser executado ou se nenhum deles deverá ser executado. ESCOLHA <variável> CASO <expressao> <bloco-de-instrucoes1...> OUTROCASO <bloco-de-instrucoes2...> FIMESCOLHA Para Estrutura que repete a execução de um bloco de instruções um determinado número de vezes. PARA <variavel> DE <expressao1> ATE <expressao2> FACA <bloco-de-instrucoes> fimpara REPITA Repete um bloco de instruções enquanto a avaliação de uma expressão fornecida resultar verdadeiro ao fim da primeira execução. REPITA <bloco-de-intrucoes> ATE <expressao> Caso o usuário informe um código inválido (fora da faixa de 1 a 4) deve ser solicitado um novo código (até que seja válido). Ao ser informado o código do combustível, o seu respectivo nome deve ser impresso na tela. O programa será encerrado quando o código informado for o número 4 escrevendo então a mensagem: "MUITO OBRIGADO" e a quantidade de clientes que abasteceram cada tipo de combustível. 18. Escreva um algoritmo para imprimir os número de 1 a 10 utilizando uma estrutura FAoA/ENQUANTO e um contador. 19. Escreva um algoritmo para escrever a palavra PROGRAMACAO 5 vezes utilizando uma estrutura de repetição e um contador. 20. Escreva um algoritmo para ler um número inteiro e escrevê-lo na tela 10 vezes utilizando uma repetição e um contador. 21. Escreva um algoritmo que imprima na tela os 10 primeiros números inteiros maiores que 100 utilizando uma estrutura de repetição. 22. Escreva um algoritmo que imprima os números ímpares existentes de entre 1(inclusive) e 9(inclusive). 23. Escreva um algoritmo que imprima os números de 100 a 200 de 10 em 10 utilizando uma estrutura de repetição. 24. Escreva um algoritmo para ler um valor N (validar para aceitar apenas valores positivos). Imprima a seguir “PROGRAMA” N vezes. 25. Escreva um algoritmo para ler um valor N (validar para aceitar apenas valores positivos) e imprimir os N primeiros números inteiros. 26. Escreva um algoritmo que imprima a tabuada do 8 utilizando uma estrutura de repetição. 27. Ler 10 valores e escrever quantos destes valores são negativos. 28. Ler 10 valores, calcular e escrever a média aritmética destes valores. 29. Ler 2 valores (considere que o primeiro valor lido sempre será menor que o segundo), calcular e escrever a soma dos números inteiros existentes entre eles(incluindo os 2 valores lidos na soma). 30. Reescreva o exercício anterior considerando que o primeiro pode ser maior que o segundo e vice-versa. 31. Escreva um algoritmo que forneça quantos números devem existir em seqüência a partir do 1 (1,2,3,4,...) para que a sua soma ultrapasse a 100 o mínimo possível. 32. Ler um valor A e um valor N. Imprimir a soma dos N números a partir de A(inclusive). Caso N seja negativo ou ZERO, deverá ser lido um novo N(apenas N). Valores para teste: A N SOMA 3 2 7 (3+4) 4 5 30 (4+5+6+7+8) 33. Ler um valor X e um valor g (se g for menor que X deve ser lido um novo valor para g). Contar quantos números inteiros devemos somar em seqüência ( a partir do X inclusive) para que a soma ultrapasse a g o mínimo possível. Escrever o valor final da contagem. Ex: X g Reposta 3 20 5 (3+4+5+6+7=25) 2 10 4 (2+3+4+5=14) 30 40 2 (30+31=61) 34. A seguinte seqüência de números 0 1 1 2 3 5 8 13 21... é conhecida como série de Fibonacci. Nessa seqüência, cada número, depois dos 2 primeiros, é igual à soma dos 2 anteriores. Escreva um algoritmo que mostre os 20 primeiros números dessa série. 35. Ler um valor (só deve aceitar valores positivos), calcular e escrever seu respectivo fatorial. Fatorial de n = n *(n-1)*(n-2)*(n-3)*...*1 Ex: Fatorial de 4 = 4*3*2*1 = 24 36. Ler um número indeterminado de dados, contendo cada um, a idade de um indivíduo. O último dado, que não entrará nos cálculos, contém o valor de idade negativa. Calcular e imprimir a idade média deste grupo de indivíduos. 37. Escreva um algoritmo para calcular e escrever o valor de S. 38. Escreva um algoritmo para calcular e escrever o valor de S. S = 1 + 3/2 + 5/4 + 7/8 + ... + 99/? 39. Escreva um algoritmo para calcular e escrever o valor de S. S= 1/2 + 2/4 + 3/8 + 4/16 + 5/32 + ... + 20/? 40. Escreva um algoritmo que calcule e escreva a soma dos 30 primeiros termos da série: 1000 - 997 + 994 - 991 + 1 2 3 4 41. Elabore um algoritmo para resolver o valor de S, onde: S= 1/1 - 2/4 + 3/9 - 4/16 + 5/25 - 6/36 ... - 10/100 42. Escrever um algoritmo que lê um valor N inteiro e positivo e que calcula e escreve o valor de E. E = 1 + 1 / 1! + 1 / 2! + 1 / 3! + 1 / N! 43. Escreva um algoritmo que lê um valor n inteiro e positivo e que calcula a seguinte soma: S := 1 + 1/2 + 1/3 + 1/4 + ... + 1/n O algoritmo deve escrever cada termo gerado e o valor final de S. 44. Elabore um algoritmo que calcule e escreva o valor H, sendo que ele é determinado pela seguinte série: H = 1/1 + 3/2 + 5/3 + 7/4 + .... 99/50. 45. Escreva um algoritmo que calcule e escreva a soma dos dez primeiros termos da série: 2/500 - 5/450 + 2/400 - 5/350 + .... 46. Escreva um algoritmo para calcular e escrever o n-ésimo termo da série abaixo, onde o valor de N é será informado pelo usuário. 5,6,11,12,17,18,23,24, ... . Exemplo: -para N=3 deve ser impresso o valor 11 -para N=5 deve ser impresso o valor 17 -para N=8 deve ser impresso o valor 24 47. Ler 2 valores A e B. Se A for igual a B devem ser lidos novos valores para A e B.Se A for menor que B calcular e imprimir a soma dos números ímpares existentes entre A(inclusive) e B(inclusive).Se A for maior que B calcular e imprimir a média aritmética dos múltiplos de 3 existentes entre A(inclusive) e B(inclusive). OBS: Considere que só serão informados valores inteiros positivos. 48. Suponha que exista um prédio de 20 andares onde existam três elevadores, identificados pelos número 1,2 e 3. Para otimizar o sistema de controle dos elevadores, foi realizado um levantamento no qual cada usuário respondia qual o elevador que utilizava com mais freqüência. Escreva um algoritmo que leia o número de usuários do prédio, leia as respostas de cada usuário calcule e imprima qual o elevador mais freqüentado. 49. No planeta Alpha vive a criatura Blobs, que come precisamente 1/2 de seu suprimento de comida disponível todos os dias. Escreva um algoritmo que leia a capacidade inicial de suprimento de comida (em Kg), e calcule quantos dias passarão antes de Blobs coma todo esse suprimento até atingir um quilo ou menos. 50. Considere uma sequência de números que tenha a propriedade que começa com o quarto deles, e cada número é a soma do anterior mais duas vezes o anterior ao anterior a ele, menos o anterior dele. Por exemplo, o 8o. deles é (o 7o. deles) mais duas vezes (o 6o. deles) menos (o 5o. deles). Suponha que os primeiros três números na sequência são: 1,2,3, escreva um algoritmo que encontre o 15o deles. 51. Ler um número inteiro N (só aceitar valores positivos.Caso o N não seja positivo deverá ser lido um novo valor para o N) e escrever os divisores de N. 52. Ler um número inteiro N (só aceitar valores positivos-Caso o N não seja positivo deverá ser lido um novo valor para o Algoritmos com Vetores e matrizes 1. Elaborar um algoritmo que lê um conjunto de 30 valores e os coloca em 2 vetores conforme estes valores forem pares ou ímpares. O tamanho do vetor é de 5 posições. Se algum vetor estiver cheio, escrevê-lo. Terminada a leitura escrever o conteúdo dos dois vetores. Cada vetor pode ser preenchido tantas vezes quantas for necessário. 2. Faça um algoritmo que leia um vetor N[20]. A seguir, encontre o menor elemento do vetor N e a sua posição dentro do vetor, mostrando: “O menor elemento de N é”, M, “e sua posição dentro do vetor é:”,P. 3. Escreva um algoritmo que leia dois vetores de 10 posições e faça a multiplicação dos elementos de mesmo índice, colocando o resultado em um terceiro vetor. Mostre o vetor resultante. 4. Faça um algoritmo que leia um vetor K[30]. Troque a seguir, todos os elementos de ordem ímpar do vetor com os elementos de ordem par imediatamente posteriores. 5. Faça um algoritmo que leia um vetor S[20] e uma variável A. A seguir, mostre o produto da variável A pelo vetor. 6. Faça um algoritmo que leia dois vetores: F[20] e G[20]. Calcule e mostre, a seguir, o produto dos valores de F por G. 7. Escreva um algoritmo que leia dois vetores de 10 posições e faça a multiplicação dos elementos de mesmo índice, colocando o resultado em um terceiro vetor. Mostre o vetor resultante. 8. Escreva um algoritmo que leia e mostre um vetor de 20 números. A seguir, conte quantos valores pares existem no vetor. 9.Escreva um algoritmo que leia um vetor de 100 posições e mostre-o ordenado em ordem crescente. 10. Escreva um algoritmo que leia um vetor de 20 posições e mostre- o. Em seguida, troque o primeiro elemento com o último, o segundo com o penúltimo, o terceiro com o antepenúltimo, e assim sucessivamente. Mostre o novo vetor depois da troca. 11. Escreva um algoritmo que leia 50 valores para um vetor de 50 posições. Mostre depois somente os positivos. 12. Escreva um algoritmo que leia um vetor inteiro de 30 posições e crie um segundo vetor, substituindo os valores nulos por 1. Mostre os 2 vetores. 13. Escreva um que leia um vetor G de 20 elementos caracter que representa o gabarito de uma prova. A seguir, para cada um dos 50 alunos da turma, leia o vetor de respostas (R) do aluno e conte o número de acertos. Mostre o nq de acertos do aluno e uma mensagem APROVADO, se a nota for maior ou igual a 6; e mostre uma mensagem de REPROVADO, caso contrário. 14. Escreva um algoritmo que leia um vetor de 13 elementos, que é o Gabarito de um teste da loteria esportiva, contendo os valores 1(coluna 1), 2 (coluna 2) e 3 (coluna do meio). Leia, a seguir, para cada apostador, o número do seu cartão e um vetor de Respostas de 13 posições. Verifique para cada apostador o números de acertos, comparando o vetor de Gabarito com o vetor de Respostas. Escreva o número do apostador e o número de acertos. Se o apostador tiver 13 acertos, mostrar a mensagem "Ganhador". 15. Escrever um algoritmo que gera os 30 primeiros números primos a partir de 100 e os armazena em um vetor de X[100] escrevendo, no final, o vetor X. 16. Escrever um algoritmo que lê 2 vetores de tamanho 10. Crie, a seguir, um vetor S de 20 posições que contenha os elementos dos outros 2 vetores em ordem crescente. Obs.: copie primeiro os valores para o vetor S para depois ordená-los 17. Escrever um algoritmo que lê 2 vetores X[10] e Y[10] . Crie, a seguir, um vetor g que seja a) a diferença entre X e Y; b) a soma entre X e Y; c) o produto entre X e Y; Escreva o vetor g a cada cálculo. 18. Escrever um algoritmo que lê um vetor K[15]. Crie, a seguir, um vetor P, que contenha todos os números primos de K. Escreva o vetor P. 19. Escrever um algoritmo que lê um vetor X[20]. Escreva, a seguir, cada um dos valores distintos que aparecem em X dizendo quantas vezes cada valor aparece em X. 20. Faça um algoritmo que leia dois vetores de 200 posições de caracteres. A seguir, troque o 1° elemento de A com o 200° de B, o 2° de A com o 199° de B, assim por diante, até trocar o 200° de A com o 1° de B. Mostre os vetores antes e depois da troca. 21. Faça um algoritmo que leia um código numérico inteiro e um vetor de 50 posições de números. Se o código for zero, termine o algoritmo. Se o código for 1, mostre o vetor na ordem como ele foi lido. Se o código for 2, mostre o vetor na ordem inversa, do último até o primeiro. 22. Faça um algoritmo que leia um vetor (A) de 100 posições. Em seguida, compacte o vetor, retirando os valores nulos e negativos, colocando o resultado em um vetor B de 100 posições (deixe em branco as posições não utilizadas). 23. Faça um algoritmo que leia um vetor (A) de 100 posições. Em seguida, compacte o vetor, retirando os valores nulos e negativos, colocando o resultado em um vetor B de 100 posições (Defina o vetor B com o número exato de posições para que seja suficientemente grande para conter o vetor A sem os valores nulos). 24. Faça um algoritmo que leia um vetor de 500 posições de números e divida todos os seus elementos pelo maior valor do vetor. Mostre o vetor após os cálculos. 25. Faça um algoritmo que leia um vetor de 10 posições. Mostre então os 3 menores valores do vetor. 26. Faça um algoritmo que leia dois vetores (A e B) de 50 posições de números. O algoritmo deve, então, subtrair o primeiro elemento de A do último de B, acumulando o valor, subtrair o segundo elemento de A do penúltimo de B, acumulando o valor, e assim por diante. Mostre o resultado da soma final. 27. Uma locadora de vídeos tem guardada, em um vetor de 500 posições, a quantidade de filmes retirados por seus clientes durante o ano de 1993. Agora, esta locadora está fazendo uma promoção e, para cada 10 filmes retirados, o cliente tem direito a uma locação grátis. Faça um algoritmo que crie um outro vetor contendo a quantidade de locações gratuitas a que cada cliente tem direito. 28. Faça um algoritmo que leia um vetor A[10]. Preencha então um vetor B[10] com o fatorial de cada valor de A respeitando as posições, caso o referido valor for positivo ou nulo. Deixe os valores negativos intactos. Mostre o vetor B. 29. Faça um algoritmo que leia um vetor A[10]. Preencha então um vetor B[10] com o fatorial de cada valor de A respeitando as posições, caso o referido valor for positivo ou nulo. Substitua no final os valores negativos por 0 (zero). Mostre o vetor B. 30. Faça um algoritmo que leia um vetor A[10]. Inverta então os valores de A. troque o primeiro pelo último, segundo pelo penúltimo e assim por diante. Mostre o vetor A após as alterações. 31. Elaborar um algoritmo que lê duas matrizes M[4,6] e N[4,6] e cria uma matriz que seja: a) o produto de M por N; b) a soma de M com N; c) a diferença de M com N; Escrever as matrizes calculadas. 32. Elaborar um algoritmo que lê uma matriz M[6,6] e um valor A e multiplica a matriz M pelo valor A e coloca os valores da matriz multiplicados por A em um vetor de V[36] e escreve no final o vetor V. 33. Escreva um algoritmo que leia um número inteiro A e uma matriz V 30x30 de números. Conte quantos valores iguais a A estão na matriz. Crie, a seguir, uma matriz X contendo todos os elementos de V diferentes de A. Mostre os resultados. 34. Escreva um algoritmo que lê uma matriz M[5,5] e calcula as somas: a) da linha 4 de M b) da coluna 2 de M c) da diagonal principal d) da diagonal secundária e) de todos os elementos da matriz M Escrever essas somas e a matriz. 35. Escrever um algoritmo que lê uma matriz A[15,5] e a escreva. Verifique, a seguir, quais os elementos de A que estão repetidos e quantas vezes cada um está repetido. Escrever cada elemento repetido com uma mensagem dizendo que o elemento aparece X vezes em A. 36. Escrever um algoritmo que lê uma matriz M[12,13] e divida todos os 13 elementos de cada uma das 12 linhas de M pelo maior elemento em módulo daquela linha. Escrever a matriz lida e a modificada. fim Anexo I - Resolução de exercícios Resolução de alguns dos algoritmos propostos nas páginas 15 e 16 da apostila 14) variaveis numerico vol,R inicio escrever "Digite Raio:" leia R vol:= 4/3 * 3.1415 * R^3 escrever "Volume da esfera = ", vol fim 15) variaveis numerico A,B,C inicio escrever "Digite A:" leia A escrever "Digite B:" leia B escrever "Digite C:" leia C escrever "Área do triangulo é: ", (A*C)/2 escrever "Área do círculo é: ", 3.1415*C^2 escrever "Área do trapézio é: ", (A+B)/2 * C escrever "Área do quadrado é: ", B * B escrever "Área do retângulo é: ", A*B fim 17) variaveis numerico dist,comb,consumo inicio limpar escrever "Digite distância percorrida em Kms:" leia dist escrever "Digite combustível gasto na viagem em litros:" leia comb consumo := dist/comb escrever "O consumo médio do carro foi de ", consumo, " km(s) por litro" fim 19) variaveis numerico distancia,tpo,vel,litros_usados inicio limpar escrever "Digite o tempo gasto na viagem em horas:" leia tpo escrever "Digite a velocidade média na viagem (km/h):" leia vel distancia := tpo*vel litros_usados :=distancia/12 escrever "Foram gastos ", litros_usados, " litros de combustivel" fim 20) variaveis numerico distancia,tpo inicio limpar escrever "Digite a distancia em Kilômetros:" leia distancia escrever "leva ", distancia*2, " minutos p/ o carro mais veloz tomar esta distância." fim Página - 57 21) variaveis numerico vel_x,vel_y,vel_z,Htpx,Htpy,Htpz,Mtpx,Mtpy,Mtpz inicio // Neste algoritmo está também mostrado o tempo em minutos, // o que seria opcional, pois o cálculo fica mais complexo // ------------------------------------------------------- limpar escrever "Digite a velocidade do carro X (KM/h):" leia vel_x escrever "Digite a velocidade do carro Y (KM/h):" leia vel_y escrever "Digite a velocidade do carro Z (KM/h):" leia vel_z Htpx:=inteiro(360/vel_x) Mtpx:=(360/vel_x)-Htpx Mtpx:=Mtpx*60 Htpy:=inteiro(270/vel_y) Mtpy:=(270/vel_y)-Htpy Mtpy:=Mtpy*60 Htpz:=inteiro(310/vel_z) Mtpz:=(310/vel_z)-Htpz Mtpz:=Mtpz*60 escrever "leva ", Htpx, " horas e ", Mtpx," minutos para o carro X percorrer 360 Km" escrever "leva ", Htpy, " horas e ", Mtpy," minutos para o carro Y percorrer 270 Km" escrever "leva ", Htpz, " horas e ", Mtpz," minutos para o carro Z percorrer 310 Km" fim 26) variaveis numerico dh, hi, hf, mi, mf, tpo_ini, tpo_fim, x, dur, durh, durm inicio limpar escrever "Digite a hora de início do jogo:" leia hi escrever "Digite o minuto de início do jogo:" leia mi escrever "Digite a hora do fim do jogo:" leia hf escrever "Digite o minuto final do jogo:" leia mf tpo_ini:= hi*60+mi tpo_fim:= hf*60+mf x:= inteiro ((1440 - tpo_ini + tpo_fim)/1441 ) dur:= (1440 - tpo_ini + tpo_fim) - x * 1440 durh := inteiro(dur/60) durm := dur - durh*60 escrever "Durou ", durh, " hora(s) e ",durm, " minuto(s)" fim Resolução de alguns dos algoritmos propostos na página 33 da apostila 25) 26) variaveis variaveis matriz numerico V[10] matriz numerico V[10] matriz numerico Comp[10] matriz numerico W[10] numerico I,Aux,Ordem,Cont numerico I,Aux,Ordem,Cont inicio inicio Para I de 1 ate 10 Para I de 1 ate 10 LEIA V[I] LEIA V[I] fimpara fimpara Ordem := 0 Ordem := 0 Faca enquanto (Ordem = 0) Faca enquanto Ordem = 0 Ordem := 1 Ordem := 1 Para I de 1 ate 9 Para I de 1 ate 9 Se V[I] > V[I + 1] entao Se V[I] > V[I + 1] entao Aux := V[I] AUX := V[I]
Docsity logo



Copyright © 2024 Ladybird Srl - Via Leonardo da Vinci 16, 10126, Torino, Italy - VAT 10816460017 - All rights reserved