Ir ao conteúdo
  • Cadastre-se
OMag0

Dúvidas na programação

Recommended Posts

Olá a todos.

Estou iniciando em programação. Já li sobre lógica de programação e agora estou lendo "c completo e total" e ao decorrer da leitura algumas dúvidas surgiram.

Irei escrever um programa bem simples que imprime uma matriz de 10 elementos e comentar linha por linha para expressar minha dúvida.

 

#inlcude<stdio.h>   inclui o cabeçalho stdio.h que contém um certo número de funções. compreendi

 

void mostrar(int num[10]);   declara a variável "mostrar" do tipo nula, que contém uma matriz "num" de 10 elementos. é isso? Fiquei um pouco confuso.

 

void main()   declara a função "main' do tipo nula, que não contem nenhum argumento.

 

{

 

int t[10], i;      declara duas variáveis locais do tipo inteira: t uma matriz de 10 elementos e i

for (i = 0; i<10; i++) t = i;    inicia o laço for que informa que i recebe valor 0 e que enquanto i for menor que 10, incrementa o i de 1 em 1, até chegar em 10 e finalizar o laço. depois a matriz t de 10 elementos, recebe para cada elemento o valor de i. Correto?

mostrar(t);   -  não sei o que faz. me perdi.

}

 

void mostrar (int num[10]) - declara a função mostrar que contem um argumento uma matriz "num" de 10 elementos.

