Classificação
0 %
Popularidade
Opine
Descrição:
Funções em Algoritmos são rotinas que são capazes de executar instruções e retornar um resultado, valor de retorno. Você pode …






Alguém me explica quando usar Procedimento com passagem por REFERENCIA ou Funcão??? A diferença prfv
Como faço para baixar o pacote no site ? eu já estou na aula 13 lá no site, mas nao acho esses exercicios nem nada pra baixar, Se alguem souber como é me avise pfvr
Valeu!
Alguém sabe me dizer se no visual é possível usar as chaves "{ }" para simplificar o comando?
😕
Realmente voce é um otimo professor, eu estou aprendendo tudo ate agora só o conceito de Fibonacci que eu nao consegui criar um codigo por conta própria
Uma coisa que me ajudou muito é que sempre quando tem algum desafio que tenha calculo fazer primeiro no caderno e depois ir pro código. eu estava errando horrores. depois que diz isso diminuir muito os erros.
Alguém assistindo 2022? É só eu que não acho pacote nenhum pra estudar no site do curso em video? 🤔
Reparem que aqui, no exercício final, há duas formas de usar "maiusc" para obter o mesmo resultado.
Até aqui entendi muita coisa, se estou com dúvida é mais em aplicar ou compreender aonde se aplica, em quais casos devemos usar Procedimentos ou Funções, ou mesmo nem usar… hoje decidi continuar rumo a Vetores e Matrizes!
Muito Obrigado Arabanauag Ovatsug! suas aulas são incríveis!
Só para registrar; as aulas de POO [teoria] são semelhantemente fantásticas !
Eu fiz uma sequencia de Fibonacci realçando valores pares.
inicio
F2 <- 1
escreva(F1)
escreva(F2)
para C <- 3 ate 20 faca
FF <- Fibonacci(F1,F2)
se (FF%2=0) entao
escreva ("[",FF,"]")
senao
escreva (FF)
fimSe
fimPara
fimalgoritmo
Não entendi a diferença entre função e procedimento
To com muita dificuldade em aprender, desde as estruturas de repetição até agora aula 13 .. assistindo na força do ódio mesmo hahaha!! Mas o professor é fera.
Fiz novamente o Fibo, mas agora como função. Cada vez que faço a coisa me parece mais simples. Lembrando que no meu código eu escrevo sempre e APENAS o primeiro número da sequência, o N1, e apenas vou atualizando ele.
———————–
Var
// Seção de Declarações das variáveis
Cont, N1, N2, SeqFib: inteiro
função ProxFibo (var A, B: inteiro): inteiro
var C: inteiro
inicio
C <- A + B
retorne (A)
A <- B
B <- C
fimfunção
//———————————–
Inicio
// Seção de Comandos, procedimento, funções, operadores, etc…
N1 <- 0
N2 <- 1
para Cont <- 0 até 14 faça
SeqFib <- ProxFibo (N1, N2)
escreva (SeqFib)
fimpara
Fimalgoritmo
NESSA AULA DE HOJE EU TIVE UM POUCO DE DIFICULDADE… MAS GRAÇAS A DEUS EU CONSEGUI… FOCO GALERA… QUE DEUS NOS ABENÇOE
ESSA É UMAS DA ALTERNATIVAS DE RESOLVER
algoritmo "semnome"
var
V1, V2, N1, N2, TOTALN1EN2: INTEIRO
inicio
ESCREVAL ("Digite O Primeiro Valor ")
Leia (V1)
ESCREVAL ("Digite O Segundo Valor ")
Leia (V2)
N1 <- V1
N2 <- V2
TOTALN1EN2 <- N1 + N2
ESCREVAL ("A soma Entre", V1, " E", V2, " É", TOTALN1EN2)
fimalgoritmo
LEMBRANDO QUE EU FIZ DIFERENTE DO GUANABARA… OBS… NAO SE APEGUEM SO Á UMA FORMA DE RESOLVER OS EXERCICIOS… PORQUE QUANDO EU E VOCE ESTIVER TREBALHANDO COMO PROGRAMADORES OU DEV, TEREMOS QUE RESOLVER OS PROBLEMAS DA MELHOR FORMA, NAO SÓ PRA VOCE MAS PARA TODA EQUIPE
Tnc com esse Fibonacci e fatorial aí hein
Caramba que aula!!!!!!!!!!!
Alguém pode me explicar o que é string?
Pra quem tem ansiedade e se cobra MUITO, assim como eu:
Lembrem-se que o propósito pelo qual estamos fazendo o curso é APRENDER, e não ser perfeito! Errar, ou não conseguir fazer um exercício sem olhar a resposta, faz parte do aprendizado e é completamente normal!
fiquei curioso, como eu posso criar um função que faça determinado nome fica com as letras maiúsculas sem usar o "maiusc"
algoritmo "EscolhaBordas"
var
palavra: Caractere
contador, borda: Inteiro
Funcao Gerador(X, Y: Inteiro) :Caractere
var
P, A: Caractere
Z: Inteiro
inicio
Escolha Y
Caso 1
A <- "+——-=======——+"
Caso 2
A <- "~~~~~~~~:::::::~~~~~~~"
Caso 3
A <- "<<<<<<<<——->>>>>>>"
Caso 4
EscrevaL ("Digite a Sua borda personalizada: ")
Leia (A)
LimpaTela
OutroCaso
EscrevaL ("Algo Deu Errado Nas Bordas: Digite Corretamente")
FimEscolha
Se (Y > 0) e (Y < 5) entao
P <- palavra
EscrevaL (A)
Para Z <- 1 ate X faca
EscrevaL (P)
FimPara
EscrevaL (A)
EscrevaL ("Gostou do Programa? [S/N]")
Leia (P)
Se (P = "n") entao
P <- "N"
FimSe
Se (P = "s") entao
P <- "S"
FimSe
Retorne P
FimSe
FimFuncao
inicio
Escreva ("Digite uma palavra ou uma frase: ")
Leia (palavra)
Escreva ("Quer que apareca quantas vezes? ")
Leia (contador)
EscrevaL ("Qual Borda Você vai querer? ")
EscrevaL ("Borda [1]: +——-=======——+")
EscrevaL ("Borda [2]: ~~~~~~~~:::::::~~~~~~~")
EscrevaL ("Borda [3]: <<<<<<<<——->>>>>>>")
EscrevaL ("Borda [4]: Personalizar")
Leia (borda)
LimpaTela
Se (contador > 0) entao
palavra <- Gerador(contador,borda)
Se (palavra = "N") entao
EscrevaL ("Uma pena ;(")
SeNao
Se (palavra = "S") entao
EscrevaL ("Muito Obrigado Por sua Avaliação ;)")
SeNao
Se (palavra <> "S") e (palavra <> "N") entao
EscrevaL ("Algo deu errado: Digite Corretamente")
FimSe
FimSe
FimSe
FimSe
Se (contador < 1) entao
Escreva ("Você Não pode repetir menos do 1 vez.")
FimSe
fimalgoritmo
Velho, até que fiz um programa interessante.
certificado pago é putaria
Rotinas
Rotina é a característica que uma sequência de códigos têm de se REPETIR no desenvolvimento de um programa.
Funções
Diferente do Procedimento, que NÃO retorna valor algum, a função é um subprograma que RETORNA um valor.
Sintaxe:
funcao <nome-da-função> [(<parâmetros>)]: <tipo-de-dado>
// tipo de dado = tipo de dado do RETORNO
[var]
inicio
fimfuncao
A função funciona de maneira muito semelhante ao procedimento. Porém, com a exclusiva diferença de que ela TÊM A CAPACIDADE DE RETORNAR UM VALOR.
Ex1:
1 algoritmo "ParOuImparUsandoFuncao"
2 var
3 N: inteiro
4 RES: caractere
5 funcao PouI (A: inteiro): caractere
6 inicio
7 se (A%2=0) entao
8 retorne "PAR"
9 senao
10 retorne "IMPAR"
11 fimse
12 fimfuncao
13 inicio
14 escreva ("Digite um número: ")
15 leia (N)
16 RES <- PouI (N)
17 escreval ("O número", N, " é ", RES, ".")
18 fimalgoritmo
Na linha 5, "funcao" é a instrução que inicia a função. "PouI" é o nome da função. "A" é o parâmetro, por valor. O 1° ": inteiro" é o tipo de dado que o PARÂMETRO irá receber. O 2° ": inteiro" é o tipo de dado que a função irá RETORNAR
Nas linhas 7-11, indica que: se o resto da divisão entre o número digitado e 2 resultar em 0, retorne "PAR", senão, retorne "IMPAR". Vamos supor que foi digitado "2".
Na linha 12, chegando em "fimfuncao", o RESULTADO LÓGICO (verdadeiro ou falso) dessa ESTRUTURA CONDICIONAL (se, entao, senao) será RETORNADO para "PouI (N)"
Na linha 16, a variável RES irá RECEBER o valor que foi RETORNADO à "PouI (N)", que no caso foi "PAR".
Portanto, como visto acima, não é obrigatório usar uma variável local para utilizar a instrução "retorne". Neste exemplo, o valor foi retornado automaticamente. Entretanto, caso você queira retornar um valor em específico, basta criar uma variável LOCAL dentro da função e utilizar a instrução "retorne X"
Ex2:
1 algoritmo "Somar2ValoresUsandoFuncao"
2 var
3 N1, N2, RES: inteiro
4 funcao soma (A, B: inteiro): inteiro
5 var
6 X: inteiro
7 inicio
8 X <- A + B
9 retorne X
10 fimfuncao
11 inicio
12 escreva ("Digite o 1° número: ")
13 leia (N1)
14 escreva ("Digite o 2° número: ")
15 leia (N2)
16 RES <- soma (N1, N2)
17 escreval ("A soma entre", N1, " e", N2, " resulta em:", RES)
18 fimalgoritmo
Na linha 8, a variável LOCAL X recebe a soma entre os parâmetros A e B. Vamos supor que foi 5+5
Na linha 9, indica que o valor da variável local X DEVE SER RETORNADO para "soma (N1, N2)"
Na linha 10, chegando em "fimfuncao", este valor será EFETIVAMENTE RETORNADO para "soma (N1, N2)"
E o resto funcionará como deveria funcionar..
FUNÇÕES PRÉ-FABRICADAS VISUALG
Sintaxe:
Compr (var string)
Esta função retorna o ComprIMENTO, em quantidade de caracteres, de uma variável.
Ex:
var
texto: caractere
inicio
texto <- "qualquercoisa"
escreval (Compr(texto))
fimalgortimo
*O valor "13" será escrito na tela.
Sintaxe:
Copia (var string, número1, número2)
Esta função seleciona uma string e retorna uma cópia de apenas UMA PARTE dela. Esta PARTE pode ser definida a partir da definição da posição INICIAL, utilizando número e, a partir desta, definir quantas casas serão exibidas logo APÓS.
Ex:
var
texto: caractere
inicio
texto <- "PrimeiroTextoESegundoTexto"
escreval (copia(texto, 0, 13))
fimalgortimo
*Apenas o valor "PrimeiroTexto" sera exibido na tela. Ou seja, INICIA no caractere 0° e, a partir deste, mostra os 13 seguintes. Se substituir o 0 e 13 por 15 e 12, respectivamente, o valor retornado será "SegundoTexto". Ou seja, INICIA no caractere 15° e, a partir deste, mostra os 12 seguintes.
Sintaxe:
Maiusc (var string)
Esta função seleciona uma string e converte todas as letras em MAIÚSCULAS
Ex:
Acho que não precisa de exemplo né xD
Sintaxe:
Minusc (var string)
ESTA FUNÇÃO SELECIONA UMA STRING E CONVERTE TODAS AS LETRAS EM minúsculas.
Ex:
Não
Sintaxe:
Pos ("string", var)
Esta função faz com que BUSQUE-SE um texto especifico dentro de uma variável, retornando a POSIÇÃO do caractere em que este texto buscado começa.
Ex:
var
texto: caractere
inicio
texto <- "TextoAleatorioBLABLABLA"
escreval (pos("Aleatorio", texto))
fimalgoritmo
*O valor retornado será "6", pois, dentro da string "TextoAleatorioBLABLABLA", buscou-se a palavra "Aleatorio" e, uma vez identificada, a posição do caractere em que essa string COMEÇA será retornado.
Sintaxe:
Asc ("a")
Esta função retorna o NÚMERO, que é lido pelo computador, correspondente ao CARACTERE inserido.
Ex:
inicio
escreval (asc("a"))
fimalgoritmo
*O valor retornado será "97". Cada caractere tem o seu número próprio. Inclusive, a letra maiúscula importa, pois, substituindo o "a" por "A", o valor retornado é "65".
Sintaxe:
Carac (12)
Esta função, ao inserir um NÚMERO, ele retornará o CARACTERE correspondente à este número, que é lido pelo computador.
Ex:
inicio
escreval (carac(74))
fimalgoritmo
*O valor retornado será "J". Lembrando que, neste caso, não se coloca as "aspas"
4:55 na verdade a linha "Retorne S", retornará o valor de S para a FUNÇÃO "Soma(N1,N2)". Depois disso, RES irá receber este valor que foi retornado à "Soma(N1,N2)", que é 9. Pode parecer bobo, mas pode confundir.
eu até entendi todo o processo de verdade. porém não sei ao certo ainda quando irei usar as funções. Ao irei usar elas sempre que precisar fazer algum calculo e para não repetir todo o processo novamente eu posso chamar essa função com um simples chamado e ela irá me retornar um calculo pronto
Eu entendi que procedimento você não consegue alterar os valores do programa principal, no caso talvez, somente com passagem por referencia, mas funções pelo que estou vendo é como se fizesse uma atribuição dos valores da função dentro de uma variável, por exemplo na soma que o professor fez, a diferença foi que ele fez a variável S <- a função invés de receber o valor V1 + V2 que dária o resultado de qualquer forma, mesma coisa por exemplo no exercício 2, que declarou como caractere .. Isso com toda certeza será muito útil em JAVA e KOLTIN e C#
25:53 Listas de Funções
Refazendo todos os exercícios do curso, mais uma vez, me aconteceu uma coisa engraçada. Eu refiz o código do Fatorial, E ESTAVA CORRETO, mas na minha cabeça o resultado estava ERRADO, assim, mesmo tendo escrito o código CORRETAMENTE eu cismei que estava errado, e passei um tempão tentando descobrir um erro que SÓ EXISTIA NA MINHA CABEÇA. Alguém mais passou por isso?
Uma coisa eu percebi no meu aprendizado. Tudo que o professor faz com exemplos matematicos, eu tento fazer com exemplos escritos..
Mesmo que seja juntar duas palavras e tal, me ajudou muito. Acredito que ele use muito exemplo matematico, porque facilita o entendimento de retorno de valores, mas com palavras tambem ajuda bastante.
Procedimento – Só modifica em escopo Local, Significa que a variável verdadeira, no caso global, não terá modificação exceto se você fizer um parâmetro de referência, nesse caso, é como se você puxa-se a variável global para dentro da local, podendo assim ser modificada globalmente — Estará fazendo uma atribuição…
Função — Você vai atribuir uma variável global dentro de um escopo local, e quando fizer o retorno, você estará chamando todo o conteúdo para uma variável global, sendo assim modificado de forma direta uma variável global…
Boa aula
No minuto 10:14 me fiz o desafio de fazer o exercício antes de ter a resolução, quando terminei, achei que estava errando em algo pois dps vi a aula e vi que não ficou a mesma coisa mas quando coloquei pra rodar e vi que deu certo só fiz de uma maneira diferente do professor, fiquei muito feliz. Vejam como ficou minha resolução…
algoritmo "PAR-OU-IMPAR_FUNC"
var
N: Inteiro
R: Caractere
Funcao Result(A: Inteiro): Caractere
var
T: Caractere
Inicio
Se (A%2 = 0) entao
T <- ("PAR")
senao
T <- ("IMPAR")
FimSe
Retorne T
FimFuncao
inicio
Escreva("Informe um valor: ")
Leia(N)
R <- Result(N)
Escreva("O número informado é um número ",R,".")
fimalgoritmo
Curso muito importante e ainda e de graca
Eu achei a função mais fácil do que procedimentos, alguém mais?
Cheguei no fim da aula e a impressão que tenho é de que, finalmente, depois que amadurecemos um pouco, ganhamos o direito de abrir a caixa de ferramentas. Óbvio que vou rever as aulas anteriores, provavelmente desde estruturas de repetição. Mas agora a coisa ficou bem mais gostosa.
Descobri mais um detalhe interessantíssimo. Eu acompanho o canal do Fabio Akita e ele comenta que o ideal para estudar lógica e fazê-lo com uma linguagem não comercial atual, justamente para focarmos no entendimento da lógica, e não em decorar macetes que, por ilusão, acharemos importantes enquanto aprendemos (não com essas palavras, mas em essência é isso)… e tenho buscado referência de como estudar lógica com Pascal ou Turbo Pascal… tem até versão online pra facilitar.
Experimentem isso. Uma vez o código completo, nos "menus" do Visualg tem "Exportar para"… vai abrir uma tela mostrando o código que vocês escreveram mas para o Pascal, Zim, etc. Vão ver ali um símbolo de "recebe" que o Guanabara usou recentemente. Talvez aquele erro tenha sido por isso. Como ele usava um Windows virtual no Mac, pra usar o Visualg ali, talvez ele tenha "ajustado" (o próprio Visualg) para exibir o código já para o Pascal. Foi o que me passou pela cabeça agora.
Oi gente. O meu código do Fibo é diferente do Guanabara, atualizando apenas o primeiro número da série, over and over. Segue o código para vocês estudarem o passo a passo.
Nota: antes de transformar em rotina, seja procedimento ou função, eu escrevo o código funcional normal, caso contrário poderia ficar louco tentando consertar algo que, à princípio já não funcionava.
O outro motivo é justamente o fato de que para transformar em "rotina" nós "levamos" essa parte do código para execução em outro lugar, e deixamos ali apenas uma "chamada" para ela, ou seja, saber que ela está correta e funcionando é essencial.
————————————————————————-
Var
// Seção de Declarações das variáveis
C, N1, N2, N3: inteiro
Função Pfibo(var F1, F2: inteiro): inteiro
var F3: inteiro
Inicio
F3 <- F1 + F2
F1 <- F2
F2 <- F3
Retorne (F1)
FimFunção
Inicio
// Seção de Comandos, procedimento, funções, operadores, etc…
N1 <- 0
N2 <- 1
Para C <- 0 até 14 faça
Escreva (N1, ".. ")
N1 <- Pfibo(N1, N2)
FimPara
Fimalgoritmo
—————————————————————————–
OBS: experimentem colocar o "Escreva N1" depois da chamada da função e vejam a diferença no resultado. É importante entender isso. Precisando estou à disposição.