Buscar

ADSON PORTIFOLIO

Prévia do material em texto

SISTEMA DE ENSINO PRESENCIAL CONECTADO 
ANÁLISE E DESENVOLVIMENTO DE SISTEMAS 
 
PROGRAMAÇÃO PRÁTICA E LÓGICA 
 
 
BAHIA
2023
ADSON DOS SANTOS SOUZA
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
PROGRAMAÇÃO PRÁTICA E LÓGICA 
 
 
Trabalho interdisciplinar (Fundamentos de Lógica e 
Matemática Discreta, Organização de Computadores, 
Educação a Distância, Fundamentos da Administração 
da Informação e Linguagem e Tec. de Programação I) 
apresentado a Universidade Norte do Paraná - UNOPAR 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Professores: Adriane Loper
BAHIA
2023
ADSON DOS SANTOS SOUZA
 
 
 
 
SUMÁRIO 
1 INTRODUÇÃO .....................................................................................................3 
2 DESENVOLVIMENTO .........................................................................................4 
2.1 PARTE 1 – PROGRAMAÇÃO PRÁTICA, ALGORITMOS................................4 
2.2 PARTE 2 – TRADUÇÃO PARA LINGUAGEM LÓGICA .................................13 
3 CONCLUSÃO ....................................................................................................15 
REFERÊNCIAS.........................................................................................................16 
 3 
1 INTRODUÇÃO 
O homem por natureza é um ser lógico. Aprender a usar e 
aperfeiçoar a Lógica são pré-requisitos essenciais para a formação de um bom 
programador, servindo-lhe como base sólida na utilização de qualquer linguagem de 
programação. O objetivo principal do estudo da Lógica de Programação é 
demonstrar técnicas para resolução de problemas ou ainda para automação de 
tarefas. 
As conexões entre a Lógica e a Informática crescem e se aprofundam 
rapidamente. Ao lado da demonstração automática, da programação em 
lógica, da especificação e verificação de programas, outros setores revelam 
uma fascinante interação mútua com a Lógica, como a teoria de tipos, a 
teoria do paralelismo, a inteligência artificial, a teoria da complexidade, as 
bases de dados, a semântica operacional e as técnicas de compilação (José 
Meseguer). 
O produto final deste raciocínio lógico estruturado é o Algoritmo, que 
pode ser definido como todo procedimento cujas instruções são bem claras, efetivas 
e podem ser executadas em tempo finito. É um texto onde cada linha contém uma 
ação primitiva passível de execução por um homem ou uma máquina. 
 
Este trabalho se divide em duas partes. A primeira consiste na 
formulação de código computacional na forma de algoritmos, utilizando-se a 
ferramenta VisuAlg e que solucionem às cinco proposições pré-definidas pelos 
professores das disciplinas. A segunda será traduzir para uma linguagem lógica 
algum conceito de Fundamentos da Administração da Informação, utilizando-se a 
tabela-verdade como recurso demonstrativo da tradução. 
 
 
 
 4 
2 DESENVOLVIMENTO 
2.1 PARTE 1 – PROGRAMAÇÃO PRÁTICA, ALGORITMOS 
1) Escreva o pseudocódigo equivalente ao fluxograma abaixo: 
 
 
algoritmo "Consumo Médio" 
var 
a: caracter 
DIST, VOL, CM: real 
 
inicio 
repita 
limpatela 
escreval ("Cálculo do Consumo Médio") 
escreval("Distância total percorrida (Km)") 
escreva (":> ") 
 5 
leia (DIST) 
escreval ("Quantidade de combustível gasto (L)") 
escreva (":> ") 
leia (VOL) 
 enquanto VOL = 0 faca 
 escreval ("Valor informado deve ser maior que zero. Tente novamente!") 
 leia (VOL) 
 fimenquanto 
CM <- DIST/VOL 
escreval ("Consumo médio = ", CM:3:2, " Km/L") 
escreval 
escreval ("ENTER recomeçar ou 's' para SAIR") 
leia (a) 
ate a="s" 
fimalgoritmo 
 
2) Crie um algoritmo que receba pelo teclado o nome do Funcionário 
e seu salário bruto. Se o salário for acima de R$ 1.000,00, calcule 11% de desconto 
de INSS; se não, calcule 9%. Ao final, exiba o nome do funcionário, o salário bruto e 
o salário com desconto do INSS. 
Dados de Entrada: NOME, SALÁRIO BRUTO 
Processamento: Se o salário for acima de R$ 1.000,00, calcule 11% 
de desconto de INSS; se não, calcule 9%. 
Saída: Ao final, exiba o nome do funcionário, o salário bruto e o 
salário com desconto do INSS. 
 
