Mudanças entre as edições de "PR1022804 2020 1 AULA13"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
 
(40 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 3: Linha 3:
 
==Requisito para Formação das Equipes==
 
==Requisito para Formação das Equipes==
  
*Os alunos formarão 3 equipes com até 3 integrantes. Caso algum aluno fique de fora de uma das equipes, vai ser decidido, em comum acordo com os outros alunos das equipes, em qual ele ficará. A apresentação do trabalho final da unidade curricular (correspondente a avaliação prática 1 - AP1), será feita por um único representante por equipe, a ser escolhido ou sorteado pelo professor.
+
* Os alunos formarão equipes com até 2 integrantes. A apresentação do trabalho final da unidade curricular (correspondente a avaliação prática 1 - AP1) será feita pela dois alunos da equipe.
  
 
==Requisitos mínimos do programa C==
 
==Requisitos mínimos do programa C==
Linha 21: Linha 21:
 
;Exemplo da estrutura (automóveis):
 
;Exemplo da estrutura (automóveis):
  
  #define MAX 100;
+
  #define MAX 100
 
  struct TCarro {
 
  struct TCarro {
 
     char placa[9];
 
     char placa[9];
 
     char marca[20];
 
     char marca[20];
 
     char modelo[30];
 
     char modelo[30];
     float preco;
+
     char preco;
  } Automoveis[MAX];
+
  } Auto[MAX];
  
 
;Exemplo de arquivo (carros.dat):
 
;Exemplo de arquivo (carros.dat):
Linha 37: Linha 37:
 
  LTX-1234 VOLKS FUSCA 8790
 
  LTX-1234 VOLKS FUSCA 8790
  
==Apresentação==
+
{{collapse top|Exemplo de como ficaria o código:}}
 +
<syntaxhighlight lang=c>
 +
#include <stdio.h>
 +
#include <string.h>
 +
#define MAX 100
 +
 
 +
struct TCarro {
 +
  char placa[9];
 +
  char marca[20];
 +
  char modelo[30];
 +
  char preco[20];
 +
} Auto[MAX];
 +
 
 +
FILE *p_arq;
 +
int prox_registro;
 +
 
 +
void abrir_arquivo();
 +
void ler_arquivo();
 +
void cadastrar();
 +
void relatorio();
 +
void grava_arquivo();
 +
 
 +
 
 +
void main()
 +
{
 +
  abrir_arquivo();
 +
  int opcao;
 +
  while(1){
 +
printf("\nMENU PRINCIPAL\n\n");
 +
printf("1 - Cadastrar\n");
 +
printf("2 - Relatorio\n");
 +
printf("? - Sair ");
 +
scanf("%d",&opcao);
 +
 
 +
switch (opcao)
 +
{
 +
  case 1:
 +
    cadastrar();
 +
  break;
 +
 
 +
  case 2:
 +
    relatorio();
 +
  break;
 +
 
 +
  default:
 +
            grava_arquivo();
 +
    printf("\nBye!\n");
 +
    return;
 +
}
 +
  }
 +
}
 +
 
 +
void abrir_arquivo()
 +
{
 +
  int i;
 +
  int res;
 +
 
 +
  if ((p_arq=fopen("carros.txt", "r")) == NULL) {
 +
    if ((p_arq=fopen("carros.txt", "w")) == NULL) {
 +
    printf("Problemas na abertura do arquivo\n");
 +
    return;
 +
    }
 +
  }
 +
  ler_arquivo();
 +
}
 +
 
 +
void ler_arquivo()
 +
{
 +
  char buff[4][100];
 +
  int res,j,i=0;
 +
  while(1) {
 +
      if((res = fscanf(p_arq,"%s %s %s %s",buff[0],buff[1],buff[2],buff[3]))==EOF)
 +
      {       
 +
  printf("Fim de leitura\n");
 +
  break;
 +
      }
 +
    strcpy(Auto[i].placa,buff[0]);
 +
    strcpy(Auto[i].marca,buff[1]);
 +
    strcpy(Auto[i].modelo,buff[2]);
 +
    strcpy(Auto[i].preco,buff[3]);
 +
    i++;
 +
  }
 +
  prox_registro=i;
 +
  fclose(p_arq);
 +
}
  
#Apresentação: '''DD/MM/AAAA a DD/MM/AAAA'''.
+
void grava_arquivo()
#Tempo: 30min.
+
{
#Todos os integrantes devem estar presentes.
+
  int i, res;
#Um dos integrantes será escolhido ou sorteado para fazer a apresentação.
+
  if ((p_arq=fopen("carros.txt", "w")) == NULL) {
 +
    printf("\n\nErro: Problemas na abertura do arquivo.\n");
 +
    return;
 +
  }
  
=Avaliação=
+
  for (i=0; i<prox_registro;i++) {
 +
      if((res = fprintf(p_arq,"%s %s %s %s\n",Auto[i].placa,Auto[i].marca,Auto[i].modelo,Auto[i].preco))==EOF) {
 +
  printf("Erro\n");
 +
          break;
 +
      }
 +
  }
 +
  fclose(p_arq);
 +
}
  
#Cumprimento de todos os requisitos; (30%)
 
#Aparência e facilidade de acesso ao menu e as informações; (20%)
 
#Clareza na apresentação das funcionalidades; (30%)
 
#Entrega do código fonte devidamente comentado. (20%)
 
  
 +
void cadastrar()
 +
{
 +
  int i;
 +
  i=prox_registro;
 +
printf("\n\nCadastrar Automóvel:\n");
 +
printf("Placas: ");
 +
scanf("%s",Auto[i].placa);
 +
printf("\nMarca: ");
 +
scanf("%s",Auto[i].marca);
 +
printf("\nModelo: ");
 +
scanf("%s",Auto[i].modelo);
 +
printf("\nValor: ");
 +
scanf("%s",Auto[i].preco);
  
 +
  prox_registro=i+1;
 +
}
  
 +
void relatorio()
 +
{
 +
  printf("\nImprimir relatorio...\n\n");
 +
  for(int i=0;i<prox_registro;i++)
 +
      printf("%s %s %s %s\n",Auto[i].placa,Auto[i].marca,Auto[i].modelo,Auto[i].preco);
 +
  printf("\n================================================================");
 +
}
 +
</syntaxhighlight>
 +
{{collapse bottom}}
  
 +
==Apresentação==
  
==Equipe 1: Farmácia==
+
#Entrega: '''22/09/2020";
 +
#Videoaula: Seminário de 10 a 20min (link do drive ou youtube);
 +
#Toda a equipe deverá apresentar.
  
Implemente um programa em linguagem C que faça o controle de estoque simplificado de produtos de uma farmácia. O programa deverá ter necessariamente um menu onde se poderá fazer a escolha pelas opções disponíveis em loop contínuo, mas com opção de saída. Deverá ler de um arquivo de dados informações sobre os produtos (já cadastrados), poderá acrescentar novos produtos como: medicamentos , higiene e vitaminas, eliminar produtos, e buscar um produto específico pelo código. Deverá ainda ter as opções de ordenar e imprimir a lista na tela de todos os produtos. Também deverá gravar as alterações no mesmo arquivo de dados lido. Pra terminar, contar com uma opção de estatística dizendo qual a quantidade de produtos, o maior, o menor e o valor médio dos produtos cadastrados.
+
=Temas de Negócios=
  
===Alunos===
+
* Farmácia - <span style="color:red;"> Elsa Marina Bruckmann</span>
  
*
+
* Motos - <span style="color:red;"> João Antonio e Jośe Celso</span>
*
 
*
 
  
 +
* Padaria
  
===Apresentação===
+
* Roupas (malharia, confecção)
  
:Data: DD/MM/AAAA
+
* Verdureira
  
:Horário:
+
* Peças (para automóveis)  - <span style="color:red;"> Gustavo e Gabriel Mota</span>
  
==Equipe 2: Utilidades==
+
* Bicicletas  - <span style="color:red;"> Marcio</span>
  
Implemente um programa em linguagem C que faça o controle de estoque simplificado de uma loja de utilidades. O programa deverá ter necessariamente um menu onde se poderá fazer a escolha pelas opções disponíveis em loop contínuo, mas com opção de saída. Deverá ler de um arquivo de dados informações sobre os livros (já cadastrados), poderá acrescentar novos produtos como: ferramentas, tintas e utensílios domésticos, eliminar produto, e buscar um produto específico pelo código. Deverá ainda ter as opções de ordenar e imprimir a lista na tela de todos os produtos, também deverá gravar as alterações no mesmo arquivo de dados lido. Pra terminar, contar com uma opção de estatística dizendo qual o número de produtos cadastrados, o maior, o menor e o valor médio desses produtos.
+
* Tintas (tintas, solventes, material de pintura)
  
===Alunos===
+
* Papelaria
  
*
+
* Livraria
*
 
*
 
  
 +
* Outro (negócio)
  
===Apresentação===
 
  
:Data: DD/MM/AAAA
+
==Requisitos do negócio==
  
:Horário:
+
Implemente um programa em linguagem C que faça o controle de estoque simplificado de produtos. O programa deverá ter necessariamente um menu onde se poderá fazer a escolha pelas opções disponíveis em loop contínuo, mas com opção de saída. Deverá ler de um arquivo de dados informações sobre os produtos (já cadastrados), poderá acrescentar novos produtos do negócio e buscar um produto específico pelo código. Deverá ainda ter as opções de ordenar e imprimir a lista na tela de todos os produtos. Também deverá gravar as alterações no mesmo arquivo de dados lido. Pra terminar, contar com uma opção de estatística dizendo qual a quantidade de produtos, o maior, o menor e o valor médio dos produtos cadastrados.
  
==Equipe 3: Autopeças==
+
=Apresentações=
  
Implemente um programa em linguagem C que faça o controle de estoque simplificado de produtos de uma loja de autopeças. O programa deverá ter necessariamente um menu onde se poderá fazer a escolha pelas opções disponíveis em loop contínuo, mas com opção de saída. Deverá ler de um arquivo de dados informações sobre os produtos da autopeças (cadastrados), poderá acrescentar novas peças como: pneus, velas e palhetas, eliminar peças, e buscar uma peça específica pelo código. Deverá ainda ter as opções de ordenar e imprimir a lista na tela de todos as peças. Também deverá gravar as alterações no mesmo arquivo de dados lido. Pra terminar, contar com uma opção de estatística dizendo qual a quantidade de peças, o maior, o menor e o valor médio dos produtos da autopeças cadastrados.
+
Envio de link para arquivo de videoaula com apresentação do código fonte e do programa funcionando.
  
=== Alunos===
+
=Avaliação=
  
*
+
#Cumprimento de todos os requisitos; (30%)
*
+
#Aparência e facilidade de acesso ao menu e as informações; (20%)
*
+
#Clareza na apresentação das funcionalidades; (30%)
 +
#Entrega do código fonte devidamente comentado. (20%)
  
 +
==Motos==
  
 +
Equipe: '''MOTOS'''<br>
 +
Autores: '''João Antonio e Jośe Celso'''
 +
<br>
 +
<blockquote style="background:#E6E6FA; border: 2px solid navy; margin-left: 0px; margin-right: 0px; padding: 1em;">
 +
Olá João Antonio e José Celso. Como já conversamos no grupo, teve algumas perguntas que vocês não souberam me responder ou pelo menos não responderam a contento. De forma geral vocês chegaram no objetivo. Me preocupa a solução ter sido em C++ e não em C, era requisito do programa. Tenho essa preocupação por vocês utilizarem soluções mais complexas para resolver alguns problemas simples. Me preocupa o que vocês mesmos falaram "algumas coisas eu não sei bem como funciona". Mas fato é que vocês utilizaram bastante de programação que nós aprendemos. Claro que sei que se fosse presencial vocês teriam utilizado mais o tempo comigo presente para tirar dúvidas. Vamos aos critérios de avaliação de fato:
  
====Apresentação====
+
#Cumprimento de todos os requisitos: Embora C e C++ sejam "irmãos" o programa era pra ser feito em C. Pontuação: '''20%'''
 +
#Aparência e facilidade de acesso ao menu e as informações: foram bem aqui. Pontuação: '''20%'''
 +
#Clareza na apresentação das funcionalidades: foram claros na primeira parte e muito lido na segunda parte. Pontuação: '''20%'''
 +
#Entrega do código fonte devidamente comentado: Não achei ruim os comentários, mas me pareceu mais um guia para apresentação do que a função de cada parte importante do programa. Pontuação: '''10%'''
  
:Data: DD/MM/AAAA
+
;Pontuação final: 70% Nota: 7,0 (sete)
 +
</blockquote>
  
:Horário:  
+
Equipe: '''AUTOPEÇAS'''<br>
 +
Autores:  '''Gustavo e Gabriel Mota'''
 +
<br>
 +
<blockquote style="background:#E6E6FA; border: 2px solid navy; margin-left: 0px; margin-right: 0px; padding: 1em;">
 +
Olá Gustavo e Gabriel. Como comentei no grupo, teve algumas coisas que ficaram faltando. Vocês também não utilizaram vetores da estrutura, ler e gravar o arquivo apenas no final das operações entre outras coisas. Gostei da apresentação mas faltou mostrar um pouco da organização do programa e código fonte. A introdução foi curta mas deu de mostrar um pouco de como funcionava o negócio de vocês o que foi ótimo para o entendimento do programa. O login e a senha (aparecendo) foi legal. Mas eu também não consegui executar o código de vocês no C. Vamos aos critérios de avaliação:
  
 +
#Cumprimento de todos os requisitos: Não foi utilizada a estrutura com vetores.  Não foi feita toda a parte de estatísticas entre outras coisas. Pontuação: '''10%'''
 +
#Aparência e facilidade de acesso ao menu e as informações: foram bem aqui. Pontuação: '''20%'''
 +
#Clareza na apresentação das funcionalidades: foi uma boa apresentação, mas curta e rápida na segunda parte. Pontuação: '''20%'''
 +
#Entrega do código fonte devidamente comentado: Ficou bem comentado. Pontuação: '''20%'''
  
 +
;Pontuação final: 70% Nota: 7,0 (sete)
  
  
 +
</blockquote>
  
 
-----
 
-----

Edição atual tal como às 16h11min de 25 de setembro de 2020

Trabalho Final

Requisito para Formação das Equipes

  • Os alunos formarão equipes com até 2 integrantes. A apresentação do trabalho final da unidade curricular (correspondente a avaliação prática 1 - AP1) será feita pela dois alunos da equipe.

Requisitos mínimos do programa C

O programa em linguagem C deve necessariamente fazer uso de
  1. Vetores
  2. Estruturas
  3. Funções para tratamento de arquivo
Nota1
Os dados (informações) devem ser alterados na memória e só ao final gravados no arquivo, ou seja, você deve abrir o arquivo e copiar as informações para um vetor e todas as operações devem ser sobre este vetor, sendo que no final, as alterações devem ser regravadas no arquivo no disco.
Nota2
Fica proibido o uso de listas encadeadas.


Exemplo da estrutura (automóveis)
#define MAX 100
struct TCarro {
   char placa[9];
   char marca[20];
   char modelo[30];
   char preco;
} Auto[MAX];
Exemplo de arquivo (carros.dat)
$ cat carros.dat (linux) ou Bloco de Notas->Arquivo->Abrir->carros.dat // CMD: type carros.dat
AAB-1248 GM CORSA 18000
PTY-6548 VOLKS GOL 21500
MTB-6587 FIAT UNO 15000
AAB-8787 FORD FUSION 50000
LTX-1234 VOLKS FUSCA 8790
Exemplo de como ficaria o código:
#include <stdio.h>
#include <string.h>
#define MAX 100

struct TCarro {
   char placa[9];
   char marca[20];
   char modelo[30];
   char preco[20];
} Auto[MAX];

FILE *p_arq;
int prox_registro;

void abrir_arquivo();
void ler_arquivo();
void cadastrar();
void relatorio();
void grava_arquivo();


void main()
{
   abrir_arquivo();
   int opcao;
   while(1){
	printf("\nMENU PRINCIPAL\n\n");
	printf("1 - Cadastrar\n");
	printf("2 - Relatorio\n");
	printf("? - Sair ");
	scanf("%d",&opcao);

	switch (opcao)
	{
	   case 1:
	     cadastrar();
	   break;

	   case 2:
	     relatorio();
	   break;

	   default:
             grava_arquivo();
	     printf("\nBye!\n");
	     return;
	}
   }
}

void abrir_arquivo()
{
  int i;
  int res;

  if ((p_arq=fopen("carros.txt", "r")) == NULL) {
     if ((p_arq=fopen("carros.txt", "w")) == NULL) {
     	printf("Problemas na abertura do arquivo\n");
     	return;
     }
  }
  ler_arquivo();
}

void ler_arquivo()
{
  char buff[4][100];
  int res,j,i=0;
  while(1) {
      if((res = fscanf(p_arq,"%s %s %s %s",buff[0],buff[1],buff[2],buff[3]))==EOF)
      {  					  	    
	  printf("Fim de leitura\n");
	  break;
      } 
     strcpy(Auto[i].placa,buff[0]);
     strcpy(Auto[i].marca,buff[1]);
     strcpy(Auto[i].modelo,buff[2]);
     strcpy(Auto[i].preco,buff[3]);
     i++;
  }
  prox_registro=i;
  fclose(p_arq);
}

void grava_arquivo()
{
  int i, res;
  if ((p_arq=fopen("carros.txt", "w")) == NULL) {
     printf("\n\nErro: Problemas na abertura do arquivo.\n");
     return;
  }

  for (i=0; i<prox_registro;i++) {
      if((res = fprintf(p_arq,"%s %s %s %s\n",Auto[i].placa,Auto[i].marca,Auto[i].modelo,Auto[i].preco))==EOF) { 
	  printf("Erro\n");
          break;
      }
  }
  fclose(p_arq);
}


void cadastrar()
{
   int i;
   i=prox_registro;
	printf("\n\nCadastrar Automóvel:\n");
	printf("Placas: ");
	scanf("%s",Auto[i].placa);
	printf("\nMarca: ");
	scanf("%s",Auto[i].marca);
	printf("\nModelo: ");
	scanf("%s",Auto[i].modelo);
	printf("\nValor: ");
	scanf("%s",Auto[i].preco);

   prox_registro=i+1;
}

void relatorio()
{
  printf("\nImprimir relatorio...\n\n");
  for(int i=0;i<prox_registro;i++)
       printf("%s %s %s %s\n",Auto[i].placa,Auto[i].marca,Auto[i].modelo,Auto[i].preco);
  printf("\n================================================================");
}

Apresentação

  1. Entrega: 22/09/2020";
  2. Videoaula: Seminário de 10 a 20min (link do drive ou youtube);
  3. Toda a equipe deverá apresentar.

Temas de Negócios

  • Farmácia - Elsa Marina Bruckmann
  • Motos - João Antonio e Jośe Celso
  • Padaria
  • Roupas (malharia, confecção)
  • Verdureira
  • Peças (para automóveis) - Gustavo e Gabriel Mota
  • Bicicletas - Marcio
  • Tintas (tintas, solventes, material de pintura)
  • Papelaria
  • Livraria
  • Outro (negócio)


Requisitos do negócio

Implemente um programa em linguagem C que faça o controle de estoque simplificado de produtos. O programa deverá ter necessariamente um menu onde se poderá fazer a escolha pelas opções disponíveis em loop contínuo, mas com opção de saída. Deverá ler de um arquivo de dados informações sobre os produtos (já cadastrados), poderá acrescentar novos produtos do negócio e buscar um produto específico pelo código. Deverá ainda ter as opções de ordenar e imprimir a lista na tela de todos os produtos. Também deverá gravar as alterações no mesmo arquivo de dados lido. Pra terminar, contar com uma opção de estatística dizendo qual a quantidade de produtos, o maior, o menor e o valor médio dos produtos cadastrados.

Apresentações

Envio de link para arquivo de videoaula com apresentação do código fonte e do programa funcionando.

Avaliação

  1. Cumprimento de todos os requisitos; (30%)
  2. Aparência e facilidade de acesso ao menu e as informações; (20%)
  3. Clareza na apresentação das funcionalidades; (30%)
  4. Entrega do código fonte devidamente comentado. (20%)

Motos

Equipe: MOTOS
Autores: João Antonio e Jośe Celso

Olá João Antonio e José Celso. Como já conversamos no grupo, teve algumas perguntas que vocês não souberam me responder ou pelo menos não responderam a contento. De forma geral vocês chegaram no objetivo. Me preocupa a solução ter sido em C++ e não em C, era requisito do programa. Tenho essa preocupação por vocês utilizarem soluções mais complexas para resolver alguns problemas simples. Me preocupa o que vocês mesmos falaram "algumas coisas eu não sei bem como funciona". Mas fato é que vocês utilizaram bastante de programação que nós aprendemos. Claro que sei que se fosse presencial vocês teriam utilizado mais o tempo comigo presente para tirar dúvidas. Vamos aos critérios de avaliação de fato:

  1. Cumprimento de todos os requisitos: Embora C e C++ sejam "irmãos" o programa era pra ser feito em C. Pontuação: 20%
  2. Aparência e facilidade de acesso ao menu e as informações: foram bem aqui. Pontuação: 20%
  3. Clareza na apresentação das funcionalidades: foram claros na primeira parte e muito lido na segunda parte. Pontuação: 20%
  4. Entrega do código fonte devidamente comentado: Não achei ruim os comentários, mas me pareceu mais um guia para apresentação do que a função de cada parte importante do programa. Pontuação: 10%
Pontuação final
70% Nota: 7,0 (sete)

Equipe: AUTOPEÇAS
Autores: Gustavo e Gabriel Mota

Olá Gustavo e Gabriel. Como comentei no grupo, teve algumas coisas que ficaram faltando. Vocês também não utilizaram vetores da estrutura, ler e gravar o arquivo apenas no final das operações entre outras coisas. Gostei da apresentação mas faltou mostrar um pouco da organização do programa e código fonte. A introdução foi curta mas deu de mostrar um pouco de como funcionava o negócio de vocês o que foi ótimo para o entendimento do programa. O login e a senha (aparecendo) foi legal. Mas eu também não consegui executar o código de vocês no C. Vamos aos critérios de avaliação:

  1. Cumprimento de todos os requisitos: Não foi utilizada a estrutura com vetores. Não foi feita toda a parte de estatísticas entre outras coisas. Pontuação: 10%
  2. Aparência e facilidade de acesso ao menu e as informações: foram bem aqui. Pontuação: 20%
  3. Clareza na apresentação das funcionalidades: foi uma boa apresentação, mas curta e rápida na segunda parte. Pontuação: 20%
  4. Entrega do código fonte devidamente comentado: Ficou bem comentado. Pontuação: 20%
Pontuação final
70% Nota: 7,0 (sete)



Icone voltar.png Icone menu.png Icone prox.png