Baixe o app para aproveitar ainda mais
Prévia do material em texto
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:inteiroa,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 proporcionoucolaboraçã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
Compartilhar