fish.disease <- function(){ #criando uma função de nome fish.disease
######################################################################################
# #
# A seguinte função gera o diagnóstico e tratamento para doenças em peixes a partir #
# dos principais sintomas apresentados pelo animal. Os sintomas são fornecidos pelo #
# usuário por meio de respostas as perguntas geradas pela função.A função foi #
# elaborada com base no fluxograma disponibilizado pela empresa Alcon no site #
# http://alconpet.com.br/home, levando em consideração 5 medicamentos: Alcali, Acid, #
# Aqualife, e Bacter. #
# Elaboração: Camila Martins, 2019 #
# camila.cristina.martins@usp.br #
# #
######################################################################################
################# coletando dados da altura do aquário ###############################
h <- as.numeric(readline("\tQual a altura do aquário em que o(s) peixe(s) está(ão), em cm? \n\tDigite apenas números maiores do que zero (ex.:35): \n"))#coletando o dado de altura do aquário através de interação com o usuário e transfomando em um vetor da classe númerica
#enquanto o valor de altura (h) for menor do que zero, a função deve manter o loop que testa se h é um número positivo e pedir que outro valor de h seja dado
while (h < 0){
cat("\tA altura do aquário precisa ser um número positivo, em cm.\n\tPor favor, não introduza caracteres diferentes de números.\n\tApós digitar o número, aperte enter.\n") #Alertando o usuário para a digitação de número inválido para altura do aquário)
h <-as.numeric(readline("\tQual a altura do aquário em que o(s) peixe(s) está(ão), em cm? \n\tDigite apenas números maiores do que zero (ex.:35): \n"))#coletando dado de altura do aquário através de interação com o usuário
}
################ coletando dados da largura do aquário ##############################
L <- as.numeric(readline("\tQual a largura do aquário em que o(s) peixe(s) está(ão), em cm? \n\tDigite apenas números maiores do que zero (ex.:30): \n"))#coletando o dado de largura do aquário através de interação com o usuário e transfomando em um vetor da classe númerica
#enquanto o valor de largura (L) for menor do que zero, a função deve manter o loop que testa se L é um número positivo e pedir que outro valor de L seja dado
while (L < 0){
cat("\tA largura do aquário precisa ser um número positivo, em cm.\n\tPor favor, não introduza caracteres diferentes de números.\n\tApós digitar o número, aperte enter.\n") #Alertando o usuário para a digitação de número inválido para largura do aquário
L <-as.numeric(readline("\tQual a largura do aquário em que o(s) peixe(s) está(ão), em cm? \n\tDigite apenas números maiores do que zero (ex.:30): \n"))#coletando dado de largura do aquário através de interação com o usuário e transfomando em um vetor da classe númerica
}
################# coletando dados de comprimento do aquário ############################
comp <- as.numeric(readline("\tQual o comprimento do aquário em que o(s) peixe(s) está(ão), em cm? \n\tDigite apenas números maiores do que zero (ex.:50): \n"))#coletando o dado de comprimento do aquário através de interação com o usuário e transfomando em um vetor da classe númerica
#enquanto o valor de comprimento do aquário (comp) for menor do que zero, a função deve manter o loop que testa se comp é um número positivo e pedir que outro valor de comp seja dado
while (comp < 0){
cat("\tA largura do aquário precisa ser um número positivo, em cm.\n\tPor favor, não introduza caracteres diferentes de números.\n\tApós digitar o número, aperte enter.\n") #Alertando o usuário para a digitação de número inválido para largura do aquário
comp <-as.numeric(readline("\tQual o comprimento do aquário em que o(s) peixe(s) está(ão), em cm? \n\tDigite apenas números maiores do que zero (ex.:50): \n"))#coletando dado de comprimento do aquário através de interação com o usuário e transfomando em um vetor da classe númerica
}
################ Cálculo do volume do aquário em litros ##############################
vol <- (h*L*comp)/1000.0 #cálculo do volume do aquário em litros, considerando que este seja retangular ou quadrado e que as medidas fornecidas estejam em cm
######################### Transposição do fluxograma em código #####################
resp1 <- readline("\tO peixe apresenta manchas ou estruturas anormais na superficie do corpo? \n\tDigite s para sim e n para não: \n")#coletando dado sobre sintoma do peixe através de interação com o usuário
#enquanto o dado digitado pelo usuário for diferente de s ou n, a função deve manter o loop que testa se resp1 é diferente de s ou n e pedir que outro caracter seja fornecido
while (resp1!="s" & resp1!= "n"){
cat("\tDigite apenas s minúsculo para sim, ou n minúsculo para não. \n\tApós digitar, aperte enter.\n") #Alertando o usuário para a digitação de respostas válidas para o sintoma.
resp1 <-readline("\tO peixe apresenta manchas ou estruturas anormais na superficie do corpo. \n\tDigite s para sim e n para não: \n")#coletando dado sobre sintoma do peixe através de interação com o usuário
}
#Se a resposta armazenada em resp(n) for sim (s) a função "entra" nesse if,se não for entra no else
if(resp1=="s"){
resp2 <- readline("\tEstas estruturas são pontos visíveis na pele? \n\tDigite s para sim e n para não: \n")#coletando dado sobre sintoma do peixe através de interação com o usuário
#enquanto o dado digitado pelo usuário for diferente de s ou n, a função deve manter o loop que testa se resp2 é diferente de s ou n e pedir que outro caracter seja fornecido
while (resp2!="s" & resp2!= "n"){
cat("\tDigite apenas s minúsculo para sim, ou n minúsculo para não.\n\t Após digitar, aperte enter.\n") #Alertando o usuário para a digitação de respostas válidas para o sintoma.
resp2 <-readline("\tEstas estruturas são pontos visíveis na pele? \n\tDigite s para sim e n para não: \n")#coletando dado sobre sintoma do peixe através de interação com o usuário
}
#Se a resposta armazenada em resp(n) for sim (s) a função "entra" nesse if,se não for entra no else
if(resp2=="s"){
resp3 <- readline("\tSão pequenos pontos brancos espalhados por todo o corpo e nadadeiras? \n\tDigite s para sim e n para não: \n")#coletando dado sobre sintoma do peixe através de interação com o usuário
#enquanto o dado digitado pelo usuário for diferente de s ou n, a função deve manter o loop que testa se resp3 é diferente de s ou n e pedir que outro caracter seja fornecido
while (resp3!="s" & resp3!= "n"){
cat("\tDigite apenas s minúsculo para sim, ou n minúsculo para não.\n\tApós digitar, aperte enter.\n") #Alertando o usuário para a digitação de respostas válidas para o sintoma.
resp3 <-readline("\tSão pequenos pontos brancos espalhados por todo o corpo e nadadeiras? \n\tDigite s para sim e n para não: \n")#coletando dado sobre sintoma do peixe através de interação com o usuário
}
#Se a resposta armazenada em resp(n) for sim (s) a função "entra" nesse if ,se não for entra no else
if(resp3=="s"){
####doença dos pontos brancos, Ictio
print("Doença dos Pontos Brancos")
####Cálculo da dosagem do tratamento com Ictio ou Aqualife: 1 gota para 2 litros.
gotas_Ic_Aq <- vol/2.0
####resposta da função a esse conjunto de sintomas:
return(cat("\tSeu(s) peixe(s) apresenta(m) Doença dos pontos Brancos ou Ictio. \n\tEla é causada pelo protozoário Ichthyophthyrius multifiliis. \n\tOutros sintomas: Nadadeiras fechadas, peixe se esfregando nas pedras \n\te no fundo do aquário, dificuldade para respirar. \n\tTratamento: Adicione ",gotas_Ic_Aq, " gota(s) de Ictio na água do aquário.\n") )
}else {
resp4 <- readline("\tOs pontos são brilhantes, numerosos, similares a gotinhas douradas aveludadas? \n\tDigite s para sim e n para não: \n")#coletando dado sobre sintoma do peixe através de interação com o usuário
#enquanto o dado digitado pelo usuário for diferente de s ou n, a função deve manter o loop que testa se resp4 é diferente de s ou n e pedir que outro caracter seja fornecido
while (resp4!="s" & resp4!= "n"){
cat("\tDigite apenas s minúsculo para sim, ou n minúsculo para não. \n\tApós digitar, aperte enter.\n") #Alertando o usuário para a digitação de respostas válidas para o sintoma.
resp4 <- readline("\tOs pontos são brilhantes, numerosos, similares a gotinhas douradas aveludadas? \n\tDigite s para sim e n para não: \n")#coletando dado sobre sintoma do peixe através de interação com o usuário
}
#Se a resposta armazenada em resp(n) for sim (s) a função "entra" nesse if,se não for entra no else
if(resp4=="s"){
###doença do veludo ou Oodiniose, Ictio+Aqualife
print("Doença do Veludo\n")
###Cálculo da dosagem do tratamento com Ictio e Aqualife: 1 gota de aqualife para para 4 litros e 1 gota de Ictio para 2 litros
#####(como há interação medicamentosa, a dosagem de cada medicamento varia quando usada em conjunto)
gotas_Aq <- vol/4.0
gotas_Ic <- vol/2.0
####resposta da função a esse conjunto de sintomas:
return(cat("\tSeu(s) peixe(s) apresenta(m) Doença do Veludo ou Oodiniose. \n\tEla é causada pelo protozoário Oodinium pilullaris. \n\tOutros sintomas: Falta de apetite, respiração ofegante, perda do equilíbrio \n\te peixes esbranquiçados. \n\tTratamento: Adicione ", gotas_Ic, "gota(s) de Ictio para ", gotas_Aq," gota(s) de Aqualife na água do aquário." ))
}else {
### fim da linha.
### Há algumas combinações de sintomas que não levam a nenhum diagnóstico. Nesse casos, a solução que encontrei foi direcionar o usuário a refazer
### o teste de modo a repensar se os sintomas que ele apontou anteriormente estavam certos:
respF <- readline("\tNão foi possível identificar a doença que acomete seu peixe por meio dos sintomas informados.\n\tVamos refazer o teste? \n\tDigite s para sim e n para não: \n")#Verificando se o usuário deseja refazer o teste através de interação com o usuário
#enquanto o dado digitado pelo usuário for diferente de s ou n, a função deve manter o loop que testa se respF é diferente de s ou n e pedir que outro caracter seja fornecido
while (respF!="s" & respF!= "n"){
cat("\tDigite apenas s minúsculo para sim, ou n minúsculo para não. \n\tApós digitar, aperte enter.\n") #Alertando o usuário para a digitação de respostas válidas para o respF.
respF <- readline("\tNão foi possível identificar a doença que acomete seu peixe por meio dos sintomas informados.\n\tVamos refazer o teste? \n\tDigite s para sim e n para não: \n")#Verificando se o usuário deseja refazer o teste através de interação com o usuário
}
#Se a resposta armazenada em respF for sim (s) a função "entra" nesse if,se não for entra no else
if(respF=="s"){
cat("\tOk, vamos recomeçar o teste.\n")
fish.disease()#chamando a função dentro da função para recomeçar o teste
}else {
###Fim da linha
return(cat("\tOk.Que pena!\n\tReavalie os sintomas apresentados pelo seu animal \n\tnovamente e, se necessário, refaça o teste. \n"))
}
}
}
}else {
resp3 <- readline("\tHá uma crosta aparentando limo ou manchas como mofo? \n\tDigite s para sim e n para não: \n")#coletando dado sobre sintoma do peixe através de interação com o usuário
#enquanto o dado digitado pelo usuário for diferente de s ou n, a função deve manter o loop que testa se resp3 é diferente de s ou n e pedir que outro caracter seja fornecido
while (resp3!="s" & resp3!= "n"){
cat("\tDigite apenas s minúsculo para sim, ou n minúsculo para não. \n\tApós digitar, aperte enter.\n") #Alertando o usuário para a digitação de respostas válidas para o sintoma.
resp3 <- readline("\tHá uma crosta aparentando limo ou manchas como mofo? \n\tDigite s para sim e n para não: \n")#coletando dado sobre sintoma do peixe através de interação com o usuário
}
#Se a resposta armazenada em resp(n) for sim (s) a função "entra" nesse if ,se não for entra no else
if(resp3=="s"){
resp4 <- readline("\tHá um limo branco acizentado, cobrindo as brânquias e grande extensão do corpo? \n\tDigite s para sim e n para não: \n")#coletando dado sobre sintoma do peixe através de interação com o usuário
#enquanto o dado digitado pelo usuário for diferente de s ou n, a função deve manter o loop que testa se resp4 é diferente de s ou n e pedir que outro caracter seja fornecido
while (resp4!="s" & resp4!= "n"){
cat("\tDigite apenas s minúsculo para sim, ou n minúsculo para não. \n\tApós digitar, aperte enter.\n") #Alertando o usuário para a digitação de respostas válidas para o sintoma.
resp4 <- readline("\tHá um limo branco acizentado, cobrindo as brânquias e grande extensão do corpo? \n\tDigite s para sim e n para não: \n")#coletando dado sobre sintoma do peixe através de interação com o usuário
}
#Se a resposta armazenada em resp(n) for sim (s) a função "entra" nesse if,se não for entra no else
if(resp4=="s"){
###Costiose, Ictio+Aqualife
print("Costiose")
###Cálculo da dosagem do tratamento com Ictio e Aqualife: 1 gota de aqualife para para 4 litros e 1 gota de Ictio para 2 litros
#####(como há interação medicamentosa, a dosagem de cada medicamento varia quando usada em conjunto)
gotas_Aq <- vol/4.0
gotas_Ic <- vol/2.0
####resposta da função a esse conjunto de sintomas:
return(cat("\tSeu(s) peixe(s) apresenta(m) Costiose. \n\tEla causada pelos protozoários Ichtlyobodo sp. (Costia sp.) e Chilodonella sp.. \n\tOutros sintomas: Falta de apetite, ramificações vermelhas nas nadadeiras, \n\tpeixe se esfregando no fundo do aquário. \n\tTratamento: Adicione ", gotas_Ic," gota(s) de Ictio para ",gotas_Aq," gota(s) de Aqualife na água do aquário.\n"))
}else {
resp5 <- readline("\tO limo é nebuloso e cobre apenas os olhos? \n\tDigite s para sim e n para não: \n")#coletando dado sobre sintoma do peixe através de interação com o usuário
#enquanto o dado digitado pelo usuário for diferente de s ou n, a função deve manter o loop que testa se resp5 é diferente de s ou n e pedir que outro caracter seja fornecido
while (resp5!="s" & resp5!= "n"){
cat("\tDigite apenas s minúsculo para sim, ou n minúsculo para não. \n\tApós digitar, aperte enter.\n") #Alertando o usuário para a digitação de respostas válidas para o sintoma.
resp5 <- readline("\tO limo é nebuloso e cobre apenas os olhos? \n\tDigite s para sim e n para não: \n")#coletando dado sobre sintoma do peixe através de interação com o usuário
}
#Se a resposta armazenada em resp(n) for sim (s) a função "entra" nesse if,se não for entra no else
if(resp5=="s"){
resp6 <- readline("\tOs olhos se mostram saltados? \n\tDigite s para sim e n para não: \n")#coletando dado sobre sintoma do peixe através de interação com o usuário
#enquanto o dado digitado pelo usuário for diferente de s ou n, a função deve manter o loop que testa se resp6 é diferente de s ou n e pedir que outro caracter seja fornecido
while (resp6!="s" & resp6!= "n"){
cat("\tDigite apenas s minúsculo para sim, ou n minúsculo para não. \n\tApós digitar, aperte enter.\n") #Alertando o usuário para a digitação de respostas válidas para o sintoma.
resp6 <- readline("\tOs olhos se mostram saltados? \n\tDigite s para sim e n para não: \n")#coletando dado sobre sintoma do peixe através de interação com o usuário
}
#Se a resposta armazenada em resp(n) for sim (s) a função "entra" nesse if ,se não for entra no else
if(resp6=="s"){
###olhos inchados, Ictio+Bacter
print("Olhos Inchados")
#Cálculo da dosagem do tratamento com Ictio ou Aqualife: 1 gota para 2 litros.
gotas_Ic_Aq <- vol/2.0
#Cálculo da dosagem do tratamento com Bacter: 1 cápsula para cada 12,5 litros.
capsulas <- vol/12.5
####resposta da função a esse conjunto de sintomas:
return(cat("\tSeu(s) peixe(s) apresenta(m) Olhos Inchados (Pop-eye). \n\tÉ causada por bactérias, fungos ou vermes. \n\tOutros sintomas: Barriga inchada, nadadeiras roídas. \n\tTratamento: Adicione ",gotas_Ic_Aq," gota(s) de Ictio para ",capsulas," cápsulas(s) de Bacter na água do aquário.\n"))
}else {
####olhos embaçados, Ictio+Aqualife
print("Olhos Embaçados")
###Cálculo da dosagem do tratamento com Ictio e Aqualife: 1 gota de aqualife para para 4 litros e 1 gota de Ictio para 2 litros
#####(como há interação medicamentosa, a dosagem de cada medicamento varia quando usada em conjunto)
gotas_Aq <- vol/4.0
gotas_Ic <- vol/2.0
####resposta da função a esse conjunto de sintomas:
return(cat("\tSeu(s) peixe(s) apresenta(m) Olhos Embaçados. \n\tEssa doença é causada pelos trematodos monogenéticos Dactylogyrus sp. ou Gyrodactylus sp.. \n\tOutros sintomas: Falta de apetite, respiração ofegante \n\te inchaço das brânquias. \n\tTratamento: Adicione ",gotas_Ic," gota(s) de Ictio para ",gotas_Aq," gota(s) de Aqualife na água do aquário.\n"))
}
}else {
resp6 <- readline("\tO peixe apresenta muco excessivo ao redor da boca chegando a formar tufos semelhantes a algodão? \n\tDigite s para sim e n para não: \n")#coletando dado sobre sintoma do peixe através de interação com o usuário
#enquanto o dado digitado pelo usuário for diferente de s ou n, a função deve manter o loop que testa se resp6 é diferente de s ou n e pedir que outro caracter seja fornecido
while (resp6!="s" & resp6!= "n"){
cat("\tDigite apenas s minúsculo para sim, ou n minúsculo para não. \n\tApós digitar, aperte enter.\n") #Alertando o usuário para a digitação de respostas válidas para o sintoma.
resp6<- readline("\tO peixe apresenta muco excessivo ao redor da boca chegando a formar tufos semelhantes a algodão? \n\tDigite s para sim e n para não: \n")#coletando dado sobre sintoma do peixe através de interação com o usuário
}
#Se a resposta armazenada em resp(n) for sim (s) a função "entra" nesse if ,se não for entra no else
if(resp6=="s"){
###fungo na boca, Bacter+aqualife
print("Fungo na Boca")
#Cálculo da dosagem do tratamento com Ictio ou Aqualife: 1 gota para 2 litros.
gotas_Ic_Aq <- vol/2.0
#Cálculo da dosagem do tratamento com Bacter: 1 cápsula para cada 12,5 litros.
capsulas <- vol/12.5
####resposta da função a esse conjunto de sintomas:
return(cat("\tSeu(s) peixe(s) apresenta(m) Fungo na Boca (Cotton mouth). \n\tApesar do nome, normalmente é causada pela ação de bactérias Flexibacter columnaris. \n\tÉ comum a ocorrência simultânea de fungos. \n\tTratamento: Adicione ",gotas_Ic_Aq," gota(s) de Aqualife para ",capsulas," cápsulas(s) de Bacter na água do aquário.\n"))
}else {
resp7 <- readline("\tExistem manchas brancas ou tufos semelhantes a algodão no corpo? \n\tDigite s para sim e n para não: \n")#coletando dado sobre sintoma do peixe através de interação com o usuário
#enquanto o dado digitado pelo usuário for diferente de s ou n, a função deve manter o loop que testa se resp7 é diferente de s ou n e pedir que outro caracter seja fornecido
while (resp7!="s" & resp7!= "n"){
cat("\tDigite apenas s minúsculo para sim, ou n minúsculo para não. \n\tApós digitar, aperte enter.\n") #Alertando o usuário para a digitação de respostas válidas para o sintoma.
resp7 <- readline("\tExistem manchas brancas ou tufos semelhantes a algodão no corpo? \n\tDigite s para sim e n para não: \n")#coletando dado sobre sintoma do peixe através de interação com o usuário
}
#Se a resposta armazenada em resp(n) for sim (s) a função "entra" nesse if ,se não for entra no else
if(resp7=="s"){
###Doença do algodão, Aqualife
print("Doença do Algodão")
#Cálculo da dosagem do tratamento com Ictio ou Aqualife: 1 gota para 2 litros.
gotas_Ic_Aq <- vol/2.0
####resposta da função a esse conjunto de sintomas:
return(cat("\tSeu(s) peixe(s) apresenta(m) Doença do Algodão. \n\tÉ causada pelos fungos Saprolegnia sp., Achlya sp. ou Ichthyosporidium sp.. \n\tOutros sintomas: Perda de escamas. \n\tTratamento: Adicione ",gotas_Ic_Aq," gota(s) de Aqualife na água do aquário.\n"))
}else {
### fim da linha.
### Há algumas combinações de sintomas que não levam a nenhum diagnóstico. Nesse casos, a solução que encontrei foi direcionar o usuário a refazer
### o teste de modo a repensar se os sintomas que ele apontou anteriormente estavam certos:
respF <- readline("\tNão foi possível identificar a doença que acomete seu peixe por meio dos sintomas informados.\n\tVamos refazer o teste? \n\tDigite s para sim e n para não: \n")#Verificando se o usuário deseja refazer o teste através de interação com o usuário
#enquanto o dado digitado pelo usuário for diferente de s ou n, a função deve manter o loop que testa se respF é diferente de s ou n e pedir que outro caracter seja fornecido
while (respF!="s" & respF!= "n"){
cat("\tDigite apenas s minúsculo para sim, ou n minúsculo para não. \n\tApós digitar, aperte enter.\n") #Alertando o usuário para a digitação de respostas válidas para o respF.
respF <- readline("\tNão foi possível identificar a doença que acomete seu peixe por meio dos sintomas informados.\n\tVamos refazer o teste? \n\tDigite s para sim e n para não: \n")#Verificando se o usuário deseja refazer o teste através de interação com o usuário
}
#Se a resposta armazenada em respF for sim (s) a função "entra" nesse if ,se não for entra no else
if(respF=="s"){
cat("\tOk, vamos recomeçar o teste.\n")
fish.disease()#chamando a função dentro da função para recomeçar o teste
}else {
###Fim da linha
return(cat("\tOk.Que pena!\n\tReavalie os sintomas apresentados pelo seu animal \n\tnovamente e, se necessário, refaça o teste. \n"))
}
}
}
}
}
}else {
resp4 <- readline("\tO peixe se mostra barrigudo e com as escamas eriçadas? \n\tDigite s para sim e n para não: \n")#coletando dado sobre sintoma do peixe através de interação com o usuário
#enquanto o dado digitado pelo usuário for diferente de s ou n, a função deve manter o loop que testa se resp4 é diferente de s ou n e pedir que outro caracter seja fornecido
while (resp4!="s" & resp4!= "n"){
cat("\tDigite apenas s minúsculo para sim, ou n minúsculo para não. \n\tApós digitar, aperte enter.\n") #Alertando o usuário para a digitação de respostas válidas para o sintoma.
resp4 <- readline("\tO peixe se mostra barrigudo e com as escamas eriçadas? \n\tDigite s para sim e n para não: \n")#coletando dado sobre sintoma do peixe através de interação com o usuário
}
#Se a resposta armazenada em resp(n) for sim (s) a função "entra" nesse if ,se não for entra no else
if(resp4=="s"){
###Hidropsia, Bacter
print("Hidropsia")
#Cálculo da dosagem do tratamento com Bacter: 1 cápsula para cada 12,5 litros.
capsulas <- vol/12.5
####resposta da função a esse conjunto de sintomas:
return(cat("\tSeu(s) peixe(s) apresenta(m) Hidropsia (ventre volumoso). \n\tÉ causada por bactérias que atacam os órgãos internos. \n\tOutros sintomas: Manchas vermelhas no corpo, destruição das nadadeiras. \n\tTratamento: Adicione ",capsulas," cápsulas(s) de Bacter na água do aquário\n"))
}else {
resp5 <- readline("\tO peixe está magro e com o ventre retraído? \n\tDigite s para sim e n para não: \n")#coletando dado sobre sintoma do peixe através de interação com o usuário
#enquanto o dado digitado pelo usuário for diferente de s ou n, a função deve manter o loop que testa se resp5 é diferente de s ou n e pedir que outro caracter seja fornecido
while (resp5!="s" & resp5!= "n"){
cat("\tDigite apenas s minúsculo para sim, ou n minúsculo para não. \n\tApós digitar, aperte enter.\n") #Alertando o usuário para a digitação de respostas válidas para o sintoma.
resp5 <- readline("\tO peixe está magro e com o ventre retraído? \n\tDigite s para sim e n para não: \n")#coletando dado sobre sintoma do peixe através de interação com o usuário
}
#Se a resposta armazenada em resp(n) for sim (s) a função "entra" nesse if ,se não for entra no else
if(resp5=="s"){
###Tuberculose ou Barriga Seca, Bacter
print("Tuberculose ou Barriga Seca")
#Cálculo da dosagem do tratamento com Bacter: 1 cápsula para cada 12,5 litros.
capsulas <- vol/12.5
####resposta da função a esse conjunto de sintomas:
return(cat("\tSeu(s) peixe(s) apresenta(m) Tuberculose ou Barriga Seca. \n\tInfecção bacteriana relacionada com a má qualidade da água. \n\tOutros sintomas: Perda de escamas, palidez das cores, destruição das nadadeiras. \n\tTratamento: Adicione ",capsulas," cápsulas(s) de Bacter na água do aquário.\n"))
}else {
resp6 <- readline("\tO peixe apresenta feridas (buracos) na cabeça? \n\tDigite s para sim e n para não: \n")#coletando dado sobre sintoma do peixe através de interação com o usuário
#enquanto o dado digitado pelo usuário for diferente de s ou n, a função deve manter o loop que testa se resp6 é diferente de s ou n e pedir que outro caracter seja fornecido
while (resp6!="s" & resp6!= "n"){
cat("\tDigite apenas s minúsculo para sim, ou n minúsculo para não. \n\tApós digitar, aperte enter.\n") #Alertando o usuário para a digitação de respostas válidas para o sintoma.
resp6 <- readline("\tO peixe apresenta feridas (buracos) na cabeça? \n\tDigite s para sim e n para não: \n")#coletando dado sobre sintoma do peixe através de interação com o usuário
}
#Se a resposta armazenada em resp(n) for sim (s) a função "entra" nesse if ,se não for entra no else
if(resp6=="s"){
###Buracos na Cabeça, Bacter+Aqualife
print("Buracos na Cabeça")
#Cálculo da dosagem do tratamento com Ictio ou Aqualife: 1 gota para 2 litros.
gotas_Ic_Aq <- vol/2.0
#Cálculo da dosagem do tratamento com Bacter: 1 cápsula para cada 12,5 litros.
capsulas <- vol/12.5
####resposta da função a esse conjunto de sintomas:
return(cat("\tSeu(s) peixe(s) apresenta(m) Buracos na Cabeça (Hole-in-head). \n\tSintoma ligado ao protozoário Hexamita sp. e possivelmente a bactérias. \n\tÉ também conhecida como doença dos Ciclídeos. \n\tOutros sintomas: Inchaço (hidropsia) \n\tTratamento: Adicione ",gotas_Ic_Aq," gota(s) de Aqualife para ",capsulas," cápsulas(s) de Bacter na água do aquário.\n"))
}else {
resp7 <- readline("\tAs nadadeiras apresentam-se desfiadas ou roídas? \n\tDigite s para sim e n para não: \n")#coletando dado sobre sintoma do peixe através de interação com o usuário
#enquanto o dado digitado pelo usuário for diferente de s ou n, a função deve manter o loop que testa se resp7 é diferente de s ou n e pedir que outro caracter seja fornecido
while (resp7!="s" & resp7!= "n"){
cat("\tDigite apenas s minúsculo para sim, ou n minúsculo para não. \n\tApós digitar, aperte enter.\n") #Alertando o usuário para a digitação de respostas válidas para o sintoma.
resp7 <- readline("\tAs nadadeiras apresentam-se desfiadas ou roídas? \n\tDigite s para sim e n para não: \n")#coletando dado sobre sintoma do peixe através de interação com o usuário
}
#Se a resposta armazenada em resp(n) for sim (s) a função "entra" nesse if ,se não for entra no else
if(resp7=="s"){
###Nadadeiras Roídas, Bacter+Aqualife
print("Nadadeiras Roídas")
#Cálculo da dosagem do tratamento com Ictio ou Aqualife: 1 gota para 2 litros.
gotas_Ic_Aq <- vol/2.0
#Cálculo da dosagem do tratamento com Bacter: 1 cápsula para cada 12,5 litros.
capsulas <- vol/12.5
####resposta da função a esse conjunto de sintomas:
return(cat("\tSeu(s) peixe(s) apresenta(m) Nadadeiras roídas. \n\tCausada por bactérias. Em geral, há ocorrência de fungos associados. \n\tAs nadadeiras ficam esbranquiçadas e começam a se desfazer. \n\tTratamento: Adicione ",gotas_Ic_Aq," gota(s) de Aqualife para ",capsulas," cápsulas(s) de Bacter na água do aquário.\n"))
}else {
resp8 <- readline("\tHá vermelhidão na base das nadadeiras? \n\tDigite s para sim e n para não: \n")#coletando dado sobre sintoma do peixe através de interação com o usuário
#enquanto o dado digitado pelo usuário for diferente de s ou n, a função deve manter o loop que testa se resp8 é diferente de s ou n e pedir que outro caracter seja fornecido
while (resp8!="s" & resp8!= "n"){
cat("\tDigite apenas s minúsculo para sim, ou n minúsculo para não. \n\tApós digitar, aperte enter.\n") #Alertando o usuário para a digitação de respostas válidas para o sintoma.
resp8 <- readline("\tHá vermelhidão na base das nadadeiras? \n\tDigite s para sim e n para não: \n")#coletando dado sobre sintoma do peixe através de interação com o usuário
}
#Se a resposta armazenada em resp(n) for sim (s) a função "entra" nesse if ,se não for entra no else
if(resp8=="s"){
###Septicemia, Bacter+Aqualife
print("Septicemia")
#Cálculo da dosagem do tratamento com Ictio ou Aqualife: 1 gota para 2 litros.
gotas_Ic_Aq <- vol/2.0
#Cálculo da dosagem do tratamento com Bacter: 1 cápsula para cada 12,5 litros.
capsulas <- vol/12.5
####resposta da função a esse conjunto de sintomas:
return(cat("\tSeu(s) peixe(s) apresenta(m) Septicemia. \n\tResultado de infecção causada por bactérias. \n\tOutros sintomas: Vasinhos sanguíneos dilatados ao redor dos olhos \n\te na base das nadadeiras, nadadeiras roídas e desbotadas. \n\tTratamento: Adicione ",gotas_Ic_Aq," gota(s) de Aqualife para ",capsulas," cápsulas(s) de Bacter na água do aquário.\n"))
}else {
### fim da linha.
### Há algumas combinações de sintomas que não levam a nenhum diagnóstico. Nesse casos, a solução que encontrei foi direcionar o usuário a refazer
### o teste de modo a repensar se os sintomas que ele apontou anteriormente estavam certos:
respF <- readline("\tNão foi possível identificar a doença que acomete seu peixe por meio dos sintomas informados.\n\tVamos refazer o teste? \n\tDigite s para sim e n para não: \n")#Verificando se o usuário deseja refazer o teste através de interação com o usuário
#enquanto o dado digitado pelo usuário for diferente de s ou n, a função deve manter o loop que testa se respF é diferente de s ou n e pedir que outro caracter seja fornecido
while (respF!="s" & respF!= "n"){
cat("\tDigite apenas s minúsculo para sim, ou n minúsculo para não. \n\tApós digitar, aperte enter.\n") #Alertando o usuário para a digitação de respostas válidas para o respF.
respF <- readline("\tNão foi possível identificar a doença que acomete seu peixe por meio dos sintomas informados.\n\tVamos refazer o teste? \n\tDigite s para sim e n para não: \n")#Verificando se o usuário deseja refazer o teste através de interação com o usuário
}
#Se a resposta armazenada em respF for sim (s) a função "entra" nesse if ,se não for entra no else
if(respF=="s"){
cat("\tnOk, vamos recomeçar o teste.\n")
fish.disease()#chamando a função dentro da função para recomeçar o teste
}else {
###Fim da linha
return(cat("\tOk.Que pena!\n\tReavalie os sintomas apresentados pelo seu animal \n\tnovamente e, se necessário, refaça o teste. \n"))
}
}
}
}
}
}
}
}
}else {
resp2 <- readline("\tO peixe apresenta natação irregular e tremores? \n\tDigite s para sim e n para não: \n")#coletando dado sobre sintoma do peixe através de interação com o usuário
#enquanto o dado digitado pelo usuário for diferente de s ou n, a função deve manter o loop que testa se resp2 é diferente de s ou n e pedir que outro caracter seja fornecido
while (resp2!="s" & resp2!= "n"){
cat("\tDigite apenas s minúsculo para sim, ou n minúsculo para não. \n\tApós digitar, aperte enter.\n") #Alertando o usuário para a digitação de respostas válidas para o sintoma.
resp2 <- readline("\tO peixe apresenta natação irregular e tremores? \n\tDigite s para sim e n para não: \n")#coletando dado sobre sintoma do peixe através de interação com o usuário
}
#Se a resposta armazenada em resp(n) for sim (s) a função "entra" nesse if ,se não for entra no else
if(resp2=="s"){
resp3 <- readline("\tAs escamas estão eriçadas e as nadadeiras fechadas? \n\tDigite s para sim e n para não: \n")#coletando dado sobre sintoma do peixe através de interação com o usuário
#enquanto o dado digitado pelo usuário for diferente de s ou n, a função deve manter o loop que testa se resp3 é diferente de s ou n e pedir que outro caracter seja fornecido
while (resp3!="s" & resp3!= "n"){
cat("\tDigite apenas s minúsculo para sim, ou n minúsculo para não. \n\tApós digitar, aperte enter.\n") #Alertando o usuário para a digitação de respostas válidas para o sintoma.
resp3 <- readline("\tHá um limo branco acizentado, cobrindo as brânquias e grande extensão do corpo? \n\tDigite s para sim e n para não: \n")#coletando dado sobre sintoma do peixe através de interação com o usuário
}
#Se a resposta armazenada em resp(n) for sim (s) a função "entra" nesse if ,se não for entra no else
if(resp3=="s"){
###Agua muito ácida, Alcali
print("Água Muito Ácida")
#Cálculo da dosagem do tratamento com Alcali ou Acid: 1 gota para 3 litros.
gotas_Al_Ac <- vol/3.0
####resposta da função a esse conjunto de sintomas:
return(cat("\tA água do seu aquário deve estar muito ácida. \n\tOutros sintomas: Nadadeiras roídas e desbotadas. \n\tTratamento: Verifique as condições de pH. \n\tConfirmando a acidez excessiva, adicione ",gotas_Al_Ac," gota(s) de Acid na água do aquário. \n"))
}else {
resp4 <- readline("\tO peixe apresenta respiração ofegante próximo à superfície e perda de brilho das escamas? \n\tDigite s para sim e n para não: \n")#coletando dado sobre sintoma do peixe através de interação com o usuário
#enquanto o dado digitado pelo usuário for diferente de s ou n, a função deve manter o loop que testa se resp4 é diferente de s ou n e pedir que outro caracter seja fornecido
while (resp4!="s" & resp4!= "n"){
cat("\tDigite apenas s minúsculo para sim, ou n minúsculo para não. \n\tApós digitar, aperte enter.\n") #Alertando o usuário para a digitação de respostas válidas para o sintoma.
resp4 <- readline("\tO peixe apresenta respiração ofegante próximo à superfície e perda de brilho das escamas? \n\tDigite s para sim e n para não: \n")#coletando dado sobre sintoma do peixe através de interação com o usuário
}
#Se a resposta armazenada em resp(n) for sim (s) a função "entra" nesse if ,se não for entra no else
if(resp4=="s"){
###Água muito alcalina ou Cloro na água, Acid
print("Água Muito Alcalina ou Cloro na Água")
#Cálculo da dosagem do tratamento com Alcali ou Acid: 1 gota para 3 litros.
gotas_Al_Ac <- vol/3.0
####resposta da função a esse conjunto de sintomas:
return(cat("\tA água do seu aquário deve estar muito alcalina ou deve haver cloro na água. \n\tOutros sintomas: Perda de escamas. \n\tTratamento: Verifique as condições de pH e concentração de cloro na água. \n\tConfirmando alcalinidade excessiva e ausência de cloro, \n\tadicione ",gotas_Al_Ac," gota(s) de Acid na água do aquário. \n"))
}else {
### fim da linha.
### Há algumas combinações de sintomas que não levam a nenhum diagnóstico. Nesse casos, a solução que encontrei foi direcionar o usuário a refazer
### o teste de modo a repensar se os sintomas que ele apontou anteriormente estavam certos:
respF <- readline("\tNão foi possível identificar a doença que acomete seu peixe por meio dos sintomas informados.\n\tVamos refazer o teste? \n\tDigite s para sim e n para não: \n")#Verificando se o usuário deseja refazer o teste através de interação com o usuário
#enquanto o dado digitado pelo usuário for diferente de s ou n, a função deve manter o loop que testa se respF é diferente de s ou n e pedir que outro caracter seja fornecido
while (respF!="s" & respF!= "n"){
cat("\tDigite apenas s minúsculo para sim, ou n minúsculo para não. \n\tApós digitar, aperte enter.\n") #Alertando o usuário para a digitação de respostas válidas para o respF.
respF <- readline("\tNão foi possível identificar a doença que acomete seu peixe por meio dos sintomas informados.\n\tVamos refazer o teste? \n\tDigite s para sim e n para não: \n")#Verificando se o usuário deseja refazer o teste através de interação com o usuário
}
#Se a resposta armazenada em respF for sim (s) a função "entra" nesse if ,se não for entra no else
if(respF=="s"){
cat("\tOk, vamos recomeçar o teste.\n")
fish.disease()#chamando a função dentro da função para recomeçar o teste
}else {
###Fim da linha
return(cat("\tOk.Que pena!\n\tReavalie os sintomas apresentados pelo seu animal \n\tnovamente e, se necessário, refaça o teste. \n"))
}
}
}
}else {
### fim da linha.
### Há algumas combinações de sintomas que não levam a nenhum diagnóstico. Nesse casos, a solução que encontrei foi direcionar o usuário a refazer
### o teste de modo a repensar se os sintomas que ele apontou anteriormente estavam certos:
respF <- readline("\tNão foi possível identificar a doença que acomete seu peixe por meio dos sintomas informados.\n\tVamos refazer o teste? \n\tDigite s para sim e n para não: \n")#Verificando se o usuário deseja refazer o teste através de interação com o usuário
#enquanto o dado digitado pelo usuário for diferente de s ou n, a função deve manter o loop que testa se respF é diferente de s ou n e pedir que outro caracter seja fornecido
while (respF!="s" & respF!= "n"){
cat("\tDigite apenas s minúsculo para sim, ou n minúsculo para não. \n\tApós digitar, aperte enter.\n") #Alertando o usuário para a digitação de respostas válidas para o respF.
respF <- readline("\tNão foi possível identificar a doença que acomete seu peixe por meio dos sintomas informados.\n\tVamos refazer o teste? \n\tDigite s para sim e n para não: \n")#Verificando se o usuário deseja refazer o teste através de interação com o usuário
}
#Se a resposta armazenada em respF for sim (s) a função "entra" nesse if ,se não for entra no else
if(respF=="s"){
cat("\tOk, vamos recomeçar o teste.\n")
fish.disease()#chamando a função dentro da função para recomeçar o teste
}else {
###Fim da linha
return(cat("\tOk.Que pena!\n\tReavalie os sintomas apresentados pelo seu animal \n\tnovamente e, se necessário, refaça o teste. \n"))
}
}
}
}
fish.disease()