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

De MediaWiki do Campus São José
Ir para: navegação, pesquisa
(22/04)
(22/04)
Linha 188: Linha 188:
 
     escrever "\nO número ", número, " NÃO é primo."
 
     escrever "\nO número ", número, " NÃO é primo."
 
fimSe
 
fimSe
 +
 +
fim
 +
</syntaxhighlight>
 +
 +
Ou mais características: se é primo, se é perfeito e sua soma cabalística (soma dos algarismos até resultar em um único dígito):
 +
<syntaxhighlight lang=c>
 +
inicio
 +
 +
inteiro número
 +
inteiro divisores
 +
inteiro divisor
 +
inteiro resto
 +
inteiro centena
 +
inteiro dezena
 +
inteiro unidade
 +
inteiro algarismos
 +
 +
para número de 1 até 999 passo 1
 +
    escrever "[",número
 +
   
 +
    divisores <- 0
 +
    divisor <- 1
 +
    enquanto divisor <= (número / 2) faz
 +
        resto <- número % divisor
 +
        se resto = 0 então
 +
            divisores <- divisores + divisor
 +
        fimSe
 +
        divisor <- divisor + 1
 +
    fimEnquanto
 +
    se divisores = 1 então
 +
        escrever "p"
 +
    senão
 +
        escrever "."
 +
    fimSe
 +
    se divisores = número então
 +
        escrever "P"
 +
    senão
 +
        escrever "."
 +
    fimSe
 +
   
 +
    centena <- número / 100
 +
    dezena <- (número % 100) / 10
 +
    unidade <- número % 10
 +
    algarismos <- centena + dezena + unidade
 +
    se algarismos > 9 então
 +
        dezena <- algarismos / 10
 +
        unidade <- algarismos % 10
 +
    fimSe
 +
    se algarismos > 9 então
 +
        dezena <- algarismos / 10
 +
        unidade <- algarismos % 10
 +
    fimSe
 +
    algarismos <- dezena + unidade
 +
    escrever algarismos,"]"
 +
 +
    escrever " - "
 +
próximo
  
 
fim
 
fim
 
</syntaxhighlight>
 
</syntaxhighlight>

Edição das 21h35min de 22 de abril de 2013

Aulas

01/04

Problema: saber o valor final de parcelamento (1 +3) a 2% de juros.

inicio

// Problema: pagamento de uma geladeira, comprada a prazo em
// 1 + 3 x com juros de 2% ao mês.
escrever "Por favor, informe o valor da geladeira: "
real valorGeladeira
ler valorGeladeira

// 1) Saber quanto é o valor de entrada.
escrever "Agora, informe o valor da entrada: "
real entrada
ler entrada

// 2) Deduzir o valor de entrada do valor total, e depois dividir por 3. Isso 
//    dará o valor da parcela sem juro. Aplicar, no segundo mês, já o juro de 2%.
real parcela
parcela <- (((valorGeladeira - entrada) / 3) * 1.02)

// 3) No terceiro mês, aplicar o mesmo juro sobre o valor do mês anterior;
//    ou seja, juro composto.
real parcela2
parcela2 <- (parcela * 1.02)

// 4) Repetir o processo no quarto mês.
real parcela3
parcela3 <- (parcela2 * 1.02)

// 5) Somar tudo e ver o prejuízo.
real somatorio
somatorio <- entrada + parcela + parcela2 + parcela3
escrever "Ao final, a geladeira custou ", somatorio, "."

fim

08/04

E se todas as opções forem variáveis?

inicio

escrever "Por favor, informe o valor da geladeira: "
real valorGeladeira
ler valorGeladeira

escrever "Deseja pagar a entrada? S ou N"
texto pagarEntrada
ler pagarEntrada

real entrada
se (pagarEntrada = "N" ou pagarEntrada = "n") entao 
    entrada<-0
senao 
    escrever "Agora, informe o valor da entrada: "
    ler entrada
fimse 

escrever "Valor de juros: "
real valorJuros
ler valorJuros

escrever "Quantidade de parcelas: "
real qtdParcelas
ler qtdParcelas

real somatorio
real parcela
parcela <- (valorGeladeira - entrada) / qtdParcelas

inteiro mes
para mes de 1 ate qtdParcelas passo 1
    parcela <- parcela * (1 + valorJuros * 0.01)
    somatorio <- somatorio + parcela
proximo 

escrever "Ao final, a geladeira custou ", entrada + somatorio, "."
escrever "\nForam ", qtdParcelas, " parcelas de ", somatorio / qtdParcelas, " cada."

