Mudanças entre as edições de "Programação para Redes de Computadores (técnico) (diário 2012-1)"
Ir para navegação
Ir para pesquisar
(→12/05) |
(→12/05) |
||
Linha 263: | Linha 263: | ||
echo "${numero2} não é multiplo de ${numero1}." | echo "${numero2} não é multiplo de ${numero1}." | ||
fi | fi | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | O mesmo [[#05/03|problema de conversão]]: | ||
+ | <syntaxhighlight lang=bash> | ||
+ | #!/bin/bash | ||
+ | |||
+ | # Testa se o usuário digitou um parâmetro | ||
+ | if [ "${1}" = "" ] | ||
+ | then | ||
+ | # O parâmetro ${0} é o próprio comando | ||
+ | echo "Use: ${0} (número)" | ||
+ | exit | ||
+ | fi | ||
+ | numero=${1} | ||
+ | |||
+ | # Testa se o parâmetro é um número | ||
+ | soma=$(echo "${numero} + 1" | bc) | ||
+ | # Se a soma for zero (o parâmetro é inválido) | ||
+ | # E | ||
+ | # o parâmetro é diferente de zero (para afetar a soma) | ||
+ | if [ "${soma}" = "1" -a "${numero}" != "0" ] | ||
+ | then | ||
+ | echo "O parâmetro informado não é número. Tente novamente." | ||
+ | exit | ||
+ | fi | ||
+ | |||
+ | expoente="0" | ||
+ | while [ "${numero}" -ge "$(echo "2 ^ (${expoente} + 1)" | bc)" ] | ||
+ | do | ||
+ | expoente=$(echo "${expoente} + 1" | bc) | ||
+ | done | ||
+ | |||
+ | while [ ${expoente} -ge 0 ] | ||
+ | do | ||
+ | resto=$(echo "${numero} - 2 ^ ${expoente}" | bc) | ||
+ | # se resto >= 0 entao | ||
+ | if [ "${resto}" -ge "0" ] | ||
+ | then | ||
+ | # escrever "1" | ||
+ | echo -n "1" | ||
+ | # numero <- resto | ||
+ | numero=${resto} | ||
+ | # senao | ||
+ | else | ||
+ | # escrever "0" | ||
+ | echo -n "0" | ||
+ | # fimse | ||
+ | fi | ||
+ | # se expoente > 0 entao | ||
+ | if [ "${expoente}" -gt "0" ] | ||
+ | then | ||
+ | # resto <- expoente % 8 | ||
+ | resto=$(echo "${expoente} % 8" | bc) | ||
+ | # se resto = 0 entao | ||
+ | if [ "${resto}" = "0" ] | ||
+ | then | ||
+ | # escrever "." | ||
+ | echo -n "." | ||
+ | # fimse | ||
+ | fi | ||
+ | # fimse | ||
+ | fi | ||
+ | # expoente <- expoente - 1 | ||
+ | expoente=$(echo "${expoente} - 1" | bc) | ||
+ | done | ||
+ | echo "" | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Edição das 22h18min de 12 de março de 2012
Sobre a disciplina
- Horários de atendimento: segundas-feiras das 17:30 às 18:30 e sextas-feiras das 11:30 às 12:30.
Lógica de Programação
27/02
- Apresentação da disciplina.
- Linguagem de programação estruturada: instruções, operadores, tipos, alteração do fluxo do código em tempo de execução.
- Apresentação do ambiente e linguagem Portugol.
- Primeiro problema em Portugol: dados dois números, verificar se um é múltiplo do outro.
// Início do programa. inicio // Pedir o primeiro número. escrever "Por favor, digite um número natural: " inteiro primeiroNumero ler primeiroNumero // Pedir o segundo número. escrever "E agora, digite um segundo número natural: " inteiro segundoNumero ler segundoNumero // Calcule se o primeiro é múltiplo do segundo. inteiro resto resto <- primeiroNumero % segundoNumero // Se for, mostre na tela. se resto = 0 então escrever "O primeiro é múltiplo do segundo." fimse // Senão, calcule se o segundo é múltiplo do primeiro. inteiro resto2 resto2 <- segundoNumero % primeiroNumero // Se for, mostre na tela. se resto2 = 0 então escrever "O segundo é múltiplo do primeiro." fimse se resto =/= 0 e resto2 =/= 0 então escrever "Não há múltiplos." fimse // Fim do programa. fim
- Segundo problema: um conversor decimal-binário para números até 255.
05/03
Conversor de decimal para binário utilizando apenas estruturas de decisão:
inicio escrever "Por favor , digite um número entre 0 e 255: " inteiro numero ler numero inteiro resto resto <- numero - 128 se resto >= 0 entao escrever "1" numero <- resto senao escrever "0" fimse resto <- numero - 64 se resto >= 0 entao escrever "1" numero <- resto senao escrever "0" fimse resto <- numero - 32 se resto >= 0 entao escrever "1" numero <- resto senao escrever "0" fimse resto <- numero - 16 se resto >= 0 entao escrever "1" numero <- resto senao escrever "0" fimse resto <- numero - 8 se resto >= 0 entao escrever "1" numero <- resto senao escrever "0" fimse resto <- numero - 4 se resto >= 0 entao escrever "1" numero <- resto senao escrever "0" fimse resto <- numero - 2 se resto >= 0 entao escrever "1" numero <- resto senao escrever "0" fimse resto <- numero - 1 se resto >= 0 entao escrever "1" numero <- resto senao escrever "0" fimse fim
Conversor de decimal para binário utilizando estrutura de repetição:
inicio inteiro numero inteiro resto inteiro expoente escrever "Por favor , digite um número entre 0 e 255: " ler numero expoente <- 7 repete resto <- numero - ( 2 ^ expoente ) se resto >= 0 entao escrever "1" numero <- resto senao escrever "0" fimse expoente <- expoente - 1 ate expoente < 0 fim
Conversor de decimal para binário utilizando estrutura de repetição e validação da entrada:
inicio inteiro numero inteiro resto inteiro expoente escrever "Por favor , digite um número entre 0 e 255: " ler numero enquanto (numero < 0) ou (numero > 255) faz ler numero fimenquanto expoente <- 7 repete resto <- numero - ( 2 ^ expoente ) se resto >= 0 entao escrever "1" numero <- resto senao escrever "0" fimse expoente <- expoente - 1 ate expoente < 0 fim
Conversor de decimal para binário com quaisquer casas binárias e divisão em bytes:
inicio inteiro numero inteiro resto inteiro expoente escrever "Por favor , digite um número inteiro: " ler numero enquanto numero < 0 faz escrever "Número inválido! Um número inteiro: " ler numero fimenquanto expoente <- 0 enquanto numero >= ( 2 ^ ( expoente + 1 ) ) faz expoente <- expoente + 1 fimenquanto repete resto <- numero - ( 2 ^ expoente ) se resto >= 0 entao escrever "1" numero <- resto senao escrever "0" fimse se expoente > 0 entao resto <- expoente % 8 se resto = 0 entao escrever "." fimse fimse expoente <- expoente - 1 ate expoente < 0 fim
Linguagens de Programação
Shell Script
12/05
O mesmo problema de verificação de múltiplos:
#!/bin/bash
# Pedir o primeiro número.
clear
echo -n "Por favor, informe o 1o. número: "
read numero1
# Pedir o segundo número.
echo -n "Agora, digite o 2o. número: "
read numero2
# Calcule se o primeiro é múltiplo do segundo.
resto=$(expr ${numero1} % ${numero2})
# Se for, mostre na tela.
if [ "${resto}" = "0" ]
then
echo "${numero1} é multiplo de ${numero2}."
else
echo "${numero1} não é multiplo de ${numero2}."
fi
# Senão, calcule se o segundo é múltiplo do primeiro.
resto=$(expr ${numero2} % ${numero1})
# Se for, mostre na tela.
if [ "${resto}" = "0" ]
then
echo "${numero2} é multiplo de ${numero1}."
else
echo "${numero2} não é multiplo de ${numero1}."
fi
Agora com passagem direta dos parâmetros na linha de comando:
#!/bin/bash
if [ "${2}" = "" ]
then
echo "Informe pelo menos dois parâmetros."
echo "Use: ${0} (número) (número)"
exit
fi
numero1=${1}
numero2=${2}
# Calcule se o primeiro é múltiplo do segundo.
resto=$(expr ${numero1} % ${numero2})
# Se for, mostre na tela.
if [ "${resto}" = "0" ]
then
echo "${numero1} é multiplo de ${numero2}."
else
echo "${numero1} não é multiplo de ${numero2}."
fi
# Senão, calcule se o segundo é múltiplo do primeiro.
resto=$(expr ${numero2} % ${numero1})
# Se for, mostre na tela.
if [ "${resto}" = "0" ]
then
echo "${numero2} é multiplo de ${numero1}."
else
echo "${numero2} não é multiplo de ${numero1}."
fi
O mesmo problema de conversão:
#!/bin/bash
# Testa se o usuário digitou um parâmetro
if [ "${1}" = "" ]
then
# O parâmetro ${0} é o próprio comando
echo "Use: ${0} (número)"
exit
fi
numero=${1}
# Testa se o parâmetro é um número
soma=$(echo "${numero} + 1" | bc)
# Se a soma for zero (o parâmetro é inválido)
# E
# o parâmetro é diferente de zero (para afetar a soma)
if [ "${soma}" = "1" -a "${numero}" != "0" ]
then
echo "O parâmetro informado não é número. Tente novamente."
exit
fi
expoente="0"
while [ "${numero}" -ge "$(echo "2 ^ (${expoente} + 1)" | bc)" ]
do
expoente=$(echo "${expoente} + 1" | bc)
done
while [ ${expoente} -ge 0 ]
do
resto=$(echo "${numero} - 2 ^ ${expoente}" | bc)
# se resto >= 0 entao
if [ "${resto}" -ge "0" ]
then
# escrever "1"
echo -n "1"
# numero <- resto
numero=${resto}
# senao
else
# escrever "0"
echo -n "0"
# fimse
fi
# se expoente > 0 entao
if [ "${expoente}" -gt "0" ]
then
# resto <- expoente % 8
resto=$(echo "${expoente} % 8" | bc)
# se resto = 0 entao
if [ "${resto}" = "0" ]
then
# escrever "."
echo -n "."
# fimse
fi
# fimse
fi
# expoente <- expoente - 1
expoente=$(echo "${expoente} - 1" | bc)
done
echo ""
Projeto da disciplina
Projeto Integrador
Referências
- Popularidade das linguages de programação: http://www.langpop.com
- Material introdutório e avançado sobre shell script: http://www.aurelio.net/shell/
- Jogos de lógica