SlideShare uma empresa Scribd logo
1 de 18
Baixar para ler offline
UNIVERSIDADE DO ESTADO DE MATO GROSSO/UNEMAT
      CAMPUS UNIVERSITÁRIO DO VALE DO TELES PIRES
          LICENCIATURA PLENA EM COMPUTAÇÃO
ASPECTOS FORMAIS DA COMPUTAÇÃO E ALGORITMOS II - AFCAII

                  Alexandro Nardeli Leite
                 Douglas Silva da Rocha
                     Everson Wolf
                 Uanderson de Jesus Coelho
                 Venerson Martins Rodrigues




BONIFICAÇÃO NATALINA DA EMPRESA “ABC”




                      Colíder - MT
                          2011
ii

             Alexandro Nardeli Leite
            Douglas Silva da Rocha
                Everson Wolf
            Uanderson de Jesus Coelho
           Venerson Martins Rodrigues




BONIFICAÇÃO NATALINA DA EMPRESA “ABC”




                                        Trabalho apresentado ao Cur-
                                        so de Licenciatura em compu-
                                        tação da Universidade Esta-
                                        dual    de     Mato     Gros-
                                        so/UNEMAT, para a disciplina
                                        Aspectos Formais da Compu-
                                        tação e Algoritmos II – AFCA
                                        II.

                                        Professor: Maicon A. Sartin




                 Colíder - MT
                     2011
                       ii
Sumário

1   Introdução _________________________________________________________________ 4
    1.1    EXEMPLO (CRIAÇÃO DE MENU) ___________________________________________________ 5
     1.1.1 Structs ................................................................................................................................ 6
     1.1.2 Justificativa ....................................................................................................................... 6
     1.1.3 Objetivo Geral ................................................................................................................... 7
2   Referencial Teórico __________________________________________________________ 7
    2.1    COMANDOS DE SELEÇÃO _________________________________________________________ 7
    2.2    ESTRUTURA DE REPETIÇÃO _______________________________________________________ 9
    2.3    REGISTROS E STRUCT ___________________________________________________________ 10
    2.4    FUNÇÕES ____________________________________________________________________ 11
    2.5    MANIPULAÇÃO DE ARQUIVOS_____________________________________________________ 12
     2.5.1 Abrindo e Fechando um Arquivo .................................................................................... 12
3   Desenvolvimento ___________________________________________________________ 13
    3.1    SUBSEÇÃO DE EXEMPLO (SE HOUVER) _____________________________________________ 14
     Subseção 1 de exemplo (se houver) .......................................................................................... 14
4   Conclusão_________________________________________________________________ 15
5   Referências Bibliográficas ___________________________________________________ 16
Lista de Figuras

Figura 1 Funcionalidades Básicas do Sistema (Menu Principal) ...................................................................................... 5




                                                                         2
Lista de Tabelas

Nenhuma entrada de índice de ilustrações foi encontrada.




                                             3
1 Introdução

     É evidente, que há necessidade de que as unidades que compõem um computador se comuni-
quem entre si para que qualquer usuário possa desempenhar um bom trabalho. Por exemplo, quando
o usuário precisa buscar na memória um dado ou informação fornecida pelo teclado anteriormente,
e que foi armazenado; quando precisar realizar uma operação aritmética, e assim por diante.
     Mas a verdade é que para que um computador tenha alguma utilidade, ele deve executar um
programa que tenha uma finalidade específica, como: games (jogos) que são programas que têm
como objetivo propiciar entretenimento aos seus usuários, o pacote Office que oferece uma grade
de aplicativos como processador de texto, planilhas eletrônicas, programa para a criação e exibição
de apresentação de slides, dentre outros. E ainda podemos citar os navegadores que são programas
que conectam os usuários à rede mundial de computar, e os gravadores para gravar CD e DVD.
     Tudo tem um início e, no mundo dos programas não é diferente, para desenvolver aplicativos
como esses citados acima, são necessários anos de estudos e pesquisas, sem mencionar que nesse
período vários testes são executados. E aqui chegamos à importância da disciplina de Aspectos
Formais da Computação e Algoritmos I e II, ou simplesmente Algoritmos I e II do curso de Licen-
ciatura em Computação.
     Começa o desafio, é uma caminhada longa e que exige muito esforço e dedicação para quem
quer chegar a ser um bom programador, esse é só mais um passo, o primeiro já foi dado, ao concluir
a disciplina de Aspectos Formais da Computação e Algoritmos I, onde se estuda uma introdução à
programação, mas precisamente uma introdução a programação em linguagem C. Agora é a vez de
concluir a disciplina de Aspectos Formais da Computação e Algoritmos II. Só que não mais com
uma pequena introdução, mas já com algumas noções mais complexas de programação em lingua-
gem C. Essa disciplina é de importância fundamental para todo aquele que quer ser programador, e
é desenvolvendo trabalhos como esse, que os acadêmicos despertam o interesse e desenvolvem suas
habilidades na elaboração de algoritmos e posteriormente, a transcrição desses para uma linguagem
de programação, transformando-o em um eficiente aplicativo.
     Neste trabalho foi proposto e desenvolvido um programa dentro do conteúdo que já foi estu-
dado, que será utilizado por uma empresa para bonificação de seus funcionários.
     O programa chama-se Sistema de Bonificação Natalina da Empresa ABC.
     O programa é composto de quatro funcionalidades principais, sendo uma para cadastrar os
funcionários, outra para pesquisar um funcionário pelo nome, outra para pesquisar um funcionário
pelo código e uma para exibir um relatório como todos os dados processados pelo sistema. Ainda
conta com uma funcionalidade para salvar todos os dados manipulados pelo sistema e também uma


                                                 4
funcionalidade extra que é para sair do sistema.




                      Figura 1 Funcionalidades Básicas do Sistema (Menu Principal)


      O desenvolvimento desse trabalho é de fundamental importância para aprimorar e adquirir
conhecimentos, e tem como objetivo proporcionar os conceitos básicos relacionados com a criação
de algoritmos e programas um pouco mais complexos, também despertar nos acadêmicos o interes-
se pela programação estruturada e a importância da prática na perfeição de cada algoritmo.

1.1   Exemplo (criação de menu)

      Para se criar um menu usando um algoritmo em linguagem C, normalmente descrevemos as
opções no código e depois usamos uma estrutura de seleção( chamada SWITCH), para separar cada
opção escolhida pelo usuário do sistema porém, quando precisamos repetir o menu partimos para o
uso de uma estrutura de repetição (nesses casos as mais utilizadas são WHILE e DO – WHILE),
nesse algoritmo foi utilizado o WHILE no menu principal e o DO – WHILE nos submenus.




                                                                     Figura 2 Criação interna de um Menu



                                                   5
1.1.1 Structs

       Podemos fazer a declaração de todas as principais variáveis de um algoritmo usando uma
única estrutura ou um registro, um registro ou estrutura é uma coleção de várias variáveis, possi-
velmente de tipos diferentes. Na linguagem C, registros são conhecidos como structs (abreviatura
de structures).




                      Figura 3 Declaração de várias variáveis dentro de uma estrutura



1.1.2 Justificativa

       Devido às grandes transformações na Indústria, no Comércio e também na Educação, a cada
dia muitos se perguntam: acompanharemos essas transformações? Conseguiremos administrar essas
inovações tecnológicas? Pensando nesse referencial que as universidades cada vez mais inovam na
criação e reorganização de cursos para a formação de novos cientistas e tecnólogos.

       Com isso destacam-se os cursos de formação de profissionais que atuarão principalmente no
