Nesta palestra mostrei os problemas das exceções e do gerenciamento de erros e validações em aplicação de modo geral. Introduzindo um conceito de railway simples em C#, criando uma espécie de promise para o .NET.
O documento apresenta um resumo sobre JavaScript, abordando uma breve história da linguagem, tipos de dados, variáveis, operadores e manipulação de objetos HTML. É dividido em seções como introdução à linguagem, incorporação no HTML, tipos primitivos como string e number, e exercícios práticos para fixação dos conceitos.
Lógica de Programação com Javascript - Aula #02Ramon Kayo
O documento discute variáveis e tipos de dados em programação. Explica que variáveis armazenam dados temporários na memória RAM e podem ter diferentes tipos como números, texto e valores booleanos. Também mostra como declarar variáveis, atribuir valores e trocar valores entre variáveis.
Programando em C++ // Estrutura Básica Yuri Camelo
O documento discute a estrutura básica de um programa em C++, incluindo a função main, variáveis, constantes e impressão utilizando cout. Ele também cobre tópicos como tipos de variáveis, inicialização de variáveis, códigos especiais e a diretiva #include.
O documento apresenta a formação acadêmica e experiência profissional de dois professores. Ele resume os principais tópicos que serão abordados em uma aula sobre HTML5, incluindo uma breve história da linguagem, estrutura básica, elementos de seção, formulários e multimídia.
O documento apresenta os conteúdos do módulo 5 de Desenvolvimento de páginas web dinâmicas em PHP do curso de Técnico de Gestão e Programação de Sistemas Informáticos. São abordados conceitos básicos de PHP como variáveis, operadores, constantes e estruturas de dados.
O documento apresenta uma introdução ao PHP, incluindo o que é PHP, para que serve e como funciona. Explica como o código PHP é interpretado dentro de páginas HTML para gerar conteúdo dinâmico. Também aborda variáveis, arrays, estruturas condicionais if/else e switch para controlar a execução de código.
O documento descreve operadores e comandos de controle de fluxo em Java, incluindo operadores unários, aritméticos, de atribuição, comparação, lógicos e instanceof. Também explica comandos condicionais como if/else e switch e comandos de repetição como while, do/while e for, além de break e continue.
1. O documento apresenta conceitos sobre linguagem de programação Java, incluindo tipos de programação, tradução de programas, compilação vs interpretação, e exercícios para praticar variáveis e controle de fluxo.
2. São discutidos tópicos como tipos primitivos em Java, declaração e atribuição de variáveis, operadores aritméticos, comentários, e controle de fluxo com estruturas if/else e laços for/while.
3. Exemplos de código são fornecidos para compilar e executar
O documento apresenta um resumo sobre JavaScript, abordando uma breve história da linguagem, tipos de dados, variáveis, operadores e manipulação de objetos HTML. É dividido em seções como introdução à linguagem, incorporação no HTML, tipos primitivos como string e number, e exercícios práticos para fixação dos conceitos.
Lógica de Programação com Javascript - Aula #02Ramon Kayo
O documento discute variáveis e tipos de dados em programação. Explica que variáveis armazenam dados temporários na memória RAM e podem ter diferentes tipos como números, texto e valores booleanos. Também mostra como declarar variáveis, atribuir valores e trocar valores entre variáveis.
Programando em C++ // Estrutura Básica Yuri Camelo
O documento discute a estrutura básica de um programa em C++, incluindo a função main, variáveis, constantes e impressão utilizando cout. Ele também cobre tópicos como tipos de variáveis, inicialização de variáveis, códigos especiais e a diretiva #include.
O documento apresenta a formação acadêmica e experiência profissional de dois professores. Ele resume os principais tópicos que serão abordados em uma aula sobre HTML5, incluindo uma breve história da linguagem, estrutura básica, elementos de seção, formulários e multimídia.
O documento apresenta os conteúdos do módulo 5 de Desenvolvimento de páginas web dinâmicas em PHP do curso de Técnico de Gestão e Programação de Sistemas Informáticos. São abordados conceitos básicos de PHP como variáveis, operadores, constantes e estruturas de dados.
O documento apresenta uma introdução ao PHP, incluindo o que é PHP, para que serve e como funciona. Explica como o código PHP é interpretado dentro de páginas HTML para gerar conteúdo dinâmico. Também aborda variáveis, arrays, estruturas condicionais if/else e switch para controlar a execução de código.
O documento descreve operadores e comandos de controle de fluxo em Java, incluindo operadores unários, aritméticos, de atribuição, comparação, lógicos e instanceof. Também explica comandos condicionais como if/else e switch e comandos de repetição como while, do/while e for, além de break e continue.
1. O documento apresenta conceitos sobre linguagem de programação Java, incluindo tipos de programação, tradução de programas, compilação vs interpretação, e exercícios para praticar variáveis e controle de fluxo.
2. São discutidos tópicos como tipos primitivos em Java, declaração e atribuição de variáveis, operadores aritméticos, comentários, e controle de fluxo com estruturas if/else e laços for/while.
3. Exemplos de código são fornecidos para compilar e executar
O documento discute interfaces no Java. Explica que interfaces definem comportamentos que classes devem implementar, sem definir implementações. Classes que implementam interfaces devem fornecer métodos definidos nelas. Também discute hierarquias de interfaces, cast de objetos e polimorfismo.
Este documento discute eventos e validação de formulários em JavaScript. Ele explica eventos do mouse, teclado, objetos e formulários e fornece exercícios para praticar cada tópico. Também apresenta como validar campos de formulário para garantir que as informações estejam corretas.
O documento discute funções em programação estruturada em C++. Explica que funções são blocos de código reutilizáveis que executam tarefas específicas e podem receber e retornar dados. Detalha a sintaxe básica de funções, incluindo o tipo de retorno, nome, parâmetros e corpo. Fornece um exemplo simples de função para soma de dois números.
O documento apresenta um resumo sobre JavaScript, abordando tópicos como estruturas de controle, repetição, funções e manipulação de conteúdo HTML/CSS. Exemplos e exercícios são fornecidos para cada tópico para reforçar o aprendizado.
O documento discute os modificadores "final" e "abstract" em Java. O modificador final pode ser usado em atributos, métodos e classes para impedir alterações, sobrescritas ou herança. O modificador abstract é usado em métodos e classes para definir comportamentos que devem ser implementados nas subclasses.
Lógica de Programação com Javascript - Aula #01Ramon Kayo
O documento discute os conceitos básicos de programação, entrada e saída. Explica que programas de computador são arquivos que realizam tarefas definidas por instruções lógicas chamadas algoritmos. Detalha que programas recebem dados de entrada e fornecem dados de saída, e que dados se tornam informações quando interpretados. Por fim, diferencia programas em batch, que executam tarefas de forma isolada, de programas online, que ficam disponíveis para interação contínua.
O documento discute a linguagem de programação C# (C sharp). C# é uma linguagem orientada a objetos e derivada de C++ e C, fazendo parte do framework .NET da Microsoft. O documento também fornece exemplos básicos de conceitos como classes, métodos, variáveis, loops e tipos de acesso em C#.
Aqui são apresentados as técnicas de Desenvolvimento Dirigido a Testes. Simples e prático.
/**Depois que entrei no mundo Java, começei a procurar por conteúdo na internet para estudar, então me deparei com um ótimo site, http://www.argonavis.com.br, de um grande cara chamado Helder Rocha, que disponibiliza este mesmo conteúdo em seu site também. Obrigado pela ajuda a comunidade.*/
Lógica de Programação com Javascript - Aula #03Ramon Kayo
O documento apresenta os operadores aritméticos, relacionais e lógicos em JavaScript. Detalha como realizar cálculos, comparações e relações lógicas usando esses operadores e explica a prioridade de execução entre eles. Apresenta também exemplos de código e exercícios para o leitor praticar.
O documento fornece uma introdução à linguagem de programação Java, descrevendo seus principais conceitos como identificadores, tipos de dados, operadores, declaração de variáveis, conversão de tipos, entrada de dados e exercícios de exemplo.
(1) O documento introduz conceitos fundamentais de programação de computadores como algoritmos, variáveis, tipos de dados, operadores aritméticos e a estrutura básica de um algoritmo. (2) Apresenta a pseudolinguagem PORTUGOL que permite ao programador pensar no problema sem considerar o equipamento, facilitando a transposição do problema real para o universo computacional. (3) Discutem variáveis, tipos básicos como inteiro, real, caracter e lógico, e o comando de atribuição para manipular valores nas variáveis.
O documento apresenta uma aula sobre procedimentos e funções na linguagem C ministrada pelo professor Mauro Jansen. A aula introduz os conceitos de procedimentos, funções, vetores, matrizes e registros (estruturas) em C.
1) O documento discute comandos condicionais e estruturas de controle em Java, incluindo estruturas if-else e switch-case.
2) Também aborda laços de repetição como for, while e do-while.
3) Por fim, apresenta exemplos de tratamento de exceções com try-catch-finally e exercícios relacionados a esses tópicos.
O documento discute os conceitos básicos de lógica de programação, incluindo:
1) Variáveis, tipos de dados e operadores;
2) Estruturas condicionais como if/else;
3) Funções e parâmetros;
4) Tabelas (arrays) e loops.
O documento introduz os conceitos básicos de programação orientada a objetos em Java, incluindo: (1) escrever o primeiro programa Java, (2) variáveis, entrada de dados, aritmética, (3) operadores de comparação e lógicos, e (4) controle de fluxo condicional e recursivo.
1. A aula introduz os fundamentos da linguagem C++, incluindo variáveis, tipos de dados, operadores aritméticos e entrada/saída usando cin e cout.
2. É explicado como formatar saída numérica usando precisão fixa e como solicitar entrada do usuário usando cin e cout.
3. Bibliotecas padrão como iostream são introduzidas usando directivas #include e namespace std.
JavaScript é a linguagem do browser e mais popular do mundo. Foi criada em 1995 para o Netscape e adotada pela Microsoft em 1996. Apesar de sua má fama inicial devido a problemas como variáveis globais e parseInt, JavaScript possui "partes boas" como funções como valores, objetos dinâmicos e JSON que a tornaram uma linguagem importante.
1) O documento discute pseudocódigo, apresentando sua estrutura básica, notação, comandos como declaração de variáveis, atribuição, entrada e saída de dados.
2) É apresentado um exemplo de algoritmo para calcular a média de duas notas e realizar testes em tabelas.
3) Exercícios são propostos para fixar conceitos e aplicar pseudocódigo na resolução de problemas.
O documento apresenta uma palestra sobre programação funcional e refatoração de código usando abordagens funcionais. A palestra discute como o paradigma funcional pode ajudar a resolver problemas comuns como null exceptions, apresenta conceitos como value containers e high order functions, e mostra como refatorar uma função de atualização de usuário usando esses conceitos para melhor tratar erros e encadear operações.
TDC2018SP | Trilha .Net - Programacao Funcional com C#tdc-globalcode
O documento discute programação funcional usando C# e apresenta três tópicos principais: (1) Apresenta o conceito de programação funcional e como ele é diferente da programação orientada a objetos; (2) Discutem value containers como Option e Either e como eles podem ser usados para lidar com valores nulos de forma segura; (3) Apresenta um exemplo de refatoração de código usando value containers para lidar com erros de forma funcional.
O documento discute interfaces no Java. Explica que interfaces definem comportamentos que classes devem implementar, sem definir implementações. Classes que implementam interfaces devem fornecer métodos definidos nelas. Também discute hierarquias de interfaces, cast de objetos e polimorfismo.
Este documento discute eventos e validação de formulários em JavaScript. Ele explica eventos do mouse, teclado, objetos e formulários e fornece exercícios para praticar cada tópico. Também apresenta como validar campos de formulário para garantir que as informações estejam corretas.
O documento discute funções em programação estruturada em C++. Explica que funções são blocos de código reutilizáveis que executam tarefas específicas e podem receber e retornar dados. Detalha a sintaxe básica de funções, incluindo o tipo de retorno, nome, parâmetros e corpo. Fornece um exemplo simples de função para soma de dois números.
O documento apresenta um resumo sobre JavaScript, abordando tópicos como estruturas de controle, repetição, funções e manipulação de conteúdo HTML/CSS. Exemplos e exercícios são fornecidos para cada tópico para reforçar o aprendizado.
O documento discute os modificadores "final" e "abstract" em Java. O modificador final pode ser usado em atributos, métodos e classes para impedir alterações, sobrescritas ou herança. O modificador abstract é usado em métodos e classes para definir comportamentos que devem ser implementados nas subclasses.
Lógica de Programação com Javascript - Aula #01Ramon Kayo
O documento discute os conceitos básicos de programação, entrada e saída. Explica que programas de computador são arquivos que realizam tarefas definidas por instruções lógicas chamadas algoritmos. Detalha que programas recebem dados de entrada e fornecem dados de saída, e que dados se tornam informações quando interpretados. Por fim, diferencia programas em batch, que executam tarefas de forma isolada, de programas online, que ficam disponíveis para interação contínua.
O documento discute a linguagem de programação C# (C sharp). C# é uma linguagem orientada a objetos e derivada de C++ e C, fazendo parte do framework .NET da Microsoft. O documento também fornece exemplos básicos de conceitos como classes, métodos, variáveis, loops e tipos de acesso em C#.
Aqui são apresentados as técnicas de Desenvolvimento Dirigido a Testes. Simples e prático.
/**Depois que entrei no mundo Java, começei a procurar por conteúdo na internet para estudar, então me deparei com um ótimo site, http://www.argonavis.com.br, de um grande cara chamado Helder Rocha, que disponibiliza este mesmo conteúdo em seu site também. Obrigado pela ajuda a comunidade.*/
Lógica de Programação com Javascript - Aula #03Ramon Kayo
O documento apresenta os operadores aritméticos, relacionais e lógicos em JavaScript. Detalha como realizar cálculos, comparações e relações lógicas usando esses operadores e explica a prioridade de execução entre eles. Apresenta também exemplos de código e exercícios para o leitor praticar.
O documento fornece uma introdução à linguagem de programação Java, descrevendo seus principais conceitos como identificadores, tipos de dados, operadores, declaração de variáveis, conversão de tipos, entrada de dados e exercícios de exemplo.
(1) O documento introduz conceitos fundamentais de programação de computadores como algoritmos, variáveis, tipos de dados, operadores aritméticos e a estrutura básica de um algoritmo. (2) Apresenta a pseudolinguagem PORTUGOL que permite ao programador pensar no problema sem considerar o equipamento, facilitando a transposição do problema real para o universo computacional. (3) Discutem variáveis, tipos básicos como inteiro, real, caracter e lógico, e o comando de atribuição para manipular valores nas variáveis.
O documento apresenta uma aula sobre procedimentos e funções na linguagem C ministrada pelo professor Mauro Jansen. A aula introduz os conceitos de procedimentos, funções, vetores, matrizes e registros (estruturas) em C.
1) O documento discute comandos condicionais e estruturas de controle em Java, incluindo estruturas if-else e switch-case.
2) Também aborda laços de repetição como for, while e do-while.
3) Por fim, apresenta exemplos de tratamento de exceções com try-catch-finally e exercícios relacionados a esses tópicos.
O documento discute os conceitos básicos de lógica de programação, incluindo:
1) Variáveis, tipos de dados e operadores;
2) Estruturas condicionais como if/else;
3) Funções e parâmetros;
4) Tabelas (arrays) e loops.
O documento introduz os conceitos básicos de programação orientada a objetos em Java, incluindo: (1) escrever o primeiro programa Java, (2) variáveis, entrada de dados, aritmética, (3) operadores de comparação e lógicos, e (4) controle de fluxo condicional e recursivo.
1. A aula introduz os fundamentos da linguagem C++, incluindo variáveis, tipos de dados, operadores aritméticos e entrada/saída usando cin e cout.
2. É explicado como formatar saída numérica usando precisão fixa e como solicitar entrada do usuário usando cin e cout.
3. Bibliotecas padrão como iostream são introduzidas usando directivas #include e namespace std.
JavaScript é a linguagem do browser e mais popular do mundo. Foi criada em 1995 para o Netscape e adotada pela Microsoft em 1996. Apesar de sua má fama inicial devido a problemas como variáveis globais e parseInt, JavaScript possui "partes boas" como funções como valores, objetos dinâmicos e JSON que a tornaram uma linguagem importante.
1) O documento discute pseudocódigo, apresentando sua estrutura básica, notação, comandos como declaração de variáveis, atribuição, entrada e saída de dados.
2) É apresentado um exemplo de algoritmo para calcular a média de duas notas e realizar testes em tabelas.
3) Exercícios são propostos para fixar conceitos e aplicar pseudocódigo na resolução de problemas.
O documento apresenta uma palestra sobre programação funcional e refatoração de código usando abordagens funcionais. A palestra discute como o paradigma funcional pode ajudar a resolver problemas comuns como null exceptions, apresenta conceitos como value containers e high order functions, e mostra como refatorar uma função de atualização de usuário usando esses conceitos para melhor tratar erros e encadear operações.
TDC2018SP | Trilha .Net - Programacao Funcional com C#tdc-globalcode
O documento discute programação funcional usando C# e apresenta três tópicos principais: (1) Apresenta o conceito de programação funcional e como ele é diferente da programação orientada a objetos; (2) Discutem value containers como Option e Either e como eles podem ser usados para lidar com valores nulos de forma segura; (3) Apresenta um exemplo de refatoração de código usando value containers para lidar com erros de forma funcional.
O documento resume uma apresentação sobre programação funcional usando C#. Apresenta conceitos como value containers e como lidar com resultados e erros de forma funcional usando tipos como Option e Either. Demonstra como refatorar código imperativo para um estilo mais funcional com esses tipos.
O documento apresenta Gabriel Schade Cardoso, um desenvolvedor e professor especializado em programação funcional. Ele discute os conceitos básicos de programação funcional, incluindo vincular valores em vez de atribuição, funções, currying, aplicação parcial e funções de alta ordem. Exemplos são fornecidos para ilustrar esses conceitos.
Palestra ministrada no Meetup "DDD - Domain-Driven Design - Balneário Camboriú". - Acessível em: https://www.meetup.com/qualyteam/events/243888032/
Nesta apresentação abordo os temas linguagem ubíqua e código expressivo. Utilizando conceitos de programação funcional mistos com programação orientada à objetos.
Este capítulo discute o uso de classes abstratas em Java. Explica que classes abstratas podem conter métodos abstratos que devem ser implementados em subclasses, impedindo a criação de objetos da classe abstrata. Também mostra como classes abstratas e métodos abstratos permitem polimorfismo e herança de forma consistente.
1. O documento apresenta conceitos sobre linguagem de programação Java, incluindo tipos de programação, tradução de programas, compilação vs interpretação, e exercícios para praticar variáveis e controle de fluxo.
2. São discutidos tópicos como tipos primitivos em Java, declaração e atribuição de variáveis, operadores aritméticos, comentários, e controle de fluxo com estruturas if/else e laços for/while.
3. Exemplos de código são fornecidos para compilar e executar
Objects calisthenics - Os 10 mandamentos do rei do códigoBonoBee
O documento apresenta 10 mandamentos do Object Calisthenics, uma abordagem para melhorar a qualidade do código orientado a objetos através de exercícios simples. Os mandamentos incluem: somente um nível de indentação por método, não usar a palavra-chave "else", encapsular tipos primitivos e strings, somente um ponto por linha, não abreviar nomes, manter classes pequenas, limitar variáveis de instância, usar coleções de primeiro nível, usar métodos getter/setter de forma adequada e documentar o código. A aplicação desses princípi
O documento discute conceitos de lógica de programação, incluindo: (1) linguagens de programação viabilizam algoritmos através de instruções; (2) compiladores transformam código-fonte em código de máquina; (3) algoritmos devem ser claros e objetivos para resolver problemas.
TDC2018SP | Trilha Ruby - Design de aplicacoes orientadas a objeto: uma visao...tdc-globalcode
O documento resume conceitos básicos de orientação a objeto e fornece diretrizes para melhorar o design de código, como seguir os princípios SOLID e aplicar técnicas como encapsulamento, herança e composição. A apresentação também discute sintomas comuns de código com problemas de design e sugere soluções como uso de serviços e padrões como DRY.
Design de aplicações orientadas a objetoElaine Naomi
O documento resume conceitos básicos de orientação a objeto e fornece diretrizes para melhorar o design de código, como seguir os princípios SOLID e aplicar técnicas como encapsulamento, herança e composição. A apresentação também discute sintomas comuns de código com problemas de design e sugere soluções como uso de serviços e padrões como DRY.
ebook-completo c# o melhor para começar no c#biandamakengo08
O documento apresenta um resumo sobre o curso de linguagem de programação C# avançado. Ele aborda conceitos como classes, métodos, programação orientada a objetos, expressões e LAMBDA. O curso é dividido em três módulos, sendo o primeiro sobre conceitos básicos como classes, métodos e construtores; o segundo sobre programação orientada a objetos; e o terceiro sobre expressões, LAMBDA e delegates.
Palestra sobre algumas novidades do C# 8 e do ML.NET para o evento de lançamento do Visual Studio 2019.
Todas as implementações do ML.NET foram feitas em F#
#vs19
Machine Learning: Classificação de Comentários com Azure ML & PythonGabriel Schade Cardoso
Slides utilizados no evento InterOP para demonstrar a criação de um modelo utilizando tanto Python quanto o Azure Machine Learning Studio.
Além disso, os slides dão uma boa noção do conceito geral.
1) O documento discute o que é um algoritmo e como desenvolvê-los de maneira lógica e eficiente.
2) Um algoritmo é uma sequência finita de passos para realizar uma tarefa de forma precisa. O documento mostra como algoritmos simples podem ser aprimorados através da adição de estruturas condicionais e de repetição.
3) Para construir um algoritmo de forma correta, deve-se dividir o problema em entradas, processamentos e saídas, e testá-lo para verificar se resolve o problema propost
1) O documento discute o que é um algoritmo e como desenvolvê-los de maneira lógica e eficiente.
2) Um algoritmo é uma sequência de passos para realizar uma tarefa. O documento mostra como refinar um algoritmo inicial para trocar uma lâmpada, adicionando estruturas de seleção e repetição para lidar com diferentes situações.
3) Fatores como complexidade, legibilidade e portabilidade devem ser considerados ao construir algoritmos. O método cartesiano de dividir um problema em partes menores é recomendado
O documento discute o conceito de algoritmo e como desenvolvê-los de maneira eficiente. Explica que um algoritmo é uma sequência de passos para realizar uma tarefa e que programas de computador são algoritmos escritos em linguagens de programação. Também discute fatores como complexidade, legibilidade e portabilidade que devem ser considerados ao construir algoritmos, e métodos como divisão de problemas e planejamento reverso.
TDC2016POA | Trilha .NET - O que esperar do C# 7tdc-globalcode
O documento resume as principais novidades do C# 7, incluindo melhorias no desempenho, simplificação de código e consumo de dados. As principais features apresentadas são pattern matching, tuples, desconstruction, local functions, ref return e locals e out var.
O documento descreve conceitos de programação concorrente em Java, incluindo:
1) Como usar a palavra-chave "synchronized" para sincronizar o acesso a métodos e blocos de código compartilhados por múltiplas threads.
2) Um exemplo de aplicativo bancário que demonstra o uso de "synchronized" para evitar inconsistências de dados.
3) Como sincronizar o acesso a atributos independentes dentro de uma classe usando objetos separados para cada atributo.
Semelhante a Uma abordagem funcional para gerenciamento de erros (20)
O documento apresenta uma introdução sobre inteligência artificial e machine learning, discutindo o que são essas tecnologias e como elas podem ser usadas. Ele também descreve as três principais etapas do processo de machine learning - pré-processamento, treinamento e avaliação - e apresenta o Custom Vision como uma plataforma que facilita a criação de modelos de classificação de imagens.
O documento apresenta os principais conceitos da programação funcional usando a linguagem F#, como imutabilidade, funções como valores, tipos fortemente tipados, pipelines e composição. O palestrante destaca recursos da linguagem como Option, unidades de medida e type providers para carregar dados dinamicamente.
O documento discute arquitetura de software limpa, explicando que ela separa a lógica principal de negócios de detalhes externos como interface do usuário e banco de dados. Apresenta o conceito de adaptadores que conectam o domínio principal à camada externa e demonstra uma aplicação que armazena dados de usuários usando essa abordagem.
Slides sobre Machine Learning e Inteligência Artificial utilizando como ferramenta o Azure Machine Learning Studio, ferramenta gratuita utilizada em Nuvem.
Através desta ferramenta podemos fazer o exemplo completo, desde a utilização de uma base de dados de exemplo, até a publicação do modelo como um serviço web.
Gabriel Schade cardoso apresenta sobre programação funcional usando C# e F#. Ele discute conceitos como value containers, option types, modelagem de domínio e extração de dados externos como planilhas do Excel e dados do World Bank.
Palestra sobre programação funcional para a trilha no TDC SP 2018.
Nesta palestra é possível encontrar slides sobre a utilização de programação funcional em C# e F#, mesclando as duas linguagens na mesma aplicação para uma solução híbrida.
O documento discute a arquitetura limpa para desenvolvimento de software. Apresenta os conceitos de arquitetura hexagonal, ports and adapters e como a arquitetura limpa separa a lógica do núcleo da aplicação de detalhes como a interface do usuário, banco de dados e linguagem. Demonstra uma aplicação que armazena dados de usuários usando essa abordagem arquitetural.
Gabriel Schade Cardoso é um mestre em computação aplicada, desenvolvedor, professor e autor de livros. Sua apresentação discute como utilizar inteligência artificial (IA) e aprendizado de máquina (machine learning) por meio de serviços cognitivos da Microsoft, demonstrando como gerar legendas para fotos e reconhecer informações sobre pessoas.
Machine learning é um tema muito popular, mas ainda é muito comum ter uma série de dúvidas.
O objetivo desta apresentação é desmistificar este tema, mostrando uma série de informações sobre os dados e com um exemplo prático.
O documento discute a importância da programação funcional e fornece exemplos de seus principais conceitos, como: 1) funções como membros de primeira ordem; 2) expressões e composições para criar códigos; 3) tipos para expressar códigos de forma clara.
Gabriel Schade Cardoso apresenta seu trabalho com desenvolvimento utilizando o Microsoft Kinect. Ele tem experiência com C# e .NET, além de ser autor de livros sobre Kinect e Windows Phone. O documento explica como o Kinect funciona para reconhecimento de voz, mãos e postura através de sensores e fluxos de esqueleto, bem como técnicas para detecção de gestos.
Gabriel Schade Cardoso é um desenvolvedor .NET com experiência em interfaces naturais como o Kinect. O documento descreve as principais funcionalidades do Kinect SDK, incluindo captura de profundidade, reconhecimento de esqueletos, streams de áudio, cores e profundidade. Algoritmos como a lei dos cossenos e produto escalar são usados para detecção de poses e gestos.
Em um mundo cada vez mais digital, a segurança da informação tornou-se essencial para proteger dados pessoais e empresariais contra ameaças cibernéticas. Nesta apresentação, abordaremos os principais conceitos e práticas de segurança digital, incluindo o reconhecimento de ameaças comuns, como malware e phishing, e a implementação de medidas de proteção e mitigação para vazamento de senhas.
As classes de modelagem podem ser comparadas a moldes ou
formas que definem as características e os comportamentos dos
objetos criados a partir delas. Vale traçar um paralelo com o projeto de
um automóvel. Os engenheiros definem as medidas, a quantidade de
portas, a potência do motor, a localização do estepe, dentre outras
descrições necessárias para a fabricação de um veículo
A linguagem C# aproveita conceitos de muitas outras linguagens,
mas especialmente de C++ e Java. Sua sintaxe é relativamente fácil, o que
diminui o tempo de aprendizado. Todos os programas desenvolvidos devem
ser compilados, gerando um arquivo com a extensão DLL ou EXE. Isso torna a
execução dos programas mais rápida se comparados com as linguagens de
script (VBScript , JavaScript) que atualmente utilizamos na internet
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...Faga1939
Este artigo tem por objetivo apresentar como ocorreu a evolução do consumo e da produção de energia desde a pré-história até os tempos atuais, bem como propor o futuro da energia requerido para o mundo. Da pré-história até o século XVIII predominou o uso de fontes renováveis de energia como a madeira, o vento e a energia hidráulica. Do século XVIII até a era contemporânea, os combustíveis fósseis predominaram com o carvão e o petróleo, mas seu uso chegará ao fim provavelmente a partir do século XXI para evitar a mudança climática catastrófica global resultante de sua utilização ao emitir gases do efeito estufa responsáveis pelo aquecimento global. Com o fim da era dos combustíveis fósseis virá a era das fontes renováveis de energia quando prevalecerá a utilização da energia hidrelétrica, energia solar, energia eólica, energia das marés, energia das ondas, energia geotérmica, energia da biomassa e energia do hidrogênio. Não existem dúvidas de que as atividades humanas sobre a Terra provocam alterações no meio ambiente em que vivemos. Muitos destes impactos ambientais são provenientes da geração, manuseio e uso da energia com o uso de combustíveis fósseis. A principal razão para a existência desses impactos ambientais reside no fato de que o consumo mundial de energia primária proveniente de fontes não renováveis (petróleo, carvão, gás natural e nuclear) corresponde a aproximadamente 88% do total, cabendo apenas 12% às fontes renováveis. Independentemente das várias soluções que venham a ser adotadas para eliminar ou mitigar as causas do efeito estufa, a mais importante ação é, sem dúvidas, a adoção de medidas que contribuam para a eliminação ou redução do consumo de combustíveis fósseis na produção de energia, bem como para seu uso mais eficiente nos transportes, na indústria, na agropecuária e nas cidades (residências e comércio), haja vista que o uso e a produção de energia são responsáveis por 57% dos gases de estufa emitidos pela atividade humana. Neste sentido, é imprescindível a implantação de um sistema de energia sustentável no mundo. Em um sistema de energia sustentável, a matriz energética mundial só deveria contar com fontes de energia limpa e renováveis (hidroelétrica, solar, eólica, hidrogênio, geotérmica, das marés, das ondas e biomassa), não devendo contar, portanto, com o uso dos combustíveis fósseis (petróleo, carvão e gás natural).
3. Bacharel em ciência da computação
Mestre em computação aplicada
Microsoft Innovative Educator (MIE)
Microsoft Specialist (MS)
C#
Javascript
ASP .NET MVC
3
GUI
Sobre mim
4. Microsoft Certified Solutions Assiciate (MCSA)
Web Applications
Autor dos livros da editora casa do código sobre
os assuntos:
Kinect
Windows Phone
Programação Funcional
4
GUI
Sobre mim
9. Contexto
A aplicação que iremos emular a funcionalidade é:
Escrita em C#;
Uma aplicação Web;
Serão Ignoradas alguns conceitos para focar no
problema principal.
14. Atualizar um usuário
1. Criar uma action para receber os dados do navegador;
2. Validar as informações recebidas;
3. Atualizar os dados do usuário;
4. Retornar uma resposta para o navegador.
22. Atualizar um usuário
1. A função de validação como void?
2. A função de atualização como void?
3. O valor de retorno é um texto escrito “OK”?
4. Mas... E se algo der errado?
26. Atualizar um usuário
Nos dois casos estamos lançando exceções quando
as coisas não ocorrem bem.
Como a resposta chegará ao navegador desta forma?
29. Atualizar um usuário
Como as exceções não estão sendo tratadas, acabamos
sempre retornando um erro 500.
Este HTTP code não deve ser utilizado para isso,
precisamos retornar um 400 (bad request).
Onde colocar esse tratamento?
30.
31. Atualizar um usuário
Onde nos perdemos?
Abusar de exceções
Interromper o fluxo do
programa
32. Atualizar um usuário
As exceções não devem ser utilizadas para erros de
validação.
Erros de validação fazem parte de uma regra não de
uma exceção.
Coisas como: O HD do servidor explodiu devem ser
exceções, um usuário digitar um e-mail com formato
inválido é algo normal e esperado.
37. Responsabilidade única
O Princípio da responsabilidade única (o S do famoso
SOLID) indica que, uma classe deve ter apenas UMA
responsabilidade.
Este princípio pode (e deve) ser extrapolado para
métodos.
Cada método deve fazer uma única coisa.
38. Responsabilidade única
No exemplo anterior o método Validate validava três
coisas diferentes: nome em branco, e-mail em branco
e formato do e-mail.
Seria uma boa ideia separá-los em três métodos
diferentes, cada um validando apenas uma coisa.
39. Responsabilidade única
Mas todas as vezes que fosse preciso validar um
usuário, teríamos que chamar as três funções?
Mais ou menos.
Para isso utilizamos funções compostas.
42. Composição
As funções compostas é um conteúdo que
aprendemos na escola na disciplina de matemática.
As funções compostas também podem ser chamadas
de função de função.
É um tipo específico de função que representa a
combinação de duas ou mais funções.
43. Composição
Tendo uma função f (A B) e uma função g (B C)
podemos representar uma composição de f e g como:
f >> g( A C)
Também podemos representar como:
g( f (A) )
47. Composição
Basicamente o que a composição faz é conectar a
saída de uma função como parâmetro da função
seguinte.
Vamos mostrar um código simples para ilustrar isso...
54. Composição
Como uma função retorna apenas um valor, as
funções que realizam uma composição precisam
receber apenas um parâmetro.
O que parece bem ruim...
Mas não é, porque TODA função pode conter apenas
um parâmetro. (Mas isso fica para outro dia)
55. Composição
Basicamente as funções que criamos devem servir
como peças de lego
Para resolvermos problemas maiores criamos um
bloco com estas peças (funções compostas).
56. Composição
Uma combinação de: Composição + Containers pode
ser extremamente poderosa para criação de um código
expressivo.
Mas... O que é um container?
59. Containers
Um container pode ser visto como um envelope ou
uma caixa que circunda um dado, incluindo-o em
algum contexto específico.
Lidamos com este tipo de valor o tempo todo:
1. List;
2. Array;
3. Task;
4. Nullable.
60. Containers
Imagine o seguinte cenário: você possui um dado do
tipo inteiro e precisa somá-lo com o valor 3.
62. Containers
Não podemos realizar a soma com o mesmo valor,
isso por conta do contexto que o cerca.
Por isso, comumente temos uma função para
remover o valor de seu contexto.
72. Criando um novo tipo
Este tipo precisa representar um resultado;
Este resultado pode ser um sucesso ou uma falha;
73. Criando um novo tipo
Os tipos referentes aos valores de sucesso e falha
não pode ser fixos, portanto generics;
74. Criando um novo tipo
Notem que as propriedades de nossa classe só
possuem um método get, ou seja, todas elas são
readonly;
Precisamos de construtores!
75. Criando um novo tipo
Em um construtor
temos apenas os
dados de sucesso, no
outro os de falha.
76. Criando um novo tipo
Com nosso novo container já é possível retornar um
resultado!
Vamos começar adaptando a função Update!
79. Refatorando
1. Return em dois locais diferentes;
Apesar da maior parte das vezes isso ser uma prática
ruim, como temos dois tipos de retorno diferentes, é
natural termos dois retornos.
81. Refatorando
1. Return em dois locais diferentes;
2. Ainda usamos try-catch;
Precisamos especificar os casos, onde há problema
de conexão com o banco e onde o usuário que
estamos atualizando não existe no sistema
82. Refatorando
2. Ainda usamos try-catch;
Onde o usuário não estiver cadastrado no banco:
Precisamos validar e retornar um erro quando precisar;
83. Refatorando
2. Ainda usamos try-catch;
Onde ocorrer erro de conexão com o banco:
Não precisamos fazer nada
¯ _ (ツ) _ / ¯
84. Refatorando
1. Return em dois locais diferentes;
2. Ainda usamos try-catch;
3. A criação do Result é trabalhosa;
85. Refatorando
Vamos apelar para a linguagem, podemos
sobrecarregar o operador de cast (conversão entre
tipos);
Dessa forma passamos a responsabilidade de
converter o objeto para a linguagem.
106. Refatorando
Parece uma composição!
Só que ruim.
A solução ainda está bem estranha, com vários If’s e
comparações.
E se encapsulássemos isso de uma forma que a
composição faça mais sentido?
108. Voltando ao tipo!
Agora é onde a magia acontece!
Vamos implementar em nossa classe 2 novos
métodos: Then e Catch.
Estes serão os métodos que utilizaremos para
composição!
109. Voltando ao tipo!
Os dois métodos possuem apenas uma linha, mas
são um tanto quanto complexo, mas calma, eu explico.
Primeiro vamos ao método Then
110. Voltando ao tipo!
Este método precisa retornar um novo objeto Result,
podendo inclusive ter outro tipo de sucesso.
Também precisaremos receber um parâmetro!
111. Voltando ao tipo!
E o parâmetro que vamos receber também é um
método. Ele será o segundo método da função
composta!
O C# utiliza delegates para descrever métodos, entre
eles temos o delegate Func<Tin, Tout> que descreve
uma função com 1 parâmetro e 1 retorno.
112. Voltado ao tipo!
A função precisa receber o retorno da anterior e deve
retornar um sucesso igual ao da assinatura do método
Then!
113. Voltando ao tipo!
A função precisa receber o retorno da anterior e deve
retornar um sucesso igual ao da assinatura do método
Then!
114. Voltando ao tipo!
A função precisa receber o retorno da anterior e deve
retornar um sucesso igual ao da assinatura do método
Then!
115. Voltando ao tipo!
A lógica do método Then é muito simples, basta
verificar se o Result atual foi um sucesso.
caso sim: execute o próximo método.
caso não, retorne sua falha
116. Voltando ao tipo!
Os dois métodos possuem apenas uma linha, mas
são um tanto quanto complexo, mas calma, eu explico.
Primeiro vamos ao método Then
Agora o método Catch
117. Voltando ao tipo!
Este método é semelhante ao Then, mas agora
vamos retornar apenas o valor de sucesso, sem ser
um novo resultado;
O catch deve ser a última coisa a ocorrer;
118. Voltando ao tipo!
Neste caso faremos a verificação contrário do método
Then, chamando a função de falha, apenas se há uma
falha no Result;
119. Voltando ao tipo!
Um último adendo...
O tipo Result é criado diversas vezes em uma
operação, por conta disso é fortemente recomendado
utilizarmos uma struct ao invés de uma classe.
Basta substituir a palavra reservada:
125. Reta final!
Isso ocorre porque o método Update espera dois
parâmetros (contexto e usuário) e o parâmetro da
função Then é um método com apenas um parâmetro;
126. Reta final!
Mas é só criarmos um método anônimo através de
expressão lambda!
127. Reta final!
Mas é só criarmos um método anônimo através de
expressão lambda!
128. Reta final!
Talvez você já tenha percebido, mas podemos
concatenar os métodos Then sem precisarmos
armazenar os resultados intermediários!
131. Resultado final
Como o método Then pode produzir novos
resultados, podemos incluir um Then para converter o
resultado em uma IHttpActionResult para retornarmos
o OK...
132. Resultado final
E no fim de tudo criamos um método Catch para
retornar um bad request se alguma falha ocorrer no
caminho!
E com isso teremos um método completamente
composto, feito de uma instrução de return...
137. Resultado final
Com isso finalizamos toda a implementação do
gerenciamento de erros através de uma abordagem
funcional.
Evitei utilizar termos comuns na programação
funcional justamente para mostrar que não é o bicho
de sete cabeças que imaginam