Física | Análise de Circuitos | Lógica de Programação | Tecnologia da Informação | Sobre o blog

Mostrando postagens com marcador Algoritmos. Mostrar todas as postagens
Mostrando postagens com marcador Algoritmos. Mostrar todas as postagens

domingo, 28 de novembro de 2010

Algoritmo de ordenação

Algoritmo "Ordena"
Var
     num: inteiro
     vet: vetor [1..10] de inteiro
Inicio
    Procedimento recebe()
    Var
        k: inteiro
    Inicio
        k <- 0
        Repita
            k <- k + 1
            Escreva("Vetor [",k,"]: ")
            Leia(vet[k])
        Ate(k >= 10)ou(vet[k] = 0)
        num <- k
    Fimprocedimento
    Procedimento ordena_enq()
    Var
         s, aux: inteiro
    Inicio
          s <- 1
          Enquanto (s < num) FACA
               Se(vet[s+1] < vet[s]) entao
                    aux <- vet[s+1]
                    vet[s+1] <- vet[s]
                    vet[s] <- aux
                    s <- 1
               Senao
                    s <- s + 1
               Fimse
          Fimenquanto
    Fimprocedimento
    Procedimento mostra()
    Var
        j: inteiro
    Inicio
        Escreval("O mesmo vetor ordenado corresponde a: ")
        Para j de 1 ate num faca
            Escreval("Vetor [",j,"]: ",vet[j])
        Fimpara
    Fimprocedimento
    Escreval("Digite os valores para serem ordenados")
    Escreval("No maximo 10 valores - (zero) para terminar")
    Escreva("")
    recebe()
    ordena_enq()
    mostra()
Fimalgoritmo

sábado, 20 de novembro de 2010

Algoritmo comentado, explicando o funcionamento lógico

Faça um procedimento que recebe, por parâmetro, a hora de inicio e a hora de término de um jogo, ambas subdivididas em 2 valores distintos: horas e minutos. O procedimento deve retornar, também por parâmetro, a duração do jogo em horas e minutos, considerando que o tempo máximo de duração de um jogo é de 24 horas e que o jogo pode começar em um dia e terminar no outro.
Algoritmo "tempo de jogo"

Var
                hi, mi, hf, mf: inteiro
//hora inicial, minutos inicial, hora final e minutos final, do tipo inteiro
Inicio
//*Procedimento ficam dentro do código, porém antes de quaisquer comandos
//
//Este procedimento calcula a Duração do jogo
                Procedimento duracao(ho,mo,ht,mt: inteiro)
                // HO recebe o valor da variável HI, por parâmetro
                //MO recebe MI, HT recebe HF, e MT recebe o valor de MF
                Var
                               hd,md: inteiro
                               // hd = quantidade de Hora Total, ==> tempo de Jogo
                               //md = quantidade de Minutos no tempo do Jogo
                Inicio
                               //Hora total Inicia com ZERO
                               hd <- 0
                               Se(ho >= ht)entao
                                               //***Se Hora Inicial for maior doque a Final

                                               //É porque o programa começou em um dia

                                               //E acabou no outro.
                                               hd <- 12
                                               ht <- ht + 12

                                               //**Se Hora Inicial for Igual a Final, é porque durou 24 horas

                                               //(Limite de tempo, segundo o enunciado)
                               Fimse
                               Se (mo >mt) entao

                                               //Se Minuto Inicial For Maior do que o Final
                                               hd <- hd - 1
                                               mt <- mt + 60

                                               //Tira uma Hora do Tempo Total

                                               //E adiciona 60 minutos, ao Minuto Final

                                               //
                               Fimse
                               md <- (mt - mo)  //(Aqui, Min Final sempre será Maior ou Igual à Min Inicial)
                               hd <- hd + (ht -  ho)
                               //Hora total Recebe Ela, somado de (Hora Final menos Hora Inicial)
                               //Neste caso, Hora Final, sempre será Maior ou Igual, analogamente
                               Escreva("O jogo durou ",hd, " horas e ",md, " minutos.")
                               //MOSTRA a Saída na Tela!
                Fimprocedimento
