This content is protected, please login and enroll in the course to view this content!
11 Comments
harmell
5 de julho de 2018
Boa Tarde,
Quando você se refere a aplicação validar se a fila está cheia ou não seria lá no método de inserir um elemento antes de redirecionar os ponteiros fazer um if validando o tamanho da estrutura correto? Caso a fila esteja cheia retorna um erro genérico e la na aplicação se o valor retornado da função for um erro aí sim mostro uma mensagem que já está pré-setada na parte da aplicação, por exemplo: ‘Impossível adicionar elemento’. Correto?
Olá Harmell, tudo bem?
Pra responder sua pergunta, o mais importante é você saber que a Fila é manipulável exclusivamente pelas operações (inserir, retirar, estaCheia, estaVazia), ok? A partir daí, a lógica sugerida na aplicação seria: verificar se a Fila está cheia (um if simples). Se não estiver, insere o elemento. Se estiver, emite uma mensagem de erro para o usuário.
Isso “protege” a Fila, tornando-a acessível apenas através de operações (o que garante a ela ser um TAD e também encapsula sua estrutura interna).
Ajudei?
abraço
Evandro
12 de junho de 2019
Inserir uma quantidade de valores maior que o tamanho do vetor achando que iria lançar uma exceção, mas não lançou. Dando uma olhada mais atenta no código percebi que é por que a variavel total sempre volta para o zero quando chega em 10. Então se não tomarmos o cuidado de verificar se a pilha está cheia a unica coisa que vai aconter é inserir os ultimos 10 valores na pilha, ou seja, perdemos os valores iniciais e quando mandarmos retirar da pilha ele vai repetir esses valores até a variavel total chegar a zero, por que neste caso do exemplo não retiramos realmente os valores da pilha.
Não sei se mas alguem percebeu isso, então decidi comentar!
Show Evandro!! a idéia da implementação da fila foi justamente essa.. ser a mais simples possível, deixando na aplicação a responsabilidade de testar se está cheia antes de inserir.
Mas você pode sim, também, ampliar o algoritmo, fazendo esse teste no método inserir…
se total == TAMANHO então lance uma nova exceção
senão, faz a inserção normal
valeu!!! e parabéns pela mensagem!!! sensacional!
Evandro
14 de junho de 2019
Obrigado prof. Isidro valeu pela dica vou implementar a sua sugestão.
cvaz
12 de novembro de 2019
Professor, boa noite.
Parabéns pela aula. Gostaria de tirar uma dúvida. No arquivo “banco.c”, quando eu importo o arquivo “fila.h” não compila. Estou usando o Dev C++ e ele apresenta a seguinte mensagem: undefined reference to `create’. Tem uma mensagem dessa para cada função. Consegui compilar depois que inclui o arquivo “fila.c”, que é onde estão as funções. Resumindo, gostaria de saber o porque no seu código, mesmo com o arquivo “fila.h”, que não tem as funções implementadas, o compilador não dá erro?
Salve Cesar beleza? Na verdade para que tudo funcione vc precisa de 3 coisas
– arquivo fila.h com a definição da estrutura e os cabeçalhos de funções
– arquivo fila.c que implementa tudo o q foi definido no .h
– arquivo principal (app.c, por exemplo)
quando eu compilo, na verdade eu coloco q referência do arquivo fila.o que implementa as funções e foi previamente compilado (fiz um gcc -c fila.c e isso gera um fila.o)
Se vc usar o DEVC++, basta criar um projetinho e colocar os 3 arquivos… tudo deve funcionar.
Valeu!!
samuelcotta
25 de maio de 2022
Professor, boa noite!
Gostaria de saber o porque nos métodos isEmpty, isFull é utilizado o “.” e não o “->” como os demais métodos, tem relação com o acesso via ponteiro? Poderia me explicar melhor?
Obrigado!
LUKAS
27 de março de 2024
Obrigado prof. Isidro. valeu pela dica!
LUKAS
27 de março de 2024
Mesmo cedo um curso que ja tem anos, ainda sim, e muito didática e funciona(tem que corrigir algumas coisas kkk). Mas esse curso e top!
Caio Fillipi
14 de maio de 2024
Show professor Isidro. Achei muito boa a sacada para retornar os valores das variaveis “inicio” e “fim” para 0, usando inicio = (inicio+1)%10; nunca tinha parado para pensar nisso.
11 Comments
Boa Tarde,
Quando você se refere a aplicação validar se a fila está cheia ou não seria lá no método de inserir um elemento antes de redirecionar os ponteiros fazer um if validando o tamanho da estrutura correto? Caso a fila esteja cheia retorna um erro genérico e la na aplicação se o valor retornado da função for um erro aí sim mostro uma mensagem que já está pré-setada na parte da aplicação, por exemplo: ‘Impossível adicionar elemento’. Correto?
Olá Harmell, tudo bem?
Pra responder sua pergunta, o mais importante é você saber que a Fila é manipulável exclusivamente pelas operações (inserir, retirar, estaCheia, estaVazia), ok? A partir daí, a lógica sugerida na aplicação seria: verificar se a Fila está cheia (um if simples). Se não estiver, insere o elemento. Se estiver, emite uma mensagem de erro para o usuário.
Isso “protege” a Fila, tornando-a acessível apenas através de operações (o que garante a ela ser um TAD e também encapsula sua estrutura interna).
Ajudei?
abraço
Inserir uma quantidade de valores maior que o tamanho do vetor achando que iria lançar uma exceção, mas não lançou. Dando uma olhada mais atenta no código percebi que é por que a variavel total sempre volta para o zero quando chega em 10. Então se não tomarmos o cuidado de verificar se a pilha está cheia a unica coisa que vai aconter é inserir os ultimos 10 valores na pilha, ou seja, perdemos os valores iniciais e quando mandarmos retirar da pilha ele vai repetir esses valores até a variavel total chegar a zero, por que neste caso do exemplo não retiramos realmente os valores da pilha.
Não sei se mas alguem percebeu isso, então decidi comentar!
Show Evandro!! a idéia da implementação da fila foi justamente essa.. ser a mais simples possível, deixando na aplicação a responsabilidade de testar se está cheia antes de inserir.
Mas você pode sim, também, ampliar o algoritmo, fazendo esse teste no método inserir…
se total == TAMANHO então lance uma nova exceção
senão, faz a inserção normal
valeu!!! e parabéns pela mensagem!!! sensacional!
Obrigado prof. Isidro valeu pela dica vou implementar a sua sugestão.
Professor, boa noite.
Parabéns pela aula. Gostaria de tirar uma dúvida. No arquivo “banco.c”, quando eu importo o arquivo “fila.h” não compila. Estou usando o Dev C++ e ele apresenta a seguinte mensagem: undefined reference to `create’. Tem uma mensagem dessa para cada função. Consegui compilar depois que inclui o arquivo “fila.c”, que é onde estão as funções. Resumindo, gostaria de saber o porque no seu código, mesmo com o arquivo “fila.h”, que não tem as funções implementadas, o compilador não dá erro?
Salve Cesar beleza? Na verdade para que tudo funcione vc precisa de 3 coisas
– arquivo fila.h com a definição da estrutura e os cabeçalhos de funções
– arquivo fila.c que implementa tudo o q foi definido no .h
– arquivo principal (app.c, por exemplo)
quando eu compilo, na verdade eu coloco q referência do arquivo fila.o que implementa as funções e foi previamente compilado (fiz um gcc -c fila.c e isso gera um fila.o)
Se vc usar o DEVC++, basta criar um projetinho e colocar os 3 arquivos… tudo deve funcionar.
Valeu!!
Professor, boa noite!
Gostaria de saber o porque nos métodos isEmpty, isFull é utilizado o “.” e não o “->” como os demais métodos, tem relação com o acesso via ponteiro? Poderia me explicar melhor?
Obrigado!
Obrigado prof. Isidro. valeu pela dica!
Mesmo cedo um curso que ja tem anos, ainda sim, e muito didática e funciona(tem que corrigir algumas coisas kkk). Mas esse curso e top!
Show professor Isidro. Achei muito boa a sacada para retornar os valores das variaveis “inicio” e “fim” para 0, usando inicio = (inicio+1)%10; nunca tinha parado para pensar nisso.