segunda-feira, 30 de janeiro de 2012

Menu principal em COBOL


       identification division.
       program-id. menu.
       author. jorgefox.
       data division.
       working-storage section.
      *77 opcao          pic 9 value zero.
       77 wopcao          pic 9 value zero.
       screen section.
       01 menu-principal.
          02 blank screen.
          02 line 1 col 1 value "***************************************
      -"************************************".
          02 line 2 col 21 value "Sistema de compra e venda Mercadorias"
      -.
          02 line 3 col 1 value "***************************************
      -"************************************".
          02 line 4 col 33 value "Menu Principal".
          02 line 7 col 10 value "[1] Cadastro Mercadoria".
          02 line 8 col 10 value "[2] Cadastro Cliente".
          02 line 9 col 10 value "[3] Cadastro Vendedor/Comprador".
          02 line 10 col 10 value "[4] Listagem de Mercadoria".
          02 line 11 col 10 value "[5] Listagem de Cliente".
          02 line 12 col 10 value "[6] Sair sistema".
          02 line 15 col 10 "Digite a opção desejada[.]".
          02 opcao line 15 col 10 pic 9 using wopcao auto.
       procedure division.
       inicio.
          display menu-principal
          accept menu-principal
          evaluate wopcao
             when 1
                call "cadmercadoria" using wopcao
                go to inicio
             when 2
                call "cadcliente" using wopcao
             when 6
                stop run
             when other
                 go to inicio
          end-evaluate.

sexta-feira, 27 de janeiro de 2012

Exercício em sala - cobol mostrando vetor.

Este exemplo demonstra como  usar vetor em cobol.


       identification division.
       program-id. medias.
       author. jorgefox
       data division.
       working-storage section.
       01 aluno occurs 10 times.
          05 codigo      pic 9999 values zero.
          05 nome        pic x(50) values spaces.
          05 notas       pic 99v99 value zero occurs 4 times.
          05 media       pic 99v99 value zero.
       77 i              pic 99 values zero.
       77 j              pic 99 values zero.
       77 lc             pic 9999 value zero.
       77 opcao          pic x value space.
       procedure division.
       inicio.
          perform varying i from 1 by 1 until i>3
            display erase
            display "Codigo   : " at 0510
            display "nome     : " at 0610
            display "*********Notas*********" at 0710
            accept codigo(i) at 0520
            accept nome(i) at 0620
            display " " at 0809
            move 0910 to lc
            perform varying j from 1 by 1 until j>4
               add 100 to lc
               display "nota " at lc  j
               add 10 to lc
               accept notas(i,j) at lc
               subtract 10 from lc
               add notas(i,j) to media(i)
            end-perform
            divide media(i) by 4 giving media(i)
          end-perform
          perform varying i from 1 by 1 until i>3
            display erase
            display "Codigo   : " at 0510 codigo(i)
            display "nome     : " at 0610 nome(i)
            display "*********Notas*********" at 0710
            display " " at 0809
            move 0910 to lc
            perform varying j from 1 by 1 until j>4
               add 100 to lc
               display "nota " at lc  j
               add 10 to lc
               display notas(i,j) at lc
               subtract 10 from lc
            end-perform
            add 100 to lc
            display "Media   : " at lc media(i)
            display "Proximo" at 1610
            accept opcao at 1621
          end-perform

          stop run.

Ensaio de um crud em cobol


Pessoal depois de um jejum estou de volta com mais códigos, só que agora, com a linguagem cobol.
Este é uma tela para cadastramento de clientes, bem como mostrar o uso do nível 66.
Forte abraço.

       identification division.
       program-id. dados.
       author. jorgefox.
       data division.
       working-storage section.
       01 cliente.
          02 codigo            pic 9999 value zeros.
          02 nome              pic x(50) value spaces.
          02 endereco.
             03 rua            pic x(30) value spaces.
             03 qd             pic 99X value spaces.
             03 lt             pic 99X values spaces.
             03 compl          pic x(20) value spaces.
             03 bairro         pic x(20) value spaces.
             03 cidade         pic x(30) value spaces.
             03 estado         pic aa value spaces.
             03 cep            pic x(9) value spaces.
          02 email             pic x(50) value spaces.
          02 telefone          pic x(17) value spaces.
          02 celular           pic x(17) value spaces.
       66 logradouro renames rua thru compl.
       77 opcao                pic x value spaces.
       procedure division.
       inicio.
         display erase
         display "Codigo   : " at 0510
         display "Nome     : " at 0610
         display "Endereco " at 0710
         display "Rua      : " at 0810
         display "Qd." at 0852
         display "Lt." at 0859
         display "Compl    : " at 0910
         display "Bairro   : " at 0942
         display "Cidade   : " at 1010
         display "Estado   : " at 1052
         display "Cep      : " at 1110
         display "Telefone : " at 1210
         display "Celular  : " at 1242
         display "E-mail   : " at 1310
         display "Dados corretos [S/N] . " at 1510
         accept codigo at 0521
         accept nome at 0621
         accept rua at 0821
         accept qd at 0855
         accept lt at 0862
         accept compl at 0921
         accept bairro at 0953
         accept cidade at 1021
         accept estado at 1063
         accept cep at 1121
         accept telefone at 1221
         accept celular at 1253
         accept email at 1321
         accept opcao at 1531
         if opcao="S" or opcao="s" then
           display erase
           display "logradouro : " at 1010 logradouro
         else
           go to inicio
         end-if
         stop run.




