






































Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Lógica de Programação
Tipologia: Notas de estudo
1 / 46
Esta página não é visível na pré-visualização
Não perca as partes importantes!







































Silvoney Fernandes da Silva [email protected]
1. Variáveis Compostas Homogêneas......................................................................................................................
1.1 Variáveis Indexadas Uni Dimensionais(Vetores)............................................................................................ 1.1.1 Exercícios 10:......................................................................................................................................... 5
1.2 Variáveis Indexadas Bidimensionais(Matrizes).............................................................................................. 1.2.1 Exercícios 11:......................................................................................................................................... 9
Vet
Exemplo: ALGORITMO Atribui VARIÁVEIS
1.1.1 Exercícios 10:
) Amplie o exercício anterior emitindo um relatório com todos os números pares que você leu.
) Faça um algoritmo que determine qual o menor valor existente no vetor do exercício número 1.
) Faça um algoritmo que determine qual o maior valor existente no vetor do exercício número 1.
) Faça um algoritmo que imprima quantos dos valores do exercício número 1 são maiores que a média desses valores.
) Faça um algoritmo que leia 10 nomes e os guarde na memória.
) Amplie o exercício 6 imprimindo o menor Nome do vetor
) Amplie o exercício 6 imprimindo o maior Nome do vetor
) Faça um algoritmo que leia 20 palavras, e após a leitura, realiza um processo qualquer que inverta os caracteres de cada uma das palavras.
) Faça um algoritmo que leia 10 nomes e os guarde na memória. Após a leitura, emita um relatório com todos os nomes que são palindromes. Uma palavra palindrome é aquela que a sua leitura é a mesma da esquerda para a direita e vice versa. Exemplo: ARARA, ANA, etc.
) Faça um algoritmo que leia, Nome idade e sexo de N pessoas. Após a leitura faça: a) Imprima o Nome, idade e sexo das pessoas cuja idade seja maior que a idade da primeira pessoa. b) Imprima o Nome e idade de todas as mulheres. c) Imprima o Nome dos homens menores de 21 anos.
) Faça uma algoritmo para ler 20 valores e que imprima os que são maiores que a média dos valores.
) Faça um algoritmo que leia Nome e notas ( total de 12 ) de um conjunto indeterminado de alunos de um colégio. Após a leitura faça: a) Imprima o Nome e a média dos alunos aprovados ( Média >= 7.0 ). b) Imprima o Nome e a média dos alunos em Recuperação ( 5.0 >= Média < 7.0 ). c) Imprima o Nome e a média dos alunos reprovados ( Média < 5.0 ). d) Imprima o percentual de alunos aprovados. e) Imprima o percentual de alunos reprovados.
) Dado Nome e salário de 10 funcionários faça: a) Imprima o Nome e o salário dos funcionários que ganham mais de R$ 500, b) Para os funcionários que ganham menos de R$ 200,00 conceda um aumento de 20%. Imprima Nome e o novo salário destes funcionários aumentados
) Um teste composto por 10 questões foi proposto numa classe de n alunos. Cada questão admite as alternativas identificadas pelas letras A, B, C, D e E. Para cada aluno tem-se o registro contendo o seu nome e as suas respostas. Sendo dado o gabarito das questões faça um algoritmo que: a) Escreva uma relação contendo o nome e o número de acertos de cada aluno; b) Determine quantos alunos acertaram as questões 1 e 2 e tiveram 7 acertos; c) Escreva o nome do aluno, que obteve a melhor nota e pior nota;
) Faça um algoritmo para ler 50 valores inteiros. Após imprima tais valores ordenados crescentemente.
) Continuando o exercício anterior, emita um relatório com os valores ordenados decrescentemente.
) Faça um algoritmo que leia 10 valores numéricos inteiros. Após a leitura emita um relatório com cada valor diferente e o número de vezes que o mesmo apareceu no vetor.
) Dado uma ralação de N nomes, faça um algoritmo que verifique se uma determinada pessoa está neste vetor. O Nome da pessoa a ser pesquisada deverá ser lido, bem como os nomes a serem colocados no vetor.
Dado uma frase, faça um algoritmo que determine qual a consoante mais utilizada.
Empregado mais recente: 4631.
) Fazer um algoritmo que: a) leia uma variável indexada A com 30 valores reais; b) leia uma outra variável indexada B com 30 valores reais; c) leia o valor de uma variável X; d) verifique qual o elemento de A é igual a X; e) escreva o elemento de B de posição correspondente à do elemento A igual a X;
) Fazer um programa que: a) leia o valor de M (M<=30) e os valores de uma variável indexada A; b) leia o valor de N (N<=20) e os valores de uma variável indexada B; c) determine o conjunto C = A B (união de A com B), onde C não deverá conter elementos repetidos (A e B não contém elementos repetidos); d) escreva os elementos contidos em A, B e C;
) Intercalação é o processo utilizado para construir uma tabela ordenada, de tamanho n +m, a partir de duas tabelas já ordenadas de tamanhos n e m. Por exemplo, a partir das tabelas:
e
B= 2
construímos a tabela
Fazer um algoritmo que: a) leia NA, número de elementos do conjunto A (NA<=100); b) leia, em seguida, os elementos do conjunto A; c) leia, logo após o valor de NB, número de elementos do conjunto B (NB<=100); d) leia, finalmente, os elementos do conjunto B; e) crie e imprima um conjunto C, ordenado, de tamanho NA+NB, a partir dos conjuntos originais A e B.
Observação:
. Considerar os elementos de A e B como inteiros.
) Para cada nota de compra , tem-se o Nome do produto comprado, o valor e o imposto. Faça um algoritmo que escreva Nome, valor e imposto de cada produto. Bem como o valor total bruto, o imposto total cobrado e o valor total líquido de todas as notas. Considere 500 notas
) Faça um algoritmo para ler um vetor X de tamanho N de números inteiro. Após a leitura classifique os números, colocando em um vetor P somente os números pares e em um vetor I os impares. Após isso liste os três vetores.
1.1 Variáveis Indexadas Bidimensionais(Matrizes)
ALGORITMO Define VARIÁVEIS
Exemplo Definir uma variável indexada bidemensional para armazenar os dados de uma matriz 4 por 4 de números do tipo REAL, sendo que a mesma deverá corresponder no total a 16 posições de memória.
ALGORITMO Exemplo; VARIÁVEIS MAT : MATRIZ [1:4,1:4] DE REAL INICIO
Total
Os tipos de dados que são mais comumente usados, e que foram vistos com maior ênfase em programação I, são :
Uma outra forma de definir uma variável em Pascal, é através do tipo RECORD. Esse tipo é diferente das demais formas de definir variáveis, porque permite que uma variável armazene valores de diversos tipos diferentes. Exemplo : Imagine que fosse desejado armazenar informações de uma pessoa, tais como: Nome, Idade, Altura, Sexo, Número de Dependentes, Profissão. Na forma tradicional, seria necessário definir uma variável para cada tipo de informação, ou seja:
VAR Nome : STRING; Idade : BYTE; Altura : REAL; Sexo : CHAR; NumDep : BYTE; Profissão : STRING;
Utilizando o tipo RECORD, a definição seria a seguinte:
Pessoa : RECORD Nome : STRING; Idade : BYTE; Altura : REAL; Sexo : CHAR; NumDep : BYTE; Profissão : STRING; END;
Ao definir uma variável como sendo do tipo RECORD, devemos definir, também quais serão as partes componentes desta variável(Nome, Idade, Altura , Sexo, NumDep e Profissão), junto com o seu tipo. Quando estamos trabalhando com RECORD, as partes componentes do mesmo recebem um Nome próprio, o qual é conhecido como “campo “. Desta forma, uma variável RECORD pode ter campos de qualquer tipo válido do Pascal, sendo permitido inclusive que um RECORD seja definido dentro do outro, ou como parte de um ARRAY.
Continuando o Exemplo, caso desejarmos atribuir um valor a variável Pessoa, devemos fazê-lo da seguinte forma:
Algoritmo Pessoa.idade 45
Pascal
Pessoa.idade : = 45
O uso do “.” indica que esta variável possui campos, e que “Idade” é um deles. É importante lembrar que as operações realizadas sobre uma variável RECORD, são as mesmas de uma variável “comum”, a única diferença que devemos indicar o Nome da variável, seguido de um ponto(.), seguido do Nome do campo. É possível atribuir o conteúdo de uma variável RECORD para outra variável, de mesmo tipo, da mesma forma que é feito como as outras variáveis do Pascal.
Exemplo: Caso duas variáveis, digamos A e B sejam definidas como sendo RECORDs, e caso seja desejado passar o conteúdo, isto é os valores existentes nos campos, a variável A para a variável B, bastará realizar a seguinte atribuição:
Algoritmo AB
Pascal A: =B
1.1.1 Exercícios 1 :
3.1 Tipos Definidos Pelo Usuário
O Pascal possui vários tipos pré-definidos, como INTEGER, WORD, REAL etc, mas além destes tipos básicos, existe a possibilidade de o usuário definir seus próprios tipos de dados. Para isto, é necessário o uso da palavra reservada TYPE, a qual indica que um novo tipo será criado.
Exemplo : Imagine que seja desejado criar um tipo matriz 4X4, sendo que logo em seguida este novo tipo será usado para definir uma variável como sendo deste tipo. P ara isto deverá ser usada a seguinte definição:
Matriz = ARRAY[1..4,1..4] OF INTEGER VAR Mat : Matriz
O Pascal permite a definição de tipos usando qualquer um dos tipos pré-definidos, ou até mesmo utilizando tipos definidos pelo usuário
3.1.1 Exercícios 2 :
Nome Endereço: Rua Número
Pascal IF Tecla = SetaParaBaixo THEN BEGIN
A forma de se declarar uma constante é através do uso da palavra reservada CONST. Exemplo : Declarar uma constante que representa o valor da seta para baixo, do teclado do PC.
Algoritmo CONSTANTE SetaParaBaixo=CHR(24) INICIO
Pascal CONST SetaParaBaixo=CHR(24) BEGIN
Um outro uso muito útil de constantes é o de definir o tamanho de um ARRAY (VETOR) e o escopo dos laços de repetição, como FOR DO (PARA FAÇA0 , WHILE DO (ENQUANTO FAÇA) e REPEAT UNTIL (REPITA ATÉ).
Algoritmo ALGORITMO Teste CONSTATE TotalLinhas = 10 TotalColunas = 20 TIPO matriz = VETOR[ 1..totallinhas, 1..totalcolunas] DE INTEIRO VARIAVEIS Mat : matriz; lin,col : BYTE; INICIO PARA lin DE 1 ATE totallinhas FAÇA PARA col DE 1 ATE totalcolunas FAÇA LEIA(Mat[lin,col]) FIM PARA FIM PARA FIM
Pascal PROGRAM Teste; CONST TotalLinhas = 10; TotalColunas = 20; TYPE matriz = ARRAY[ 1..totallinhas, 1 ..totalcolunas] OF INTEGER;
Mat : matriz; lin,col : BYTE; BEGIN FOR lin : = 1 TO totallinhas DO BEGIN FOR col: = 1 TO totalcolunas DO BEGIN READ(mat[lin,col]);
3.1.1 Exercícios 3 :
Um matemático uma vez disse que um grande problema se resolve dividindo-o em pequenas partes e resolvendo tais partes em separado. Estes dizeres servem também para a construção de programas. Os profissionais de informática quando necessitam construir um grande sistema, o fazem, dividindo tal programa em partes, sendo então desenvolvido cada parte em separado, mais tarde, tais partes serão acopladas para formar o sistema. Estas partes são conhecidas por vários nomes. Nós adotaremos uma destas nomenclaturas: sub-Rotinas. Podemos dar um conceito simples de sub-Rotina dizendo ser um pedaço de código computacional que executa uma Função bem definida, sendo que esta sub-Rotina pode ser utilizadas várias vezes no algoritmo. Neste curso iremos tratar de dois tipos de sub-Rotinas: PROCEDURE e FUNCTION.
4.1 Procedure
Sintaxe :
Algoritmo PROCEDURE
Pascal PROCEDURE
Uma “PROCEDURE”, é um tipo de sub-Rotina que é ativada através da colocação de seu Nome em alguma parte do programa. Desta forma, assim que o Nome de uma “PROCEDURE”é encontrado, ocorre um desvio no programa, para que os comandos da sub-Rotina sejam executados. Ao término da sub-Rotina, a execução retornará ao ponto subsequente a chamada da “Pocedure”. Exemplo :
Algoritmo ALGORITMO Teste VARIAVEIS
ESCREVA (Nome) FIM
Pascal PROGRAM Teste; VAR Nome : STRING[80]; (variável global) PROCEDURE Setanome; BEGIN READ(Nome); END;
BEGIN Setanome; WRITE(Nome); END
No Exemplo acima, a variável “Nome” , por ser definida como global, pode ser manipulada dentro de qualquer ponto do programa, sendo que qualquer mudança no seu conteúdo, será visível nas demais partes da Rotina. Damos o Nome de variáveis locais às variáveis que são declaradas dentro de uma sub-Rotina, sendo que as mesmas só podem ser manipuladas dentro da sub-Rotina que as declarou, não sendo visíveis em nenhuma outra parte do programa. Exemplo :
Algoritmo ALGORITMO Teste PROCEDURE EscreveNoVídeo VARIAVEIS Número, N : INTEIRO INICIO LEIA (N) PARA número DE 1 ATE N FACA ESCREVA (Número) FIM PARA FIM
INICIO EscreveNoVídeo FIM
Pascal PROGRAM Teste; PROCEDURE EscreveNoVídeo; VAR Número, N : INTEGER; BEGIN READ(N); FOR número : = 1 TO N DO BEGIN WRITE(Número); END; END;
BEGIN EscreveNoVídeo; END;
Obs: É possível definir variáveis globais e locais com o mesmo Nome, sendo qualquer mudança no conteúdo da variável local não afetará o conteúdo da variável global. Exemplo :
Algoritmo ALGORITMO Teste VARIAVEL
Nome : STRING
PROCEDURE Setanome INICIO LEIA (Nome) FIM
PROCEDURE Mudança VARIAVEIS Nome : STRING INICIO LEIA (Nome) FIM
INICIO Setanome ESCREVA (Nome) mudança ESCREVA (Nome) FIM
Pascal PROGRAM Teste; VAR Nome : STRING; PROCEDURE Setanome; BEGIN READ(Nome); END; PROCEDURE Mudança; VAR Nome : STRING; BEGIN READ(Nome); END;
Setanome; WRITE(Nome); mudança; WRITE(Nome); END;
No Exemplo acima, a variável global “Nome” e a variável local “Nome” representam posições de memória totalmente diferentes, logo, qualquer mudança no conteúdo da variável local, não afetará o conteúdo da variável global.
1 - Faça uma “PROCEDURE” para calcular A elevado a um expoente B.
n
Número : INTEGER; Funcionário : STRING;
PROCEDURE EscreveNome(N : INTEGER; Nome : STRING); VAR I : INTEGER; BEGIN FOR i : = 1 TO n DO BEGIN WRITE(Nome); END; END;
BEGIN READ(Número, Funcionário); EscreveNome(Número, Funcionário); END.
Obs: Os números dados aos parâmetros não necessitam serem iguais as variáveis passadas para sub- Rotina. No Exemplo acima, o valor contida em “Número” será passado para o parâmetro “N”, da mesma forma que o valor contido na variável “Funcionário” será passada para o parâmetro “Nome”. Note que os nomes são diferentes.
4.1.1 Exercícios 6 :
1 - Faça um algoritmo para calcular N!
Y = X - X^2 + X^3 - X^4 + X^5 - ...
a) Passagem de Parâmetros por Valor Qualquer alteração no conteúdo de um parâmetro, dentro de uma sub-Rotina, não será refletido no programa chamado.
Exemplo :
Algoritmo ALGORITMO Teste VARIAVEIS X : INTEIRO PROCEDURE PorValor(A : INTEIRO) INICIO A 5 FIM
INICIO X 10 PorValor (X) ESCREVA (X) FIM
Pascal PROGRAM Teste; VAR X : INTEGER; PROCEDURE PorValor(A : INTEGER); BEGIN A : = 5; END;
PorValor(X);
No Exemplo acima, o conteúdo da variável “X” não será alterado após o retorno ao programa principal.
b) Passagem do Parâmetros por Referência Quando a alteração no conteúdo de um parâmetro, dentro de uma sub-Rotina, se reflete no programa chamador. Os parâmetros a serem passados por referência deverão ter, na definição da sub-Rotina, colocado na frente do Nome do parâmetro, a palavra “VAR”. Exemplo :
Algoritmo ALGORITMO Teste VARIAVEIS X : INTEIRO PROCEDURE PorReferência(VARIAVEL A: INTEIRO) INICIO A 5 FIM
INICIO X 10 PorReferência(X) ESCREVA (X) FIM
Pascal PROGRAM Teste; VAR X : INTEGER; PROCEDURE PorReferência(VAR A: INTEGER); BEGIN A : = 5; END;
PorReferência(X); WRITE(X); END.
No Exemplo acima , o conteúdo da variável “X” será alterado após o retorno ao programa principal
c) O problema dos tipos na definição de parâmetros O Pascal, a princípio, aceita somente que sejam definidos parâmetros com os seguintes tipos : INTEGER, REAL, BYTE, WORD, BOOLEAN, CHAR, STRING e os outros tipos ditos simples. Desta forma, tipos como ARRAY, RECORD e STRING com tamanho definido pelo usuário, não são aceitos. Acontece que existe uma forma de fazer o Pascal aceitar qualquer tipo de dados na definição de parâmetros, através da definição de tipos pelo usuário, ou seja, criar tipos através do comando TYPE. Exemplo :
Algoritmo ALGORITMO Teste CONSTANTE Máximo = 50 TIPO Vetor = VETOR[1..Máximo] DE INTEIRO Registro =RECORD descrição : STRING cor : STRING Quant : BYTE FIM VARIAVEL Vet : vetor