//FIM do procedimento
//
//Inicio do Programa principal
//*(O programa na verdade começa aqui!)
    Escreval("Informe o horario inicial do jogo: ")
                Escreva("hora inicial: ")
                Leia(hi)
                //Atribui o valor que o usuário digita para Hora Inicial
                Enquanto (hi > 23) ou (hi < 0) FACA
                            //**Enquanto a Hora não for digitada corretamente, o código não continua
                Escreva("Hora invalida. hora inicial: ")
                            Leia(hi)
                Fimenquanto
                Escreva("min inicial: ")
                Leia(mi)
                Enquanto (mi > 59) ou (mi < 0) FACA
                               Escreva("Minutos invalidos. min inicial: ")
                               Leia(mi)
                Fimenquanto
    Escreval("Informe o horario final do jogo: ")
    Escreva("hora final: ")
                Leia(hf)
                Enquanto (hf > 23) ou (hf < 0) FACA
                Escreva("Hora invalida. hora final: ")
                            Leia(hf)
                Fimenquanto
                Escreva("min final: ")
                Leia(mf)
    Enquanto (mf > 59) ou (mf < 0) FACA
                               Escreva("Minutos invalidos. min final: ")
                               Leia(mf)
                Fimenquanto
//
//Passa por Parâmetro os valores, para que o procedimento possa
//Calcular e Escrever o tempo de Duração do Jogo (Horas e Minutos)
                duracao(hi,mi,hf,mf)
//Na hora de passar os valores,
//***Não se esqueça que a ORDEM das variáveis deve estar correta,
//**Caso contrário, causaria um ERRO LÓGICO, e não de Sintaxe
Fimalgoritmo

// Espero ter ajudado! :D

sexta-feira, 19 de novembro de 2010

Faça um procedimento que recebe, por parâmetro, a hora de inicio e a hora de término de um jogo, ambas subdivididas em 2 valores distintos: horas e minutos.

Faça um procedimento que recebe, por parâmetro, a hora de inicio e a hora de término de um jogo, ambas subdivididas em 2 valores distintos: horas e minutos. O procedimento deve retornar, também por parâmetro, a duração do jogo em horas e minutos, considerando que o tempo máximo de duração de um jogo é de 24 horas e que o jogo pode começar em um dia e terminar no outro.

Algoritmo "tempo de jogo"

Var
                hi, mi, hf, mf: inteiro
Inicio
                Procedimento duracao(ho,mo,ht,mt: inteiro)
                Var
                               hd,md: inteiro
                Inicio
                               hd <- 0
                               Se(ho >= ht)entao
                                               hd <- 12
                                               ht <- ht + 12
                               Fimse
                               Se (mo >mt) entao
                                               hd <- hd - 1
                                               mt <- mt + 60
                               Fimse
                               md <- (mt - mo)
                               hd <- hd + (ht -  ho)
                               Escreva("O jogo durou ",hd, " horas e ",md, " minutos.")
                Fimprocedimento
    Escreval("Informe o horário inicial do jogo: ")
                Escreva("hora inicial: ")
                Leia(hi)
                Enquanto (hi > 23) ou (hi < 0) FACA
                Escreva("Hora invalida. hora inicial: ")
                            Leia(hi)
                Fimenquanto
                Escreva("min inicial: ")
                Leia(mi)
                Enquanto (mi > 59) ou (mi < 0) FACA
                               Escreva("Minutos inválidos. min inicial: ")
                               Leia(mi)
                Fimenquanto
    Escreval("Informe o horário final do jogo: ")
    Escreva("hora final: ")
                Leia(hf)
                Enquanto (hf > 23) ou (hf < 0) FACA
                Escreva("Hora invalida. hora final: ")
                            Leia(hf)
                Fimenquanto
                Escreva("min final: ")
                Leia(mf)
    Enquanto (mf > 59) ou (mf < 0) FACA
                               Escreva("Minutos inválidos. min final: ")
                               Leia(mf)
                Fimenquanto
                duracao(hi,mi,hf,mf)
Fimalgoritmo
 Algoritmo Verificado! 

Jefferson, este código está funcionando,
mas se quiser depois posto o mesmo código com comentários
vlw, até mais ^^

