Baixe o app para aproveitar ainda mais
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
Compartilhar