Upload
adsonhonori
View
2.533
Download
16
Embed Size (px)
DESCRIPTION
Trabalho em grupo de conclusão de primeiro semestre. UNOPAR, curso de Análise e Des. de Sistemas.Título: PROGRAMAÇÃO PRÁTICA E LÓGICAAdson Honori
Citation preview
Palmas 2011
ADSON JOSÉ HONORI DE MELO FLÁVIO MÁRCIO SILVA
GERISVALDO DA COSTA MACEDO VALDEMIA SOUSA OLIVEIRA
WANDERLEY SOARES DA SILVA
SISTEMA DE ENSINO PRESENCIAL CONECTADO ANÁLISE E DESENVOLVIMENTO DE SISTEMAS
PROGRAMAÇÃO PRÁTICA E LÓGICA
Palmas 2011
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: Denise Dias
Eliane Araman Éverson Morais José R. Passini Veronice de Freitas
ADSON JOSÉ HONORI DE MELO FLÁVIO MÁRCIO SILVA
GERISVALDO DA COSTA MACEDO VALDEMIA SOUSA OLIVEIRA
WANDERLEY SOARES DA SILVA
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