Faça um procedimento que recebe a idade de um nadador por parâmetro e retorna, também por parâmetro, a categoria desse nadador de acordo com a tabela abaixo:

5 a 7 anos - Infantil A
8 a 10 anos - Infantil B
11-13 anos - Juvenil A
14-17 anos - Juvenil B
Maiores de 18 anos (inclusive) - Adulto
Algoritmo "Classifica nadador por idade"
var
    idade: inteiro
Inicio
    //inicio do procedimento
    Procedimento classificacao(id: inteiro)
// recebe o valor da variavel id por parametro
    Inicio
        Escreval("A classificacao é ")
        // Faz a estrutura de condição, com o valor digitado pelo usuário
        Se (id >= 5) entao
            Se (id <= 7) entao
                Escreva("Infantil A")
            Senao
                Se (id <= 10) entao
                    Escreva("Infantil B")
                Senao
                    Se (id <= 13) entao
                        Escreva("Juvenil A")
                    Senao
                        Se (id <= 17) entao
                            Escreva("Juvenil B")
                        Senao
                            Escreva("Adulto")
                        Fimse
                    Fimse
                Fimse
            Fimse
        Senao
            Escreva("E muito criança para nadar!")
        Fimse
    Fimprocedimento
    //fim do procedimento
    Escreva("Informe a idade do nadador: ")
    Leia(idade)
    // Leia a idade
    // Passa o valor da idade por parametro para o procedimento
    classificacao(idade)
    //O procedimento escreve na tela a categoria do nadador
Fimalgoritmo

terça-feira, 16 de novembro de 2010

L7 - 13 - Escreva um algoritmo que leia duas matrizes 3 X 3 e coloque o produto da multiplicação delas em uma terceira matriz.

Escreva um algoritmo que leia duas matrizes 3 X 3 e coloque o produto da multiplicação delas em uma terceira matriz. No exemplo abaixo é mostrado o resultado da multiplicação de duas matrizes:
Sendo A e B as matrizes multiplicando e multiplicador, a matriz produto C é obtida da seguinte forma:
A0,0 X B0,0 + A0,1 X B1,0 + A0,2 X B2,0
A1,0 X B0,0 + A1,1 X B1,0 + A1,2 X B2,0
A2,0 X B0,0 + A2,1 X B1,0 + A2,2 X B2,0

A0,0 X B0,1 + A0,1 X B1,1 + A0,2 X B2,1
A1,0 X B0,1 + A1,1 X B1,1 + A1,2 X B2,1
A2,0 X B0,1 + A2,1 X B1,1 + A2,2 X B2,1

A0,0 X B0,2 + A0,1 X B1,2 + A0,2 X B2,2
A1,0 X B0,2 + A1,1 X B1,2 + A1,2 X B2,2
A2,0 X B0,2 + A2,1 X B1,2 + A2,2 X B2,2

Algoritmo "exercício13"
Var
    matA: vetor [1..3,1..3] de inteiro
    matB: vetor [1..3,1..3] de inteiro
    matC: vetor [1..3,1..3] de inteiro
    i, j: inteiro
Inicio
    Escreval("Informe os valores da matriz A:")
    Para i de 1 ate 3 faca
        Para j de 1 ate 3 faca
            Escreva("Matriz A ",i , " x ",j , " : ")
            Leia(matA[i,j])
        Fimpara
    Fimpara
    Limpatela
    Escreval("Informe os valores da matriz B:")
    Para i de 1 ate 3 faca
        Para j de 1 ate 3 faca
            Escreva("Matriz B ",i , " x ",j , " : ")
            Leia(matB[i,j])
        Fimpara
    Fimpara
    Limpatela
    Para i de 1 ate 3 faca
        Para j de 1 ate 3 faca
            matC[i,j] <- ( matA[i,1] * matB[1,j] ) + (matA[i,2] * matB[2,j] ) + (matA[i,3] * matB[3,j] )
            Escreval("Matriz C ",i , " x ",j , " : ", matC[i,j])
        Fimpara
    Fimpara
Fimalgoritmo
 Algoritmo Verificado! 

segunda-feira, 15 de novembro de 2010