fim

15/04

Problema do dia: Dado um dia e mês neste ano de 2013, em que semana estamos?

inicio

inteiro dias
inteiro mês
inteiro semanas
inteiro resto
inteiro quociente

//Pedir ao usuário:
//- dia
//- mês
escrever "Informe o dia: "
ler dias
escrever "Agora, informe o mês (número): "
ler mês

//Dependendo do mês, deve-se somar à quantidade de dias, de acordo com o calendário juliano.
//Ao final, teremos a quantidade de dias no ano.
escolhe mês
    caso 1: // Janeiro
        dias <- dias
    caso 2: // Fevereiro
        dias <- dias + 31
    caso 3: // Março
        dias <- dias + 31 + 28
    caso 4: // Abril
        dias <- dias + 31 + 28 + 31
    caso 5: // Maio
        dias <- dias + 31 + 28 + 31 + 30
    caso 6: // Junho
        dias <- dias + 31 + 28 + 31 + 30 + 31
    caso 7: // Julho
        dias <- dias + 31 + 28 + 31 + 30 + 31 + 30
    caso 8: // Agosto
        dias <- dias + 31 + 28 + 31 + 30 + 31 + 30 + 31
    caso 9: // Setembro
        dias <- dias + 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31
    caso 10: // Outubro
        dias <- dias + 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30
    caso 11: // Novembro
        dias <- dias + 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31
    caso 12: // Dezembro
        dias <- dias + 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30
fimEscolhe        

//Como a primeira semana tem apenas 5 dias (começa na terça), se a soma estiver entre 1 e 5 então
// estamos ainda na primeira semana. Caso contrário, apenas subtraimos esse valor (5) da soma.
se dias >=1 e dias <= 5 então
    semanas <- 1
senão
    dias <- dias - 5
    //Com o valor que sobrou, faz-se uma divisão por 7. Se o resto for 0, o resultado é o próprio
    // quociente mais um (a primeira semana); caso contrário (o resto está entre 1 e 6), então
    // somamos: primeira semana (1) + quociente + 1 semana.
    resto <- dias % 7
    se resto = 0 então
        semanas <- (dias / 7) + 1
    senão
        semanas <- 1 + (dias / 7) + 1
    fimSe
fimSe

escrever "É a semana número ", semanas, "."

fim

22/04

O clássico problema: um número é primo quando...?

inicio

// Declaração de variáveis.
inteiro número
inteiro divisor
inteiro resto
inteiro divisores

// Interação com o usuário: número a ser testado como primo.
escrever "Por favor, digite um número inteiro entre 1 e 10000: "
ler número

// Como 1 e o próprio número sempre serão divisores, interessa saber se os valores
// intermediários conseguem dividir, com resto inteiro, o número solicitado.
divisor <- 2
divisores <- 0
enquanto divisor < número faz
    resto <- número % divisor
    se resto = 0 então
        escrever "[", divisor, "]"
        divisores <- divisores + divisor
    senão
        escrever "."
    fimSe
    divisor <- divisor + 1
fimEnquanto

se divisores = 0 então
    escrever "\nO número ", número, " é primo."
senão
    escrever "\nO número ", número, " NÃO é primo."
fimSe

fim

Ou mais características: se é primo, se é perfeito e sua soma cabalística (soma dos algarismos até resultar em um único dígito):

inicio

inteiro número
inteiro divisores
inteiro divisor
inteiro resto
inteiro centena
inteiro dezena
inteiro unidade
inteiro algarismos

para número de 1 até 999 passo 1
    escrever "[",número
    
    divisores <- 0
    divisor <- 1
    enquanto divisor <= (número / 2) faz
        resto <- número % divisor
        se resto = 0 então
            divisores <- divisores + divisor
        fimSe
        divisor <- divisor + 1
    fimEnquanto
    se divisores = 1 então
        escrever "p"
    senão
        escrever "."
    fimSe
    se divisores = número então
        escrever "P"
    senão
        escrever "."
    fimSe
    
    centena <- número / 100
    dezena <- (número % 100) / 10
    unidade <- número % 10
    algarismos <- centena + dezena + unidade
    se algarismos > 9 então
        dezena <- algarismos / 10
        unidade <- algarismos % 10
    fimSe
    se algarismos > 9 então
        dezena <- algarismos / 10
        unidade <- algarismos % 10
    fimSe
    algarismos <- dezena + unidade
    escrever algarismos,"]"

    escrever " - "
próximo

fim