atendimento dos campos acima descritos, que são os cursos para formação de programadores. Pro-
gramadores são profissionais que trabalham no desenvolvimento de softwares (programas e aplica-
tivos), esses por sua vez são classificados de várias formas, podemos citar duas que são aplicativos
comerciais e aplicativos educativos, dentre outros.
       O curso para o qual se destina esse trabalho é o Curso de Licenciatura em Computação, co-
mo o nome já diz não é um curso para a formação de programadores e sim para a formação de pro-
fessores, porém com uma avaliação positiva por todos aqueles que ingressam no curso com a inten-
são de se tornar um programador, sendo esse o primeiro passo, com a conclusão do curso se faz
necessário que o profissional procure uma especialização na área.
       O desenvolvimento desse trabalho é de grande importância, e serve como estímulo a todo
aquele que querem continuar no caminho para ser futuros profissionais da programação. Desenvol-


                                                    6
vendo assim a criatividade, o desejo de pesquisa e principalmente o raciocínio lógico, um dos prin-
cipais requisitos para a conclusão do trabalho, bem como da disciplina de Algoritmos II. Uma vez
que a prática desse algoritmo requer a utilização de todos os conceitos abordados até o presente
momento e também uma pesquisa em busca de novos conceitos e aplicações dos conhecimentos
adquiridos, testando assim o raciocínio de cada integrante do grupo.

1.1.3 Objetivo Geral

            Proporcionar ao acadêmico de forma clara e objetiva os conceitos, e o uso dos programas
feitos em C, permitindo que a partir daí o mesmo possa desenvolver novas habilidades, apreender e
compreender o conteúdo empregando na construção e execução de novos algoritmos.


 2 Referencial Teórico

      Aqui estão descritos alguns dos principais conceitos utilizados para o desenvolvimento desse
trabalho:

2.1   Comandos de Seleção

      C suporta dois tipos de comandos de seleção: if e switch. Além disso, o operador é uma alter-
nativa ao if em certas circunstâncias.
                if
                A forma geral da sentença if é
                if (expressão)comando;
                else comando;
onde comando pode ser um único comando, um bloco de comandos ou nada (no caso de comandos
vazios). A cláusula else é opcional.


                if(funcionario[pos].cargo == 1)

                 {
                         funcionario[pos].cargo=15.00;
                         funcionario[pos].perc_bonif=0.25;
                         printf("ntAUXILIAR!nn");
                 }

                     if(funcionario[pos].cargo == 2)

                     {
                         funcionario[pos].cargo=35.00;
                         funcionario[pos].perc_bonif=0.15;

                                                       7
printf("ntSUPERVISOR!nn");
              }

                  if(funcionario[pos].cargo == 3)

              {
                    funcionario[pos].cargo=60.00;
                    funcionario[pos].perc_bonif=0.10;
                    printf("ntGERNETE!nn");
              }

             ifs aninhados

     Um if aninhado é um comando if que é o objeto de outro if ou else, ifs aninhados são muito
