- 86
- 102 672
Juliano Wickboldt
Brazil
Приєднався 7 сер 2018
Este canal foi criado especificamente para disponibilizar o material em vídeo das disciplinas ministradas por mim na UFRGS. O material de apoio está todo disponível no Moodle da UFRGS (moodle.ufrgs.br) com acesso restrito aos alunos regularmente matriculados nos cursos.
Aula 10-2 - Argumentos e retorno de funções
Nessa aula aprofundamos a temática do uso de funções em Python. Tratamos especificamente da comunicação entre o programa principal e os subprogramas (funções) através de argumentos e retorno. Discutimos exemplos de uso e boas práticas para definição de funções.
Переглядів: 188
Відео
Aula 10-1 - Noções básicas de funções
Переглядів 196Рік тому
Nessa aula começamos um assunto novo, subprogramação ou uso de funções em Python. Discutimos alguns conceitos importantes como decomposição e abstração. Tratamos de um exemplo onde a definição de funções pelo programado pode auxiliar a reduzir a repetição de código, dentro da filosofia "Don't Repeat Yourself".
Aula 9-3 ‐ Outras estruturas de dados: tuplas e conjuntos
Переглядів 202Рік тому
Nessa aula exploramos duas outras estruturas de dados disponíveis na linguagem Python: tuplas (tuple) e conjuntos (set). Discutimos dois exemplos de uso dessas estruturas falando das vantagens de desvantagens do seu uso em relação as demais (listas e dicionários). Finalizamos esse assunto com um panorama geral de todas as estruturas estudadas neste curso.
Aula Prática 9 ‐ Contando a frequência de ocorrência de palavras em texto
Переглядів 196Рік тому
Nessa aula implementamos um programa capaz de ler um texto em múltiplas linhas como entrada do usuário e processar esse texto contando todas as palavras contidas nele. As palavras são processadas utilizando métodos de manipulação de strings (como split, lower, entre outros) e os caracteres não alfanuméricos são removidos. Um dicionário é utilizado para armazenar os contados de palavras e a saíd...
Aula 9-2 - Uso avançado de dicionários
Переглядів 254Рік тому
Nessa aula aprofundamos um pouco mais o uso de dicionários como estruturas de dados associativas em Python. Falamos sobre ordenação de dados com a função sorted em dicionários, tanto considerando a ordenação de chaves quanto de valores. Trabalhamos ainda um exemplo de problema que requer aninhamento de estruturas (dicionários de dicionários) para representar as cartas de um jogo e suas respecti...
Aula 9-1 - Mapeamento associativo com dicionários
Переглядів 267Рік тому
Nessa aula seguimos dentro do tópico de estruturas de dados explorando os conceitos de mapeamento associativo para estabelecer relações entre conjuntos de dados de duas dimensões utilizando dicionários (dict) em Python. Exercitamos a criação de dicionários, adição e remoção de pares (chave e valor) dessas estruturas utilizando exemplos representativos. Abordamos também o uso de iteração com laç...
Aula Prática 8 ‐ Implementando um jogo de caça palavras com listas e strings
Переглядів 266Рік тому
Nessa aula prática implementamos um jogo de caça palavras, onde o usuário visualiza uma matriz de palavras embaralhadas e tenta encontrar as palavra contidas na matriz. O programa procura a palavra informada pelo usuário tanto na horizontal quanto na vertical e escrita tanto da esquerda para a direita e quanto no sentido inverso. Exercitamos com isso diversos métodos para manipulação tanto de s...
Aula 8-2 - Métodos para manipulação de strings
Переглядів 251Рік тому
Nessa aula aprofundamos a temática de manipulação de strings. Discutimos alguns problemas exemplo e explorando soluções utilizando alguns dos principais métodos disponíveis na linguagem Python para manipular esse tipo de estrutura. Falamos sobre como separar e unir strings com split e join, como alterar a capitalização de letras com upper, lower e capitalize, encontrar substrings com find, entr...
Aula 8-1 ‐ Strings vs. Listas
Переглядів 246Рік тому
Nessa aula seguimos falando de estruturas de dados, traçando um paralelo entre listas e strings. Discutimos as principais semelhanças e diferenças entre esses dois tipos de estruturas de dados utilizando uma série de exemplos. Falamos de fatiamento, concatenação, iteração e mutabilidade tanto em strings quanto em listas.
Aula Prática 7 ‐ Calculando médias móveis a partir de uma lista de dados
Переглядів 244Рік тому
Nessa aula prática utilizamos os conceitos de estruturas de dados, mais particularmente de manipulação de listas em Python, para calcular médias móveis a partir de uma lista de números fornecida pelo usuário. Fazemos a leitura dos dados em uma linha para simplificar a entrada de dados do usuário e a processamos utilizado split. Permitimos também que o usuário escolha a o tamanho da janela para ...
Aula 7-2 - Uso avançado de listas
Переглядів 331Рік тому
Nessa aula apresentamos diversos exemplos de uso de métodos de manipulação de listas (count, remove, sort, clear) através de pequenos trechos de código como parte da solução de um enunciado proposto. Discutimos também conceitos mais avançados como fatiamento (slicing), concatenação e aninhamento de listas.
Aula 7-1 - Introdução a estruturas de dados com listas
Переглядів 362Рік тому
Nessa aula começamos a trabalhar uma temática nova, as estruturas de dados. Falamos sobre como alguns problemas exigem o armazenamento de coleções de dados sob um mesmo nome de variável. Nessa aula introdutória discutimos especificamente o uso de listas em Python como um exemplo de estrutura de dados e como essas estruturas podem ser manipuladas a partir dos seus métodos (append, insert, pop) e...
Aula Prática 6 ‐ Gerando números triangulares e quadrados visualmente
Переглядів 221Рік тому
Nessa aula prática utilizamos comandos de repetição para resolver o problema da geração de sequências de números triangulares e números quadrados. Além de gerar as sequências utilizamos também comandos de repetição para apresentar essas sequências visualmente utilizando caracteres comuns.
Aula 6-3 - Comandos pass, break, continue e else em repetições
Переглядів 258Рік тому
Nessa última aula dentro do tópico de algoritmos iterativos discutimos 4 comandos adicionais que podem ser utilizados para controlar repetições. Discutimos dois problemas exemplo e como os comandos podem ser úteis para escrever código mais sucinto e organizado.
Aula 6-2 - Aninhamentos e problemas comuns
Переглядів 242Рік тому
Nessa aula discutimos o uso combinado (aninhamento) de comandos de repetição com outros comandos (de seleção e também de repetição) e as consequências disso em diversos exemplos de problemas. Falamos também dos problemas comuns decorrentes do aninhamento incorreto de comandos (erro de sintaxe) e problemas de lógica que colocam repetições em loop infinito (erros semânticos).
Aula Prática 5 ‐ Gerando a sequência de Fibonacci
Переглядів 302Рік тому
Aula Prática 5 ‐ Gerando a sequência de Fibonacci
Aula 5-2 - Contadores, acumuladores e sinalizadores
Переглядів 478Рік тому
Aula 5-2 - Contadores, acumuladores e sinalizadores
Aula 5-1 ‐ Introdução a algoritmos iterativos
Переглядів 457Рік тому
Aula 5-1 ‐ Introdução a algoritmos iterativos
Aula Prática 4 ‐ Implementando uma calculadora com controle de entrada do usuário
Переглядів 331Рік тому
Aula Prática 4 ‐ Implementando uma calculadora com controle de entrada do usuário
Aula 4-3 ‐ Formas alternativas de seleção
Переглядів 299Рік тому
Aula 4-3 ‐ Formas alternativas de seleção
Aula 4-1 ‐ Algoritmos com seleção aninhados
Переглядів 323Рік тому
Aula 4-1 ‐ Algoritmos com seleção aninhados
Aula Prática 3 - Encontrando as raízes de uma equação de segundo grau
Переглядів 256Рік тому
Aula Prática 3 - Encontrando as raízes de uma equação de segundo grau
Aula 3-3 - Identificação de erros e debugging
Переглядів 263Рік тому
Aula 3-3 - Identificação de erros e debugging
Aula 3-2 - Construindo expressões lógicas
Переглядів 313Рік тому
Aula 3-2 - Construindo expressões lógicas
Aula Prática 2 - Fluxograma e programa para cálculo de área e perímetro de circunferência
Переглядів 576Рік тому
Aula Prática 2 - Fluxograma e programa para cálculo de área e perímetro de circunferência
Tupla pode ser chave de dicionários? Tu comenta que lista não pode ser chave pq é mutável, e as tuplas?
Opa, desculpa a demora. Sim, tuplas são imutáveis, logo, podem ser usadas como chaves de dicionários.
Você está de parabéns! Estou há dias procurando um vídeo para me ajudar nesse assunto. Muito obrigado!
interessante fiquei confuso um pouco, porque nao usou condicional no fluxograma?
Nessa solução não foi necessário o uso de condicional. Isso é intencional, porque na Semana 02 do curso ainda não abordamos os comandos de seleção em Python (if-else). Isso vai aparecer na Semana 03 (ua-cam.com/video/OwguuPGUteI/v-deo.html).
uso a linguagem java, creio que essa seria a JS, mas mesmo assim me ajudou, consegui arrumar algumas coisas do meu codigo, caso eu consiga usar oq eu quero(for pra laço de repetição) volto e dou mais uma feedback, tmj !
cara, muito obrigado!
brother, coloca no titulo a tag c++, pois o sistema de busca mostrará seus videos nas primeiras colocações , isso em todas suas aulas de C++ . Achei acidentalmente.
Só faltou intervalo de confiança, me ajudou muito...
Olá, e como seria para substituir uma palavra inteira por outra?
Fazer esse tipo de operação em C é complicado porque o não é simples estender o tamanho do string original. Por exemplo, se fosse procurar pela palavra "hi" e trocar por "hello", o string final precisaria ter 3 caracteres a mais para cada substituição feita. Eu diria que o ideal é usar alguma função como strstr (da biblioteca string.h) para encontrar as ocorrências da palavra que se deseja substituir repetidamente. Conforme forem sendo encontradas as ocorrências, pode-se copiar o conteúdo para uma terceira string que tenha espaço para armazenar todo o texto considerando as substituições. Tem uma discussão mais aprofundada sobre isso aqui: stackoverflow.com/questions/779875/what-function-is-to-replace-a-substring-from-a-string-in-c. Porém, como eu falei, é relativamente complexo.
great lecture. i am watching it again
Muito boa aula. Parabéns
Nossa,! Eu estou realizando um pequeno projeto e esse vídeo clareou as ideias, ótima explicação.
Muito bom
obg me ajudou muito
Conteúdo riquíssimo, obrigado!
sei que ja faz tempo que tu publicou isso, mas ajudou demais a finalizar um trablho aqui, e abriu muito a mente para novas aplicaçoes. bem explicado e funcionando, destravou minha mente quanto ao uso das funções!!! Valeu mesmo mano....
a minha tambem
Faça um algoritmo que trabalhe com matriz 3X3 e contenha um menu com a opção de soma, subtração de matriz e a opção sair . Observação: Utilizem funções e somente sair do menu quando escolher a opção e ao calcular tem que mostrar as duas matrizes e o resultado. Como seria?
Programa em C
Olá Márcio, me parece que é um enunciado muito similar ao que apresentamos na aula. Creio que a parte do menu e das funções possa ser feita praticamente da mesma forma. Seria mesmo uma questão de implementar as operações (soma e subtração) e retornar os valores correspondentes.
mano, meu problema é que na hora que eu troco de opção, ele sai do sistema
Acredito que esse conceito aplica-se bastante em situações mais comuns mas não para sistemas críticos, especialmentes sistemas especializados em segurança (IPS/IDS) pois como sabemos mediante a um ataque DDOS por exemplo, uma solução com processamento definido por software e não hardware não aguentaria toda carga de processamento em um processador X86 por exemplo... por isso existem equipamentos ditos "hardware especializado" em que o processamento não sobe para a CPU do equipamento e sim é processado diretamento neste chip o que faz esses equipamentos valerem o alto valor que custam (segurança e caro). Um roteador ou firewalll em um "servidor comum" por exemplo mediante a um ataque em uma rede de 10Gbps por segundo deixa de responder em segundos pois o processamento é esgotado rapidamente.... já tive experiências ruins com isso.
Ola, muito boa a sua aula estou aprendendo bastante, pois gostaria que o sr me ajudasse a montar esse algoritimo c++ pois estou com essa duvida, se alguem poder me ajudar estarei muito grato. Tela de boas-vindas com informações sobre o parque (nome, endereço e cidade, que você deve criar), valor do ingresso, tempo de duração que cada ingresso dá direito e uma mensagem dizendo para o usuário apertar alguma tecla para comprar um ingresso. Após a tela de boas-vindas, a tela deve ser limpa e o usuário será direcionado a tela de seleção de quantos ingressos ele deseja comprar. Essa tela deve conter o valor do ingresso, o tempo de duração e a pergunta de quantos ingressos o usuário deseja comprar, indicando que ele digite quantos deseja e tecle enter para prosseguir A tela seguinte é a de seleção de forma de pagamento. Nela devem constar quantos ingressos estão sendo comprados e o valor total, além da pergunta do método de pagamento. Lembre-se que o usuário só tem a disposição um teclado numérico.Selecionado o pagamento, chega-se à tela de confirmação. Nessa tela, deve se apresentar a quantidade de ingressos selecionados, o valor total e a forma de pagamento, juntamente com uma mensagem para que se confirme as informações. • Se o usuário confirmar as seleções se passa para a tela de cobrança, caso contrário, se retorna para a tela de boas-vindas. • Na tela de cobrança deve se apresentar uma mensagem para que o usuário siga as instruções da máquina de cartão. Além disso, para simular o pagamento do usuário, você deve criar uma barra gráfica que se preenche em 15 segundos. Com a barra preenchida, se passa automaticamente para a próxima tela, de impressão. • Na última tela, de impressão, você deve criar um recibo, com as informações do parque, quantos ingressos foram comprados e o valor total pago, além da mensagem para se aguardar a impressão do ingresso e agradecimento pela compra. Aqui, novamente, deve ser colocada uma barra gráfica, que agora deve se preencher em 12 segundos. Passado o tempo, o programa deve voltar para a tela de boas-vindas, permitindo que uma nova compra seja realizada. Ou seja, o programa não deve ser encerrado automaticamente.
Olá richie rich, é um enunciado (me parece de exercício) longo, mas creio que dá para passar algumas dicas. Acho que dos vídeos que eu disponibilizei aqui, o que mais se assemelha com o que pede o teu enunciado é esse aqui: Aula Prática 10 - Menu com Opções e Controle da Opção Válida ua-cam.com/video/36YIfcIAz6c/v-deo.html. Dá uma olhada e vê se serve de inspiração, creio que a lógica básica seja suficiente para conseguires expandir o teu programa. Outro detalhe, quando tu fala em telas, eu não sei se estás falando de interface gráfica. Nisso realmente eu não tenho experiência para te orientar. Se tu quiseres fazer telas em modo texto eu sugiro dar uma olhada na biblioteca conio.h para Windows ou ncurses para Linux (bem mais elaborada). Para simular aqueles tempos de espera de alguns segundos, dá para usar Sleep(<tempo em ms>) da biblioteca windows.h (no Windows) ou sleep(<tempo em s>) da unistd.h (no Linux). Espero que ajude.
Muito obrigada, me ajudou bastante no trabalho final da faculdade!!! Por mais professores assim.
minha duvida e apenas como reduzir o numero de casas descimais das saidas
Olá Akim. Resumidamente, podes usar um "%.2f" no printf para formatar com 2 casas decimais um número armazenado em uma variável do tipo float. Claro que podes usar outros valores além de 2 para aumentar ou diminuir a quantidade de casas decimais impressas na tela. Tem um exemplo que implementamos numa aula mais adiante aqui ua-cam.com/video/s3T3VqatUGk/v-deo.html. A documentação completa do printf dá várias outras opções de formatação de números impressos, dá uma olhada em www.cplusplus.com/reference/cstdio/printf/.
Boa noite. Verifiquei que em casos semelhantes o programador não inclui o return 0; na última linha igual você colocou. É uma questão de preferência ou existe alguma relevância? Obrigado,
Olá Arutiel! A resposta curta é: não faz muita diferença nessa altura do curso. Nesse momento mais inicial do aprendizado, em geral, o aluno ainda não tem condições de entender claramente porque do uso do return. Mais para frente, discutimos isso em subprogramação (ua-cam.com/video/Q4P2QdSPS4o/v-deo.html). A resposta longa é: toda a função (inclusive a main) com tipo de retorno definido (no caso da main, definimos como int), deve ter um comando return ao final e esse comando deve retornar um valor do mesmo tipo da definição (no caso zero é um int). No caso particular da main, esse retorno é usado pelo sistema operacional como o código de retorno do programa. Por convensão, retorno zero significa que o programa terminou normalmente. Valores diferentes de zero, indicam algum tipo de código de erro que poderiam depois ser catalogados na documentação do teu programa, por exemplo.
Tu salvou minha vida... bro, passei MUITAS HORAS tentando fazer isso para trabalho da facul, e não ia de forma alguma... obrigado mesmo!
boa video massa
Boa explicação, obrigado
Continue por favor.
Brabo a explicação 👏👏👏
Muito obrigado! Me ajudou pra caramba, principalmente com essa explicação final!
Vídeo Top
entendi perfeitamente, muito obrigada
muito boa aula, me ajudou demais!
se eu quisesse botar nas condições que ''a'' deve ser diferente de 0 eu devo botar isso antes de calcular o delta?
Isso mesmo, bem observado! Logo após a instrução "Lê a,b,c" teria que ser incluída uma condição extra para verificar que a!=0. O problema do caso onde a==0 é que a equação deixa de ser de segundo grau e a fórmula não funciona, isso vai gerar uma divisão por zero na hora de calcular x1 e x2. É sobre isso que eu comento em 26:05, que ficou como desafio para vocês.
Muito esclarecedor! Recomenda algum livro sobre o tema?
Olá, Lesly! NFV é um tema relativamente recente e ainda não figura na maioria dos livros texto clássicos das disciplinas de redes. No SBRC 2014 teve um minicurso que fala bastante sobre os conceitos básicos (www.dca.fee.unicamp.br/~chesteve/pubs/MC-SBRC14-NFV.pdf). Tem uns surveys mais acadêmicos que acredito serem boas leituras, por exemplo, esse "Network Function Virtualization: State-of-the-Art and Research Challenges" doi.org/10.1109/COMST.2015.2477041. Tem cursos online que tocam no assunto, por exemplo, "Network Transformation 101/102" www.coursera.org/learn/network-transformation-101 e www.coursera.org/learn/network-transformation-102. Enfim, tem bastante material aí. Se encontrar um bom livro me avisa ;)
muito obrigado mano Deus abençoe explicou melhor que meu professor de engenharia civil obrigado de coração...
Muito bom, não estava entendendo nada com os professores da faculdade
Olá, como seria, pra inserir um caracter ao invés de substituir? Vc tem algum video nesse sentido?
Não tenho um vídeo específico sobre isso, mas dá para passar uma ideia por aqui. Como vetores tem tamanho fixo, a forma mais fácil de fazer seria alocar um vetor de tamanho maior que o necessário. Daí ao inserir um novo caractere em uma posição "x" qualquer, dá para copiar iterativamente (com um laço for ou while) os elementos nas próximas posições (x+1, x+2, ..., x+n) para frente. Importante é controlar esse "n" que representa a quantidade de elementos atualmente no vetor para não exceder o tamanho total declarado. Ideal mesmo é fazer isso com alocação dinâmica do vetor em memória (com malloc, memcpy, memmove, por exemplo) ou com listas encadeadas, mas isso está bem além do conteúdo que cobrimos nesse curso introdutório ;)
Amei a explicação, entendi perfeitamente... Sou iniciante e aulas como a sua ajudam muito... Parabéns e obrigado.
Excelente aula, Juliano. Me ajudou bastante, obrigada por compartilhar!
Fmgkgvjwgvnbq bb
como eu faço o programa q a string e os caractes l1 e l2 fosse definidos pelo proprio programador? e o programa apenas retornar os caracteres l1 substituidos por l2??
Oi José, o programador sempre pode fazer a atribuição do texto seja para a string (vetor de char) ou para as variáveis do tipo char direto na declaração das próprias variáveis usando constantes. Para variáveis char se usa o caractere desejado entre aspas simples (e.g., 'a') e para os strings se usa aspas duplas (e.g., "texto aqui"). Dá uma olhada no vídeo da Aula 8 - Arranjos Unidimensionais (Strings), principalmente a partir do minuto 25:51 (ua-cam.com/video/wNjcOi2P1fs/v-deo.html) onde começamos a falar da declaração e atribuição direta de constantes para strings.
@@JulianoWickboldtUFRGS obrigado pela resposta!
Grava vídeos de como programar jogos Allegro
professor, muito bom 👏👏
Muito Obrigado SOR !!! <3
;)