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
COMBO: TREINAMENTO C-SHARP COMPLETO 2 PELO PREÇO DE 1, VALOR PROMOCIONAL POR TEMPO LIMITADO: cursos.torneseumprogramador.com.br/combo-csharp/
Muito top o conteúdo, parabéns. Me ajudou muito.
😀👊
sua didatica é incrivel !
Bons estudos
eu estou bastante muito obrigado
Ótima aula sanou minhas duvidas.
👏👏👏👏
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
+paulo blitz p.blitz obrigado pelo feedback, estou trabalhando muito para colaborar na formação de vcs, tamo junto
🖤
Ajudou e esta ajudando muitas pessoas, valeu Danilo!!
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.
Boaaa vai firme irmão. Espero que goste
@@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
Ótima aula como todas as suas que já assisti Danilo! Muito bom conteúdo e explicação.
Obrigado 👏🙂👊
ÓTIMA AULA, EU SOU INICIANTE E CAI PARAQUEDAS E JÁ ESTOU GOSTANDO!
Complexo, mas da forma que foi explicado entendi perfeitamente. Obrigada por mais essa aula. Bora pra aula 8!
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.
Boaaa Sérgio 👏👏👏
Bons estudos
Parabéns Danilo pela aula descomplicada e produtiva.
+Diogo Buonomo 😃
Ta me ajudando muito, obrigado pelo conteúdo de qualidade.
vamos !!!
*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
Aprendi mais aqui do que em 3 anos de escola... FUCK SCHOOL
Parabens, excelente aula, mostra que tem conhecimento e didatica
+Ricardo Santos 👏👏👏
Otimas aulas, continue assim! Otima didatica.
Excelente video Danilo, todos eles sao bons, mas este complementou bastante o meu pensamento
Forte abraco!
Continua com o excelente trabalho
😁
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
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 😉
@@torneseumprogramador obrigado. Força você é um optimo professor
Muito legal, parabéns pela aula!
Obrigado Janaina, continue acompanhando, vem muito conteúdo ai, ativa as notificações para receber conteúdo semanal.
Muito bom ,
Parabéns, amigo... tá show, o que foi apresentado. obrigado.
+Ramon Liankim valeu
estou adorando
+Maycon soares meideiros que bom feliz em ajudar
graças a você eu estou amando aprender C#
você e um excelente professor com calma e frieza na hora de explica muito bom
+Maycon soares meideiros boa isso aí, vamos lutar para melhorar nosso futuro
onde fica a opção de download dos codigos da aula 9
+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
A Recursividade é bem interessante, pois podemos chamá-la de dentro dela. É importante entender porque ela não entre em Loop infinito. Legal!!!
Exato Jefferson, inscreva-se no canal e ative as notificações pra receber conteúdo semanal.
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();
}
}
}
Boaaa Lucas parabéns 😀
Massa !
+Eurico Pimenta 😀
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.
+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
aulas muito boas
+Edinaldo de Alencar 😀
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?
Sim Matheus é muito normal procurar por código, mas tão importante quanto procurar é entender o código que está utilizando
@@torneseumprogramador Então eu não preciso estudar a linguagem, apenas a logica, assim posso programar em qualquer linguagem?
O ideal é que estude os dois juntos, resumindo, somente seguir a sequência destas aulas que irá virar um programador
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?
Posso, segue o link para marcar a aula particular
agenda.torneseumprogramador.com.br/
Top!!!
+Feliphe Savio 😀
fazer uma função recursiva é menos custoso que usar um foreach, já que nem sempre vamos ter os arquivos neste formato?
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
Top
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
Boa, ative as notificações do canal para receber aulas toda semana.
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");
}
boa Edelvando, ative as notificações no canal para receber conteúdo toda semana.
não entendi pq o seu não entrou em looping infinito e o meu sim aushaushaush
Hahahha
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
+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
+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
Quero sim, pode me enviar um e-mail, com orçamento, ah, vou entrar no seu watsapp.
Logo logo vamos marcar sim. Abraço
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);
}
}
}
}
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.
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
@@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.
Faz uma Aula sobre Arquivos somente !
Me manda um audio no Whatsapp com a sugestão que faço sim 11976144154
@@DaniloAparecidoSantos kkkk azideia
Respondi com o outro canal, mais sou eu mesmo, confira o telefone no site do torne-se um programador
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!
+paulo blitz p.blitz a sim, em algumas aulas eu aumentei um pouco o zoom, verá mais para frente que vou melhorando as aulas
Boa noite!
Como que faz para pegar arquivos com nomes diferentes no mesmo diretório?
ex: carro.txt, endereço.txt
Vc precisa ler os arquivos no diretório, use o StreamReader
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?
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
Obrigado.
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();
}
Vinicius, se inscreve no canal e ativa as notificações que vou te mandar mais aulas semanais.
#Danilo_Aparecido... tentei acessar o site, porem só tem opção de login/senha. Como acessar?
Olá não tem login e senha não, basta acessar www.torneseumprogramador.com.br/
@@torneseumprogramador Vlw. Devo ter digitado algo errado... Muito Obrigado!!!
Assistindo em 2018 hehehe
😂😂😂
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.
+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 😃