07 - FUNÇÕES RECURSIVAS - C# - TORNE-SE UM PROGRAMADOR

แชร์
ฝัง
  • เผยแพร่เมื่อ 13 ก.ย. 2024
  • Nesta aula você irá aprender como criar uma função recursiva no C#, verá as vantagens e as desvantagens de utilizar esta função e fará um exercício na prática para entender melhor o conceito.
    Aula do Curso de C#, criado pelo professor Danilo Aparecido.
    Torne-se um Programador
    Site: www.torneseumpr...
    TH-cam: / daniloaparecido
    Facebook: / torneseumprogramador
    Instagram: / danilo.aparecido.santos
    #Torne-seUmProgramador #DaniloAparecido #C-sharp #Aula07

ความคิดเห็น • 103

  • @torneseumprogramador
    @torneseumprogramador  ปีที่แล้ว +1

    COMBO: TREINAMENTO C-SHARP COMPLETO 2 PELO PREÇO DE 1, VALOR PROMOCIONAL POR TEMPO LIMITADO: cursos.torneseumprogramador.com.br/combo-csharp/

  • @RENAN6442
    @RENAN6442 ปีที่แล้ว +1

    Muito top o conteúdo, parabéns. Me ajudou muito.

  • @gessemacedo-sc454
    @gessemacedo-sc454 2 ปีที่แล้ว +1

    sua didatica é incrivel !

  • @user-bu9tl8qh6g
    @user-bu9tl8qh6g 8 หลายเดือนก่อน

    eu estou bastante muito obrigado

  • @viper35796
    @viper35796 ปีที่แล้ว

    Ótima aula sanou minhas duvidas.

  • @pauloblitz
    @pauloblitz 7 ปีที่แล้ว +21

    Todas as aulas sao de ótima qualidade, mas essa aula foi muito produtiva. Obrigado pelo esforço de nos ajudar.
    Parabens pelas aulas! Elas tem alta qualidade

    • @torneseumprogramador
      @torneseumprogramador  7 ปีที่แล้ว +1

      +paulo blitz p.blitz obrigado pelo feedback, estou trabalhando muito para colaborar na formação de vcs, tamo junto

  • @tabletsamsamsumg
    @tabletsamsamsumg 8 หลายเดือนก่อน

    🖤

  • @tarik_sanc
    @tarik_sanc 2 ปีที่แล้ว +2

    Ajudou e esta ajudando muitas pessoas, valeu Danilo!!

  • @albert_rocha
    @albert_rocha 2 ปีที่แล้ว +1

    Assistindo em 2021 e curtindo muito. Sou desenvolvedor JS/TS e decidi aprender C# pela pequena curva de aprendizado. Sintaxe bem parecida com TS. Conteúdo muito legal.

    • @torneseumprogramador
      @torneseumprogramador  2 ปีที่แล้ว +1

      Boaaa vai firme irmão. Espero que goste

    • @albert_rocha
      @albert_rocha 2 ปีที่แล้ว

      @@torneseumprogramador Está sendo bastante produtivo. Já tirei várias dúvidas que eu tinha. Eu li um pouco a documentação (ainda estou lendo), mas com suas aulas deu uma boa clareada. Obrigado pelo conteúdo. ;D

  • @carlosgleisoncaetanodeoliv5088
    @carlosgleisoncaetanodeoliv5088 2 ปีที่แล้ว +1

    Ótima aula como todas as suas que já assisti Danilo! Muito bom conteúdo e explicação.

  • @normalzinho
    @normalzinho 2 ปีที่แล้ว +2

    ÓTIMA AULA, EU SOU INICIANTE E CAI PARAQUEDAS E JÁ ESTOU GOSTANDO!

  • @viviane8781
    @viviane8781 2 ปีที่แล้ว +2

    Complexo, mas da forma que foi explicado entendi perfeitamente. Obrigada por mais essa aula. Bora pra aula 8!

  • @sergiomorenoudi
    @sergiomorenoudi 5 ปีที่แล้ว +3

    Professor, suas aulas são boas demais.. sua didática é fantástica !!! Parabéns... eu sou programador "das antigas", iniciei em meados dos anos 80, sempre trabalhando com linguagens procedurais. Nos últimos 15 anos tenho trabalhado com Delphi. Agora surgiu a necessidade de aprender uma linguagem .NET, e ao achar suas aulas, estou conseguindo mudar o paradigma do estilo de programação para .NET web. Parabéns. Acredito que com o disseminar das informações (com qualidade) teremos um mundo melhor. Mais uma vez PARABÉNS.

  • @diogobuonomo
    @diogobuonomo 7 ปีที่แล้ว +2

    Parabéns Danilo pela aula descomplicada e produtiva.

  • @lonetonberry8346
    @lonetonberry8346 5 ปีที่แล้ว +2

    Ta me ajudando muito, obrigado pelo conteúdo de qualidade.

  • @ursodopudim
    @ursodopudim 5 ปีที่แล้ว +6

    *Código Fonte* (não esqueça de criar o arquivo em C:\ )
    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    namespace ConsoleApp
    {
    class Program
    {
    private static int CalcularSoma()
    {
    int a = 1;
    int b = 2;
    int c = a + b;
    return c;
    }
    public static void MostrarMesagemNaTela()
    {
    Console.WriteLine("Olá pessoal");
    }
    public static void Tabuada(int numero)
    {
    Console.WriteLine("==================");
    for (int i = 1; i

  • @lowie4241
    @lowie4241 4 ปีที่แล้ว

    Aprendi mais aqui do que em 3 anos de escola... FUCK SCHOOL

  • @RicardoSantos-he9sh
    @RicardoSantos-he9sh 6 ปีที่แล้ว +1

    Parabens, excelente aula, mostra que tem conhecimento e didatica

  • @gaspar1978
    @gaspar1978 5 ปีที่แล้ว +1

    Otimas aulas, continue assim! Otima didatica.

  • @vitorazevedo5001
    @vitorazevedo5001 6 ปีที่แล้ว +3

    Excelente video Danilo, todos eles sao bons, mas este complementou bastante o meu pensamento
    Forte abraco!
    Continua com o excelente trabalho

  • @carloscossa486
    @carloscossa486 4 ปีที่แล้ว +2

    Ola... suas aulas tem me ajudado bastante, apenas tenho uma sugestao, gostaria que vc deixa-se exercicios no fim de cada aula para a gente poder praticar e avaliar o nosso nivel de aprendizagem

    • @torneseumprogramador
      @torneseumprogramador  4 ปีที่แล้ว +1

      Boaa Leo, excelente sugestão, como tenho mais de 400 aulas gravadas, para ajudar neste ponto, criei a comunidade fechada, onde passo exercícios semanalmente a todos os alunos 😉

    • @carloscossa486
      @carloscossa486 4 ปีที่แล้ว

      @@torneseumprogramador obrigado. Força você é um optimo professor

  • @janainamai
    @janainamai 3 ปีที่แล้ว

    Muito legal, parabéns pela aula!

    • @torneseumprogramador
      @torneseumprogramador  3 ปีที่แล้ว +1

      Obrigado Janaina, continue acompanhando, vem muito conteúdo ai, ativa as notificações para receber conteúdo semanal.

  • @andersonpalma617
    @andersonpalma617 5 ปีที่แล้ว +1

    Muito bom ,

  • @Goliank4987KatiUchaDiedy
    @Goliank4987KatiUchaDiedy 8 ปีที่แล้ว

    Parabéns, amigo... tá show, o que foi apresentado. obrigado.

  • @Sou_SpK
    @Sou_SpK 7 ปีที่แล้ว +1

    estou adorando

    • @torneseumprogramador
      @torneseumprogramador  7 ปีที่แล้ว

      +Maycon soares meideiros que bom feliz em ajudar

    • @Sou_SpK
      @Sou_SpK 7 ปีที่แล้ว +1

      graças a você eu estou amando aprender C#
      você e um excelente professor com calma e frieza na hora de explica muito bom

    • @torneseumprogramador
      @torneseumprogramador  7 ปีที่แล้ว

      +Maycon soares meideiros boa isso aí, vamos lutar para melhorar nosso futuro

    • @Sou_SpK
      @Sou_SpK 7 ปีที่แล้ว +1

      onde fica a opção de download dos codigos da aula 9

    • @torneseumprogramador
      @torneseumprogramador  7 ปีที่แล้ว

      +Maycon soares meideiros
      Entra já parte dos professores e clica no meu nome é vai em códigos, lá terá uma pasta chamada c# e dentro dela tem os códigos

  • @jeffersongarcia3772
    @jeffersongarcia3772 4 ปีที่แล้ว +2

    A Recursividade é bem interessante, pois podemos chamá-la de dentro dela. É importante entender porque ela não entre em Loop infinito. Legal!!!

    • @torneseumprogramador
      @torneseumprogramador  3 ปีที่แล้ว +1

      Exato Jefferson, inscreva-se no canal e ative as notificações pra receber conteúdo semanal.

  • @lucaspereira7920
    @lucaspereira7920 3 ปีที่แล้ว +1

    Professor, antes de tudo, meus parabéns pela ótima didática e definição detalhada das características do C#.. Visto que vou iniciar como Dev .NET Jr numa empresa em breve, busquei rever suas aulas e refatorei o código permitindo que sejam lidos arquivos com nome diferente de arq e fazendo com que seja desnecessária a variável ArquivoComCaminho2 !!!
    using System;
    using System.IO;
    using System.Threading;
    namespace FuncaoRecursivaLendoArquivos
    {
    class Program
    {
    //Programa que vai ler os arquivos de uma pasta chamada ArquivosDotNetRead
    private static void LerArquivo(string nome,int numero_arquivo)
    {
    string nome_arquivo = $@"C:\ArquivosDotNetRead\{nome}{numero_arquivo}.txt"; // Monta a string que gera o caminho do arquivo a ser lido
    if (File.Exists(nome_arquivo)) // verifica se arquivo existe
    {
    using (StreamReader arquivo = File.OpenText(nome_arquivo)) // Linha que abre o arquivo
    {
    string linha;
    while ((linha = arquivo.ReadLine()) != null) // Código que faz a leitura das linhas
    {
    Console.WriteLine(linha);
    }
    }
    LerArquivo(nome, numero_arquivo + 1); // Chama a função incrementando um ao número do arquivo
    } else
    {
    Console.WriteLine("Não existem mais arquivos para Ler!");
    }
    }
    static void Main(string[] args)
    {
    LerArquivo("arq", 1); //Chamando a função passando arq como parâmetro de nome de arquivo e 1 como número de arquivo
    Console.ReadKey();
    }
    }
    }

  • @Euricovskywalker
    @Euricovskywalker 6 ปีที่แล้ว +1

    Massa !

  • @antoniofelicianojf
    @antoniofelicianojf 7 ปีที่แล้ว +2

    Mt bom cara, bom trabalho continue assim, se puder , da umas dicas do mercado de trabalho, e tenta passar p gente um modo de saber quando estar pronto para programar ,oque é minimo necessario para trabalhar como programador.

    • @torneseumprogramador
      @torneseumprogramador  7 ปีที่แล้ว

      +Antonio Feliciano oi claro irei falar sim, mas a medida que for gravando, de todo modo vc também pode marcar aula particular, assim posso adiantar para vc

  • @edinaldoalencar
    @edinaldoalencar 6 ปีที่แล้ว +1

    aulas muito boas

  • @matheusmartinez5455
    @matheusmartinez5455 5 ปีที่แล้ว

    Danilo, é porque eu nunca trabalhei na área, eu sou um mero estudante, mas quando eu tiver trabalhando numa empresa é normal você pesquisar sobre o código que precisa na internet pra fazer tal coisa? isso não seria codificar e não programar?

    • @torneseumprogramador
      @torneseumprogramador  5 ปีที่แล้ว

      Sim Matheus é muito normal procurar por código, mas tão importante quanto procurar é entender o código que está utilizando

    • @matheusmartinez5455
      @matheusmartinez5455 5 ปีที่แล้ว

      @@torneseumprogramador Então eu não preciso estudar a linguagem, apenas a logica, assim posso programar em qualquer linguagem?

    • @torneseumprogramador
      @torneseumprogramador  5 ปีที่แล้ว

      O ideal é que estude os dois juntos, resumindo, somente seguir a sequência destas aulas que irá virar um programador

  • @marcoaureliosantoscunha9893
    @marcoaureliosantoscunha9893 3 หลายเดือนก่อน

    Professor boa tarde, criei mais dois arquivos arqui2.txt e arqui3.txt mas não está funcionando. O código está igual mas sem resultado. Pode me ajudar?

    • @torneseumprogramador
      @torneseumprogramador  3 หลายเดือนก่อน

      Posso, segue o link para marcar a aula particular
      agenda.torneseumprogramador.com.br/

  • @feliphesavio5552
    @feliphesavio5552 6 ปีที่แล้ว

    Top!!!

  • @rogeriomelo5841
    @rogeriomelo5841 4 ปีที่แล้ว

    fazer uma função recursiva é menos custoso que usar um foreach, já que nem sempre vamos ter os arquivos neste formato?

    • @torneseumprogramador
      @torneseumprogramador  4 ปีที่แล้ว

      O peso é o mesmo, a diferença é que as vezes vc quer aproveitar funções já prontas e entrar em looping, nestes casos utilizamos recursivo

  • @danilovictor1
    @danilovictor1 7 ปีที่แล้ว +1

    Top

  • @Medupo
    @Medupo 4 ปีที่แล้ว +1

    Fiz um pouco diferente, para situações onde os arquivos só diferenciem no número após o nome (arq1, arq2, arq3). Dei uma automatizada a mais pra essa situação em específico. Quem quiser dar uma olhada aí, deixei o código ai em baixo
    Só umas coisas pra tomar cuidado: O caminho do meu arquivo não está na pasta C:\arquivo, e sim numa pasta chamada C:\dev\arquivos, então, é só mudar na linha 34 da string caminhoArquivo pro seu caminho que já funciona!
    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    namespace ConsoleApp1
    {
    class Program
    {
    static int Calcular()
    {
    int a = 1;
    int b = 2;
    int c = a + b;
    return c;
    }
    public static void MostrarMensagemNaTela()
    {
    Console.WriteLine("Mensagem na tela através da função MostrarMensagemNaTela()");
    }
    public static void Tabuada(int multiplicando)
    {
    for (int i = 1; i

    • @torneseumprogramador
      @torneseumprogramador  4 ปีที่แล้ว +2

      Boa, ative as notificações do canal para receber aulas toda semana.

  • @edelvandro
    @edelvandro 4 ปีที่แล้ว

    Prof. o meu ficou assim, reaproveitei a verificação.
    private static void LerArquivo(int idArquivo)
    {
    string fileWithPath = @"C:\arquivos\arq" + idArquivo + ".txt";
    if (File.Exists(fileWithPath))
    {
    using (StreamReader streamReader = File.OpenText(fileWithPath))
    {
    string linha;
    while ((linha = streamReader.ReadLine()) != null)
    {
    Console.WriteLine(linha);
    }
    }
    idArquivo++;
    LerArquivo(idArquivo);
    }
    else
    {
    Console.WriteLine("Ops!! Arquivo Não Existe");
    }

    • @torneseumprogramador
      @torneseumprogramador  4 ปีที่แล้ว

      boa Edelvando, ative as notificações no canal para receber conteúdo toda semana.

  • @tayj.1574
    @tayj.1574 2 ปีที่แล้ว +1

    não entendi pq o seu não entrou em looping infinito e o meu sim aushaushaush

  • @bcjneves1
    @bcjneves1 7 ปีที่แล้ว +1

    Parabéns pelas aulas, Boa Noite, Prof. Danilo, gostaria de aprender como imprimir com PrintDocument, duas páginas de relatório, podendo até ser apenas um conta/corrente, onde poderia constar, o logo de uma empresa, ou outro desenho qualquer. Constar um relatório com data, com descrição, com subtotal, um total geral. Coisa que infelizmente não existe no TH-cam. E não se encontra literatura na língua portuguesa, abordando este assunto. Abraço

    • @torneseumprogramador
      @torneseumprogramador  7 ปีที่แล้ว

      +João Neves oi João tudo bem? Eu ajudei um aluno estes dias mesmo em aulas particulares sobre este assunto, podemos marcar uma aula e eu explico a vc também, vamos marcar? É simples, vc precisa somente posicionar os dados da impressao em posicoes x e y

    • @torneseumprogramador
      @torneseumprogramador  7 ปีที่แล้ว

      +João Neves se precisar, também posso fazer uma aula exclusiva ensinando a vc sobre este assunto, me manda uma mensagem no Whatsapp que te passo o orçamento, +5511976144154

    • @bcjneves1
      @bcjneves1 7 ปีที่แล้ว +1

      Quero sim, pode me enviar um e-mail, com orçamento, ah, vou entrar no seu watsapp.

    • @bcjneves1
      @bcjneves1 7 ปีที่แล้ว +1

      Logo logo vamos marcar sim. Abraço

  • @Mark-xx1up
    @Mark-xx1up 4 ปีที่แล้ว +2

    Fiz o código um pouco
    diferente mas funcionou
    using System;
    using System.IO;
    namespace FuncoesRecursivas
    {
    class Program
    {
    static void Main(string[] args)
    {
    LerArquivo("Arquivo",1);
    }
    public static void LerArquivo(string nomeArquivo,int numeroArquivo)
    {
    string caminhoDoArquivo = $@"C:\Arquivo\{nomeArquivo}{numeroArquivo}.txt";
    Console.WriteLine(caminhoDoArquivo);
    if (File.Exists(caminhoDoArquivo))
    {
    using (StreamReader arquivo = File.OpenText(caminhoDoArquivo))
    {
    string linha;
    while ((linha = arquivo.ReadLine()) != null)
    {
    Console.WriteLine(linha);
    }
    }
    }
    Console.WriteLine("
    ");
    string arquivoRecursivo = $@"C:\Arquivo\{nomeArquivo}" + (numeroArquivo + 1 ) + ".txt";
    if (File.Exists(arquivoRecursivo))
    {
    LerArquivo("Arquivo", numeroArquivo + 1);
    }
    }
    }
    }

  • @josiasrodrigues7314
    @josiasrodrigues7314 4 ปีที่แล้ว

    Caro professor, obrigado pelo conteúdo. Nas suas orientações sobre onde encontrar os códigos, o senhor pede que seja acessado a area do professor, clicado em seu nome e ir em códigos. Mas não entendi onde encontrar estas opções. Favor me orientar, grato.

    • @torneseumprogramador
      @torneseumprogramador  4 ปีที่แล้ว +1

      Olá Josias o site mudou, por isso não tem mais está área de código, todos eles estão no meu github didox ou torneseumprogramador

    • @josiasrodrigues7314
      @josiasrodrigues7314 4 ปีที่แล้ว

      @@torneseumprogramador obrigado pela agilidade na resposta, mas ainda gostaria de um esclarecimento. Quando acesso o seu repositório no github: github.com/Didox/torne-se-programador/tree/master/1j%20-%20funcoes%20recursivas , procurando o código das funções recursivas, só encontro esses dois, que não batem com o código desenvolvido durante o curso. Estou procurando no diretório correto? Obrigado.

  • @maiconaugusto100
    @maiconaugusto100 6 ปีที่แล้ว

    Faz uma Aula sobre Arquivos somente !

    • @DaniloAparecidoSantos
      @DaniloAparecidoSantos 6 ปีที่แล้ว

      Me manda um audio no Whatsapp com a sugestão que faço sim 11976144154

    • @peeleandro
      @peeleandro 3 ปีที่แล้ว

      @@DaniloAparecidoSantos kkkk azideia

    • @torneseumprogramador
      @torneseumprogramador  3 ปีที่แล้ว

      Respondi com o outro canal, mais sou eu mesmo, confira o telefone no site do torne-se um programador

  • @pauloblitz
    @pauloblitz 7 ปีที่แล้ว

    Professor Danilo, se nao pedir de mais, melhora só o zoom um pouquinho pra nois, as vezes tenho dificuldades de ver vc fazendo o codigo...Desde já, obrigado pelo esforço amigo!

    • @torneseumprogramador
      @torneseumprogramador  7 ปีที่แล้ว

      +paulo blitz p.blitz a sim, em algumas aulas eu aumentei um pouco o zoom, verá mais para frente que vou melhorando as aulas

  • @thiagoversa2788
    @thiagoversa2788 4 ปีที่แล้ว

    Boa noite!
    Como que faz para pegar arquivos com nomes diferentes no mesmo diretório?
    ex: carro.txt, endereço.txt

    • @torneseumprogramador
      @torneseumprogramador  4 ปีที่แล้ว +1

      Vc precisa ler os arquivos no diretório, use o StreamReader

  • @gustavodias359
    @gustavodias359 7 ปีที่แล้ว

    Danilo, tentei executar o arquivo.ReadLine() direto na variável linha e depois executar o while assim: while(linha != null). E acabou gerando um loop infinito de leitura do arquivo. Poderia explicar o por quê e o que gerou a diferença na execução?

    • @torneseumprogramador
      @torneseumprogramador  7 ปีที่แล้ว +1

      isso acontece pois vc não não deve ter definido a sua válvula de escape, ou seja um código que faz com que você consiga sair do looping. Você também pode marcar uma aula particular, assim eu tenho como te ajudar e tirar todas as suas dúvidas ok? www.torneseumprogramador.com.br/comprar/aula-particular

    • @gustavodias359
      @gustavodias359 7 ปีที่แล้ว

      Obrigado.

  • @vilog6
    @vilog6 3 ปีที่แล้ว

    private static void LerArquivo(string NomeArquivo)
    {
    System.IO.TextReader arquivo = new StreamReader($@"C:\temp\PastaTeste\{NomeArquivo}.txt");
    var LerArquivo = arquivo.ReadToEnd();

    Console.WriteLine(LerArquivo);
    arquivo.Close();
    }

    • @torneseumprogramador
      @torneseumprogramador  3 ปีที่แล้ว

      Vinicius, se inscreve no canal e ativa as notificações que vou te mandar mais aulas semanais.

  • @rmbhacker
    @rmbhacker 5 ปีที่แล้ว

    #Danilo_Aparecido... tentei acessar o site, porem só tem opção de login/senha. Como acessar?

    • @torneseumprogramador
      @torneseumprogramador  5 ปีที่แล้ว

      Olá não tem login e senha não, basta acessar www.torneseumprogramador.com.br/

    • @rmbhacker
      @rmbhacker 5 ปีที่แล้ว

      @@torneseumprogramador Vlw. Devo ter digitado algo errado... Muito Obrigado!!!

  • @Charlessilvaoficial
    @Charlessilvaoficial 6 ปีที่แล้ว

    Assistindo em 2018 hehehe

  • @DarthVaderi
    @DarthVaderi 6 ปีที่แล้ว +1

    Não faz o menor sentido usar recursividade quando se é possível saber, de alguma forma, a quantidade de vezes que o método se repetirá.
    Usa-se recursividade geralmente em métodos super complexos aninhados onde tem por objetivo a cognição.

    • @torneseumprogramador
      @torneseumprogramador  6 ปีที่แล้ว +3

      +Darth Vader Boa, utilizo muito em métodos onde preciso reaproveitar situações em lugares diferentes, a melhor maneira de saber onde usar recursividade é onde você se sentir mais confortável 😃