Ir ao conteúdo
  • Cadastre-se
pferreira8

Procedimento e variável global

Recommended Posts

Boa tarde,

 

Estou com um problema neste código: 

#include <stdio.h>
#include <locale.h>

void TestaPositivo()
{
	if (v > 0)
		printf("\nPositivo");
	else
	if (v < 0)
		printf("\nNegativo");
	else
	if (v == 0)
		printf("\nNulo");
}
main()
{
	setlocale(LC_ALL, "");
	
	float v;
	
	printf("Digite um valor: ");
	scanf("%f", &v);
	TestaPositivo();
}

Na hora de compilar, o DevC++ diz que a variável "v" não foi declarada no scope do procedimento. Porém, a variável é global, então o procedimento deveria identificá-la, certo ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se ela foi declarada na main não é global, é local.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não esta variável não é global, ela pertence ao escopo da função main(). Ela seria global se tivesse sido declarada fora do escopo de qualquer função (mas isto é considerado uma má prática de programação):

 

#include <stdio.h>
#include <locale.h>

float v;

void TestaPositivo()
{
	if (v > 0)
		printf("\nPositivo\n");
	else
	if (v < 0)
		printf("\nNegativo\n");
	else
	if (v == 0)
		printf("\nNulo\n");
}

int main()
{
	setlocale(LC_ALL, "");
	printf("Digite um valor: ");
	scanf("%f", &v);
	TestaPositivo();
    return 0;
}

 

 

O modo correto seria enviar v como parâmetro da função TestaPositivo desta maneira:

#include <stdio.h>
#include <locale.h>

void TestaPositivo(float v)
{
	if (v > 0)
		printf("\nPositivo\n");
	else
	if (v < 0)
		printf("\nNegativo\n");
	else
	if (v == 0)
		printf("\nNulo\n");
}

int main()
{
	setlocale(LC_ALL, "");
      float v;
	printf("Digite um valor: ");
	scanf("%f", &v);
	TestaPositivo(v);
    return 0;
}

 

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito obrigado !

 

Acontece que a porcaria do PDF que a professora passou estava errado :mad:

 

Isso também vale para pseudo-linguagem ?

Compartilhar este post


Link para o post
Compartilhar em outros sites
12 minutos atrás, pferreira8 disse:

Muito obrigado !

 

Acontece que a porcaria do PDF que a professora passou estava errado :mad:

 

Isso também vale para pseudo-linguagem ?

Depende da pseudo-linguagem...

 

Por definição o importante numa pseudo-linguagem é conseguir passar a ideia da lógica do programa, então seria possível criar uma nova pseudo-linguagem com regras próprias, e desde que ela seja consistente e passe a ideia corretamente, seria uma pseudo-linguagem válida.

 

Mas num curso de lógica de programação o professor provavelmente estabelece algumas regras da pseudo-linguagem usada em aula para que todos os alunos possam entender os mesmos conceitos, e que os exercícios e avaliações possam ter respostas consistentes...

 

Então pode ser que na pseudo-linguagem que você usa todas as variáveis declaradas sejam globais, ou que seja necessário usar um especificador para indicar que a variável é local e não global...

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×