algoritmo "Salários" 
var 
A, NOME: caracter 
SALB, SALD, FATOR1, FATOR2: real 
 
inicio 
repita 
limpatela 
 6 
FATOR1 <- 11/100 
FATOR2 <- 9/100 
escreval ("Informe o nome do funcionário!") 
leia (NOME) 
escrevaL ("Informe o salário bruto!") 
escreva ("R$ ") 
leia (SALB) 
 se SALB > 1000 entao 
 SALD <- SALB - (SALB * FATOR1) 
 senao 
 SALD <- SALB - (SALB * FATOR2) 
 fimse 
escreval ("NOME: ", NOME) 
escreval ("SALÁRIO BRUTO: R$ ", SALB: 4:2) 
escreval ("SALÁRIO LÍQUIDO: R$ ", SALD:4:2) 
escreval 
escreval ("ENTER recomeçar ou 's' SAIR") 
leia (A) 
ate a="s" 
fimalgoritmo 
 
3) Crie um algoritmo em que, dada a tabela a seguir, calcula o valor 
de desconto a ser concedido a um determinado cliente, de acordo com o valor da 
compra. O algoritmo deverá receber pelo teclado o nome do cliente e o valor total da 
compra. 
 
Dados de Entrada: Nome do cliente e o valor total da compra. 
Processamento: comparar o valor da compra para obter o desconto 
de acordo com a tabela. 
Saída: Nome do cliente, valor do desconto. 
 
 7 
algoritmo "CÁLCULO DESCONTO" 
var 
A, NOME: caracter 
VDESC, VCOMPRA, V1, V2, V3: real 
 
inicio 
repita 
limpatela 
V1 <- 5/100 
V2 <- 10/100 
V3 <- 15/100 
escreval ("Infomre o nome do cliente!") 
leia (NOME) 
escreval ("Informe o valor da compra") 
escreva ("R$ ") 
leia (VCOMPRA) 
 se (VCOMPRA < 1000) entao 
 VDESC <- (VCOMPRA * V1) 
 escreval ("Nome: ", NOME) 
 escreval ("Desconto em R$ = ", VDESC:4:2) 
 fimse 
 se ((VCOMPRA >= 1000) e (VCOMPRA <= 5000)) entao 
 VDESC <- (VCOMPRA * V2) 
 escreval ("Nome: ", NOME) 
 escreval ("Desconto em R$ = ", VDESC:4:2) 
 fimse 
 se (VCOMPRA > 5000) entao 
 VDESC <- (VCOMPRA * V3) 
 escreval ("Nome: ", NOME) 
 escreval ("Desconto em R$ = ", VDESC:4:2) 
 fimse 
escreval (“ENTER recomeçar ou ‘s’ para SAIR”) 
leia (A) 
ate a=”s” 
fimalgoritmo 
 8 
4) O algoritmo abaixo possibilita calcular a média das notas de 5 
alunos. Obs: faça as alterações necessárias para que o algoritmo possibilite a média 
da turma e também imprima quantos alunos estão com a nota abaixo da média. 
 
 
algoritmo "média turma" 
var 
A: caracter 
I, X, CONTABX : inteiro 
NOTA, SOMA: real 
 
inicio 
repita 
limpatela 
SOMA <- 0 
CONTABX <- 0 
escreval ("Informe a quantidade de alunos na Turma!") 
escreva ("=>") 
leia (X) 
limpatela 
 para I de 1 ate X faca 
 escreval ("Entre com a nota do aluno ", I) 
 9 
 escreva ("Nota => ") 
 leia (NOTA) 
 SOMA <- SOMA + NOTA 
 se NOTA < 7 entao 
 CONTABX <- CONTABX +1 
 fimse 
 limpatela 
 fimpara 
 escreval ("Média Geral da Turma = ", SOMA/X:2:1) 
 escreval ("Alunos abaixo da média = ", CONTABX) 
 escreval ("ENTER para reiniciar ou 's' para SAIR") 
 leia (A) 
 ate a = "s" 
fimalgoritmo 
 
5) Elaborar um algoritmo, em qualquer linguagem de programação, 
que execute a conversão do sistema decimal para o binário. O programa deverá ser 
comentado explicando os porquês de cada ação. 
 
algoritmo "conversão de decimal para binário" 
var 
z,d:inteiro 
a,x:caracter 
 