comuns em programação. Em c, um comando else sempre se refere ao comando if mais próximo,
que está dentro de mesmo bloco do else e não está associado a outro if.
             if(funcionario[cont].matricula == cod)
                     {
                       if (funcionario[cont].vazio==1)
                       {
                 printf("n--------------------------------------------------------------------------------
             nn");
                          printf("nFUNCIONARIO ENCONTRADO n");
                 printf("n--------------------------------------------------------------------------------
             nn");
                          printf("t MATRICULA : %dn",funcionario[cont].matricula);
                          printf("t NOME             : %sn",funcionario[cont].nome);
                          printf("t CELULAR              : %ldn",funcionario[cont].cel);
                          printf("t TELEFONE : %ldn",funcionario[cont].tel);
                          printf("t RG            : %ldn",funcionario[cont].rg);
                          printf("t CPF            : %sn",funcionario[cont].cpf);

A escada if-else-if

      Uma construção comum em programação é a forma if-else-if, algumas vezes chamada de es-
cada if-else-if devido a sua aparência. A sua forma geral é:

             If(expressão)comando;
               else
                 if(expressão)comando;
                   else
                        if(expressão)comando;
                        .
                        .
                        .
                          else comando;

             if(funcionario[cont].cargo==15)
                     {
                       printf(" AUXILIARt");
                     }
                                                      8
else if(funcionario[cont].cargo==35)
                     {
                        printf(" SUPERVISORt");
                     }
                     else
                     {
                        printf(" GERENTEt");
                     }




2.2   Estrutura de Repetição
O comando for
     O comando for é uma estrutura de repetição que repete a execução de uma dada sequência de
comandos um número de vezes que pode ser determinado pelo próprio programa, devendo ser es-
crito com a seguinte sintaxe:
                         for (inicializações; condições de manutenção da repetição; incrementos)
                     {
                     sequência de comandos
                     }

                     for(cont=0; cont<raiz; cont++)
                          {
                            printf("n %dt       %st",funcionario[cont].matricula, funciona-
                 rio[cont].nome);
                            if(funcionario[cont].cargo==15)
                            {
                               printf(" AUXILIARt");
                            }
                            else if(funcionario[cont].cargo==35)
                            {
                               printf(" SUPERVISORt");
                            }
                            else
                            {
                               printf(" GERENTEt");
                            }
                            printf("R$%.2f                                           R$%.2ft
                 R$%.2f",funcionario[cont].salario,funcionario[cont].bonif,funcionario[cont].s
                 alario+funcionario[cont].bonif);
                          }


O comando while
      O segundo laço disponível em C é o laço while. A sua forma geral é
                   while (Expressão)

                                                   9
{Sequência de comandos}
       Onde a sequência de comandos é um conjunto vazio, um comando simples ou um bloco de
comandos. A condição pode ser qualquer expressão, e verdadeiro é qualquer valor não-zero. O
laço se repete se a condição for verdadeira.
                    int cont=0;
                      while (cont<=100)
                      {
                          if (funcionario[cont].matricula==matricula)
                               return(0);
                          cont++;
                      }
                      return(1);


O comando do while
       Como dissemos na seção anterior, o número de execuções da sequência de comandos associa-
da a um comando while pode ser zero. Há situações onde é importante se garantir a execução de
uma sequência de comandos pelo menos uma vez. Uma situação onde isto é importante é a verifica-
ção da consistência dos dados de entrada. Esta ação consiste em se dotar o programa de recursos
para recusar dados incompatíveis com a entrada do programa, só "recebendo" dados que satisfaçam
às especificações (lógicas ou estabelecidas) dos dados de entrada. Nesse programa será exibida a
validação das opções do menu.
                     do    {
                          scanf("%d",&opcao);
                          system("cls");
                          if(opcao<2 || opcao>2)
                               printf("nnDIGITE [2] PARA VOLTAR AO MENU PRINCIPAL: ");
                      }    while(opcao<2 || opcao>2);

2.3    Registros e Struct

       Um registro (= record) é uma coleção de várias variáveis, possivelmente de tipos diferentes.
Na linguagem C, registros são conhecidos como structs (abreviatura de structures).

O exemplo abaixo declara um registro x com três campos (ou membros) inteiros:
      struct {
         int dia;

                                                   10
int mes;
         int ano;
      } x;

       A estrutura do programa deste projeto foi exemplificada em imagem um pouco mais acima,
porém aqui será apresentado código.
       struct dados_funcionario
       {
           int matricula,cargo;
           int vazio;
           char nome[50];
           unsigned long int rg;
           char cpf[12];
           unsigned long int cel,tel;
           float horas_trab,horas_ext,salario,bonif;
           float perc_bonif;
       } funcionario[100];




2.4    Funções

       Um programa em C pode (e deve) ser escrito como um conjunto de funções que são executa-
das a partir da execução de uma função denominada main (). Cada função pode conter declarações
de variáveis, instruções, ativações de funções do sistema e de outras funções definidas pelo progra-
mador. Naturalmente, o objetivo de uma função deve ser a realização de alguma "sub-tarefa" espe-
cífica da tarefa que o programa pretende realizar. Aqui a função verifica_mat, responsável por veri-
ficar se a matricula do funcionário já existe ou não no sistema;

       int verifica_mat(int matricula)
       {
          int cont=0;
          while (cont<=100)
          {
             if (funcionario[cont].matricula==matricula)
                return(0);
             cont++;
          }
          return(1);
       }



                                                  11
2.5   Manipulação de Arquivos
       2.5.1 Abrindo e Fechando um Arquivo


       O sistema de entrada e saída do ANSI C é composto por uma série de funções, cu-
jos protótipos estão reunidos em stdio.h . Todas estas funções trabalham com o conceito
de "ponteiro de arquivo". Este não é um tipo propriamente dito, mas uma definição usando
o comando typedef. Esta definição também está no arquivo stdio.h. Podemos declarar
um ponteiro de arquivo da seguinte maneira:
FILE *p;
p será então um ponteiro para um arquivo. É usando este tipo de ponteiro que vamos po-
der manipular arquivos no C.
       2.5.1.1          - fopen
       Esta é a função de abertura de arquivos. Seu protótipo é:
              FILE *fopen (char *nome_do_arquivo,char *modo);
       O nome_do_arquivo determina qual arquivo deverá ser aberto. Este nome deve ser
válido no sistema operacional que estiver sendo utilizado. O modo de abertura diz à fun-
ção fopen() que tipo de uso você vai fazer do arquivo.
      Aqui a função carregar, responsável por carregar e abrir os arquivos para serem lidos e para
que possa ser acrescentados mais dados.
      void carregar(void)
      {
        FILE *fp;
        int i;

        if ((fp=fopen("cadastro.b", "rb"))==NULL)
        {
           printf("O arquivo nao pode ser aberto.n");
           return;
        }
        for (i=0; i<100; i++)
        {
           if (fread(&funcionario[i], sizeof(struct dados_funcionario), 1, fp)!=1)
           {
              if (feof(fp))
                 break;
              printf("Erro de leitura no arquivo.n");
           }
        }
        raiz=i-1;
        fclose(fp);
        printf("n---------------------------------------------------------------------n");
        printf("Dados carregados com sucesso!n");
        //printf("Melhor visualizado em tela cheia.n");
        printf("n---------------------------------------------------------------------n");
        system("pause");

                                                       12
system("cls");
         }


 3 Desenvolvimento

         O programa inicia-se após a inclusão das bibliotecas (os includes), com a declaração da
estrutura a ser utilizado no programa, dos protótipos das funções implementadas, tais como menu,
cadastrar, salvar, e relatório dentre outras, em seguida houve a declaração de variáveis globais, a
variável do tipo estruct foi declarada como funcionário.
         Após a função principal (main) foi implementada a função menu, cuja a finalidade é retornar
a tela principal do programa, possibilitando assim, que o usuário possa escolher uma das opções
oferecidas, ou seja, cadastrar um novo funcionário, pesquisar um registro já existente, bem como
exibir um relatório de todos os cadastros já efetuados, através da opção relatório.

Cadastrar
         A função cadastro inicia com a verificação da posição dos cadastros, para evitar a repetição
de código (matricula), mas isso não é mostrado ao usuário, e em seguida uma solicitação para que o
usuário insira os dados do funcionário a ser cadastrado.
             Todos os dados são armazenados na estrutura, para tal, fez-se o uso das funções scanf, e
gets, quando é solicitado para que o usuário insira os dados do funcionário, é apresentado um menu
com as opções do tipo de funcionário que venha a ser o mesmo, se é um auxiliar, um supervisor ou
um gerente para que se possa calcular seu salario e sua bonificação.

Pesquisar Código e Pesquisar Nome
             Temos ainda duas funções de pesquisa, uma pesquisa pelo código, onde compara primeiro
se existe cadastros no sistema de depois se o código ou matricula solicitado na pesquisa é igual ao
mesmo já armazenado anteriormente, se for ele mostra se não exibe uma mensagem de não encon-
trado.
             A outra pesquisa pelo nome, função idêntica a primeira a diferença é que compara o nome
ao invés do código.
Relatório
             O Relatório exibe em tela um relatório com os principais dados dos funcionários cadastra-
dos, a função compara se têm dados cadastrados ele mostra se não tem exibe uma mensagem de
“Não existe dados no sistema”.




                                                      13
Salvar e Carregar
       Com as funções salvar e carregar, os dados do sistema são gravados em disco, e quando
solicitados pelo usuário os mesmo são exibidos pelo sistema, para que possa pesquisar dados já
existente e até incluir novos dados, estrutura FILE, definida em stdio.h, que contem informações
usadas para processar o arquivo, a declaração do ponteiro *fp, para a estrutura FILE, seguida pelo
condicional if para verificar se há dados na estrutura, bem como para verificar se o arquivo existe,
ao ponteiro de arquivo *fp é atribuído um ponteiro para a estrutura FILE do arquivo aberto com
fopen. A função fopen exige dois argumentos: um nome de arquivo e um modo de abertura de ar-
quivo. O modo de abertura de arquivo "rb" indica que o arquivo deve ser aberto para gravação.
      Se o arquivo não existir e for aberto para gravação, fopen cria o arquivo. Se um arquivo exis-
tente for aberto para gravação, os dados são adicionados (gravados no final “wb”), o if é usada para
determinar se o ponteiro de arquivo *fp é NULL (i.e., o arquivo não está aberto). Se ele for NULL,
é impressa uma mensagem de erro e o programa é encerrado. Caso contrário, a entrada é processada
e gravada no arquivo.
        A função fwrite grava um bloco (número específico de bytes) de dados em um arquivo. Em
nosso programa, a instrução:
        (fwrite(&funcionario[i], sizeof(struct dados_funcionario), 1, fp)!=1),
faz com que a estrutura funcionario de tamanho sizeof (struct dados_funcionario) seja gravada no
arquivo apontado por fp. O operador de sizeof retorna o tamanho em bytes do objeto contido entre
parênteses (nesse caso dados_funcionario).
        A função fclose é usada para fechar o arquivo, liberando recursos (memória). Os dados es-
tão efetivamente gravados em disco.




3.1   Subseção de exemplo (se houver)
Subseção 1 de exemplo (se houver)




                                                14
4 Conclusão

        Em virtude dos aspectos apresentados, durante o presente trabalho pode-se afirmar que
apesar das dificuldades encontradas no desenvolvimento do mesmo, devido à complexidade do con-
teúdo e pouco tempo de estudo, sua realização foi de fundamental importância para a ampliação do
ensino-aprendizagem, pois com o avanço na área computacional, as linguagens de programação têm
se desenvolvido e se expandido em diferentes setores, portanto mesmo com alguns pontos ainda por
explorar a concretização deste foi de grande relevância para o desenvolvimento do raciocínio e am-
pliação dos conhecimentos sobre as linguagens de programação C, até então quase que desconheci-
das por parte dos acadêmicos, acredita-se que a elaboração e realização do mesmo teve um imensu-
rável valor, pois os conhecimentos poderão ser utilizados na criação de programas para serem
usados em diversas áreas, mas o principal de tudo é a compreensão dos conceitos de linguagem de
programação para que quando do uso de outra linguagem já se tenha uma base de algoritmo.




                                               15
5 Referências Bibliográficas

[1]     Schildt, Herbert ; (tradução e revisão técnica) C complete e total – 3ª edição revista e
        atualizada, Robertos Carlos Mayer; São Paulo: Makron Books, 1996.


[2]     Jamsa, Kris Ph.D/ Klander, Lars – Programando em C/C++, A Bíblia - Tradução e
        revisão técnica por Jeremias René D. pereira dos Santos, São Paulo - MAKRON Bo-
        oks, 1999.

[3]     Evaristo, Jaime: Apostila “Aprendendo a Progamar, Programando na Linguagem
        C para iniciantes”. Terceira Edição-Revista/Ampliada – Edição digital.

[4]     Disponível em <http://www.ime.usp.br/~pf/algoritmos/aulas/stru.html> acessado em
        Nov. 2011.

[5]     Disponivel                                                                 em
        <http://www.ime.usp.br/~elo/IntroducaoComputacao/Manipulacao%20de%20arquivo.h
        tm.




                                            16

Mais conteúdo relacionado

Mais procurados

Cj027168 segurança scm mapas estratégicos
Cj027168 segurança scm mapas estratégicosCj027168 segurança scm mapas estratégicos
Cj027168 segurança scm mapas estratégicosvalneide
 
Linguagem de Programação Comercial
Linguagem de Programação ComercialLinguagem de Programação Comercial
Linguagem de Programação ComercialTathiana Machado
 
Quadrante de Acesso
Quadrante de AcessoQuadrante de Acesso
Quadrante de AcessoVinny
 
Quadrante de acesso
Quadrante de acessoQuadrante de acesso
Quadrante de acessoVinny
 
Apostila programação "pascalzim"
Apostila programação "pascalzim"Apostila programação "pascalzim"
Apostila programação "pascalzim"deniscody
 

Mais procurados (10)

Ftool
FtoolFtool
Ftool
 
081112 manut mont
081112 manut mont081112 manut mont
081112 manut mont
 
Cj027168 segurança scm mapas estratégicos
Cj027168 segurança scm mapas estratégicosCj027168 segurança scm mapas estratégicos
Cj027168 segurança scm mapas estratégicos
 
Tcc final acia 2 americana
Tcc final acia 2 americanaTcc final acia 2 americana
Tcc final acia 2 americana
 
2009 fumec souza_e_monteiro
2009 fumec souza_e_monteiro2009 fumec souza_e_monteiro
2009 fumec souza_e_monteiro
 
Linguagem de Programação Comercial
Linguagem de Programação ComercialLinguagem de Programação Comercial
Linguagem de Programação Comercial
 
Quadrante de Acesso
Quadrante de AcessoQuadrante de Acesso
Quadrante de Acesso
 
Quadrante de acesso
Quadrante de acessoQuadrante de acesso
Quadrante de acesso
 
Relatório de estágio - TÉC. EM INFORMÁTICA
Relatório de estágio - TÉC. EM INFORMÁTICARelatório de estágio - TÉC. EM INFORMÁTICA
Relatório de estágio - TÉC. EM INFORMÁTICA
 
Apostila programação "pascalzim"
Apostila programação "pascalzim"Apostila programação "pascalzim"
Apostila programação "pascalzim"
 

Destaque

Estrutura de linguagem C++
Estrutura de linguagem C++Estrutura de linguagem C++
Estrutura de linguagem C++Verônica Veiga
 
Estruturas de dados dinâmicos em linguagem C
Estruturas de dados dinâmicos em linguagem CEstruturas de dados dinâmicos em linguagem C
Estruturas de dados dinâmicos em linguagem Cpjclima
 
Aula6 - Linguagem C
Aula6 - Linguagem CAula6 - Linguagem C
Aula6 - Linguagem Capolllorj
 
Coletanea de-exercicios-resolvidos-em-liguagem-c
Coletanea de-exercicios-resolvidos-em-liguagem-cColetanea de-exercicios-resolvidos-em-liguagem-c
Coletanea de-exercicios-resolvidos-em-liguagem-cricard0606
 
Introdução a Linguagem de Programação C
Introdução a Linguagem de Programação CIntrodução a Linguagem de Programação C
Introdução a Linguagem de Programação CGercélia Ramos
 
Programação em C para Arduino
Programação em C para ArduinoProgramação em C para Arduino
Programação em C para ArduinoRodrigo Rosa
 
Những câu chuyện thành công
Những câu chuyện thành côngNhững câu chuyện thành công
Những câu chuyện thành côngĐình Tuấn Phạm
 
Bundesliga
BundesligaBundesliga
BundesligaGIA VER
 
Capítulo VI. El Paraíso de la Miseria
Capítulo VI. El Paraíso de la MiseriaCapítulo VI. El Paraíso de la Miseria
Capítulo VI. El Paraíso de la MiseriaSiulManipura
 
Movimentos ArtíSticos De Vanguarda
Movimentos ArtíSticos De VanguardaMovimentos ArtíSticos De Vanguarda
Movimentos ArtíSticos De Vanguardarestauracao
 
Declaracion de Santiago Cometto
Declaracion de Santiago ComettoDeclaracion de Santiago Cometto
Declaracion de Santiago ComettoCaso Belsunce
 
Studies on aluminium silicon eutectic alloy casting and design approach of it...
Studies on aluminium silicon eutectic alloy casting and design approach of it...Studies on aluminium silicon eutectic alloy casting and design approach of it...
Studies on aluminium silicon eutectic alloy casting and design approach of it...IAEME Publication
 
Fiendish
FiendishFiendish
FiendishGIA VER
 

Destaque (20)

Estrutura de linguagem C++
Estrutura de linguagem C++Estrutura de linguagem C++
Estrutura de linguagem C++
 
Introducao algoritmos
Introducao algoritmosIntroducao algoritmos
Introducao algoritmos
 
Estruturas de dados dinâmicos em linguagem C
Estruturas de dados dinâmicos em linguagem CEstruturas de dados dinâmicos em linguagem C
Estruturas de dados dinâmicos em linguagem C
 
Aula6 - Linguagem C
Aula6 - Linguagem CAula6 - Linguagem C
Aula6 - Linguagem C
 
Coletanea de-exercicios-resolvidos-em-liguagem-c
Coletanea de-exercicios-resolvidos-em-liguagem-cColetanea de-exercicios-resolvidos-em-liguagem-c
Coletanea de-exercicios-resolvidos-em-liguagem-c
 
Introdução a Linguagem de Programação C
Introdução a Linguagem de Programação CIntrodução a Linguagem de Programação C
Introdução a Linguagem de Programação C
 
Programação em C para Arduino
Programação em C para ArduinoProgramação em C para Arduino
Programação em C para Arduino
 
Những câu chuyện thành công
Những câu chuyện thành côngNhững câu chuyện thành công
Những câu chuyện thành công
 
Bundesliga
BundesligaBundesliga
Bundesliga
 
Capítulo VI. El Paraíso de la Miseria
Capítulo VI. El Paraíso de la MiseriaCapítulo VI. El Paraíso de la Miseria
Capítulo VI. El Paraíso de la Miseria
 
Sharks
SharksSharks
Sharks
 
Escroto agudo
Escroto agudoEscroto agudo
Escroto agudo
 
Anfetaminas
AnfetaminasAnfetaminas
Anfetaminas
 
Tutorial Criando Menu
Tutorial   Criando MenuTutorial   Criando Menu
Tutorial Criando Menu
 
T.damodaran
T.damodaranT.damodaran
T.damodaran
 
Movimentos ArtíSticos De Vanguarda
Movimentos ArtíSticos De VanguardaMovimentos ArtíSticos De Vanguarda
Movimentos ArtíSticos De Vanguarda
 
Declaracion de Santiago Cometto
Declaracion de Santiago ComettoDeclaracion de Santiago Cometto
Declaracion de Santiago Cometto
 
Studies on aluminium silicon eutectic alloy casting and design approach of it...
Studies on aluminium silicon eutectic alloy casting and design approach of it...Studies on aluminium silicon eutectic alloy casting and design approach of it...
Studies on aluminium silicon eutectic alloy casting and design approach of it...
 
Presentac[1][1]..
Presentac[1][1]..Presentac[1][1]..
Presentac[1][1]..
 
Fiendish
FiendishFiendish
Fiendish
 

Semelhante a Bonificação natalina abc

Artigo do microsoft mathematic
Artigo do microsoft mathematicArtigo do microsoft mathematic
Artigo do microsoft mathematicDiomedes Manoel
 
Relatorio de estagio tecnico em informatica
Relatorio de estagio tecnico em informaticaRelatorio de estagio tecnico em informatica
Relatorio de estagio tecnico em informaticaLucianaFerreira163
 
PLANO DE PROJETO DE SOFTWARE para produtos da Lacertae SW
PLANO DE PROJETO DE SOFTWARE para produtos da Lacertae SWPLANO DE PROJETO DE SOFTWARE para produtos da Lacertae SW
PLANO DE PROJETO DE SOFTWARE para produtos da Lacertae SWInstituto Federal de Sergipe
 
Plano de Projeto de Software
Plano de Projeto de SoftwarePlano de Projeto de Software
Plano de Projeto de SoftwareMatheus Mendonça
 
Apostila algorítimos
Apostila algorítimosApostila algorítimos
Apostila algorítimosLuis Luisao
 
Apostila algorítimos
Apostila algorítimosApostila algorítimos
Apostila algorítimosMarcos Nori
 
Exercise Planning - Uma ferramenta de apoio ao meio educacional
Exercise Planning - Uma ferramenta de apoio ao meio educacionalExercise Planning - Uma ferramenta de apoio ao meio educacional
Exercise Planning - Uma ferramenta de apoio ao meio educacionalMarcos Pessoa
 
E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...
E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...
E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...Paulo Steinhauser
 
E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...
E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...
E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...Paulo Steinhauser
 
Desenvolvimento de ferramenta para automação de tarefas
Desenvolvimento de ferramenta para automação de tarefasDesenvolvimento de ferramenta para automação de tarefas
Desenvolvimento de ferramenta para automação de tarefasEverton V. Tavares
 
Projeto de sw revisado
Projeto de sw revisadoProjeto de sw revisado
Projeto de sw revisadoJorge Barreto
 
Apostila lógica de programação
Apostila lógica de programaçãoApostila lógica de programação
Apostila lógica de programaçãoMarcos Nori
 
Plano de projeto de software
Plano de projeto de softwarePlano de projeto de software
Plano de projeto de softwareSigelman Araujo
 
COCOMO E COCOMO II
COCOMO E COCOMO IICOCOMO E COCOMO II
COCOMO E COCOMO IIIsraelCunha
 
387555062-analise-sistemas-pdf.pdf
387555062-analise-sistemas-pdf.pdf387555062-analise-sistemas-pdf.pdf
387555062-analise-sistemas-pdf.pdfNickMartinsgaspar
 
Plano de Projeto de Software para produtos da Lacertae SW
Plano de Projeto de Software para produtos da Lacertae SWPlano de Projeto de Software para produtos da Lacertae SW
Plano de Projeto de Software para produtos da Lacertae SWrafahreis
 
Projeto airsoftware emca 2010 - centro paula souza - taubaté,sp
Projeto airsoftware   emca 2010 - centro paula souza - taubaté,spProjeto airsoftware   emca 2010 - centro paula souza - taubaté,sp
Projeto airsoftware emca 2010 - centro paula souza - taubaté,spCaique Guilherme Faria Dias
 

Semelhante a Bonificação natalina abc (20)

Artigo do microsoft mathematic
Artigo do microsoft mathematicArtigo do microsoft mathematic
Artigo do microsoft mathematic
 
Relatorio de estagio tecnico em informatica
Relatorio de estagio tecnico em informaticaRelatorio de estagio tecnico em informatica
Relatorio de estagio tecnico em informatica
 
PLANO DE PROJETO DE SOFTWARE para produtos da Lacertae SW
PLANO DE PROJETO DE SOFTWARE para produtos da Lacertae SWPLANO DE PROJETO DE SOFTWARE para produtos da Lacertae SW
PLANO DE PROJETO DE SOFTWARE para produtos da Lacertae SW
 
Plano de Projeto de Software
Plano de Projeto de SoftwarePlano de Projeto de Software
Plano de Projeto de Software
 
Algorítimos
AlgorítimosAlgorítimos
Algorítimos
 
Apostila algorítimos
Apostila algorítimosApostila algorítimos
Apostila algorítimos
 
Apostila algoritimos
Apostila algoritimosApostila algoritimos
Apostila algoritimos
 
Apostila algorítimos
Apostila algorítimosApostila algorítimos
Apostila algorítimos
 
Exercise Planning - Uma ferramenta de apoio ao meio educacional
Exercise Planning - Uma ferramenta de apoio ao meio educacionalExercise Planning - Uma ferramenta de apoio ao meio educacional
Exercise Planning - Uma ferramenta de apoio ao meio educacional
 
E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...
E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...
E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...
 
E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...
E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...
E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...
 
Aula 05
Aula 05Aula 05
Aula 05
 
Desenvolvimento de ferramenta para automação de tarefas
Desenvolvimento de ferramenta para automação de tarefasDesenvolvimento de ferramenta para automação de tarefas
Desenvolvimento de ferramenta para automação de tarefas
 
Projeto de sw revisado
Projeto de sw revisadoProjeto de sw revisado
Projeto de sw revisado
 
Apostila lógica de programação
Apostila lógica de programaçãoApostila lógica de programação
Apostila lógica de programação
 
Plano de projeto de software
Plano de projeto de softwarePlano de projeto de software
Plano de projeto de software
 
COCOMO E COCOMO II
COCOMO E COCOMO IICOCOMO E COCOMO II
COCOMO E COCOMO II
 
387555062-analise-sistemas-pdf.pdf
387555062-analise-sistemas-pdf.pdf387555062-analise-sistemas-pdf.pdf
387555062-analise-sistemas-pdf.pdf
 
Plano de Projeto de Software para produtos da Lacertae SW
Plano de Projeto de Software para produtos da Lacertae SWPlano de Projeto de Software para produtos da Lacertae SW
Plano de Projeto de Software para produtos da Lacertae SW
 
Projeto airsoftware emca 2010 - centro paula souza - taubaté,sp
Projeto airsoftware   emca 2010 - centro paula souza - taubaté,spProjeto airsoftware   emca 2010 - centro paula souza - taubaté,sp
Projeto airsoftware emca 2010 - centro paula souza - taubaté,sp
 

Bonificação natalina abc

  • 1. UNIVERSIDADE DO ESTADO DE MATO GROSSO/UNEMAT CAMPUS UNIVERSITÁRIO DO VALE DO TELES PIRES LICENCIATURA PLENA EM COMPUTAÇÃO ASPECTOS FORMAIS DA COMPUTAÇÃO E ALGORITMOS II - AFCAII Alexandro Nardeli Leite Douglas Silva da Rocha Everson Wolf Uanderson de Jesus Coelho Venerson Martins Rodrigues BONIFICAÇÃO NATALINA DA EMPRESA “ABC” Colíder - MT 2011
  • 2. ii Alexandro Nardeli Leite Douglas Silva da Rocha Everson Wolf Uanderson de Jesus Coelho Venerson Martins Rodrigues BONIFICAÇÃO NATALINA DA EMPRESA “ABC” Trabalho apresentado ao Cur- so de Licenciatura em compu- tação da Universidade Esta- dual de Mato Gros- so/UNEMAT, para a disciplina Aspectos Formais da Compu- tação e Algoritmos II – AFCA II. Professor: Maicon A. Sartin Colíder - MT 2011 ii
  • 3. Sumário 1 Introdução _________________________________________________________________ 4 1.1 EXEMPLO (CRIAÇÃO DE MENU) ___________________________________________________ 5 1.1.1 Structs ................................................................................................................................ 6 1.1.2 Justificativa ....................................................................................................................... 6 1.1.3 Objetivo Geral ................................................................................................................... 7 2 Referencial Teórico __________________________________________________________ 7 2.1 COMANDOS DE SELEÇÃO _________________________________________________________ 7 2.2 ESTRUTURA DE REPETIÇÃO _______________________________________________________ 9 2.3 REGISTROS E STRUCT ___________________________________________________________ 10 2.4 FUNÇÕES ____________________________________________________________________ 11 2.5 MANIPULAÇÃO DE ARQUIVOS_____________________________________________________ 12 2.5.1 Abrindo e Fechando um Arquivo .................................................................................... 12 3 Desenvolvimento ___________________________________________________________ 13 3.1 SUBSEÇÃO DE EXEMPLO (SE HOUVER) _____________________________________________ 14 Subseção 1 de exemplo (se houver) .......................................................................................... 14 4 Conclusão_________________________________________________________________ 15 5 Referências Bibliográficas ___________________________________________________ 16
  • 4. Lista de Figuras Figura 1 Funcionalidades Básicas do Sistema (Menu Principal) ...................................................................................... 5 2
  • 5. Lista de Tabelas Nenhuma entrada de índice de ilustrações foi encontrada. 3
  • 6. 1 Introdução É evidente, que há necessidade de que as unidades que compõem um computador se comuni- quem entre si para que qualquer usuário possa desempenhar um bom trabalho. Por exemplo, quando o usuário precisa buscar na memória um dado ou informação fornecida pelo teclado anteriormente, e que foi armazenado; quando precisar realizar uma operação aritmética, e assim por diante. Mas a verdade é que para que um computador tenha alguma utilidade, ele deve executar um programa que tenha uma finalidade específica, como: games (jogos) que são programas que têm como objetivo propiciar entretenimento aos seus usuários, o pacote Office que oferece uma grade de aplicativos como processador de texto, planilhas eletrônicas, programa para a criação e exibição de apresentação de slides, dentre outros. E ainda podemos citar os navegadores que são programas que conectam os usuários à rede mundial de computar, e os gravadores para gravar CD e DVD. Tudo tem um início e, no mundo dos programas não é diferente, para desenvolver aplicativos como esses citados acima, são necessários anos de estudos e pesquisas, sem mencionar que nesse período vários testes são executados. E aqui chegamos à importância da disciplina de Aspectos Formais da Computação e Algoritmos I e II, ou simplesmente Algoritmos I e II do curso de Licen- ciatura em Computação. Começa o desafio, é uma caminhada longa e que exige muito esforço e dedicação para quem quer chegar a ser um bom programador, esse é só mais um passo, o primeiro já foi dado, ao concluir a disciplina de Aspectos Formais da Computação e Algoritmos I, onde se estuda uma introdução à programação, mas precisamente uma introdução a programação em linguagem C. Agora é a vez de concluir a disciplina de Aspectos Formais da Computação e Algoritmos II. Só que não mais com uma pequena introdução, mas já com algumas noções mais complexas de programação em lingua- gem C. Essa disciplina é de importância fundamental para todo aquele que quer ser programador, e é desenvolvendo trabalhos como esse, que os acadêmicos despertam o interesse e desenvolvem suas habilidades na elaboração de algoritmos e posteriormente, a transcrição desses para uma linguagem de programação, transformando-o em um eficiente aplicativo. Neste trabalho foi proposto e desenvolvido um programa dentro do conteúdo que já foi estu- dado, que será utilizado por uma empresa para bonificação de seus funcionários. O programa chama-se Sistema de Bonificação Natalina da Empresa ABC. O programa é composto de quatro funcionalidades principais, sendo uma para cadastrar os funcionários, outra para pesquisar um funcionário pelo nome, outra para pesquisar um funcionário pelo código e uma para exibir um relatório como todos os dados processados pelo sistema. Ainda conta com uma funcionalidade para salvar todos os dados manipulados pelo sistema e também uma 4
  • 7. funcionalidade extra que é para sair do sistema. Figura 1 Funcionalidades Básicas do Sistema (Menu Principal) O desenvolvimento desse trabalho é de fundamental importância para aprimorar e adquirir conhecimentos, e tem como objetivo proporcionar os conceitos básicos relacionados com a criação de algoritmos e programas um pouco mais complexos, também despertar nos acadêmicos o interes- se pela programação estruturada e a importância da prática na perfeição de cada algoritmo. 1.1 Exemplo (criação de menu) Para se criar um menu usando um algoritmo em linguagem C, normalmente descrevemos as opções no código e depois usamos uma estrutura de seleção( chamada SWITCH), para separar cada opção escolhida pelo usuário do sistema porém, quando precisamos repetir o menu partimos para o uso de uma estrutura de repetição (nesses casos as mais utilizadas são WHILE e DO – WHILE), nesse algoritmo foi utilizado o WHILE no menu principal e o DO – WHILE nos submenus. Figura 2 Criação interna de um Menu 5
  • 8. 1.1.1 Structs Podemos fazer a declaração de todas as principais variáveis de um algoritmo usando uma única estrutura ou um registro, um registro ou estrutura é uma coleção de várias variáveis, possi- velmente de tipos diferentes. Na linguagem C, registros são conhecidos como structs (abreviatura de structures). Figura 3 Declaração de várias variáveis dentro de uma estrutura 1.1.2 Justificativa Devido às grandes transformações na Indústria, no Comércio e também na Educação, a cada dia muitos se perguntam: acompanharemos essas transformações? Conseguiremos administrar essas inovações tecnológicas? Pensando nesse referencial que as universidades cada vez mais inovam na criação e reorganização de cursos para a formação de novos cientistas e tecnólogos. Com isso destacam-se os cursos de formação de profissionais que atuarão principalmente no atendimento dos campos acima descritos, que são os cursos para formação de programadores. Pro- gramadores são profissionais que trabalham no desenvolvimento de softwares (programas e aplica- tivos), esses por sua vez são classificados de várias formas, podemos citar duas que são aplicativos comerciais e aplicativos educativos, dentre outros. O curso para o qual se destina esse trabalho é o Curso de Licenciatura em Computação, co- mo o nome já diz não é um curso para a formação de programadores e sim para a formação de pro- fessores, porém com uma avaliação positiva por todos aqueles que ingressam no curso com a inten- são de se tornar um programador, sendo esse o primeiro passo, com a conclusão do curso se faz necessário que o profissional procure uma especialização na área. O desenvolvimento desse trabalho é de grande importância, e serve como estímulo a todo aquele que querem continuar no caminho para ser futuros profissionais da programação. Desenvol- 6
  • 9. vendo assim a criatividade, o desejo de pesquisa e principalmente o raciocínio lógico, um dos prin- cipais requisitos para a conclusão do trabalho, bem como da disciplina de Algoritmos II. Uma vez que a prática desse algoritmo requer a utilização de todos os conceitos abordados até o presente momento e também uma pesquisa em busca de novos conceitos e aplicações dos conhecimentos adquiridos, testando assim o raciocínio de cada integrante do grupo. 1.1.3 Objetivo Geral Proporcionar ao acadêmico de forma clara e objetiva os conceitos, e o uso dos programas feitos em C, permitindo que a partir daí o mesmo possa desenvolver novas habilidades, apreender e compreender o conteúdo empregando na construção e execução de novos algoritmos. 2 Referencial Teórico Aqui estão descritos alguns dos principais conceitos utilizados para o desenvolvimento desse trabalho: 2.1 Comandos de Seleção C suporta dois tipos de comandos de seleção: if e switch. Além disso, o operador é uma alter- nativa ao if em certas circunstâncias. if A forma geral da sentença if é if (expressão)comando; else comando; onde comando pode ser um único comando, um bloco de comandos ou nada (no caso de comandos vazios). A cláusula else é opcional. if(funcionario[pos].cargo == 1) { funcionario[pos].cargo=15.00; funcionario[pos].perc_bonif=0.25; printf("ntAUXILIAR!nn"); } if(funcionario[pos].cargo == 2) { funcionario[pos].cargo=35.00; funcionario[pos].perc_bonif=0.15; 7
  • 10. printf("ntSUPERVISOR!nn"); } if(funcionario[pos].cargo == 3) { funcionario[pos].cargo=60.00; funcionario[pos].perc_bonif=0.10; printf("ntGERNETE!nn"); } ifs aninhados Um if aninhado é um comando if que é o objeto de outro if ou else, ifs aninhados são muito comuns em programação. Em c, um comando else sempre se refere ao comando if mais próximo, que está dentro de mesmo bloco do else e não está associado a outro if. if(funcionario[cont].matricula == cod) { if (funcionario[cont].vazio==1) { printf("n-------------------------------------------------------------------------------- nn"); printf("nFUNCIONARIO ENCONTRADO n"); printf("n-------------------------------------------------------------------------------- nn"); printf("t MATRICULA : %dn",funcionario[cont].matricula); printf("t NOME : %sn",funcionario[cont].nome); printf("t CELULAR : %ldn",funcionario[cont].cel); printf("t TELEFONE : %ldn",funcionario[cont].tel); printf("t RG : %ldn",funcionario[cont].rg); printf("t CPF : %sn",funcionario[cont].cpf); A escada if-else-if Uma construção comum em programação é a forma if-else-if, algumas vezes chamada de es- cada if-else-if devido a sua aparência. A sua forma geral é: If(expressão)comando; else if(expressão)comando; else if(expressão)comando; . . . else comando; if(funcionario[cont].cargo==15) { printf(" AUXILIARt"); } 8
  • 11. else if(funcionario[cont].cargo==35) { printf(" SUPERVISORt"); } else { printf(" GERENTEt"); } 2.2 Estrutura de Repetição O comando for O comando for é uma estrutura de repetição que repete a execução de uma dada sequência de comandos um número de vezes que pode ser determinado pelo próprio programa, devendo ser es- crito com a seguinte sintaxe: for (inicializações; condições de manutenção da repetição; incrementos) { sequência de comandos } for(cont=0; cont<raiz; cont++) { printf("n %dt %st",funcionario[cont].matricula, funciona- rio[cont].nome); if(funcionario[cont].cargo==15) { printf(" AUXILIARt"); } else if(funcionario[cont].cargo==35) { printf(" SUPERVISORt"); } else { printf(" GERENTEt"); } printf("R$%.2f R$%.2ft R$%.2f",funcionario[cont].salario,funcionario[cont].bonif,funcionario[cont].s alario+funcionario[cont].bonif); } O comando while O segundo laço disponível em C é o laço while. A sua forma geral é while (Expressão) 9
  • 12. {Sequência de comandos} Onde a sequência de comandos é um conjunto vazio, um comando simples ou um bloco de comandos. A condição pode ser qualquer expressão, e verdadeiro é qualquer valor não-zero. O laço se repete se a condição for verdadeira. int cont=0; while (cont<=100) { if (funcionario[cont].matricula==matricula) return(0); cont++; } return(1); O comando do while Como dissemos na seção anterior, o número de execuções da sequência de comandos associa- da a um comando while pode ser zero. Há situações onde é importante se garantir a execução de uma sequência de comandos pelo menos uma vez. Uma situação onde isto é importante é a verifica- ção da consistência dos dados de entrada. Esta ação consiste em se dotar o programa de recursos para recusar dados incompatíveis com a entrada do programa, só "recebendo" dados que satisfaçam às especificações (lógicas ou estabelecidas) dos dados de entrada. Nesse programa será exibida a validação das opções do menu. do { scanf("%d",&opcao); system("cls"); if(opcao<2 || opcao>2) printf("nnDIGITE [2] PARA VOLTAR AO MENU PRINCIPAL: "); } while(opcao<2 || opcao>2); 2.3 Registros e Struct Um registro (= record) é uma coleção de várias variáveis, possivelmente de tipos diferentes. Na linguagem C, registros são conhecidos como structs (abreviatura de structures). O exemplo abaixo declara um registro x com três campos (ou membros) inteiros: struct { int dia; 10
  • 13. int mes; int ano; } x; A estrutura do programa deste projeto foi exemplificada em imagem um pouco mais acima, porém aqui será apresentado código. struct dados_funcionario { int matricula,cargo; int vazio; char nome[50]; unsigned long int rg; char cpf[12]; unsigned long int cel,tel; float horas_trab,horas_ext,salario,bonif; float perc_bonif; } funcionario[100]; 2.4 Funções Um programa em C pode (e deve) ser escrito como um conjunto de funções que são executa- das a partir da execução de uma função denominada main (). Cada função pode conter declarações de variáveis, instruções, ativações de funções do sistema e de outras funções definidas pelo progra- mador. Naturalmente, o objetivo de uma função deve ser a realização de alguma "sub-tarefa" espe- cífica da tarefa que o programa pretende realizar. Aqui a função verifica_mat, responsável por veri- ficar se a matricula do funcionário já existe ou não no sistema; int verifica_mat(int matricula) { int cont=0; while (cont<=100) { if (funcionario[cont].matricula==matricula) return(0); cont++; } return(1); } 11
  • 14. 2.5 Manipulação de Arquivos 2.5.1 Abrindo e Fechando um Arquivo O sistema de entrada e saída do ANSI C é composto por uma série de funções, cu- jos protótipos estão reunidos em stdio.h . Todas estas funções trabalham com o conceito de "ponteiro de arquivo". Este não é um tipo propriamente dito, mas uma definição usando o comando typedef. Esta definição também está no arquivo stdio.h. Podemos declarar um ponteiro de arquivo da seguinte maneira: FILE *p; p será então um ponteiro para um arquivo. É usando este tipo de ponteiro que vamos po- der manipular arquivos no C. 2.5.1.1 - fopen Esta é a função de abertura de arquivos. Seu protótipo é: FILE *fopen (char *nome_do_arquivo,char *modo); O nome_do_arquivo determina qual arquivo deverá ser aberto. Este nome deve ser válido no sistema operacional que estiver sendo utilizado. O modo de abertura diz à fun- ção fopen() que tipo de uso você vai fazer do arquivo. Aqui a função carregar, responsável por carregar e abrir os arquivos para serem lidos e para que possa ser acrescentados mais dados. void carregar(void) { FILE *fp; int i; if ((fp=fopen("cadastro.b", "rb"))==NULL) { printf("O arquivo nao pode ser aberto.n"); return; } for (i=0; i<100; i++) { if (fread(&funcionario[i], sizeof(struct dados_funcionario), 1, fp)!=1) { if (feof(fp)) break; printf("Erro de leitura no arquivo.n"); } } raiz=i-1; fclose(fp); printf("n---------------------------------------------------------------------n"); printf("Dados carregados com sucesso!n"); //printf("Melhor visualizado em tela cheia.n"); printf("n---------------------------------------------------------------------n"); system("pause"); 12
  • 15. system("cls"); } 3 Desenvolvimento O programa inicia-se após a inclusão das bibliotecas (os includes), com a declaração da estrutura a ser utilizado no programa, dos protótipos das funções implementadas, tais como menu, cadastrar, salvar, e relatório dentre outras, em seguida houve a declaração de variáveis globais, a variável do tipo estruct foi declarada como funcionário. Após a função principal (main) foi implementada a função menu, cuja a finalidade é retornar a tela principal do programa, possibilitando assim, que o usuário possa escolher uma das opções oferecidas, ou seja, cadastrar um novo funcionário, pesquisar um registro já existente, bem como exibir um relatório de todos os cadastros já efetuados, através da opção relatório. Cadastrar A função cadastro inicia com a verificação da posição dos cadastros, para evitar a repetição de código (matricula), mas isso não é mostrado ao usuário, e em seguida uma solicitação para que o usuário insira os dados do funcionário a ser cadastrado. Todos os dados são armazenados na estrutura, para tal, fez-se o uso das funções scanf, e gets, quando é solicitado para que o usuário insira os dados do funcionário, é apresentado um menu com as opções do tipo de funcionário que venha a ser o mesmo, se é um auxiliar, um supervisor ou um gerente para que se possa calcular seu salario e sua bonificação. Pesquisar Código e Pesquisar Nome Temos ainda duas funções de pesquisa, uma pesquisa pelo código, onde compara primeiro se existe cadastros no sistema de depois se o código ou matricula solicitado na pesquisa é igual ao mesmo já armazenado anteriormente, se for ele mostra se não exibe uma mensagem de não encon- trado. A outra pesquisa pelo nome, função idêntica a primeira a diferença é que compara o nome ao invés do código. Relatório O Relatório exibe em tela um relatório com os principais dados dos funcionários cadastra- dos, a função compara se têm dados cadastrados ele mostra se não tem exibe uma mensagem de “Não existe dados no sistema”. 13
  • 16. Salvar e Carregar Com as funções salvar e carregar, os dados do sistema são gravados em disco, e quando solicitados pelo usuário os mesmo são exibidos pelo sistema, para que possa pesquisar dados já existente e até incluir novos dados, estrutura FILE, definida em stdio.h, que contem informações usadas para processar o arquivo, a declaração do ponteiro *fp, para a estrutura FILE, seguida pelo condicional if para verificar se há dados na estrutura, bem como para verificar se o arquivo existe, ao ponteiro de arquivo *fp é atribuído um ponteiro para a estrutura FILE do arquivo aberto com fopen. A função fopen exige dois argumentos: um nome de arquivo e um modo de abertura de ar- quivo. O modo de abertura de arquivo "rb" indica que o arquivo deve ser aberto para gravação. Se o arquivo não existir e for aberto para gravação, fopen cria o arquivo. Se um arquivo exis- tente for aberto para gravação, os dados são adicionados (gravados no final “wb”), o if é usada para determinar se o ponteiro de arquivo *fp é NULL (i.e., o arquivo não está aberto). Se ele for NULL, é impressa uma mensagem de erro e o programa é encerrado. Caso contrário, a entrada é processada e gravada no arquivo. A função fwrite grava um bloco (número específico de bytes) de dados em um arquivo. Em nosso programa, a instrução: (fwrite(&funcionario[i], sizeof(struct dados_funcionario), 1, fp)!=1), faz com que a estrutura funcionario de tamanho sizeof (struct dados_funcionario) seja gravada no arquivo apontado por fp. O operador de sizeof retorna o tamanho em bytes do objeto contido entre parênteses (nesse caso dados_funcionario). A função fclose é usada para fechar o arquivo, liberando recursos (memória). Os dados es- tão efetivamente gravados em disco. 3.1 Subseção de exemplo (se houver) Subseção 1 de exemplo (se houver) 14
  • 17. 4 Conclusão Em virtude dos aspectos apresentados, durante o presente trabalho pode-se afirmar que apesar das dificuldades encontradas no desenvolvimento do mesmo, devido à complexidade do con- teúdo e pouco tempo de estudo, sua realização foi de fundamental importância para a ampliação do ensino-aprendizagem, pois com o avanço na área computacional, as linguagens de programação têm se desenvolvido e se expandido em diferentes setores, portanto mesmo com alguns pontos ainda por explorar a concretização deste foi de grande relevância para o desenvolvimento do raciocínio e am- pliação dos conhecimentos sobre as linguagens de programação C, até então quase que desconheci- das por parte dos acadêmicos, acredita-se que a elaboração e realização do mesmo teve um imensu- rável valor, pois os conhecimentos poderão ser utilizados na criação de programas para serem usados em diversas áreas, mas o principal de tudo é a compreensão dos conceitos de linguagem de programação para que quando do uso de outra linguagem já se tenha uma base de algoritmo. 15
  • 18. 5 Referências Bibliográficas [1] Schildt, Herbert ; (tradução e revisão técnica) C complete e total – 3ª edição revista e atualizada, Robertos Carlos Mayer; São Paulo: Makron Books, 1996. [2] Jamsa, Kris Ph.D/ Klander, Lars – Programando em C/C++, A Bíblia - Tradução e revisão técnica por Jeremias René D. pereira dos Santos, São Paulo - MAKRON Bo- oks, 1999. [3] Evaristo, Jaime: Apostila “Aprendendo a Progamar, Programando na Linguagem C para iniciantes”. Terceira Edição-Revista/Ampliada – Edição digital. [4] Disponível em <http://www.ime.usp.br/~pf/algoritmos/aulas/stru.html> acessado em Nov. 2011. [5] Disponivel em <http://www.ime.usp.br/~elo/IntroducaoComputacao/Manipulacao%20de%20arquivo.h tm. 16