domingo, 22 de janeiro de 2012

Exercicios sobre Variaveis Compostas Homgeneas Bidimensionais.

Pessoal como falei em sala de aula, estou postando aqui a solução dos exercícios.
Começo com a serie de FIBONACCI 

algoritmo "Fibonacci"
// Função :
// Autor :
// Data : 20/01/2012
// Seção de Declarações
var  n:inteiro
funcao Fibonacci(i:inteiro):inteiro
inicio
     se i=0 entao
        retorne 0
     senao
       se i=1 entao
          retorne 1
       senao
          retorne Fibonacci(i-2)+Fibonacci(i-1)
       fimse
     fimse
fimfuncao

inicio
para n de 0 ate 21 faca
  escreva(Fibonacci(n))
fimpara
fimalgoritmo

Este é o calculo do fatorial de um numero.
O fatorial é usado em cálculos probabilísticos e em series.



algoritmo "FATORIAL"
var  n:inteiro

funcao Fatorial(i:inteiro):inteiro
inicio
se i=0 entao
   retorne 1
senao
   se i=1 entao
      retorne 1
   senao
      retorne i*Fatorial(i-1)
   fimse
fimse
fimfuncao
inicio
limpatela
escreva("Digite um numero menor que 20 para calcular o n!")
leia (n)
escreva("O Fatorial de ",n," é igual a ",Fatorial(n))
fimalgoritmo

Passagem de parâmetro por referência.

 algoritmo "Passagem de parametros por referencia"
// Função : Mostrar procedimentos com passagem de parametro
// Autor :  Jorgefox
// Data : 20/01/2012
// Seção de Declarações

procedimento Divide(Dividendo,Divisor:real;var dv,rs:real)
inicio
dv<-int(Dividendo/Divisor)
rs<-Dividendo-dv*Divisor
fimprocedimento

var a,b,x,y,v,w:real

inicio
a<-6
b<-3
Divide(a,b,x,y)
escreval(" Valor de x=",x," Valor de y=",y)
Divide(a*b-1,b+1,v,w)
escreval(" Valor de V=",v," Valor de W=",w)
fimalgoritmo

Forte abraço a todos.


quinta-feira, 19 de janeiro de 2012

Solução Exercício 1 de Variáveis Homogêneas Compostas - Pag. 58

Este exercício foi resolvido no dia 19/01/12 as 16:30.
Enjoy


algoritmo "notas das misses"
// Função :
// Autor :
// Data : 19/01/2012
// Seção de Declarações
var
    nome:vetor[0..34] de literal
    notas:vetor[0..34,0..4] de inteiro
    nomenotas:vetor[0..4] de literal
    mn,i,j,ms,pn8:inteiro

inicio
nomenotas[0]<-"Simpatia"
nomenotas[1]<-"Beleza"
nomenotas[2]<-"Carisma"
nomenotas[3]<-"Estetica"
nomenotas[4]<-"Total"
para i de 0 ate 34 faca
  escreva("Nome da miss (",i+1,") : ")
  leia (nome[i])
  para j de 0 ate 3 faca
     escreva(nomenotas[j])
     leia(notas[i,j])
     notas[i,4]<-notas[i,4]+notas[i,j]
  fimpara
fimpara
// letra a do exercicio 1 da apostila.
mn<-0
j<- -1
para i de 0 ate 34 faca
   se mn<notas[i,4] entao
      mn<-notas[i,4]
      j<-i
   fimse
fimpara
se j<> -1 entao
  escreval("A vencedora do concurso é : ", nome[j])
