Correção do EP1

Correção do EP1

by José Augusto Soares -
Number of replies: 7
Estamos começando a correção do EP1.

Os critério usados estão nesta página: http://www.ime.usp.br/~jose/mac122/ep1/criterios.html.

É importante você lerem esses critérios antes da entrega do EP 2.

Zé Augusto
In reply to José Augusto Soares

Re: Correção do EP1

by Eliane Pinheiro -

Olá,Zé Augusto

Lendo a orientação para correção do EP1, percebi que o comando, aí indicado, para compilação no LINUX (gcc -Wall -ansi -pedantic -O2 ep1.c -o ep1. ) é diferente do que eu usei (gcc -Wall --ansi --pedantic -O ep1.c -o ep1. ), que está indicado no site do curso em : Programação / Informações Gerais / Compilador da Linguagem C / Usuários LINUX. Será que pode dar problema?

Eliane Pinheiro

In reply to Eliane Pinheiro

Re: Correção do EP1

by José Augusto Soares -
O que o -O faz é o compilador otimizar o código gerado. O compilador tenta gerar um executável mais esperto que rode mais rápido.

O nosso interesse no -O não é esse. Com o -O aparecem warnings de variáveis sendo usadas sem inicialização, e isso é importante para corrigir erros no programa.

Não acredito que dê diferença entre -O e -O2 no sentido que você está perguntando.

Zé Augusto
In reply to José Augusto Soares

Re: Correção do EP1

by Gabriel R. C. Peixoto -
Tenho uma dúvida nesse critério:
  • (CriaImagem.c: No such file or directory) Resulta de um #include "CriaImagem.c". Avisar para não fazer assim e sim incluir o código da função no programa. Corrigir e não descontar nada.

Nesse caso, vocês estão se referindo a quem apenas colocou os includes, mas não entregou o CriaImagem.c junto com o código, ou não é recomendável nunca usar isso?
In reply to Gabriel R. C. Peixoto

Re: Correção do EP1

by José Augusto Soares -
Não é usual usar includes com arquivos fonte.

O que se costuma fazer é:
1. Colocar protótipos de funções num ou mais arquivos com extensões .h
2. Colocar códigos de funções (fora o main) num ou mais arquivos com extensões .c
3. Colocar o código do main num arquivo com extensão .c

No Dev-C++ isso pode ser feito escolhendo
Arquivo -> Novo -> Projeto...
Na orelha "Basic" escolher "Console Application".
Em "Opções do Projeto" escolher "Projeto C" e um nome.

Uma vez aberto o projeto, clique em
Projeto -> Novo arquivo
ou
Projeto -> Adicionar ao Projeto
para colocar arquivos considerados no projeto.
Por exemplos, adicionando ao projeto os três arquivos abaixo, durante a compilação o código das funções é incluido automaticamente no arquivo executado criado.

No Linux, não é necessário a criação de "Projeto" e basta executar o comando abaixo para criar o executável:
gcc -Wall -ansi -pedantic -O2 fatorial.c  principal.c   -o principal
Se vocês usarem algum desses esquemas, precisa entregar, por exemplos, os arquivos principal.c, fatorial.h e fatorial.c.

Zé Augusto

------------------------------------------------------------
Arquivo principal.c
-------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
#include "fatorial.h"

int main(int argc, char *argv[])
{
int n;

printf("Digite um inteiro nao-negativo: ");
scanf("%d", &n);
printf("%d fatorial = %d\n", n, fat(n));

system("PAUSE");
return 0;
}
------------------------------------------------------------
Arquivo fatorial.h
------------------------------------------------------------
/* Prototipos de funcoes */

/* Determina o fatorial de n >= 0 */
int fat(int n);
-------------------------------------------------------------
Arquivo fatorial.c
--------------------------------------------------------------
/* Codigos das funcoes */

/* Determina o fatorial de n >= 0 */
int fat(int n)
{
if (n <= 1)
return 1;
else
return n*fat(n-1);
}

In reply to José Augusto Soares

Re: Correção do EP1

by Gabriel R. C. Peixoto -
Opa, esqueci de perguntar, e não dá mais para editar...

As estructures geralmente são declaradas no .c ou no .h ?
In reply to Gabriel R. C. Peixoto

Re: Correção do EP1

by José Augusto Soares -
A definição da estrutura deve ir no .h.

Todo arquivo com código em C que usa a estrutura deve ter o

#include "arquivo_com_a_definicao_da_estrutura.h"

Zé Augusto