L7 - 6 - Escreva algoritmo que leia os nomes e conceitos dos alunos de uma turma de tamanho máximo 60.

Escreva algoritmo que leia os nomes e conceitos dos alunos de uma turma de tamanho máximo 60. O algoritmo deverá, para todos os alunos lidos, colocar em uma matriz o nome do aluno na primeira coluna e sua situação na segunda coluna: “aprovado”, se o conceito do aluno for superior a 0; “reprovado” caso contrário. Os conceitos vão de 0 a 4, estando reprovados os alunos cujo conceito é o 0. O algoritmo pára de ler quando o nome informado for “fim” ou tenham sido lidos o nome e o conceito de 60 alunos (tamanho máximo da turma).

Algoritmo "exercicio6"
Var
     nome: vetor [1..60] de literal
     conceito: vetor [1..60] de real
     mat: vetor [1..60,1..3] de literal
     i: inteiro
Inicio
     i <- 1
     Repita
          Escreva("Informe o Nome ",i, " : ")
          Leia(nome[i])
          Se(nome<>"fim")entao 
               mat[i,1] <- nome[i]
               Escreva("Conceito (0-4): ")
               Leia(conceito[i])
               Enquanto (conceito[i] < 0) ou (conceito[i] > 4) FACA
                    Escreval("O conceito deve estar entre 0 e 4.")
                    Escreva("Conceito (0-4): ")
                    Leia(conceito[i]) 
               Fimenquanto
               mat[i,2] <- conceito[i]
               Se(conceito[i]>0)entao
                    mat[i,3] <- "Aprovado"
               Senao
                    mat[i,3] <- "Reprovado"
               Fimse
          Fimse
          i <- i + 1
          Ate(nome[i]= "fim") ou (i > 60)
Fimalgoritmo

L7 - 5 - Escreva algoritmo que leia caracteres em dois vetores vetA e vetB, de cinco posições.

Escreva algoritmo que leia caracteres em dois vetores vetA e vetB, de cinco posições.Após os dois vetores terem sido lidos, o algoritmo deverá colocar em um terceiro vetor vetC a diferença dos dois primeiro, i.e., os caracteres que estão contido em vetA e não estão contido em vetV. Por exemplo, se
vetA = { “A”, “E”, “F”, “6“,“?”}
e
vetB = { “F”, “3”, “?”, “F“,“H”,“E”}
então
vetC = { “A”,“6“}
Algoritmo "exercicio5"
Var
                vetA, vetB: vetor [1..5] de literal
                vetC: vetor [1..10] de literal
                i, j, k: inteiro
                difer: logico
Inicio
                Escreval("Informe os valores do vetor A")
                Para i de 1 ate 5 faca
                                Escreva("informe o ",i, "o valor: ")
                               Leia(vetA[i])
                Fimpara
                Limpatela
    Escreval("Agora, Informe os valores do vetor B")
                Para i de 1 ate 5 faca
                               Escreva("informe o ",i, "o valor: ")
                               Leia(vetB[i])
                Fimpara
                Limpatela
                k<-1
Para i de 1 ate 5 faca
                difer <- VERDADEIRO
                            Para j de 1 ate 5 faca
Se (vetA[i]= vetA[j]) entao
           Se (i <> j) entao
difer <- FALSO
                                                           Fimse
                                    Fimse
Se (vetA[i]=vetB[j]) entao
            difer <- FALSO
                                   Fimse
                             Fimpara
                             Se (difer=VERDADEIRO) entao
                                               vetC[k] <- vetA[i]
                                               k <- k + 1
                             Fimse
                Fimpara
Para i de 1 ate 5 faca
difer <- VERDADEIRO
                               Para j de 1 ate 5 faca
Se (vetB[i]=vetA[j]) entao
difer <- FALSO
                                   Fimse
Se (vetB[i]=vetB[j]) entao
                                               Se(i  <> j) entao
difer <- FALSO
                                               Fimse
                                  Fimse
                               Fimpara
                               Se (difer=VERDADEIRO) entao
                                               vetC[k] <- vetB[i]
                                               k <- k + 1
                               Fimse
                Fimpara
Fimalgoritmo