18
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

Portfólio Interdisciplinar Primeiro Período de Análise de Sistemas - UNOPAR / 2011 - Adson Honori

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

Page 1: Portfólio Interdisciplinar Primeiro Período de Análise de Sistemas - UNOPAR / 2011 - Adson Honori

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

Page 2: Portfólio Interdisciplinar Primeiro Período de Análise de Sistemas - UNOPAR / 2011 - Adson Honori

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

Page 3: Portfólio Interdisciplinar Primeiro Período de Análise de Sistemas - UNOPAR / 2011 - Adson Honori
Page 4: Portfólio Interdisciplinar Primeiro Período de Análise de Sistemas - UNOPAR / 2011 - Adson Honori

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

Page 5: Portfólio Interdisciplinar Primeiro Período de Análise de Sistemas - UNOPAR / 2011 - Adson Honori

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.

Page 6: Portfólio Interdisciplinar Primeiro Período de Análise de Sistemas - UNOPAR / 2011 - Adson Honori

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 (":> ")

Page 7: Portfólio Interdisciplinar Primeiro Período de Análise de Sistemas - UNOPAR / 2011 - Adson Honori

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

Page 8: Portfólio Interdisciplinar Primeiro Período de Análise de Sistemas - UNOPAR / 2011 - Adson Honori

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.

Page 9: Portfólio Interdisciplinar Primeiro Período de Análise de Sistemas - UNOPAR / 2011 - Adson Honori

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

Page 10: Portfólio Interdisciplinar Primeiro Período de Análise de Sistemas - UNOPAR / 2011 - Adson Honori

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)

Page 11: Portfólio Interdisciplinar Primeiro Período de Análise de Sistemas - UNOPAR / 2011 - Adson Honori

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

Page 12: Portfólio Interdisciplinar Primeiro Período de Análise de Sistemas - UNOPAR / 2011 - Adson Honori

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)

Page 13: Portfólio Interdisciplinar Primeiro Período de Análise de Sistemas - UNOPAR / 2011 - Adson Honori

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

Page 14: Portfólio Interdisciplinar Primeiro Período de Análise de Sistemas - UNOPAR / 2011 - Adson Honori

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

Page 15: Portfólio Interdisciplinar Primeiro Período de Análise de Sistemas - UNOPAR / 2011 - Adson Honori

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)

Page 16: Portfólio Interdisciplinar Primeiro Período de Análise de Sistemas - UNOPAR / 2011 - Adson Honori

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

Page 17: Portfólio Interdisciplinar Primeiro Período de Análise de Sistemas - UNOPAR / 2011 - Adson Honori

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.

Page 18: Portfólio Interdisciplinar Primeiro Período de Análise de Sistemas - UNOPAR / 2011 - Adson Honori

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