{

int i;  declara uma variável inteira i

for (i = 0; i <10; i++) printf ( "%d#, num); - inicia o laço for que informa que i recebe o valor 0, e que enquanto i for menor que 10, incrementa o i de 1 em 1, até chegar em 10 e finaliza o laço. Pede para imprimir na tela a matriz num e os valores internos serão os "i".

}

 

porque eu precisei da função main, se somente a função mostrar, ao meu ver, já faz o que eu desejo?

Aqueles que puderem explicar de forma detalhada, serei bastante agradecido.

Um abraço

 

PS: Sinto muito pela criação de dois tópicos, somente agora percebi. Não sei em qual momento criei, mas a moderação puder apagar o primeiro. Sinto muito.

Editado por OMag0

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

void mostrar(int num[10]);   declara a variável "mostrar" do tipo nula, que contém uma matriz "num" de 10 elementos. é isso? Fiquei um pouco confuso.

Esse ponto trata-se de uma função chamada mostrar, a função é do tipo void e não retorna nenhum valor

 

 

for (i = 0; i<10; i++) t = i;    inicia o laço for que informa que i recebe valor 0 e que enquanto i for menor que 10, incrementa o i de 1 em 1, até chegar em 10 e finalizar o laço. depois a matriz t de 10 elementos, recebe para cada elemento o valor de i. Correto?

Correto, o único erro é que o i vai de 0~9.

 

 

porque eu precisei da função main, se somente a função mostrar, ao meu ver, já faz o que eu desejo?

Aqueles que puderem explicar de forma detalhada, serei bastante agradecido.

Um abraço

Boa indagação. A função main() é essencial para o funcionamento do programa, pois o compilador procura pela função main().

Os programadores iniciantes não gostam de usar muitas funções, mas pense num caso, se você tivesse umas 100 matrizes para mostrar, você precisaria fazer 100x aquele "for(...)", isso para imprimir as matrizes. Com a função mostrar, você só faz o for uma vez, e toda vez que quiser imprimir uma matriz é só usar a função "Mostrar()" colocando como parâmetro a matriz que você quer mostrar.

Isso torna o código menor, e mais legível.

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia amigo, como vai?

 

Eu também me considero iniciante nessa área, porém creio que o que já sei seja suficiente para te ajudar.

 

Vou enumerar minhas colocações e vou procurar seguir a ordem do seu post para facilitar:

 

1 - "void mostrar(int num[10]);" isso é um protótipo de função e não uma variável. beleza, mas o que é um protótipo de função? O protótipo é como um "aviso" para o compilador, do tipo: "fica esperto, meu programa possui essa função em algum lugar". Isso evita erros de compilação que podem ser gerados no caso de você usar uma função antes de defini-la. Não vou aprofundar mais que isso nesse assunto. Resumindo, esse trecho de código é o protótipo de uma função que será definida depois;

 

2 - main - o que é main? Ou melhor, método main? Main é simplesmente o método/função mais importante do seu programa! Agora que você está no início, o Main pode parecer meio, "inútil", porque tudo que você cria de código está sempre dentro dele. Porém, com certeza, você evoluirá, e logo você estará se aprofundando em Orientação a Objetos. Consequentemente passará a criar suas próprias classes (ou importar classes de outros). É aí que você vê o Main em ação. O Main é responsável por chamar suas classes. Ou seja, se você tem uma classe responsável por CalcularNotas, você só poderá usar essa classe se você a "instanciar" no Main. Pra fechar esse assunto, o main é como um "gerente", ou um "chefe" para todos os outros métodos que você possa utilizar;

 

3 - REPARE! Dentro do código do main, em um determinado momento, você "chama" a função "mostrar". Porém a função "mostrar" só é definida/criada lá no final do código, fora do main. Se você não tivesse criado o protótipo que eu expliquei no item 1 você poderia receber um erro de compilação, do tipo "Erro: não encontrei a função mencionada".

 

4 - Seguindo com seu código chegamos a primeira linha dentro do main. E você comentou corretamente. Trata-se da declaração de duas variáveis do tipo int, uma sendo um vetor de 10 elementos chamada "t" e a outra chamada "i";

 

5 - Chegamos no seu FOR. Você explicou bem o que ocorre no FOR, porém tem um pequeno detalhe. Você usa "i < 10". E você explica que o FOR ocorrerá até que "i" atinja o valor 10. Na verdade o FOR ocorrerá até "i" atingir o valor 9. Isso acontece porque o FOR só ocorre enquanto "i" for MENOR que 10, ou seja, 9 (porque 10 não é menor que 10). Para poder chegar até 10 você deve usar "i <= 10" ou "i < 11", nesse caso você inclui o valor 10. O seu FOR possui dois comandos. O primeiro atribui o valor de "i" ao elemento "i" do array "t". Na primeira iteração do FOR você terá "t[0] = 0;", na segunda terá "t[1] = 1; e assim por diante até chegar no 9, onde você terá "t[9] = 9;". O segundo comando é justamente a função que você criou para mostrar os valores dos elementos de "t";

 

6 - Eu montei o seu código aqui (usando c++) e o resultado gerado não é legal. Eu faria de forma diferente. A única coisa a fazer é colocar a chamada da sua função "mostrar" depois do laço FOR. Dessa forma o laço seria usado para atribuir os valores e, em seguida, a função "mostrar" exibe-os. Testei dessa forma e funcionou.

 

OBS: para o código não fechar muito rápido eu inseri uma linha que pede que uma tecla seja precionada para encerrar o programa. Assim podemos ver o resultado. Eu uso C++. Em C++ uso sytem("pause"); Não sei a síntese do equivalente em C, mas acho que deve ser fácil descobrir.

 

Espero não ter ficado confuso. Qualquer coisa estou a disposição.

 

Abraços! Boa sorte e bons estudos!


 

Espero não ter ficado confuso. Qualquer coisa estou a disposição.

 

Abraços! Boa sorte e bons estudos!

Editado por newbieStyle
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiramente muito obrigado a ambos por responder.

Sanou bastante minhas dúvidas mas ainda surge outra.

 

Porque na função  "main" tenho que declarar outro for e não apenas chamar a função "mostrar"?

Pois na minha maneira de pensar, na minha função monstrar eu já tenho tudo que preciso, e na main eu apenas chamaria. Não é?

 

Abraço e novamente obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiramente muito obrigado a ambos por responder.

Sanou bastante minhas dúvidas mas ainda surge outra.

 

Porque na função  "main" tenho que declarar outro for e não apenas chamar a função "mostrar"?

Pois na minha maneira de pensar, na minha função monstrar eu já tenho tudo que preciso, e na main eu apenas chamaria. Não é?

 

Abraço e novamente obrigado.

E exatamente isso que eu quis exemplificar, se você nao usar outras funçoes como a "Mostrar()", voce teria que usar varios "FORs" para imprimir muitas matrizes.

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

×