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

Algoritmos: Lógica para Desenvolvimento de Programação, Notas de estudo de Algoritmos

Uma apostila sobre Algoritmo

Tipologia: Notas de estudo

2010

Compartilhado em 30/05/2010

carolina-dantas-6
carolina-dantas-6 🇧🇷

5

(1)

5 documentos

1 / 39

Documentos relacionados


Pré-visualização parcial do texto

Baixe Algoritmos: Lógica para Desenvolvimento de Programação e outras Notas de estudo em PDF para Algoritmos, somente na Docsity! 1 2 Sobre o Autor Atualmente trabalha como Webdesign / Webmaster na Embrapa Cerrados, sua principal tarefa está no planejamaneto e desenvolvimento de Sites. U�liza as linguagens HTML, JavaScript e VbScript e Sistemas de Banco de Dados (ASP) para a Internet. Em sua experiência profissional também encontramos serviços autônomos na área de desenvolvimento na área comercial, as ferramentas por ele u�lizadas foram Clipper, Visual Basic e Delphi. 5 Abordagem Contextual Muitas pessoas gostam de falar ou julgar que possuem e sabem usar o raciocínio lógico, porém, quando ques�onadas direta ou indiretamente, perdem esta linha de raciocínio, pois este depende de inúmeros fatores para completá-lo, tais como: calma, conhecimento, vivência, versa�bilidade, experiência, cria�vidade, ponderação, responsabilidade, entre outros. Bem sem mais delongas podemos dizer que lógica é a ciência que estudas as leis e critéios de validade que regem o pensamento e a demonstração, ou seja, ciência dos princípios formais do raciocínio. Usar a lógica é um fator a ser considerado por todos, principalmente pelos profissionais de informá�ca (programadores, analistas de sistemas e suporte), pois seu dia- a-dia dentro das organizações é solucionar problemas e a�ngir os obje�vos apresentados por seus usuários com eficiência e eficácia, u�lizando recursos computacionais e/ou automa�zados macatronicamente. Saber lidar com problemas de ordem administra�va, de controle, de planejamento e de estratégica requer atenção e boa performance de conhecimento de nosso interesse é mostrar como desenvolver e aperfeiçoar melhor esta técnica, lembrando que para isto, você deverá ser persistente e pra�cá-la constantemente, chegando à exaustão sempre que julgar necessário. Princípios de Resoluções de Problemas Primeiramente, devemos entender e compreender a palavra “problema”. Podemos dizer que problema é um proposta duvidosa, que pode Ter inúmeras soluções, ou questão não solvida e que é o objeto de discussão, segundo a definição encontrada no Dicionário Aurélio. Preferimos dizer que problema é uma questão que foge a uma determinada regra, ou melhor, é o desvio de um percurso, o qual impede de a�ngir com sucesso um determinado obje�vo com eficiência e eficácia. Uma das soluções u�lizadas para a resolução de problemas tem sido a u�lização dos diagramas, no decorrer do curso será bastante enfa�zado em sala de aula o uso de tais ferramentas com o intuito de auxiliar os aprendizados tanto na resolução de problemas como no conhecimento das técnicas de programação. ALGORITMO Um Algoritmo é uma seqüência de instruções ordenadas de forma lógica para a resolução de uma determinada tarefa ou problema. PROGRAMAÇÃO ESTRUTURADA Basicamente, a Programação Estruturada consiste numa metodologia de projeto de programas visando: • facilitar a escrita dos programas; • facilitar a leitura (o entendimento) dos programas; • permi�r a verificação a priori dos programas; • facilitar a manutenção e modificação dos programas. O maior problema em grandes sistemas de so�ware reside na enorme complexidade desses sistemas, cuja a apreensão vai geralmente muito além da capacidade intelectual de um ser humano. Entenda-se aqui por complexidade de um sistema uma medida do número de seus componentes e do grau de interação entre eles. Para Dijkstra, o indiscu�vel iniciador da programação estruturada, “a arte de programar consiste na arte de organizar e dominar a complexidade”. 6 A idéia da Programação Estruturada, que vai ao encontro da mencionada tarefa do programador, é reduzir a complexidade, em três níveis: 1. desenvolvimento do programa em diferentes fases por refinamento sucessivo (desenvolvimento Top-Down); 2. decomposição do programa total em módulos funcionais, organizados de preferência num sistema hierárquico; 3. usando dentro de cada módulo só um número muito limitado de estruturas básicas de fluxo de controle. O curso tem por obje�vo apresentar aos alunos os conceitos e desenvolvimento da programação estruturada, u�lizando duas ferramentas muito u�lizadas em cursos acadêmicos, o Portugol e o Pascal. PROGRAMA Um programa é um Algoritmo escrito em uma linguagem computacional. Mais o que é um Algoritmo? Algoritmo é um processo de cálculo matemá�co ou de resolução de um grupo de problemas semelhantes, em que se es�pulam, com generalidade e sem restrições. Podemos dizer também, que são regras formais para obtenção de um resultado ou da solução de um problema, englobando fórmulas de expressões aritmé�cas. LINGUAGENS DE PROGRAMAÇÃO São So�wares que permitem o desenvolvimento de programas. Possuem um poder de criação ilimitado, desde jogos, editores de texto, sistemas empresariais até sistemas operacionais. Existem várias linguagens de programação, cada uma com suas caracterís�cas próprias. Exemplos: • Pascal • Clipper • C • Visual Basic • Delphi e etc. 7 * Todo Algoritmo ou programa deve possuir variável! VARIÁVEIS DE ENTRADA E SAÍDA Variáveis de Entrada armazenam informações fornecidas por um meio externo, normalmente usuários ou discos. Variáveis de Saída armazenam dados processados como resultados. Exemplo: De acordo com a figura acima A e B são Variáveis de Entrada e C é uma Variável de Saída. CONSTANTES Constantes são endereços de memória des�nados a armazenar informações fixas, inalteráveis durante a execução do programa. Exemplo: PI = 3.1416 IDENTIFICADORES São os nomes dados a variáveis, constantes, Tipo de Dados, Registros e programas. Regras Para construção de Iden�ficadores: • Não podem ter nomes de palavras reservadas (comandos da linguagem); • Devem possuir como 1º caractere uma letra ou Underscore ( _ ); • Ter como demais caracteres letras, números ou Underscore; • Ter no máximo 127 caracteres; • Não possuir espaços em branco; • A escolha de letras maiúsculas ou minúsculas é indiferente. Exemplos: 10 NOME TELEFO NE IDADE_FILHO NOTA1 SALARI O PI UMNOMEMUITOCOMPRIDOEDIFICILDELER UM_NOME_MUITO_COMPRIDO_E_FACIL_DE_LER TIPOS DE DADOS Todas as Variáveis devem assumir um determinado �po de informação. O �po de dado pode ser: • Primi�vo F 0 E 8 Pré-definido pela linguagem; • Sub-Faixa F 0 E 8 É uma parte de um �po já existente; • Escalar F 0 E 8 Definidos pelo programador. TIPOS PRIMITIVOS DE DADOS INTEIRO ADMITE SOMENTE NÚMEROS INTEIROS. GERALMENTE É UTILIZADO PARA REPRESENTAR UMA CONTAGEM (QUANTIDADE). REAL ADMITE NÚMEROS REAIS (COM OU SEM CASAS DECIMAIS). GERALMENTE É UTILIZADO PARA REPRESENTAR UMA MEDIÇÃO. CARACTER E ADMITE CARACTERES ALFANUMÉRICOS. OS NÚMEROS QUANDO DECLARADOS COMO CARACTERES TORNAM SE REPRESENTATIVOS E PERDEM A ATRIBUIÇÃO DE VALOR. LÓGICO ADMITE SOMENTE VALORES LÓGICOS(VERDADEIRO/FALSO). COMANDOS DE I/O (INPUT/OUTPUT) LEIA F 0 E 8 Comando de entrada que permite a leitura de Variáveis de Entrada. ESCREVERA F 0 E 8 Comando de saída que exibe uma informação na tela do monitor. IMPRIMA F 0 E 8 Comando de saída que envia uma informação para a impressora. SINAL DE ATRIBUIÇÃO Uma Variável nunca é eternamente igual a um valor, seu conteúdo pode ser alterado a qualquer momento. Portanto para atribuir valores a variáveis devemos usar o sinal de “:=”. Exemplos: A := 2; B := 3; C := A + B; SINAL DE IGUALDADE 11 As constantes são eternamente iguais a determinados valores, portanto usamos o sinal de “=”. Exemplos: PI = 3.1416; Empresa = ‘Colégio de Informá�ca L.T.D.A.’ V = Verdadeiro CORPO GERAL DE UM PROGRAMA PROGRAMA <<iden�ficador>>; CONST <<iden�ficador>> = <<dado>> VAR <<iden�ficador>> : <<�po>>; ÍNICIO { COMANDOS DE ENTRADA,PROCESSAMENTO E SAÍDA <<comando1>>; <<comandoN>> } FIM. 12 Exercícios de Aprendizagem 1) Construir um programa que efetue o cálculo de um salário líquido de um professor. Para fazer este programa você deverá possuir alguns dados, tais como: valor da hora aula, número de aulas dadas no mês e percentual de desconto do INSS. Em primeiro lugar, deve- se estabelecer qual será o seu salário bruto para efetuar o desconto e Ter o valor do salário líquido. 2) Efetuar o cálculo da quan�dade de litros de combus�vel gastos em uma viagem, u�lizando- se um automóvel que faz 12 Km por litro. Para obeter o cálculo, o usuário deverá fornecer o tempo gasto na viagem e a velocidade média durante a mesma. Desta forma, será possível obter a distância percorrida com a fórmula DISTÂNCIA <= TEMPO * VELOCIDADE. Tendo o valor da distância, basta calcular a quan�dade de litros de combus�vel u�lizada na viagem com a fórmula: LITROS_USADOS <= DISTÂNCIA / 12. O programa deverá apresentar os valores da velocidade média, tempo gasto na viagem, a distância percorrida e a quan�dade de litros usados na viagem. 3) Ler dois números inteiros e efetuar as operações de adição, subtração, mul�plicação e divisão de A por B apresentando ao final os quadro resultados ob�dos. Estrutura de Controloe – A tomada de Decisões Executa uma seqüência de comandos de acordo com o resultado de um teste. A estrutura de decisão pode ser Simples ou Composta, baseada em um resultado lógico. Simples: SE <<CONDIÇÃO>> ENTÃO <<COMANDO1>> Composta 1: SE <<CONDIÇÃO>> ENTÃO <<COMANDO1>> SENÃO <<COMANDO1>> Composta 2: SE <<CONDIÇÃO>> ENTÃO INICIO <<COMANDO1>>; <<COMANDON>> FIM; SENÃO INICIO <<COMANDO1>>; <<COMANDON>> FIM; 15 OPERADORES LÓGICOS Atuam sobre expressões retornando sempre valores lógicos como Falso ou Verdadeiro. E RETORNA VERDADEIRO SE AMBAS AS PARTES FOREM VERDADEIRAS. OU BASTA QUE UMA PARTE SEJA VERDADEIRA PARA RETORNAR VERDADEIRO. NÃO INVERTE O ESTADO, DE VERDADEIRO PASSA PARA FALSO E VICE-VERSA. TABELA VERDADE A B A E B A OU B NÃO (A) V V V V F V F F V F F V F V V F F F F V EXPRESSÕES LÓGICAS As expressões compostas de relações sempre retornam um valor lógico. Exemplos: 2+5>4 F 0 E 8 Verdadeiro 3<>3 F 0 E 8 Falso De acordo com a necessidade, as expressões podem ser unidas pelos operadores lógicos. Símbolo Significado = Igual a <> Diferente de > Maior que < Menor que >= Maior ou igual a <= Menor ou igual a Exemplo 01 Segue um Algoritmo que lê 2 números e escreve o maior. 16 PROGRAMA ACHA_MAIOR; VAR A, B : INTEIRO; INICIO LER (A, B); SE A>B ENTÃO ESCREVER (A) SENÃO ESCREVER (B) FIM. Exemplo 02 Segue um Algoritmo que lê o nome e as 4 notas bimestrais de um aluno. Em seguida o Algoritmo calcula e escreve a média ob�da pelo aluno escrevendo também se o aluno foi aprovado ou reprovado. Média para aprovação = 6 PROGRAMA MEDIA_FINAL; VAR NOTA1, NOTA2, NOTA3, NOTA4, MEDIA: REAL; NOME : CARACTERE [35] INICIO LER (NOME); LER (NOTA1, NOTA2, NOTA3, NOTA4); MEDIA := (NOTA1 + NOTA2 + NOTA3 + NOTA4) / 4; SE MEDIA>=6 ENTÃO ESCREVER (‘APROVADO’) SENÃO ESCREVER (‘REPROVADO’) ESCREVER (NOME, MEDIA) FIM. NINHOS DE SE Usados para tomadas de decisões para mais de 2 opções. Forma Geral: SE <<CONDIÇÃO>> ENTÃO <<COMANDO1>> SENÃO SE <<CONDIÇÃO>> ENTÃO <<COMANDO1>> SENÃO <<COMANDO1>> 17 ESCREVER (B); OUTROS CASOS ESCREVER (C); FIM DE CASO FIM. Exercícios de Aprendizagem 1) Ler três valores para os lados de um triângulo, considerando lados como: A, B e C. Verificar se os lados fornecidos formam realmente um triângulo, e ser for esta condição verdadeira, deverá ser indicado qual �po de triângulo for formado: isósceles, escaleno ou equilátero. 2) Fazer a leitura de 3 valores para extrair uma equação do 2º grau. Deverá ser verificado se existem raízes reais, uma ou duas raízes conforme necessário. 3) Ler quatro valores referentes a quatro notas escolares e um aluno e imprimr uma mensagem dizendo que o alunos foi aprovado, se o valor da média escolar for maior ou igual a 5. Se o aluno não foi aprovado, indicar uma mensagem informando esta condição. Apresentar junto das mensagem o valor da média do aluno para qualquer condição. 4) Ler quatro valores referentes a quatro notas escolares de um aluno e imprimir uma mensagem dizendo que o aluno foi aprovado, se o valor da média escolar for maior ou igual a 7. Se o valor da média for menor que 7, solicitar a nota de exame, somar com o valor da média e obter nova média. Se a nova média for maior a 5, apresentar uma mensagem dizendo que o aluno foi aprovado em exame, se o aluno não foi aprovado, indicar uma mensagem informando esta condição. Apresentar com as mensagens o valor da média do aluno, para qualquer condição. ESTRUTRA DE CONTROLE – LAÇOS OU MALHAS DE REPETIÇÃO Existem ocasiões onde se é necessário efetuar a repe�ção de um trecho de programa um determinado número de vezes. Neste caso, poderá ser criado um looping que efetue o processamento de um determinado trecho, tantas vezes quantas forem necessárias. Os loopings também são chamados de: laços de repe�ção ou malhas de repe�ção. Na programação estrutura ocorre a existênciade comandos apropriados para efetuar a repe�ção de determinados trechos de programas o número de vezes que for necessário. A principal vantagem deste recurso é que o programa passa a Ter um tamanho menor, podendo sua amplitude de processamento ser aumentada em se alterar o tamanho do código de programação. Desta forma, pode-se determinar repe�çoes com números variados de vezes. Repe�ção do Tipo: Teste lógico no Início do Looping É usada para repe�r N vezes uma ou mais instruções. Tendo como vantagem o fato de não ser necessário o conhecimento prévio do número de repe�ções. Forma Geral 1: ENQUANTO <<CONDIÇÃO>> FACA <<COMANDO1>>; Forma Geral 2: ENQUANTO <<CONDIÇÃO>> FACA ÍNICIO <<COMANDO1>>; <<COMANDON>> 20 FIM; Exemplo Segue um algoritmo que calcule a soma dos salários dos funcionários de uma empresa. O programa termina quando o usuário digitar um salário menor que 0. PROGRAMA SOMA_SALARIOS; VAR SOMA, SALARIO : REAL; INICIO SOMA:=O; SALARIO:=1; ENQUANTO SALARIO>=0 INICIO LER (SALARIO); SOMA:=SOMA+SALARIO FIM; ESCREVER (SOMA) FIM. A estrutura enquanto...faça...fim_enquanto tem o seu funcionamento controlado por decisão. Sendo assim poderá executar um determinado conjunto de instruções enquanto a condição verificada for Verdadeira. No momento em que esta condição se torna falsa, o processamento da ro�na é desviado para fora do looping. Se a condição for Falsa logo de início, as instruções con�das no looping são ignoradas. Repe�ção do Tipo: Teste lógico no fim do Looping Assim como a estrutura ENQUANTO É usada para repe�r N vezes uma ou mais instruções. Sua validação é final fazendo com que a repe�ção seja executada pelo menos uma vez. 21 Forma Geral; REPITA <<COMANDO1>>; <<COMANDON>> ATE <<CONDIÇÃO>> Exemplo 01 Segue um algoritmo que calcule a soma dos salários dos funcionários de uma empresa. O programa termina quando o usuário digitar um salário menor que 0. PROGRAMA SOMA_SALARIOS; VAR SOMA, SALARIO : REAL; INICIO SOMA:=O; REPITA LER (SALARIO); SOMA:=SOMA+SALARIO ATE SALARIO<0; ESCREVER (SOMA) FIM. Exemplo 02 Segue um algoritmo que escreve os 100 primeiros números pares. PROGRAMA PARES_2; VAR I, PAR, CONTADOR : INTEIRO; INICIO CONTADOR := 0; PAR := 0; REPITA ESCREVER (PAR); PAR := PAR+2; CONTADOR := CONTADOR+1; ATE CONTADOR=100 FIM. 22 Exercícios de Aprendizagem (Desenvolver Cada Exercício u�lizando as três estruturas de repe�ção apresentadas) 1) Apresentar os quadrados do números inteiros de 15 a 200. 2) Apresentar os resultados de uma tabuada de um número qualquer. Esta deverá ser impressa no seguinte formato: Considerando como exemplo o fornecimento do número 2 2 X 1 = 2 2 X 2 = 4 2 X 3 = 6 2 X 4 = 8 2 X 5 = 10 (...) 2 X 10 = 20 3) Apresentar o total da soma do cem primeiros números inteiros ( 1 + 2+ 3 + 4...+ 99 + 100 ). 4) Elaborar um programa que apresente no final o somatório dos valores pares existentes na faixa de 1 até 500. 5) Apresentar todos os valores numéricos inteiros ímpares situados nafaixa de 0 a 20. Para verificar se o número é ímpar, efetuar dentro da malha a verificação lógica desta condição com a instrução se, perguntando se o número é ímpar, sendo mostre-o, não sendo, passe para o próximo passo. 6) Apresentar todos os números divisíveis por 4 que sejam menores que 200. Para verificar se o número é divisível por 4, efetuar dentro da malha de verificação lógica desta condição com a instrução se, perguntando se o número é divisível, sendo, mostre-o, não sendo passe para o próximo passo. A variável que controlará o contador deverá ser iniciada com valor 1. 7) Apresentar as potências de 3 variando de 0 a 15. Deve ser considerado que qualquer número elevado a zero é 1, e elevado a 1 é ele próprio. 8) Elaborar um programa que apresente o valor de uma potência de uma base qualquer elevada a um expoente qualquer, ou seja, de N M . 9) Escreva um programa que apresente a série de Fibobnacci atéo décimo quinto termo. A série de Fibonacci é formada pela seqüência: 1,1,2,3,5,8,13,21,34,... etc. Esta série se caracteriza pela soma de um termo posterior com o seu anterior subseqüente. ESTRUTURA BÁSICA DE DADOS – TABELAS EM MEMÓRIAS Estrutura de Dados Homogêneas Durante os pontos estudados anteriormente, percebemos que o poder de programação se tornou maior. Porém, tendo domínio das técnicas anteriores, ainda correr-se à o risco de não conseguir resolver alguns �pos de problemas, pois foram trabalhadas até aqui apenas variáveis simples, variáveis que somente armazenam um valor por vez. Neste capítulo, será apresentado uma técnica de programação que permi�rá trabalhar com o agrupamento de várias informações dentro de uma mesma variável. Vale salientar que este agrupamento ocorrerá obedecendo sempre ao mesmo �po de dado, e por esta razão chamado de estruturas de dados homogêneas. Agrupamentos de �po de dados diferentes setão estudados mais adiante quando forme abordadas as estruturas de dados heterogêneas. A u�lização deste �po de estrutura de dados recebe diversos nomes, com: variáveis indexadas, variáveis compostas, variáveis subscritas, arranjos, vetores, matrizes, tabelas em memória ou arrays (do inglês). São vários os nomes encontrados na literatura voltada para o estudo de técnicas de programação que envolvem a u�lização das estruturas homogêneas de dados. Por nós, serão definidas como matrizes. As matrizes (tabelas em memória) são �po de dados que podem ser “cons�tuídos” à medida que se fazem necessários , pois não é sempre que os �pos básicos (real, inteiro, caractere ou lógico) e /ou variáveis simples são suficiente para representar a estrutura de dados u�lizado em um programa. 25 Matrizes de uma Dimensão ou Vetores Este �po de estrutura em par�cular é também denominado por alguns profissionais como matrizes unidimensionais. Sua u�lização mais comum está vinculada à criação de tabelas. Caracteriza-se por ser definida uma única variável dimensionada com um determinado tamanho. A dimensão de uma matriz é cons�tuida por constantes inteiras e posi�vas. Os nomes dados às matrizes seguem as mesmas regras de nomes u�lizados para indicar as variáveis simples. Operações Básiccas com Matrizes do Tipo Vetor Uma matriz de uma dimensão ou vetor será, neste trabalho, representada por seu nome e seu tamanho (dimensão) entre colchetes, desta forma seria uma matriz MD [1..n], onde MD é o seu nome e possuindo uum tamanho de 1 a n. Isto significa que poderão ser armazenados em MD até um valor definido pelo programador. Perceba que na u�lização de variáveis simples existe uma regra: uma variável pode conter apenas um valor por vez. No caso das matrizes, esta poderão armazenar mais um valor por vez. No caso das matrizes, esta poderão armazenar mais de um valor por vez, pos são dimensionadas, exatamente para este fim. Desta forma poder-se á manipular uma quan�dade maior de informação com pouco trabalho de processamento. Deve-se apenas considerar que com relação à manipulação dos elementos de uma matriz, eles ocorrerão de forma individualizada, pois nào é possível efetuar a manipulação de todos os elementos do conjunto ao mesmo tempo. Atribuição de uma Matriz Anteriormente, foram u�lizadas várias instruções em português estruturado para poder se definir e montar um programa. No caso da u�lização de matrizes, será definida a instrução conjunto que indicará em português estruturado a u�lização de uma matriz, tendo como sintaxe: Variável : conjunto [<dimensão>] de <�po de dado>. Onde <dimensão> será a indicação dos valores inicial e final do tamanho do vetor e <�po de dado> se o vetor em questão irá u�lizar valores reais, inteiros, lógicos ou caracteres. Leitura dos Dados de uma Matriz A leitura de uma matriz é processada passo a passo, um elemento por vez. A instrução de leitura é leia seuida da variável mais o índice. Abaixo, é apresentado a codificação em portuguol da leitura de 8 notas de 8 alunos, cálculo da média e a apresentação da mesma. 26 Programa Media_Turma Var Md : conjunto [1..8] de real Soma, media : real I : inteiro Inicio Soma <= 0 Para I de 1 ate 8 faça Leia (Md[I]) Soma <= Soma + MD[I] Fim_Para Média <= Soma / 8 Escreva (Media) Fim. Escrita dos Dados de uma Matriz O processo de escrita de uma matriz é bastante parecido com o processo de leitura de seus elementos. Para esta ocorrência deverá ser u�lizada a instrução escreva seguida da indicação da variável e seu índice. Supondo que após a leitura das 8 notas, houvesse a necessidade de apresentá-las antes da apresentação do valor da média. Abaixo é exibido a codificação da escritados 8 alunos antes de ser apresentado o cálculo da média. Programa Media_Turma Var Md : conjunto [1..8] de real Soma, media : real I : inteiro Inicio Soma <= 0 Para I de 1 ate 8 faça Leia (Md[I]) Soma <= Soma + MD[I] Fim_Para Para I de 1 ate 8 faça Escreva (Md[I]) Fim_Para Média <= Soma / 8 Escreva (Media) Fim. Exercícios de Aprendizagem 1) Desenvolver um programa que efetue a leitura de 10 elementos de uma matriz A do �po vetor. Construir uma matriz B de mesmo �po, observando a seguinte lei de formação: Se o valor do índice for par, o valor deverá ser mul�plicado por 5, sendo ímpar deverá ser somado por 5. Ao final mostrar os conteúdos das duas matrizes. 2) Desenvolver um programa que efetue a leitura de 5 elementos de uma matriz A do �po vetor. No final, apresente o total da soma de todos os elementos que sejam ímpares. 3) Ler duas matrizes A e B do �po vetor com 20 elementos. Construir uma matriz C, onde cada elemento de C é a subtração do elemento correspondente de A com B. 4) Ler 15 elementos de uma matriz A do �po vetor. Construir uma matriz B de mesmo �po. Observando a seguinte lei de formação: “Todo elemento de B deverá ser o quadrado do elemento de A correspondente”. 5) Ler uma matriz A do �po vetor com 15 elementos. Construir uma matriz B de mesmo �po, sendo que cada elemento da matriz B seja o fatorial do elemento correspondente da matriz ª 6) Ler duas matrizes A e B do �po vetor com 15 elementos cada. Construir uma matriz C, sendo esta a junção das duas outras matrizes. Desta forma, C deverá Ter a capacidade de armazenar 50 elementos. 27 I, J : inteiro Inicio Para I de 1 até 8 faça Para J de 1 até 4 faça Leia(notas[I,J]) Fim_Para Fim_Para Fim. Escrita dos Dados de uma Matriz O precesso de escrita será bastante parecido com o processo de leitura de seus elementos. Supondo que após a leitura das notas dos 8 alunos, houvesse a necessidade de efetuar a apresentação das notas. Abaixo é apresentado a codificação em português estruturado da escrita das 4 notas dos 8 alunos. Programa Ler_Elementos Var Notas : conjunto [1..8, 1..4] de real I, J : inteiro Inicio Para I de 1 até 8 faça Para J de 1 até 4 faça Escreva(notas[I,J]) Fim_Para Fim_Para Fim. Exercícios de Aprendizagem 1) Ler duas matrizes A e B, cada uma de duas dimensões com 5 linhas e 3 colunas. Construir uma matriz C de mesma dimensão, onde C é formada pela soma dos elementos da matriz A com os elementos da matriz B. 30 ESTRUTURA DE DADOS HETEROGÊNEAS No tópicos anteriores, você teve um contato com técnicas de programação que envolveram o uso de estruturas de dados homogêneas, através da u�lização de matrizes de uma e duas dimensões. Observou que somente foi possível trabalhar com um �po de dado por matriz. No momento em que se precisou trabalhar com dois �pos de dados diferentes, foi necessária a u�lização também de duas matrizes, uma de cada �po. Estrutura de um Registro Agora você terá contato com a u�lização da principal estrutura de dados, o registro, a qual consiste em trabalhar vários dados de �pos diferentes (os campos) em uma mesma estrutura. Por esta razão, este �po de dado é considerado heterogêneo. Atribuição de Registros Os �pos registro devem ser declarados ou atribuídos antes da variáveis, pois poderá ocorrer a necessidade de se declarar uma variável com o �po registro anteriormente atribuído. Para se declarar um �po registro em português estruturado deverá ser u�lizada a instrução �po em conjunto com a instrução registro...fim_registro, conforme a sintaxe indicada abaixo. Tipo <iden�ficador> = registro <lista dos campos e seus �pos> fim_registro var <variável> : <iden�ficador> Onde inden�ficador é o nome do �po registro em caracteres maiúsculos, em itálico como as variáveis, e lista dos campos e seus �pos é a relação de variáveis que serão usadas como campos, bem como o seu �po de estrutura de dados, podendo ser: real, inteiro, lógico ou caractere. Após a instrução var, deverá ser indicada a variável �po registro e a declaração do seu �po de acordo com um iden�ficador definido anteriormente. Perceba que a instrução �po deverá ser u�lizada antes da instrução var, pois ao definir um �po de variável, pode-se fazer uso deste �po definido. Tomando como exemplo a proposta de se criar um registro denominado ALUNO, cujos campos são NOME, NOTA1, NOTA2, NOTA3 e NOTA4, este seria assim declarado: 31 �po CAD_ALUNO = registro NOME : caractere NOTA1 : real NOTA2 : real NOTA3 : real NOTA4 : real fim_registro var ALUNO : CAD_ALUNO Observe que é especificado um registro denominado CAD_ALUNO, o qual é um conjunto de dados heterogêneos (um campo �po caractere e quatro do �po real). Desta forma é possível guardar em uma mesma estrutura vários �pos diferentes de dados. A �tulo de comparação, pode-se dizer que um �po registro é também um vetor (matriz de uma dimensão). Pois tem-se a variável ALUNO do �po cad_aluno como um vetor com os índices NOME, NOTA1, NOTA2, NOTA3 e NOTA4. Leitura de Registros A leitura de um registro é efetuada com a instrução leia seguida do nome da variável registro e seu campo correspondente separado por um caractere “.” ponto. Programa Leitura �po CAD_ALUNO = registro NOME : caractere NOTA1 : real NOTA2 : real NOTA3 : real NOTA4 : real fim_registro var ALUNO : CAD_ALUNO Início Leia (Aluno.Nome) Leia (Aluno.Nota1) Leia (Aluno.Nota2) Leia (Aluno.Nota3) Leia (Aluno.Nota4) Fim 32 Programa LEITURA Tipo BIMESTRE = conjunto [1..4] de real CAD_ALUNO = registro NOME : caractere NOTA: BIMESTRE Fim_registro Var ALUNO: conjunto [1..8] de CAD_ALUNO I, J : inteiro início Para J de 1 até 8 faça Leia (ALUNO[J].NOME) Para I de 1 até 4 faça Leia (ALUNO[J].NOME[I]) Fim_para Fim_para Fim Veja que o looping da variável J controla o número de alunos da turma, no caso 8, e o looping da variável I controla o número de notas, até 4 por aluno. Para cada movimentação de mais uma variável J existem quatro movimentações na variável I. Escrita de Conjunto de Registros O processo de escrita de um conjunto de registros é similar aos modos anteriores, já estudados. Assim sendo, veja o código: Programa LEITURA Tipo BIMESTRE = conjunto [1..4] de real CAD_ALUNO = registro NOME : caractere NOTA: BIMESTRE Fim_registro Var ALUNO: conjunto [1..8] de CAD_ALUNO I, J : inteiro início Para J de 1 até 8 faça Escreva (ALUNO[J].NOME) Para I de 1 até 4 faça Escreva (ALUNO[J].NOME[I]) Fim_para Fim_para Fim PROGRAMAÇÃO MODULAR 35 Será estudado a par�r deste ponto, a aplicação de subro�nas em algoritmos, também conhecidas pela denominação módulos ou subalgoritmos. Na realidade, não importa como são chamadas, o que importa é a forma como funcionam e como devem ser aplicadas em um programa, e é isto que você aprenderá. Neste capítulo, será introduzido o conceito da criação estruturada de programas, pois para escrever um programa de computador necessita-se de estudo (levamtamento de todas as necessidades e detalhes do que deverá ser feito) e metodologia (regras básicas que deverão ser seguidas). Sem a aplicação de métodos não será possível resolver grandes problemas, quanto muito, pequenos problemas. As Sub-Ro�nas No geral, problemas complexos exigem algoritmos complexos. Mas sempre é possível dividir um problema grande em problemas menores. Desta forma, cada parte menor tem um algoritmo mais simples, e é estre trecho menor que é chamado de sub-ro�na. Uma sub-ro�na é na verdade, um programa, e sendo um programa poderá efetuar diversas operações computacionais (entrada, processamento e saída) e deverá ser tratada como foram os programas projetados até este momento. As sub-ro�nas são u�lizadas na divisão de algoritmos complexos, permi�ndo assim possuir a modularização de um determinado problema, considerado grande e de di�cil solução. Ao se trabalhar com esta técnica, pode-se deparar com a necessidade de se dividir uma sub- ro�na em outras tantas quantas forem necessárias, buscando uma solução mais simples de uma parte do problema maior. O processo de dividir sub-ro�nas em outras é denominado Método de Refinamento Sucessivo. Procedimentos Um procedimento é um bloco de programa, contendo início e fim e será iden�ficado por um nome, através do qual será referenciado em qualquer parte do programa principal ou do programa chamador da ro�na. Quando uma sub-ro�na é chamada por um programa, ela é executada e ao seu término o controle de processamento retorna automa�camente para a primeira linha de instrução após a linha que efetuou a chamada da sub-ro�na. Procedimento <nome do procedimento> var <variáveis> início <instruções> fim A melhor maneira de se entender como trabalhar com sub-ro�nas é fazer a sua aplicação em um programa mais complexo. Para tanto, imagne o seguinte problema: Exercício de Aprendizagem Cria um programa calculadora que apresente um menu de seleções no programa principal. Este menu deverá dar ao usuário a possibilidade de escolher uma entre quadra operações aritmé�cas. Escolhida a opção desejada, deverá ser solicitada a entrada de dois números, e processada a operação deverá ser exibido o resultado. Note que este programa deverá ser um conjunto de 5 ro�nas, uma principal e 4 secundárias. A ro�na principal efetuará o controle sobre as 4 ro�nas secundárias, que por sua vez pedirão a leitura de dois valores, farão a operação e apresentarão o resultado ob�do. Observe agora a codificação: 36 Programa calculadora Var Opcao : caractere {sub-ro�nas de cálculos} procedimento ROTSOMA var r, a, b : real início Escreva (“Ro�na de Soma”) Escreva (“Entre um valor para A: “) Leia(A) Escreva (“Entre um valor para B:”) Leia(B) R <= A + B Escreva (“A soma de A com B é = “, R) Fim procedimento ROTSSUBTRACAO var r, a, b : real início Escreva (“Ro�na de Subtração”) Escreva (“Entre um valor para A: “) Leia(A) Escreva (“Entre um valor para B:”) Leia(B) R <= A - B Escreva (“A subtração de A com B é = “, R) Fim procedimento ROTMULTIPLICACAO var r, a, b : real início Escreva (“Ro�na de Mul�plicação”) Escreva (“Entre um valor para A: “) Leia(A) Escreva (“Entre um valor para B:”) Leia(B) R <= A * B Escreva (“A mul�plicação de A com B é = “, R) Fim procedimento ROTDIVISAO var r, a, b : real início Escreva (“Ro�na de Divisão”) Escreva (“Entre um valor para A: “) Leia(A) Escreva (“Entre um valor para B:”) Leia(B) R <= A / B Escreva (“A Divisão de A com B é = “, R) Fim {Programa Principal} inicio opcao <= “0” enquanto (opcao <>”5 “) faça 37
Docsity logo



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