Mudanças entre as edições de "Programação para Redes de Computadores (técnico) (diário 2012-1) - Prova 1"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
Linha 26: Linha 26:
 
* A parcela média.
 
* A parcela média.
 
* A quantidade de juro final pago.
 
* A quantidade de juro final pago.
 +
 +
==Uma possível resposta==
 +
<syntaxhighlight lang=bash>
 +
#!/bin/bash
 +
 +
# ${1} será o valor do empréstimo
 +
# ${2} será a quantidade de parcelas
 +
# ${3} será o valor do juro em número inteiro (%)
 +
 +
# Primeiro teste: se o programa tem os três valores para calcular
 +
if [ "${3}" = "" ]
 +
then
 +
echo "Use: ${0} (empréstimo) (parcelas) (juro em %)"
 +
exit
 +
fi
 +
 +
# Segundo teste: se digitou a quantidade certa de parcelas: 1 a 12.
 +
if [ "${2}" -lt "0" -o "${2}" -gt "12" ]
 +
then
 +
echo "O número de parcelas (${2}) está fora dos limites: 1 a 12."
 +
exit
 +
fi
 +
 +
parcelaSemJuro=$(echo "scale=2; ${1} / ${2}" | bc)
 +
echo "Empréstimo de R$ ${1} em ${2} parcelas com juros a ${3}%."
 +
echo ""
 +
 +
# 1o. mês
 +
parcela=${parcelaSemJuro}
 +
somatorio=${parcela}
 +
echo "1o. mês: R$ ${parcela} (sem juros)."
 +
 +
# Outros meses (2 em diante)
 +
for numParcela in $(seq 2 ${2})
 +
do
 +
parcela=$(echo "scale=2; ${parcela} * (1 + ${3} / 100)" | bc)
 +
somatorio=$(echo "scale=2; ${somatorio} + ${parcela}" | bc)
 +
echo "${numParcela}o. mês: R$ ${parcela}."
 +
done
 +
 +
# Escrever a parcela média
 +
echo ""
 +
echo "A parcela média é R$ $(echo "scale=2; ${somatorio} / ${2}" | bc)."
 +
 +
# Escrever o juro pago ao final de todas as prestações
 +
echo "O juro pago é de R$ $(echo "scale=2; ${somatorio} - ${1}" | bc)."
 +
echo ""
 +
</syntaxhighlight>
  
 
=Questão 3=
 
=Questão 3=

Edição das 19h40min de 10 de maio de 2012

Questão 1

Desenvolva um programa de computador que emita o seguinte relatório para todos os usuários. Considere, para os itens abaixo, seus arquivos pessoais no diretório /home:

  • Nome do usuário.
  • Quantidade de arquivos.
  • Tamanho do espaço em disco ocupado.

Uma possível resposta

#!/bin/bash

cd /home
for usuario in $(find . -mindepth 1 -maxdepth 1 -type d | cut -c 3-)
do
	echo -n "Usuário ${usuario}"
	# Listar arquivos
	echo -n " possui $(find ${usuario} 2> /dev/null| wc -l) arquivo(s)"
	# Espaço em disco ocupado
	echo " e de disco $(du -hc ${usuario} 2> /dev/null | tail -1 | cut -d t -f 1)"
done

Questão 2

Desenvolva um programa que calcula a parcela média de um investimento com juros compostos - até 12 parcelas. Informe:

  • O valor de cada parcela sem juro.
  • O valor de cada parcela acrescida de juro.
  • A parcela média.
  • A quantidade de juro final pago.

Uma possível resposta

#!/bin/bash

# ${1} será o valor do empréstimo
# ${2} será a quantidade de parcelas
# ${3} será o valor do juro em número inteiro (%)

# Primeiro teste: se o programa tem os três valores para calcular
if [ "${3}" = "" ]
then
	echo "Use: ${0} (empréstimo) (parcelas) (juro em %)"
	exit
fi

# Segundo teste: se digitou a quantidade certa de parcelas: 1 a 12.
if [ "${2}" -lt "0" -o "${2}" -gt "12" ]
then
	echo "O número de parcelas (${2}) está fora dos limites: 1 a 12."
	exit
fi

parcelaSemJuro=$(echo "scale=2; ${1} / ${2}" | bc)
echo "Empréstimo de R$ ${1} em ${2} parcelas com juros a ${3}%."
echo ""

# 1o. mês
parcela=${parcelaSemJuro}
somatorio=${parcela}
echo "1o. mês: R$ ${parcela} (sem juros)."

# Outros meses (2 em diante)
for numParcela in $(seq 2 ${2})
do
	parcela=$(echo "scale=2; ${parcela} * (1 + ${3} / 100)" | bc)
	somatorio=$(echo "scale=2; ${somatorio} + ${parcela}" | bc)
	echo "${numParcela}o. mês: R$ ${parcela}."
done

# Escrever a parcela média
echo ""
echo "A parcela média é R$ $(echo "scale=2; ${somatorio} / ${2}" | bc)."

# Escrever o juro pago ao final de todas as prestações
echo "O juro pago é de R$ $(echo "scale=2; ${somatorio} - ${1}" | bc)."
echo ""

Questão 3

Configure automaticamente o domínio DNS, e seu reverso, de acordo com as seguintes informações:

  • Domínio: prc.com.br
  • Servidor DHCP: 192.168.1.2
  • Servidor Web: 192.168.1.1
  • Servidor DNS: 192.168.1.2
  • Servidor SSH: 192.168.1.1

Obs.: cada servidor pode ter, no máximo, 1 registro A e vários apelidos (CNAME).

Questão 4

Ainda sobre o problema da questão anterior, teste o servidor e mostre os resultados de sucesso e fracasso.