fimse
// letra b do exercicio: calcular a media de simpatia.
ms<-0
para i de 0 ate 34 faca
  ms<-ms+notas[i,0]
fimpara
escreval("A média da Simpatia é : ",ms/35)
pn8<-0
para i de 0 ate 34 faca
  se notas[i,1]>8 entao
     pn8<-pn8+1
  fimse
fimpara
escreval("A porcentagem de beleza acima de 8 foi :",100*pn8/35,"%.")
fimalgoritmo

O que é necessário para saber lógica?


Sempre que estou em sala de aula com meus queridos alunos, alguns sem pestanejarem perguntam: "O que é necessário para aprender lógica?".  É uma pergunta difícil de responder, apesar de que lógica seja algo relacionado com a matemática e que é dita como uma ciência exata. Digo isso pois no meu dia a dia tenho observado que nossos alunos estão formando no ensino médio sem que a leitura seja uma prática muito utilizada por eles.
Uai! Mas todos dizem que matemática é a base para a lógica! Sim de fato a matemática é um dos atributos necessários para saber. Mas uma boa interpretação de texto é fundamental para compreender e extrair do enunciado do desafio os seus objetivos bem como os dados necessários para sua resposta. Quando estamos diante de uma desafio a primeira coisa é entender o que se pede para resolver. Dizemos que todo problema é traz no seu enunciado o caminho para a sua solução. Mas como assim? Ao ler um problema devemos buscar os dados que são fornecidos, mas uma boa dose de intuição, abstração e dedução são importantes para encaminharmos uma solução escrita através de uma algoritmo.
Outro fator importante para resolver problemas é saber como o computador trabalha. Todos leigos acham que o computador tem vontade própria ou que seja inteligente.  Não isso somente é possível nos filmes de ficção cientifica, como exemplo "Jornada nas Estrelas" ainda levaremos muito tempo para atingir esse patamar descrito por Jim Roddenberry escritor da série. Todo computador do nosso tempo não é dotado de pensamento ou deduções tudo que ele executa é ensinado por nos programadores. Desta forma todo comportamento do computador é literalmente uma tradução do pensamento e da organização mental de uma pessoa. Tudo que programamos no computador será executado fielmente sem pular uma virgula ou ponto. Sendo assim não podemos ensinar errado pois se houver erro, este será executado, e a conseqüência serão resultados equivocados e inexatos.
Para entender a lógica é necessário disciplina  mental e também desenvolver a leitura, a matemática e claro a didática, afinal como os gregos já diziam a lógica é a arte da demonstração. Um abraço a todos e até nosso próximo artigo.

quarta-feira, 18 de janeiro de 2012

Exercícios 6 e 7 da lista de variáveis compostas

Pessoal aqui estão os dois algoritmos:


algoritmo " Exercicio 7"
// Função :
// Autor :
// Data : 18/01/2012
// Seção de Declarações
var
numeros:vetor[0..49] de inteiro
i,np,p:inteiro
inicio
// Seção de Comandos
para i de 0 ate 49 faca
   //numeros[i]<-i*i*3+3*i-2
     leia (numeros[i])
   //escreval(numeros[i])
fimpara
escreval("Digite um numero!")
leia(np)
p<-0
para i de 0 ate 49 faca
   se np=numeros[i] entao
      p<-i
   fimse
fimpara
se p<>0 entao
   escreval("O elemento ",np," encontra-se na posição: ",p)
senao
   escreval("O elemento ",np," não foi encontrado no vetor.")
fimse

fimalgoritmo



algoritmo " Exercicio 6 "
// Função :
// Autor :
// Data : 18/01/2012
// Seção de Declarações
var  resposta: vetor[0..19] de literal
i,rs,rn:inteiro

inicio
// Seção de Comandos
para i de 0 ate 19 faca
   leia (resposta[i])
fimpara
escreval ("A 9ª pessoa respondeu ",resposta[8])
rs<-0
rn<-0
para i de 0 ate 9 faca
   se resposta[i]="sim" entao
      rs<-rs+1
   fimse
fimpara
para i de 10 ate 19 faca
   se resposta[i]="nao" entao
      rn<-rn+1
   fimse
fimpara
escreval("Respostas das 10 primeiras sim= ",rs)
escreval("Respostas das 10 últimas   não= ",rn)
se rs>rn entao
   escreval("A quantidade de respostas sim foi maior")
senao
   se rs<rn entao
     escreval("A quantidade de respostas Não foi maior")
   senao
     escreval("A quantidade de respostas sim e não foram iguais.")
   fimse
fimse
fimalgoritmo