Caros,
Eu e meu enteado resolvemos estudar juntos durante a quarentena, e estamos evoluindo bem em nossos conceitos.
Hoje, depois de finalizarmos estudos sobre lógica de programação e algoritmos, resolvemos nos envolver na
montagem de um código para lermos notas lançadas de alunos de um arquivo. O código evoluiu como deveria, até
que surgiu a questão. Não somos familiarizados ainda com o conceito de looping, do.. while, for, foreach.
Pra resumir a questão, vou direto ao ponto. Fizemos um script grande, porém cansativo que dá muita margem ao
erro humano, então partimos para algo mais sofisticado e "automatizado", consultando um arquivo .csv e depois
lançar as notas, tirar a média e retornando com as condições.
O código abaixo está parcialmente escrito, pois ele não retorna ainda os valores de que necessito para
concluir o código:
-----------------------------------------------------------------------------------------------------
Arquivo estudantes.csv
cod_aluno,nome_aluno
001,Carlos Eduardo Barbosa Oliveira
002,Maria Eduarda Barbosa Oliveira
-----------------------------------------------------------------------------------------------------
Arquivo materias.csv
cod_materia,nome_materia
01,Matemática
02,Português
03,Geografia
04,História
05,Física
-----------------------------------------------------------------------------------------------------
Arquivo notas.csv
cod_materia,cod_aluno,1_bi,2_bi,3_bi,4_bi
01,001,6.7,5.0,3.2,6.5
02,001,8.5,7.0,5.6,7.10
03,001,7.4,5.0,4.2,4.5
04,001,5.0,6.5,1.75,3.5
05,001,4.2,5.0,2.25,2.25
01,002,7.6,7.5,6.9,6.5
02,002,5.8,6.8,6.5,7.10
03,002,4.8,8.5,7.2,4.5
04,002,6.0,5.9,5,7,5,3
05,002,2.4,8.5,5.2,4.5
-----------------------------------------------------------------------------------------------------
notas.sh
$MATERIA = ".\Downloads\materias.csv"
$LERMATERIA = import-csv $MATERIA
$ESTUDANTES = ".\Downloads\estudantes.csv"
$LERESTUDANTES = import-csv $ESTUDANTES
$NOTAS = ".\Downloads\notas.csv"
$LERNOTAS = import-csv $NOTAS
$REPROVA = 0
foreach ($i_materia in $LERMATERIA) {
[int]$COD_MATERIA = $i_materia.cod_materia
[string]$NOME_MATERIA = $i_materia.nome_materia
#Write-Host "`r`n$COD_MATERIA $NOME_MATERIA"':'
foreach ($i_estudante in $LERESTUDANTES) {
[int]$COD_ALUNO = $i_estudante.cod_aluno
[string]$NOME_ALUNO = $i_estudante.nome_aluno
#Write-Host $COD_ALUNO $NOME_ALUNO
foreach ($i_notas in $LERNOTAS) {
$COD_MATERIA = $i_notas.cod_materia
$COD_ALUNO = $i_notas.cod_aluno
$B1 = $i_notas.'1_bi'
$B2 = $i_notas.'2_bi'
$B3 = $i_notas.'3_bi'
$B4 = $i_notas.'4_bi'
$MEDIA = ([INT]$B1+[INT]$B2+[INT]$B3+[INT]$B4)/4
Write-Host 'Nota '$NOME_MATERIA': ' $NOME_ALUNO' :' $MEDIA
}
}
}
-----------------------------------------------------------------------------------------------------
SAIDA:
Nota Matemática: Carlos Eduardo Barbosa Oliveira : 5,25
Nota Matemática: Carlos Eduardo Barbosa Oliveira : 7
Nota Matemática: Carlos Eduardo Barbosa Oliveira : 5
Nota Matemática: Carlos Eduardo Barbosa Oliveira : 4,25
Nota Matemática: Carlos Eduardo Barbosa Oliveira : 3,25
Nota Matemática: Carlos Eduardo Barbosa Oliveira : 7,25
Nota Matemática: Carlos Eduardo Barbosa Oliveira : 6,5
Nota Matemática: Carlos Eduardo Barbosa Oliveira : 6
Nota Matemática: Carlos Eduardo Barbosa Oliveira : 6
Nota Matemática: Carlos Eduardo Barbosa Oliveira : 4,75
Nota Matemática: Maria Eduarda Barbosa Oliveira : 5,25
Nota Matemática: Maria Eduarda Barbosa Oliveira : 7
Nota Matemática: Maria Eduarda Barbosa Oliveira : 5
Nota Matemática: Maria Eduarda Barbosa Oliveira : 4,25
Nota Matemática: Maria Eduarda Barbosa Oliveira : 3,25
Nota Matemática: Maria Eduarda Barbosa Oliveira : 7,25
Nota Matemática: Maria Eduarda Barbosa Oliveira : 6,5
Nota Matemática: Maria Eduarda Barbosa Oliveira : 6
Nota Matemática: Maria Eduarda Barbosa Oliveira : 6
Nota Matemática: Maria Eduarda Barbosa Oliveira : 4,75
Nota Português: Carlos Eduardo Barbosa Oliveira : 5,25
Nota Português: Carlos Eduardo Barbosa Oliveira : 7
Nota Português: Carlos Eduardo Barbosa Oliveira : 5
Nota Português: Carlos Eduardo Barbosa Oliveira : 4,25
Nota Português: Carlos Eduardo Barbosa Oliveira : 3,25
Nota Português: Carlos Eduardo Barbosa Oliveira : 7,25
Nota Português: Carlos Eduardo Barbosa Oliveira : 6,5
Nota Português: Carlos Eduardo Barbosa Oliveira : 6
Nota Português: Carlos Eduardo Barbosa Oliveira : 6
Nota Português: Carlos Eduardo Barbosa Oliveira : 4,75
Nota Português: Maria Eduarda Barbosa Oliveira : 5,25
Nota Português: Maria Eduarda Barbosa Oliveira : 7
Nota Português: Maria Eduarda Barbosa Oliveira : 5
Nota Português: Maria Eduarda Barbosa Oliveira : 4,25
Nota Português: Maria Eduarda Barbosa Oliveira : 3,25
Nota Português: Maria Eduarda Barbosa Oliveira : 7,25
Nota Português: Maria Eduarda Barbosa Oliveira : 6,5
Nota Português: Maria Eduarda Barbosa Oliveira : 6
Nota Português: Maria Eduarda Barbosa Oliveira : 6
Nota Português: Maria Eduarda Barbosa Oliveira : 4,75
Nota Geografia: Carlos Eduardo Barbosa Oliveira : 5,25
Nota Geografia: Carlos Eduardo Barbosa Oliveira : 7
Nota Geografia: Carlos Eduardo Barbosa Oliveira : 5
Nota Geografia: Carlos Eduardo Barbosa Oliveira : 4,25
Nota Geografia: Carlos Eduardo Barbosa Oliveira : 3,25
Nota Geografia: Carlos Eduardo Barbosa Oliveira : 7,25
Nota Geografia: Carlos Eduardo Barbosa Oliveira : 6,5
Nota Geografia: Carlos Eduardo Barbosa Oliveira : 6
Nota Geografia: Carlos Eduardo Barbosa Oliveira : 6
Nota Geografia: Carlos Eduardo Barbosa Oliveira : 4,75
Nota Geografia: Maria Eduarda Barbosa Oliveira : 5,25
Nota Geografia: Maria Eduarda Barbosa Oliveira : 7
Nota Geografia: Maria Eduarda Barbosa Oliveira : 5
Nota Geografia: Maria Eduarda Barbosa Oliveira : 4,25
Nota Geografia: Maria Eduarda Barbosa Oliveira : 3,25
Nota Geografia: Maria Eduarda Barbosa Oliveira : 7,25
Nota Geografia: Maria Eduarda Barbosa Oliveira : 6,5
Nota Geografia: Maria Eduarda Barbosa Oliveira : 6
Nota Geografia: Maria Eduarda Barbosa Oliveira : 6
Nota Geografia: Maria Eduarda Barbosa Oliveira : 4,75
Nota História: Carlos Eduardo Barbosa Oliveira : 5,25
Nota História: Carlos Eduardo Barbosa Oliveira : 7
Nota História: Carlos Eduardo Barbosa Oliveira : 5
Nota História: Carlos Eduardo Barbosa Oliveira : 4,25
Nota História: Carlos Eduardo Barbosa Oliveira : 3,25
Nota História: Carlos Eduardo Barbosa Oliveira : 7,25
Nota História: Carlos Eduardo Barbosa Oliveira : 6,5
Nota História: Carlos Eduardo Barbosa Oliveira : 6
Nota História: Carlos Eduardo Barbosa Oliveira : 6
Nota História: Carlos Eduardo Barbosa Oliveira : 4,75
Nota História: Maria Eduarda Barbosa Oliveira : 5,25
Nota História: Maria Eduarda Barbosa Oliveira : 7
Nota História: Maria Eduarda Barbosa Oliveira : 5
Nota História: Maria Eduarda Barbosa Oliveira : 4,25
Nota História: Maria Eduarda Barbosa Oliveira : 3,25
Nota História: Maria Eduarda Barbosa Oliveira : 7,25
Nota História: Maria Eduarda Barbosa Oliveira : 6,5
Nota História: Maria Eduarda Barbosa Oliveira : 6
Nota História: Maria Eduarda Barbosa Oliveira : 6
Nota História: Maria Eduarda Barbosa Oliveira : 4,75
Nota Física: Carlos Eduardo Barbosa Oliveira : 5,25
Nota Física: Carlos Eduardo Barbosa Oliveira : 7
Nota Física: Carlos Eduardo Barbosa Oliveira : 5
Nota Física: Carlos Eduardo Barbosa Oliveira : 4,25
Nota Física: Carlos Eduardo Barbosa Oliveira : 3,25
Nota Física: Carlos Eduardo Barbosa Oliveira : 7,25
Nota Física: Carlos Eduardo Barbosa Oliveira : 6,5
Nota Física: Carlos Eduardo Barbosa Oliveira : 6
Nota Física: Carlos Eduardo Barbosa Oliveira : 6
Nota Física: Carlos Eduardo Barbosa Oliveira : 4,75
Nota Física: Maria Eduarda Barbosa Oliveira : 5,25
Nota Física: Maria Eduarda Barbosa Oliveira : 7
Nota Física: Maria Eduarda Barbosa Oliveira : 5
Nota Física: Maria Eduarda Barbosa Oliveira : 4,25
Nota Física: Maria Eduarda Barbosa Oliveira : 3,25
Nota Física: Maria Eduarda Barbosa Oliveira : 7,25
Nota Física: Maria Eduarda Barbosa Oliveira : 6,5
Nota Física: Maria Eduarda Barbosa Oliveira : 6
Nota Física: Maria Eduarda Barbosa Oliveira : 6
Nota Física: Maria Eduarda Barbosa Oliveira : 4,75
---------------------------------------------------------------------------------------------------------
Gostaria de entender qual a sub-rotina eu deveria inserir no código para que cada ALUNO fosse tratado
individualmente.
--
George Robinson
Analista de Suporte
Tel: +55 (21) 97449-8138
_______________________________________________
Lista brasileira de usuários de shell script
Endereço de e-mail da lista: shell-script-pt@nongnu.org
Para se inscrever ou desinscrever acesse:
https://lists.nongnu.org/mailman/listinfo/shell-script-pt
Para ver os arquivos da lista (mensagens anteriores) e pesquisar nelas, acesse
https://lists.nongnu.org/archive/html/shell-script-pt/
NOTA: A lista anterior, no Yahoo Groups, foi *desativada*. Por favor utilize
somente esta.