inicio 
repita // repeti o programa até q seja teclado "s" de Sair 
limpatela 
escreval ("-----------------------------------------------------------------------") 
escreval ("- Programa para converter decimal em binário -") 
escreval ("- Entre com o valor decimal para conversão em binário -") 
escreval ("------------------------------------------------------------------------")escreva (":> ") 
leia(z) // aqui lemos o número decimal pelo teclado 
 
 10 
d<-z // atribuímos o valor lido à outra variável (d), pois z sofrerá divisões por 2 
//alterando, sucessivamente, seus valores a cada vez que o laço de 
//ENQUANTO for executado 
 
se z = 0 entao // testamos a exceção, ou seja, se o valor lido é 0 (zero); sem isso 
// o zero ficaria sem representação binária, pois nunca satisfaria a 
//condição inicial do laço ENQUANTO 
 escreval ("A representacão binária de ", d, " é ", "0") 
senao // do contrário entra no laço 
 
 enquanto z > 0 faca // laço que controla as sucessivas divisões por 2 
 se (z mod 2)=0 entao // função MOD retorna o resto da divisão por 
//2, ou seja, se for igual a 0 a divisão é exata 
 
 x<- "0" + x // assim, atribuímos à variável X o caractere "0" 
//mais à própria variável, formando uma string 
//enquanto o laço rodar; 
// observe que, somando o novo caractere ao valor 
//da antiga variável, vamos empurrando os 
//primeiros valores para as últimas posições, pois 
 // o número binário é formado de trás pra frente 
 senão // se a função MOD retornar valor diferente de 
//zero, então ... 
 x<- "1" + x // atribuímos o caractere “1” mais a própria 
//variável formando uma string enquanto o laço 
//for executado 
 fimse 
 
 z<- z div 2 // a variável z recebe o quociente da divisão por 2 
//através da função DIV, que será testada 
//novamente na condição do laço ENQUANTO 
//(z>0) 
 fimenquanto 
escreval ("Número decimal =>", d) 
 11 
escreval ("Conversão para binário => " ,x) // saída dos valores concatenados em X 
 // (variável do tipo caracter) 
fimse // este fimse é do teste de exceção (se z = 0) 
escreval ("Aperte ENTER para converter outro número ou 's' para SAIR") 
x<- " " // aqui reiniciamos o valor de X com um espaço em branco, evita-se que 
 // um lixo na variável altere os valores quando o programa repetir 
leia(a) 
ate a= "s" 
fimalgoritmo 
----------------------------------------------------------------------------------------------------------------- 
 
algoritmo "conversão de decimal para binario usando VETORES" 
 
var 
VET1: vetor [1..50] de inteiro 
VET2: vetor [1..50] de inteiro 
i,j,z,d,x: inteiro 
a: caracter 
 
inicio 
 
repita // repeti o programa até q seja teclado "s" de Sair 
limpatela 
escreval ("-----------------------------------------------------------------------") 
escreval("- Programa para converter decimal em binário -") 
escreval("- Entre com o valor decimal para conversão em binário -") 
escreval("------------------------------------------------------------------------") 
escreva (":> ") 
leia(z) // aqui lemos o número decimal pelo teclado 
d<-z // atribuímos o valor lido a outra variável, pois z sofrerá divisões por 2 
 alterando sucessivamente seus valores 
 
 12 
se z = 0 entao // se o valor lido é 0 (zero), sem isso o zero ficaria sem representação 
 binária, pois nunca satizfaria a condição do ENQUANTO 
 escreval ("Correspondente em binário:",0) 
senao // do contrário entra no laço 
 
 i:=1 // inicializo a primeira posição do vetor 
 enquanto z > 0 faca // permite controlar as sucessívas divisões por 2 
 se (z mod 2)=0 entao // função MOD retorna o resto da divisão por 2, 
 // se for = 0 a divisão é exata e o resto é zero 
 VET1[i]<-0 // atribuo o valor 0 na posição "i" do vetor 
 senao 
 VET1[i]<-1 // se não for exata, atribuímos o valor 1 na posição 
 // "i" enquanto o laço rodar 
 fimse 
 i<-i+1 //incrementamos o i para que o vetor mude de posição 
 z<- z div 2 // a variável z recebe o quociente da divisão por 2 
 // através da função DIV, que será testada novamente 
 // na condição do laço ENQUANTO 
 fimenquanto 
 
 //escrever resultado 
 i:=i-1 // o incremento de "i' nos informa quantas posições o vetor tem ao todo, 
 // precisamos dIminuir 1 para não sobrar uma posição vazia 
 
 escreval 
 
 //inverter posições 
 j:=1 // iniciamos "j' que controlará a posição do segundo vetor 2 que irá receber 
 // os valores do vetor 1 de traz pra frente 
 para x de i ate 1 passo -1 faca // repetição PARA iniciando em "i" até 1 
