Buscar

PIM IV - Desenvolvimento de um sistema em linguagem C

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 3, do total de 24 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 6, do total de 24 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 9, do total de 24 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Prévia do material em texto

10
UNIP INTERATIVA
Projeto Integrado Multidisciplinar 
Cursos Superiores de Tecnologia
	
PIM IV – DESENVOLVIMENTO DE UM SISTEMA EM LINGUAGEM C
Polo UNIP Brasília-Taguatinga (DF)
2014
UNIP INTERATIVA 
Projeto Integrado Multidisciplinar 
Cursos Superiores de Tecnologia
PIM IV – DESENVOLVIMENTO DE UM SISTEMA EM LINGUAGEM C
Nome(s) completo(s) do(s) aluno(s): 
Juliana Pires de Abreu Batista	
RA 1444126
Curso: Análise e desenvolvimento de sistemas 
Semestre: 1º
Polo UNIP Brasília-Taguatinga (DF)
2014
RESUMO
A ideia central do trabalho é abordar os conceitos aprendidos em sala de aula e aplica-los passo a passo em um desenvolvimento de sistema em Linguagem C. Esta apresentado conceitos básicos das matérias: linguagens e técnicas de programação e engenharia de software, pertencentes ao curso de Análise e desenvolvimento de sistemas.
Apesar do conteúdo complexo e extenso tentei aplicar da melhor maneira a parte teórica que foi de grande utilidade para o desenvolvimento do programa em linguagem C, trata-se de um programa de estacionamento que contem a formação de bibliotecas e uma estrutura de funções necessárias para a execução das necessidades do cliente.
Palavras-chave: análise e desenvolvimento de sistemas; linguagem C; engenharia de software; linguagens e técnicas de programação
ABSTRACT
The gist of the study is to discuss the concepts learned in the classroom and apply them in a step by step system development in C. This language presented basic concepts of subjects: language and techniques of programming and software engineering , belonging to the course Analysis and development of systems .
Despite the complex and extensive content in the best way I tried to apply the theoretical part that was useful for the development of the C language program , it is a program that contains a lot of training and a library structure functions necessary to execution of customer needs .
Keywords: analysis and systems development ; C language; software engineering ; languages ​​and programming techniques 
SUMÁRIO
1. INTRODUÇÃO	6
1.1	Objetivo Geral	6
1.2	Objetivos específicos	6
2. Engenharia de software	7
2.1 Apresentação	7
2.2 Processos e produtos de software	8
2.2.1 Atividades do Processo de Software	8
2.3 Ciclo de vida de software	9
2.3.1 Modelos de ciclo de vida de software	10
Modelo cascata	11
Modelo espiral	11
Modelo incremental	12
3. linguagem e técnicas de programação	12
3.1 Apresentação	12
3.2 Lógica de programação	13
3.3 Tipos de algoritmos	13
3.3.1 Descrição Narrativa	13
3.3.2 Fluxograma	13
3.3.3 Pseudocódigo ou Portugol	14
3.4 Linguagem C	14
3.4.1 Regras da linguagem	14
4. Metodologia	15
4.1 Necessidades do sistema	15
5. Código do sistema em linguagem c	16
2.3 Requisitos de Hardware	23
CONCLUSÃO	24
REFERÊNCIAS BIBLIOGRÁFICAS	25
1. INTRODUÇÃO
A organização dos processos de trabalho na construção de um Software é de extrema importância para o sucesso de execução do mesmo. O analista deve verificar qual o designer mais adequado e as tomadas de decisões mais cabíveis para que o andamento do desenvolvimento da ferramenta não fique comprometido. 
O estudo da disciplina de Engenharia de Software auxilia em como o analista deve tomar tais decisões e conseguir trabalhar com a demanda imposta pelo cliente, para que o produto final seja entregue com qualidade e dentro do prazo determinado. E o estudo da disciplina de Técnicas e Linguagem da Programação colabora na tomada de decisões quanto a escolha da melhor linguagem a ser utilizada para o desenvolvimento do sistema, organização e sua estrutura.
Neste trabalho irei abordar o conhecimento adquirido através destas disciplinas aonde realizarei uma parte teórica, com os conhecimentos adquiridos em aulas e uma parte prática com o desenvolvimento de um sistema em Linguagem C. Este será um sistema de estacionamento que irá contemplar uma tabela de tarifação com um determinado valor para a primeira hora e outro valor para as demais horas. Além disso quando o cliente chegar no estacionamento o sistema irá emitir um recibo contendo a data e hora de entrada e a placa do veículo. Na hora da saída o sistema irá emitir um recibo com a data e hora da entrada, placa do carro, horário da saída e o valor a ser pago. O sistema também irá informar quando o estacionamento estiver cheio, não permitindo a entrada de carros até que uma vaga seja liberada. E por fim o sistema irá realizar a gestão do caixa, informando o fechamento do caixa com todas as movimentações do dia e o saldo do fechamento. Para o desenvolvimento da ferramenta o compilador adotado foi o DEV C++.
1.1 Objetivo Geral
Desenvolver um sistema de estacionamentos em linguagem C, abordando as técnicas teóricas e práticas abordadas nas aulas.
1.2 Objetivos específicos
· Realizar o levantamento de requisitos para o desenvolvimento do sistema;
· Analisar qual o melhor tipo de processo de software a ser empregado na demanda do projeto;
· Realizar a produção do sistema em linguagem C utilizando o compilador DEV C++ ;
· Verificar o funcionamento do sistema de acordo com a demanda da análise de requisitos.
2. Engenharia de software
2.1 Apresentação
A Engenharia de Software é uma área da computação voltada à especificação, desenvolvimento, manutenção de sistemas e gerenciamento de projetos que visa a organização, produtividade e qualidade do Software. 
Através das práticas adotadas na abordagem da Engenharia de Software os analistas podem observar e reunir as metodologias e ferramentas a serem utilizadas desde a percepção de um problema até o momento em que o sistema desenvolvido deixa de ser operacional, visando resolver problemas inerentes ao processo de desenvolvimento e ao produto de software.
Segundo CARVALHO e CHIOSSI (2001) 
a Engenharia de Software é uma disciplina que reúne metodologias, métodos e ferramentas a serem utilizados, desde a percepção do problema até o momento que sistema desenvolvido deixa de ser operacional, visando resolver problemas inerentes ao processo de desenvolvimento e ao produto de software
A Engenharia de Software cresce dia após dia, por meio de um somatório das experiências.
Suas principais características são:
· Processo (roteiro) dinâmico, integrado e inteligente de soluções tecnológicas;
· Adequação aos requisitos funcionais do negócio do cliente e seus respectivos procedimentos pertinentes;
· Efetivação de padrões de qualidade, produtividade e efetividade em suas atividades e produtos;
· Fundamentação da Tecnologia da informação disponível, viável, oportuna e personalizada; e
· Planejamento e gestão de atividades, recursos, custos e datas.
2.2 Processos e produtos de software
Um processo de software pode ser entendido como um conjunto estruturado de atividades exigidas para desenvolver um sistema de software. Os processos são os passos ou as atividades necessárias para a construção de um Software.
De acordo com SOMMERVILLE (2005) 
“O processo é um conjunto de atividades e resultados associados que produzem um produto de software”.
As fases de um processo de software são: 
· Especificação de requisitos;
· Projeto de Sistema;
· Programação (codificação); e
· Verificação e Integração (verificação).
Não existe uma sequência obrigatória de fases pois, o processo de software é muito mais interativo e cíclico do que a ideia de fases simples.
2.2.1 Atividades do Processo de Software
Em cada fase do Processo de Software são executadas as atividades básicas para que sejam atingidos os objetivos propostos.
Segundo Pressman (1997):
“Estas atividades constituem um conjunto mínimo para se obter um produto de software”. 
Podemos identificar as classificações como:
1. Especificação
· Engenharia de sistema;
· Análise de requisitos;
· Especificação de sistema.
2. Projeto
· Projeto arquitetural;
· Projeto de interface;
· Projeto detalhado.
3. Implementação
· Codificação
4. Validação
· Teste de unidade e módulo;
· Integração.
5. Manutenção e evolução
As atividades relacionadas a um processo desoftware estão diretamente vinculadas com a produção do software como produto final. 
2.3 Ciclo de vida de software
Geralmente o ciclo de vida de um software dura em média 5 anos, quando não sofre implementações. 
O ciclo de vida de um software abrange as fases:
· Concepção (nascimento do sistema);
· Construção (análise e programação);
· Implantação (testes e disponibilização aos clientes ou usuários);
· Implementação (pequenos ajustes);
· Maturidade e utilização plena (software sedimentado);
· Declínio (dificuldade de continuidade);
· Manutenção (tentativa de sobrevivência);
· Morte (descontinuidade do sistema).
Alguns sistemas como os de níveis operacionais não morrem (folha de pagamento, contabilidade, etc) pois, seu funcionamento é da mesma maneira há muito tempo e não deve mudar tão brevemente. Os que morrem de verdade são os sistemas que frequentemente tem sua tecnologia, tamanho e desempenho e outras características insatisfatórias.
2.3.1 Modelos de ciclo de vida de software
Existem diversos modelos de ciclo de vida, com características diferentes.
Modelo codifica-emenda
O modelo codifica-remenda parte de uma especificação incompleta, ou mesmo ausente, inicia–se a codificação do software, que por sua ve tende a gerar “algo” e o que foi gerado na maioria das vezes não é o que o cliente deseja e será alterado e consertado até obter um estágio que permita o seu uso. Nenhum processo é seguido nesta interação.
É possível que o uso deste modelo de ciclo de vida gere resultados aceitáveis para produtos pequenos e com equipes formadas por poucas pessoas, normalmente por um único desenvolvedor, mas certamente ele só gerará problemas em qualquer projeto envolvendo produtos que requeiram equipes maiores.
O aspecto “positivo” desse modelo é que não exige nenhum conhecimento técnico ou gerencial, basta iniciar o tema a ser abordado e trabalhar para gerar o produto final. É um modelo de alto risco, praticamente impossível de se gerenciar e torna-se impossível estabelecer qualquer estimativa de custo ou prazo.
Por falta de profissionais habilitados para o desenvolvimento de software este modelo é ainda o mais comumente utilizado. 
Modelo cascata
O modelo cascata ou modelo sequencial linear, sugere que os principais subprocessos relacionados ao desenvolvimento de software sejam executados em sequencia.
É um modelo mais rígido e administrativo o que ocasiona algumas falhas durante a sua execução. 
Para PRESSMAN (1997) destacam-se as falhas:
“projetos reais raramente seguem o fluxo sequencial, conforme sugerido pelo modelo. Isso pode causar grandes problemas quando temos mudanças em um projeto em andamento”.
“Em geral, é difícil para os clientes identificarem todos os requisitos explicitamente. Esse modelo exige isso e tem dificuldade em acomodar a incerteza natural que existe em grande parte dos projetos”.
“a primeira versão executável do produto estará disponível somente no fim do projeto. Erros grosseiros podem ser desastrosos e causar perda de praticamente todo o trabalho”. 
Por outro lado o modelo cascata é orientado para a documentação que acaba abrangendo mais do que arquivo e texto, inclui representações gráficas e até mesmo simulações. 
Modelo espiral
O modelo espiral desenvolve um produto a partir de pequenas versões incrementais, que começa por um modelo em papel e evolui para sistemas funcionais.
Figura 1: Modelo de ciclo de vida em espiral
O processo de desenvolvimento torna-se interativo pois possui quatro fases que se sucedem até que o objetivo final seja obtido. O espiral dá diversas voltas e estas são utilizadas para construir as partes do produto, assim permitindo a redução de riscos e enfoque maior no que é considerado mais importante, complexo e crítico no sistema.
Modelo incremental
É inspirado no modelo espiral porém, a grande diferença é que as versões parciais do produto são entregues aos clientes, para que sejam verificadas, validadas e utilizadas no ambiente operacional. Outra diferença é que o modelo incremental não é utilizado para a construção completa do produto e sim uma série de versões provisórias chamadas de protótipos.
O modelo incremental requer uma gerência sofisticada e uma arquitetura forte, para que não ocorra nenhum problema com o produto. Ele sofre os mesmos problemas do modelo em espiral, porém apresenta a vantagem dos requisitos serem definidos progressivamente.
3. linguagem e técnicas de programação
3.1 Apresentação
No nosso dia a dia, estamos rodeados de ações a serem executadas. Nós a realizamos normalmente, sem que haja um comando específico. Já na linguagem computacional o dispositivo para executar qualquer ação deve obedecer uma série de comandos já estruturados em sua arquitetura, estes são uma cadeia lógica chamados de Algoritmos.
3.2 Lógica de programação
Para que o computador possa realizar os processos é necessário que haja uma estrutura de como ele possa atingir o seu objetivo. Logo, a lógica da programação é uma automação dos processos.
3.3 Tipos de algoritmos
3.3.1 Descrição Narrativa
Como o próprio nome sugere a descrição narrativa é o ato de narrar o problema proposto por meio da linguagem utilizada no dia a dia. Para que seja aplicada a descrição narrativa não há a necessidade de aprender nenhuma técnica pois, ela é feita da forma que se é falada. Por outro lado esta linguagem acaba dando margem para vários erros pois, cada indivíduo pode interpretar de uma forma diferente o que foi escrito, assim dificultando a transição do algoritmo. 
3.3.2 Fluxograma
Para que seja feita a resolução do problema no fluxograma este deve ser demonstrado através de um conjunto de símbolos. O entendimento é simples, porem é necessário que o programador tenha conhecimento de todos os símbolos utilizados.
Figura 2: Principais símbolos de um fluxograma
3.3.3 Pseudocódigo ou Portugol
Sua estrutura é em português porem utiliza regras quanto a sua estrutura de formação e seu foco é a lógica, e não a rigidez sintática. Suas regras são um pouco mais simples do que as linguagens de programação. O entendimento da linguagem é simples e geralmente não ocorrem erros de compilação, porém para que haja sucesso absoluto o programador deve ter um bom conhecimento de pseudocódigo.
3.4 Linguagem C
Em 1932 Dennis Ritchie desenvolveu a linguagem C, no centro de pesquisas da Bell Laboratories. Sua primeira utilização foi a reescrita do Sistema Operacional UNIX. Em 1970 o UNIX foi liberado para as universidades o que garantiu o sucesso da linguagem em grandes proporções, assim permitindo que ao longo do tempo fossem aparecendo vários compiladores em linguagem C. 
A linguagem C ‘e considerada de médio nível e pertence a uma família de linguagens cuja as características são: modularidade, portabilidade, compilação separada, confiabilidade, regularidade, simplicidade e facilidade de uso e recursos de baixo nível.
3.4.1 Regras da linguagem
Apesar da linguagem C não ser uma linguagem muito complexa, ela ‘e bastante rígida em sua sintaxe.
Ela é baseada em várias funções, cujo as funções básicas já estão definidas nas bibliotecas-padrão da linguagem. A linguagem C é case sensitive, ou seja, as letras maiúsculas são diferentes das minúsculas. Além disso, todos os comandos são separados por (;).
A linguagem C também permite o uso de comentários que estarão presentes no texto entre “ / “ e “ */ “ o compilador irá ignorar tudo o que estiver escrito nestes espaços.
Existem palavras chaves que compõe a estrutura da linguagem C. Estas palavras não poderão ser utilizadas para dar nomes a variáveis, funções, rótulos e outros objetos. Pela ANSI, existem 32 palavras reservadas.
Figura 3: Palavras reservadas pelo padrão ANSI
4. Metodologia
Levantamento da análise de requisitos analisando todos os procedimentos que devem ser executados no software.
4.1 Necessidades do sistema
1. O sistema deverá contemplar uma tabela de tarifação com um determinado valor para a primeira hora e outro valor para as demais horas;
2. Quando o cliente entrar no estacionamento, o sistema deverá emitir um recibo com a datae a hora da entrada e a placa do veículo;
3. Quando o cliente retirar o veículo do estacionamento, o sistema deverá emitir um recibo com a data e a hora da entrada, a data e hora da saída, a placa do carro e o valor a ser pago;
4. O sistema deverá informar quando o estacionamento estiver cheio e não aceitar mais veículos até que uma vaga seja liberada;
5. Deverá realizar a gestão do caixa, informando no fechamento do caixa todas as movimentações do dia e o saldo do fechamento.
5. Código do sistema em linguagem c
include <stdio.h>
#include <conio.h>
void INICIALIZA();
void TARIFA();
void DATA_HORA();
void PLACA();
void VAGA();
void RECIBO();
void LISTAR_VEICULOS();
void CONTROLE_CAIXA();
struct
{
 char PLACA[7], RECIBO[25], VAGA[2], VEICULO[10];
 int TARIFA[10], DATA_HORA[15], CAIXA[20];
}
int NVEI=0; 
main()
{
 int OP;
 FILE* P;
 
 INICIALIZA();
 P=fopen("TARIFA.num", "r");
 fread(&CARRO, sizeof(CARRO), 1, P);
 fclose(P);
 do{
 printf("CONTROLE DE ESTACIONAMENTO\n\n");
 printf("1. informar tarifas\n2. cadastrar veiculos\n3. Controle do estacionamento\n"4. Informar data e hora de entrada\n"");
 printf("4. Consultar vagas\n5. Emitir recibo\n6. controle caixa\n7. Sair\n\nOpcao: ");
 scanf("%d", &OP);
 switch(OP)
 {
 case 1:
 {
 system("cls");
 TARIFAS();
 break;
 }
 case 2:
 {
 system("cls");
 DATA_HORA();
 break;
 }
 case 3:
 {
 system("cls");
 PLACA();
 break;
 }
 case 4:
 {
 system("cls");
 VAGAS();
 break;
 }
 case 5:
 {
 system("cls");
 RECIBO();
 break;
 }
 case 6:
 {
 system("cls");
 LISTAR_VEICULOS();
 break;
 }
 case 7:
					{
					system("cls");
					CONTROLE_CAIXA();	
		 break;
 }
 case 8:
 {
 break;	
 }
 default:
 {
 getch();
 system("cls");
 }
 }
 }while(OP!=7);
 getchar();
}
void INICIALIZA()
{
 int I;
 for(I=0; I<10; I++)
 TARIFA[2].DATA_HORA=77; 
}
//-----------------------------------------------------------------------------
void INSERIR(int I)
{
 char PL[7];
 int I2, TARIFA;
 FILE *P;
 
 puts("Digite o valor da tarifa: ");
 fflush(stdin);
 gets(PL);
 for(I2=0; I2<10; I2++)
 { 
 if(strcmp(PL, DATA E HORA DE ENTRADA)==0)
 {
 printf("\nAcesso liberado\n");
 INSERIR(I);
 }
 
 }
 
 puts("\nDigite o numero da vaga: ");
 fflush(stdin);
 gets(VAGA[I4]);
 
 puts("\nDigite o valor do recibo: ");
 fflush(stdin);
 gets(VALOR[I5].RECIBO);
 strlwr(VALOR[I5].RECIBO);
 VALOR[I5].RECIBO[8];
 puts("\nDigite o fechamento do caixa: ");
 fflush(stdin);
 gets(CAIXA[I7]);
 strlwr(CAIXA[I7]);
 CAIXA[I7].FECHAMENTO[0];
 CAIXA[I7].STATUS=1;
 P=fopen("FECHAR CAIXA.txt", "w");
 fwrite(&CAIXA, sizeof(CAIXA), 1, P);
 fclose(P);
 	getch();
 	system("cls");
 }
}
2.3 Requisitos de Hardware
· Processador 32 bits (x86) de 800 megahertz (MHz) ou 64 bits (x64) de 800 MHz
· 512 megabytes (MB) de memória do sistema
· Placa gráfica DirectX de classe 9
· 32 MB de memória gráfica
· Disco rígido de 20 gigabytes (GB) com 4 GB de espaço livre
CONCLUSÃO 
Para que um projeto seja bem elaborado há a necessidade de um equipe de profissionais com um bom conhecimento na área e um excelente gerente de projetos para que este defina os caminhos a serem seguidos no projeto. Estes caminhos envolvem o designer do sistema, o método do desenvolvimento e seu planejamento de prazos e orçamentário.
Os casos de usos tem de estar bem definidos para que os desenvolvedores possam realizar a programação o mais fiel possível, visando atender o mais rápido possível a necessidade do cliente.
Uma boa organização e conhecimento são os focos principais para que se haja uma boa equipe de desenvolvedores responsáveis e sucesso em suas conquistas.
REFERÊNCIAS BIBLIOGRÁFICAS
FERNANDES, A. A.; KUGLER, J. L. C. Gerência de Projetos de Sistema. Rio de Janeiro: LTC, 1989.
KOSCIANSKI, A.; SOARES, M. S. Qualidade de software. 2.ed. Rio de Janeiro. Novatec, 2007.
MENDES, João Ricardo B. Gerenciamento de projetos. Rio de Janeiro: Ciência Moderna, 2006.
SOMMERVILLE, I. Engenharia de Software. 6.ed. São Paulo: Addison Wesley, 2003.
PFLEEGER, S. L. Engenharia de Software. 2.ed. São Paulo: Pearson Education do Brasil, 2004.
DEITEL, P.; DEITEL, H. C: Como programar. 6.ed. São Paulo: Perarson Education do Brasil, 2011.

Materiais relacionados

Perguntas relacionadas

Materiais recentes

Perguntas Recentes