Your SlideShare is downloading. ×
Bonificação natalina abc
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

Bonificação natalina abc

320
views

Published on

Trabalho apresentado como Prática de Ensino da disciplina de AFCA II - UNEMT

Trabalho apresentado como Prática de Ensino da disciplina de AFCA II - UNEMT


1 Comment
0 Likes
Statistics
Notes
  • Be the first to like this

No Downloads
Views
Total Views
320
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
3
Comments
1
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. UNIVERSIDADE DO ESTADO DE MATO GROSSO/UNEMAT CAMPUS UNIVERSITÁRIO DO VALE DO TELES PIRES LICENCIATURA PLENA EM COMPUTAÇÃOASPECTOS FORMAIS DA COMPUTAÇÃO E ALGORITMOS II - AFCAII Alexandro Nardeli Leite Douglas Silva da Rocha Everson Wolf Uanderson de Jesus Coelho Venerson Martins RodriguesBONIFICAÇÃ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 RodriguesBONIFICAÇÃ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ário1 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 ................................................................................................................... 72 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 .................................................................................... 123 Desenvolvimento ___________________________________________________________ 13 3.1 SUBSEÇÃO DE EXEMPLO (SE HOUVER) _____________________________________________ 14 Subseção 1 de exemplo (se houver) .......................................................................................... 144 Conclusão_________________________________________________________________ 155 Referências Bibliográficas ___________________________________________________ 16
  • 4. Lista de FigurasFigura 1 Funcionalidades Básicas do Sistema (Menu Principal) ...................................................................................... 5 2
  • 5. Lista de TabelasNenhuma 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, quandoo 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 umprograma que tenha uma finalidade específica, como: games (jogos) que são programas que têmcomo objetivo propiciar entretenimento aos seus usuários, o pacote Office que oferece uma gradede aplicativos como processador de texto, planilhas eletrônicas, programa para a criação e exibiçãode apresentação de slides, dentre outros. E ainda podemos citar os navegadores que são programasque 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 aplicativoscomo esses citados acima, são necessários anos de estudos e pesquisas, sem mencionar que nesseperíodo vários testes são executados. E aqui chegamos à importância da disciplina de AspectosFormais 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 quemquer chegar a ser um bom programador, esse é só mais um passo, o primeiro já foi dado, ao concluira 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 deconcluir a disciplina de Aspectos Formais da Computação e Algoritmos II. Só que não mais comuma 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 suashabilidades na elaboração de algoritmos e posteriormente, a transcrição desses para uma linguagemde 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 osfuncionários, outra para pesquisar um funcionário pelo nome, outra para pesquisar um funcionáriopelo código e uma para exibir um relatório como todos os dados processados pelo sistema. Aindaconta 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 adquirirconhecimentos, e tem como objetivo proporcionar os conceitos básicos relacionados com a criaçãode 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 asopções no código e depois usamos uma estrutura de seleção( chamada SWITCH), para separar cadaopção escolhida pelo usuário do sistema porém, quando precisamos repetir o menu partimos para ouso 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 (abreviaturade structures). Figura 3 Declaração de várias variáveis dentro de uma estrutura1.1.2 Justificativa Devido às grandes transformações na Indústria, no Comércio e também na Educação, a cadadia muitos se perguntam: acompanharemos essas transformações? Conseguiremos administrar essasinovações tecnológicas? Pensando nesse referencial que as universidades cada vez mais inovam nacriaçã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 noatendimento 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 aplicativoscomerciais 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 faznecessário que o profissional procure uma especialização na área. O desenvolvimento desse trabalho é de grande importância, e serve como estímulo a todoaquele 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 vezque a prática desse algoritmo requer a utilização de todos os conceitos abordados até o presentemomento e também uma pesquisa em busca de novos conceitos e aplicações dos conhecimentosadquiridos, 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 programasfeitos em C, permitindo que a partir daí o mesmo possa desenvolver novas habilidades, apreender ecompreender 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 dessetrabalho: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 comandosvazios). 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 muitocomuns 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çãoO comando for O comando for é uma estrutura de repetição que repete a execução de uma dada sequência decomandos 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 decomandos. A condição pode ser qualquer expressão, e verdadeiro é qualquer valor não-zero. Olaç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 deuma 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 recursospara 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 avalidaçã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çõesde 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 conceitode "ponteiro de arquivo". Este não é um tipo propriamente dito, mas uma definição usandoo comando typedef. Esta definição também está no arquivo stdio.h. Podemos declararum 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 servá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 paraque 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 daestrutura 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, avariá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 é retornara tela principal do programa, possibilitando assim, que o usuário possa escolher uma das opçõesoferecidas, ou seja, cadastrar um novo funcionário, pesquisar um registro já existente, bem comoexibir 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çãode código (matricula), mas isso não é mostrado ao usuário, e em seguida uma solicitação para que ousuá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, egets, quando é solicitado para que o usuário insira os dados do funcionário, é apresentado um menucom as opções do tipo de funcionário que venha a ser o mesmo, se é um auxiliar, um supervisor ouum 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 primeirose existe cadastros no sistema de depois se o código ou matricula solicitado na pesquisa é igual aomesmo 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 nomeao 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 quandosolicitados 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çõesusadas para processar o arquivo, a declaração do ponteiro *fp, para a estrutura FILE, seguida pelocondicional 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 comfopen. 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 paradeterminar 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 é processadae gravada no arquivo. A função fwrite grava um bloco (número específico de bytes) de dados em um arquivo. Emnosso 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 noarquivo apontado por fp. O operador de sizeof retorna o tamanho em bytes do objeto contido entreparê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 queapesar 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 doensino-aprendizagem, pois com o avanço na área computacional, as linguagens de programação têmse desenvolvido e se expandido em diferentes setores, portanto mesmo com alguns pontos ainda porexplorar 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 seremusados em diversas áreas, mas o principal de tudo é a compreensão dos conceitos de linguagem deprogramaçã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