decrementando 1, ou seja, se i for 3, então VET2[1] <- VET1[3], 
 VET2[j]<-VET1[x] // o VETOR 2 receberá o valor armazenado na última 
 // posição do VET1, pois sabemos que o número 
 //binário forma-se de traz pra frente 
 13 
 j:=j+1 // incremento do j para a posição do VET2 andar 
 fimpara 
 
 // imprimir o valor em binário 
 escreval ("Correspondente em binário:") 
 para x de 1 ate i passo 1 faca 
 escreva (VET2[x]) 
 fimpara 
fimse 
 escreval 
 escreval ("Aperte enter para converter outro número ou 's' para sair") 
 leia(a) 
 ate a= "s" 
fimalgoritmo 
 
2.2 PARTE 2 – TRADUÇÃO PARA LINGUAGEM LÓGICA 
1) Traduzir para a linguagem lógica algum conceito de Fundamentos 
de Administração da Informação e construir a respectiva tabela verdade. 
 
A partir das proposições simples x,y,z a seguir, escreve em 
linguagem lógica a proposição composta T(x,y,z) e a respectiva tabela-verdade. 
x: Divisão de trabalho não é especializar funções e separar poderes 
de forma a obter o máximo proveito do indivíduo e da coletividade em uma 
organização. (FALSA) 
y: Disciplina é estabelecer convenções, formais ou informais, entre a 
empresa e seus agentes, de forma a incentivar a obediência, a assiduidade, a 
atividade, a presença e os sinais exteriores de respeito. (VERDADEIRA) 
z: Divisão de trabalho e disciplina são princípios da administração de 
Fayol. (VERDADEIRA) 
 14 
T(x,y,z): Se divisão de trabalho não é especializar funções e separar 
poderes de forma a obter o máximo proveito do indivíduo e da coletividade em uma 
organização e disciplina é estabelecer convenções, formais ou informais, entre a 
empresa e seus agentes, de forma a incentivar a obediência, a assiduidade, a 
atividade, a presença e os sinais exteriores de respeito. Então, divisão de trabalho e 
disciplina são princípios da administração de Fayol. 
 
Como mostra a tabela-verdade, a proposição composta T(x,y,z) é 
FALSA. 
 
x y z (x^y) (x^y) →z 
V V V V V 
V F F F V 
V F V F F 
V V F V V 
F F F F V 
F V V F F 
F V F F V 
F F V F F 
 15 
3 CONCLUSÃO 
Nossa dinâmica de desenvolvimento contemplou a resolução 
individual dos raciocínios, paralelamente, trocamos informações por e-mail criticando 
e avaliando todas as soluções apresentadas. Encontros presenciais selecionaram os 
melhores algoritmos, discutimos e o trabalho encorpou. 
 
Os desafios foram muitos, desde assimilar a forma de se trabalhar 
em ambiente colaborativo até a codificação das soluções em linguagem 
computacional. Conciliar o trabalho e o estudo de forma eficiente e produtiva foi uma 
tarefa árdua, mas gratificante. 
 
A Internet se mostrou realmente importante e eficaz, pois 
proporcionou colaboração e interação entre os participantes do grupo; o grande 
volume de informações disponíveis na rede auxilia e muito na busca do 
conhecimento. 
 
Portanto, o objetivo do trabalho foi alcançado, através de exercícios 
práticos envolvendo lógica e programação, podemos assimilar os conceitos e 
técnicas ministrados pelos professores no semestre. 
 
 
 
 
 
 
 
 
 
 16 
REFERÊNCIAS 
ARAMAM, CAZETTA,Eliane Maria de O. Aramam e Jenai O. Cazetta. 
Fundamentos de lógica e matemática discreta. São Paulo: Person Education do 
Brasil, 2009. 
SANTANA, CAZETTA, Denise Dias de Santana e Luis Cláudio Perini. Fundamentos 
da administração da informação. São Paulo: Person Education do Brasil, 2009. 
MARTINS, PAIANO, Paulo Roberto Martins e Valessa Paiano. Linguagens e 
técnicas de programação I. São Paulo: Person Education do Brasil, 2009. 
http://www.colegioweb.com.br/matematica/principios-fundamentais-da-logica.html 
http://www.calculadoraonline.com.br/conversao-bases

Continue navegando