https://wiki.sj.ifsc.edu.br/index.php?title=Programa%C3%A7%C3%A3o_para_Redes_de_Computadores_(t%C3%A9cnico)_(di%C3%A1rio_2012-2)_-_prova_3&feed=atom&action=historyProgramação para Redes de Computadores (técnico) (diário 2012-2) - prova 3 - Histórico de revisão2024-03-28T21:45:55ZHistórico de revisões para esta página neste wikiMediaWiki 1.35.9https://wiki.sj.ifsc.edu.br/index.php?title=Programa%C3%A7%C3%A3o_para_Redes_de_Computadores_(t%C3%A9cnico)_(di%C3%A1rio_2012-2)_-_prova_3&diff=50267&oldid=prevEtorresini: Criou página com '# O programa "numeros" mostra a tabuada clássica: todas as possibilidades de multiplicação entre os números 1 a 10. Além disso, esse programa indicará se o resultado da ope...'2013-02-25T21:40:13Z<p>Criou página com '# O programa "numeros" mostra a tabuada clássica: todas as possibilidades de multiplicação entre os números 1 a 10. Além disso, esse programa indicará se o resultado da ope...'</p>
<p><b>Página nova</b></p><div># O programa "numeros" mostra a tabuada clássica: todas as possibilidades de multiplicação entre os números 1 a 10. Além disso, esse programa indicará se o resultado da operação (de multiplicação) é um número par, ímpar, primo ou perfeito. Nota: o programa informa apenas uma "qualidade" - se for primo ou perfeito, não informará se é par ou ímpar. Porém, o programa possui erros de sintaxe (código) e de semântica (funcionalidade).<br />
## Expanda as funções para números entre 10 a 100, ao invés de 1 a 10. Além disso, teste também se o resultado da multiplicação é potência de outro número (Ex.: 4 é potência de 2).<br />
# O programa arquivos, conhecido das aulas de segunda-feira, lista as partições e seus tamanhos para, em seguida, apresentar os diretórios e arquivos maiores em termos de espaço ocupado. O usuário poderá, portanto, localizar arquivos ou diretórios grandes. Porém, o programa possui erros de sintaxe (código) e de semântica (funcionalidade).<br />
## Expanda as funções do programa, adicionando também extensões de arquivos, permitindo assim listas apenas arquivos com uma extensão definida pelo usuário: .mp3, .mov, etc.<br />
<br />
Código do programa "numeros":<br />
<syntaxhighlight lang=bash><br />
#!/bin/bash<br />
<br />
qualidade()<br />
{<br />
CONTADOR="0"<br />
for divisor in $(seq 1 $(expr $1 - 1))<br />
RESTO=$(echo ${1} % ${divisor}| bc)<br />
if [ "${RESTO}" = "0" ]<br />
then<br />
CONTADOR=$(expr ${CONTADOR} + ${divisor})<br />
done<br />
case ${CONTADOR} in<br />
"$1")<br />
echo "primo"<br />
;; <br />
"${1}")<br />
echo "perfeito<br />
;; <br />
*) <br />
echo ""<br />
;; <br />
esac<br />
}<br />
<br />
coluna1="0"<br />
while [ "${coluna1}"-le "9" ]<br />
do<br />
coluna2="1"<br />
while [ "${coluna2}" -le "9"]<br />
do<br />
# <br />
# Mostra as colunas de combinação<br />
echo -n "${coluna1} * ${coluna2} = "<br />
# <br />
# Multiplica as colunas<br />
OPERACAO=$(echo "${coluna1} * ${coluna2}'' | bc)<br />
# <br />
# Verifica se o número é primo ou perfeito<br />
# Se não for, verifica-se se é par ou ímpar<br />
QUALIDADE=$(qualidade ${OPERACAO})<br />
if [ "${QUALIDADE}" = "" ]<br />
then<br />
RESTO=${QUALIDADE}<br />
else<br />
RESTO=$(echo "${OPERACAO} % 2" | bc)<br />
fi <br />
case "${RESTO}" in<br />
"0")<br />
echo -e "$OPERACAO\tpar"<br />
;;<br />
"1")<br />
echo -e "${OPERACAO}\tímpar"<br />
;;<br />
"primo")<br />
echo -e "${OPERACAO}\tprimo"<br />
;;<br />
"perfeito")<br />
echo -e "${OPERACAO}\tperfeito"<br />
;;<br />
esac<br />
coluna2=$(expr ${coluna2} + 1)<br />
done<br />
coluna1="expr ${coluna1} + 1"<br />
done<br />
</syntaxhighlight><br />
<br />
Código do programa "arquivos":<br />
<syntaxhighlight lang=bash><br />
#!/bin/bash<br />
<br />
TEMP="/tmp/.df-h"<br />
<br />
# Primeira parte do programa: listar as partições<br />
# e deixar o usuário escolher uma<br />
<br />
mostrar_arquivo_numerado()<br />
{<br />
linhas="cat ${1} | wc -l"<br />
for linha in $(seq 1 ${linhas})<br />
do<br />
echo -n "["<br />
echo -n "${linha}"<br />
echo -n "] "<br />
cat ${1} | head -n {linha} tail -n 1<br />
}<br />
<br />
listar_particoes()<br />
{<br />
df -h > ${TEMP}<br />
mostrar_arquivo ${TEMP}<br />
echo -n "Por favor, escolha uma partição: "<br />
read numero<br />
diretorio=$cat ${TEMP} | head -n ${numero} | tail -n 1 | cut -d % -f 2)<br />
cd ${diretorio}<br />
echo "Agora você está no diretório $(echo ${diretorio})."<br />
}<br />
<br />
listar_diretorios()<br />
{<br />
while true<br />
do<br />
echo ""<br />
echo "[1] Listar os arquivos/diretórios do diretório corrente."<br />
echo "[2] Entrar em sub-diretório."<br />
echo "[3] Voltar ao diretório anterior."<br />
echo -n "Por favor, escolha uma opção: "<br />
read opcao<br />
echo ""<br />
echo "Diretório corrente: $(pwd)"<br />
case ${opcao} in<br />
"1")<br />
echo "Os 5 mais:"<br />
du * 2> /dev/null | sort -n | tail -n 5<br />
;;<br />
"2")<br />
echo -n "Por favor, informe qual o diretório: "<br />
read diretorio<br />
cd ${diretorio}<br />
;;<br />
"3")<br />
cd ..<br />
;;<br />
*)<br />
exit<br />
esac<br />
done<br />
}<br />
<br />
#listar_particoes<br />
listar_diretorios<br />
</syntaxhighlight><br />
{{Voltar|Programação para Redes de Computadores (técnico) (diário 2012-2)|diário de bordo de 2012-2}}</div>Etorresini