Índice
- O Curso R
-
- Tutoriais
-
- Apostila
-
- 6. Testes de Hipótese (em preparação!)
- Exercícios
-
- Material de Apoio
-
- Área dos Alunos
-
- Cursos Anteriores
-
IBUSP
Outras Insitutições
Linques
Visitantes
Outras Insitutições
Sou bióloga, formada pelo Instituto de Biociências da USP e, atualmente, sou mestranda em Genética no IB, aluna da Profa. Dra. Maria Rita Passos Bueno do grupo de pesquisa de Fissura labiopalatina. Junto com o mestrado, exerço a profissão de Perita Criminal no Instituto de Criminalística de São Paulo, onde trabalho de acordo com uma escala de plantão, o que possibilita a conciliação das duas atividades.
Tabela com acesso aos meus exercícios resolvidos: Meus exercícios
Contextualização
Quando se trabalha seguindo uma escala de plantão, em que não há um horário de trabalho fixo, podendo variar entre os dias da semana e períodos de turnos, é necessária a montagem de uma escala, que modifica mensalmente de acordo com alguns fatores como: número de dias por mês e distribuição igualitária de turnos (diurno e noturno). Além disso, uma escala de plantões deve respeitar um descanso mínimo de 36 horas de um plantão ao outro. Tais fatores são mais dificultados ainda, quando esses funcionários também se revezam para trabalhar em duas unidades distintas e não devem realizar menos que 12 plantões ao mês, podendo ocorrer dupla de funcionários em alguns turnos (normalmente noturno).
Diante de tais dificuldades, que são enfrentadas mensalmente, a criação de uma função pouparia esse trabalho que, atualmente, é feito manualmente. Dessa forma, a proposta é desenvolver uma função que gere uma escala de funcionários com descanso mínimo de 36 horas, distribuição igualitária de turnos (diurno e noturno) e de unidades (unidades 1 e 2), e inclusão de duplas em alguns noturnos, variando de acordo com o número de dias no mês.
Planejamento da função
Entrada: escala (ferias
, ano
, mes
, dir
, arquivo
)
ferias
= indicar quem sairá de férias ou licença prêmio (de 1 a 11)ano
= ano desejado para montar a escala (2018 a 2020)mes
= mês desejado para montar a escala (de 1 a 12)dir
= diretório em que será salvo o arquivoarquivo
= nome do arquivo em pdf (default=escala.pdf)Verificando os parâmetros:
ferias
é um número inteiro de 1 a 11? Se não, escreve: “ferias precisa ser um numero inteiro entre 1 e 11.”ano
é igual a 2018, 2019 ou 2020? Se não, escreve: “ano precisa ser igual a 2018, 2019 ou 2020.”mes
é um número inteiro de 1 a 12? Se não, escreve: “mes precisa ser um numero inteiro entre 1 e 12.”arquivo
contém caracter .pdf? Se não, escreve: “arquivo precisa ser extensão .pdf”Pseudo-código:
ferias
.ano
e mes
, respectivamente.Saída:
Comentários gerais: Sua proposta está clara e bem organizada. Ela se propõe a resolver um problema relevante e acho que ela poderia ser bem útil. Seu algoritmo já está bem desenvolvido, então você pode começar a pensar em como tornar a função mais geral. Em outras palavras: ela está específica para um determinado contexto e seria mais interessante dar mais liberdade para o usuário especificar as características do seu local de trabalho.
Para pensar:
Sugestões:
Contextualização
Sudoku é um jogo de raciocínio em que o objetivo é preencher os números de 1 a 9 em cada espaço vazio de uma matriz 9×9, de forma que o número não se repita na mesma linha, coluna ou blocos de números (3×3). Assim como qualquer outro jogo, o Sudoku também apresenta diferentes níveis de dificuldade, que será determinado pelo número de espaços vazios. Quanto maior a dificuldade, mais espaços vazios deverão ser preenchidos.
Muitas pessoas tem o hábito de comprar revistas com esses jogos em bancas de jornal constantemente. Esses gastos poderiam ser economizados se fosse possível gerar esses jogos e imprimir do seu próprio computador. Dessa forma, a proposta é criar uma função que irá gerar diferentes sudokus de níveis variados (fácil, médio ou difícil) para as pessoas imprimirem, sem precisar sair de casa.
Planejamento da função
Entrada: sudoku (nivel, resposta, dir, arquivo)
nivel
= nível de dificuldade (1 = Fácil, 2 = Médio, 3 = Difícil)resposta
= Jogo acompanhado da resposta (sim) ou não (nao)dir
= diretório em que será salvo o arquivoarquivo
= nome do arquivo em jpeg (default=sudoku.jpeg)Verificando os parâmetros:
nivel
é igual a 1, 2 ou 3? Se não, escreve: “nivel precisa ser igual a 1 (facil), 2 (medio) ou 3 (dificil).”resposta
é um caracter sim ou nao? Se não, escreve: “resposta precisa ser igual a sim ou nao.”arquivo
contém caracter .jpeg? Se não, escreve: “arquivo precisa ser extensão .jpeg.”Pseudo-código:
nivel
, em que:resposta
.Saída:
Comentários gerais: Eu gostei da ideia, mas acho que se for seguir adiante com esse plano, seria necessário pensar em outras ações para a função realizar. Seu principal desafio vai ser pensar no pseudo-código para gerar diferentes versões do jogo. Eu fiz uma pesquisa rápida e vi que é possível criar um jogo de sudoku em apenas algumas linhas de comando. Acho que você pode fazer essa função como um desafio pessoal, mas me parece que seria pouco para a proposta da disciplina.
Para pensar:
Sugestões:
Conclusão: Camila, eu gostei bastante das suas propostas. Apesar de ter me empolgado com o sudoku, acho que você deve investir no Plano A. No momento que você matar o algoritmo para gerar o jogo, a função vai ficar muito simples. Acho que vai ser um desafio interessante você se propor a tornar o Plano A mais generalizado. Se quiser conversar, pode me mandar um e-mail (carolina.mendonca@usp.br) e a gente combina um horário. Bom trabalho!
Carol Mendonça
Para o trabalho final, resolvi seguir com o plano A, seguindo as recomendações da Carol. A minha função se chama escala e diferentemente do que propus anteriormente, ela funciona para um número variável de funcionários, sendo mais geral, mas servindo para apenas uma unidade de trabalho, cumprindo os pré requisitos de descanso de no mínimo 36 horas e com distribuição do mesmo número de plantões para cada funcionário e aproximadamente igualitária de plantões diurnos e noturnos.
A função executa por meio de um sorteio de dias, podendo gerar escala que não respeita descanso ou então não executa na primeira tentativa. Dessa forma, caso isso aconteça, recomenda-se que a função seja executada novamente. A função também funciona para 6 e 8 funcionários, mas ao longo dos testes realizados, foram verificados com alta frequência diversos erros na distribuição de plantões e de descanso. Entretanto, não houve tempo hábil para corrigir tais limitações, uma vez que necessitei de um tempo para reestruturar a proposta inicial e tornar a função mais geral.