Você foi contratado(a) por uma clínica médica que atende todos os dias do mês das 08:00 às 21:00 horas. A clínica precisa que seja analisado um código em linguagem C do seu programa para identificar e corrigir alguns bugs que vem ocorrendo em seu sistema.
Considere o seguinte código:
#include #include #include #include
//Registro struct Consulta { char nome[100]; int dia; int hora; };
//Variáveis Globais struct Consulta agenda[300]; int qtdAgendamento;
bool verificarDisponibilidade(int diaAgenda, int horaAgenda){
Algumas regras estabelecidas não estão funcionando de acordo com especificado, por exemplo:
BUG 1 - As consultas são realizadas de hora em hora, começando o atendimento às 8 e o último atendimento é feito às 20h porém ao cadastrar um agendamento o sistema está permitindo que os agendamentos sejam realizados em qualquer horário maior que 8 horas. Inclusive se o usuário digitar valores maiores que 24 horas, por exemplo 30, o sistema permite.
BUG 2 - O Menu não está funcionando muito bem, ao escolher a opção 1 por exemplo, o programa acaba executando também as opções subsequentes. Pautando-se nessas informações responda, que ações se fazem necessárias no código acima para resolver estes dois bugs? Cite a linha e a possível solução justificando sua resposta. AGORA, É COM VOCÊ!
Neste programa em linguagem C, para resolver o bug 1, devemos trocar a linha "if(horaAgenda < 8)" pela linha "if((horaAgenda < 8)||(horaAgenda>20))", isso faz com que o programa não permita ingressar um horário maior que 20.
Para resolver o bug 2, cada bloco da sentença switch-case deve ser fechado com a palavra break.
Análise do programa em linguagem C e correção de erros
Na função "verificarDisponibilidade", a sentença ifverifica apenas se o horário ingressado é menor que 8, portanto, o sistema permitirá o agendamento em qualquer horário maior que 8, inclusive em qualquer horário maior que 23, então, devemos adicionar um filtro para os horários maiores que 20 (pois, a clínica fecha às 21 horas).
Para isso devemos mudar a linha "if(horaAgenda < 8)" pela linha "if((horaAgenda < 8)||(horaAgenda>20))", assim, essa função não permitirá agendar nenhum horário menor que 8 nem maior que 20 corrigindo o bug 1.
Sobre o bug 2, no menu foi utilizada uma sentença switch-case. Essa sentença itera pelas opções comparando o argumento com as condições dos blocos case. Ela executará o primeiro bloco no qual a condição do case coincida com o argumento de switch, e também executará todos os blocos abaixo dela.
Para evitar isso, cada um dos blocos case finaliza com a instrução break, assim, o programa sai do switch-case após executar o bloco escolhido ao invés de ficar executando os blocos abaixo dele.
Lista de comentários
Neste programa em linguagem C, para resolver o bug 1, devemos trocar a linha "if(horaAgenda < 8)" pela linha "if((horaAgenda < 8)||(horaAgenda>20))", isso faz com que o programa não permita ingressar um horário maior que 20.
Para resolver o bug 2, cada bloco da sentença switch-case deve ser fechado com a palavra break.
Análise do programa em linguagem C e correção de erros
Na função "verificarDisponibilidade", a sentença if verifica apenas se o horário ingressado é menor que 8, portanto, o sistema permitirá o agendamento em qualquer horário maior que 8, inclusive em qualquer horário maior que 23, então, devemos adicionar um filtro para os horários maiores que 20 (pois, a clínica fecha às 21 horas).
Para isso devemos mudar a linha "if(horaAgenda < 8)" pela linha "if((horaAgenda < 8)||(horaAgenda>20))", assim, essa função não permitirá agendar nenhum horário menor que 8 nem maior que 20 corrigindo o bug 1.
Sobre o bug 2, no menu foi utilizada uma sentença switch-case. Essa sentença itera pelas opções comparando o argumento com as condições dos blocos case. Ela executará o primeiro bloco no qual a condição do case coincida com o argumento de switch, e também executará todos os blocos abaixo dela.
Para evitar isso, cada um dos blocos case finaliza com a instrução break, assim, o programa sai do switch-case após executar o bloco escolhido ao invés de ficar executando os blocos abaixo dele.
#SPJ1