Você está aqui: Laravel ::: Dicas & Truques ::: Route |
Como declarar e usar rotas GET no Laravel usando Route::get()Quantidade de visualizações: 1372 vezes |
As requisições GET são as mais comuns em aplicações web, principalmente quando estamos usando Laravel. A página inicial, página de contato, formulários para prenchimento de dados, páginas de pesquisa, etc, são todas exibidas usando-se requisições GET. Além disso, requisições GET podem ser acessadas a partir do histórico ou favoritos dos navegadores, coisa que requisições POST não permitem. Requisições GET são mapeadas no Laravel por meio do método get() da classe Route. Veja, por exemplo, uma requisição GET para a página inicial da aplicação: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- <?php use Illuminate\Support\Facades\Route; Route::get('/', function(){ return view('pagina_inicial'); }); ?> Este código foi colocado no arquivo web.php no diretório routes da aplicação (Laravel 8). Agora esta rota pode ser acessada pela URL usando um endereço parecido com http://localhost/loja/public. É claro que será necessário uma view pagina_inicial.blade.php para que o exemplo fique completo. Veja agora como podemos usar Route::get() para obter uma requisição GET para uma página de cursos: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- <?php use Illuminate\Support\Facades\Route; Route::get('/cursos', function(){ return view('nossos_cursos'); }); ?> Novamente você deverá criar uma view nossos_cursos.blade.php no diretório resources\views para que o exemplo fique completo. |
Link para compartilhar na Internet ou com seus amigos: |
JavaScript ::: Dicas & Truques ::: Geometria, Trigonometria e Figuras Geométricas |
Como testar se um ponto está dentro de um círculo em JavaScript - Desenvolvimento de Games com JavaScriptQuantidade de visualizações: 1269 vezes |
Quando estamos trabalhando com computação gráfica, geometria e trigonometria ou desenvolvimento de jogos em JavaScript, é comum precisarmos verificar se um determinado ponto (uma coordenada x, y) está contido dentro de um círculo. Para melhor entendimento, veja a imagem a seguir: Veja que temos um círculo com raio igual a 115 e com centro nas coordenadas (x = 205; y = 166). Temos também dois pontos. O ponto vermelho está nas coordenadas (x = 140; y = 90) e o ponto azul está nas coordenadas (x = 330; y = 500. Como podemos ver na imagem, o ponto vermelho está dentro do círculo, enquanto o ponto azul está fora. E nosso intenção nesta dica é escrever o código JavaScript que permite fazer essa verificação. Tenha em mente que está técnica é muito útil para o teste de colisões no desenvolvimento de games. Veja o código completo para o exemplo: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- <!doctype html> <html> <head> <title>Desenvolvimento de Games usando HTML5 e JavaScript</title> </head> <body> <script type="text/javascript"> // vamos declarar a classe Circulo class Circulo{ constructor(xc, yc, raio){ this.xc = xc; // x do centro this.yc = yc; // y do centro this.raio = raio; // raio do círculo } } // agora vamos declarar a classe Ponto class Ponto{ constructor(x, y){ this.x = x; // coordenada x this.y = y; // coordenada y } } // vamos criar um objeto Circulo var c = new Circulo(90, 50, 115); // vamos criar um objeto Ponto var p = new Ponto(140, 90); // vamos verificar se o ponto está dentro do // círculo var dx = p.x - c.xc; var dy = p.y - c.yc; if((Math.pow(dx, 2) + Math.pow(dy, 2)) < Math.pow(c.raio, 2)){ document.writeln("O ponto está dentro do círculo"); } else{ document.writeln("O ponto NÃO está dentro do círculo"); } </script> </body> </html> Ao executar este código nós teremos o seguinte resultado: O ponto está dentro do círculo. Experimente com círculos de raios e coordenadas centrais diferentes e também com pontos em várias coordenadas e veja como os resultados são interessantes. |
C++ ::: Fundamentos da Linguagem ::: Estruturas de Controle |
Como criar um laço for infinito em C++ - C++ do básico ao profissionalQuantidade de visualizações: 9268 vezes |
É possível criar um laço for infinito em C++ simplesmente omitindo as partes início, condição e incremento/decremento. Veja:---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- #include <string> #include <iostream> using namespace std; int main(int argc, char *argv[]) { // um laço for infinito (cuidado! se você não // fornecer uma forma de parar o negócio vai // travar int valor = 0; for(;;){ cout << valor << "\n"; valor++; // vamos parar o laço aqui if(valor > 20) break; } cout << "\n\n"; system("PAUSE"); // pausa o programa return EXIT_SUCCESS; } |
C++ ::: Dicas & Truques ::: MIDI Musical Instrument Digital Interface, Mapeamento e sequenciamento MIDI, Entrada e saída MIDI |
Programação MIDI usando C++ - Como usar um vetor de chars para construir uma mensagem MIDI e passá-lo para a função midiOutShortMsg() da API do WindowsQuantidade de visualizações: 2051 vezes |
Nas dicas dessa seção nós vimos como é possível enviar uma mensagem MIDI para o dispositivo de saída por meio da função midiOutShortMsg() da API do Windows. Essa função recebe um handle para o dispositivo de saída MIDI e um valor DWORD contendo a mensagem MIDI. Se você revisitar essas dicas, verá que na maioria delas nós informamos a mensagem MIDI diretamente no parâmetro da função (como um valor hexadecimal). Nesta dica mostrarei como é possível construir as mensagens MIDI usando seus valores individuais e, o que é melhor, usando valores decimais. Para isso nós vamos construir um vetor de char e informar os valores que compõem a mensagem. É importante observar que a função midiOutShortMsg() exige que a mensagem MIDI seja informada na ordem de bytes "little endian" ou seja, o status MIDI é informado no byte de ordem mais baixa. Isso é conseguido com um cast do vetor para um unsigned long. Veja o trecho de código: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- // vamos criar um vetor contendo os valores que compõem a mensagem MIDI unsigned char vetor[4]; vetor[0] = 144; // Note-on no Canal 1 vetor[1] = 40; // Nota Mi na 4ª oitava vetor[2] = 100; // Velocidade/volume da nota vetor[3] = 0; // Não é usado // e aqui é que acontece a mágica. Quando fazemos o cast do // vetor para o tipo long sem sinal, os valores são colocados em // little endian, justamente a ordem de bytes esperada pela // função midiOutShortMsg() unsigned long mensagem = *(unsigned long*)vetor; // envia a mensagem MIDI midiOutShortMsg(saida, mensagem); Note que não coloquei o código todo. Para completá-lo, veja outras dicas dessa seção. |
VB.NET ::: Dicas & Truques ::: Strings e Caracteres |
Como inverter uma string em VB.NET usando a função StrReverse()Quantidade de visualizações: 10534 vezes |
Em algumas situações nós precisamos inverter a ordem dos caracteres de uma palavra, frase ou texto em VB.NET. Para isso nós podemos usar a função StrReverse(). Veja um exemplo completo de seu uso: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- Imports System Module Program Sub Main(args As String()) Dim frase As String = "Gosto de VB.NET" ' vamos mostrar a frase original Console.WriteLine("A frase original é: " & frase) ' vamos inverter a string frase = StrReverse(frase) ' mostramos a frase invertida Console.WriteLine("A frase invertida é: " & frase) Console.WriteLine(vbCrLf & "Pressione qualquer tecla para sair...") ' pausa o programa Console.ReadKey() End Sub End Module Ao executar este código VB.NET nós teremos o seguinte resultado: A frase original é: Gosto de VB.NET A frase invertida é: TEN.BV ed otsoG |
C ::: Estruturas de Dados ::: Lista Ligada Simples |
Estruturas de Dados em C - Como inserir antes de um determinado nó em uma lista encadeada simples usando CQuantidade de visualizações: 1622 vezes |
Em algumas situações nós precisamos inserir o novo nó antes de um determinado nó na lista encadeada simples. Veja, por exemplo, uma lista com o seguintes valores: 45 | 3 | 98 | 47 Suponha que queremos inserir o valor 50 antes do 98, então o novo conteúdo da lista será: 45 | 3 | 50 | 98 | 47 Observe que neste exemplo eu tratei o caso de inserir antes do primeiro nó, ou seja, antes do 45, mas não tratei a lista vazia. Há também a questão do laço infinito caso o usuário queira inserir antes de um nó não existente (não tratada). Veja o código completo: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- #include <stdio.h> #include <stdlib.h> // estrutura Nó struct No{ int valor; struct No *proximo; }; // fim da estrutura Nó // função que permite exibir os valores de // todos os nós da lista void exibir(struct No *n){ if(n != NULL){ do{ printf("%d\n", n->valor); n = n->proximo; }while(n != NULL); } else printf("A lista esta vazia\n\n"); } // função que permite inserir um novo nó // antes de um determinado valor struct No *inserir_antes_valor(struct No *n, int v, int v_antes){ // reserva memória para o novo nó struct No *novo = (struct No*)malloc(sizeof(struct No)); novo->valor = v; // guarda o nó antes do valor que procuramos struct No *anterior = NULL; struct No *temp = n; // aponta para o início da lista // enquanto for diferente do valor que estamos procurando while(temp->valor != v_antes){ anterior = temp; // anterior recebe temp // e temp recebe o seu próximo temp = temp->proximo; } // ATENÇÃO: não estamos tratando a condição // de lista vazia. Para isso veja minha dica // sobre como inserior no início da lista // devemos inserior no início da lista? if(anterior == NULL){ // o próximo do novo nó é o início da lista novo->proximo = n; n = novo; // início da lista é o novo nó } else{ // o proximo do anterior é o novo nó anterior->proximo = novo; // e o próximo do novo nó é temp novo->proximo = temp; } return n; } // função que permite inserir nós no // final da lista. // veja que a função recebe o valor a ser // armazenado em cada nó e um ponteiro para o // início da lista. A função retorna um // ponteiro para o início da lista struct No *inserir_final(struct No *n, int v){ // reserva memória para o novo nó struct No *novo = (struct No*)malloc(sizeof(struct No)); novo->valor = v; // verifica se a lista está vazia if(n == NULL){ // é o primeiro nó...não deve apontar para // lugar nenhum novo->proximo = NULL; return novo; // vamos retornar o novo nó como sendo o início da lista } else{ // não está vazia....vamos inserir o nó no final // o primeiro passo é chegarmos ao final da lista struct No *temp = n; // vamos obter uma referência ao primeiro nó // vamos varrer a lista até chegarmos ao último nó while(temp->proximo != NULL){ temp = temp->proximo; } // na saída do laço temp aponta para o último nó da lista // novo será o último nó da lista...o campo próximo dele deve // apontar para NULL novo->proximo = NULL; // vamos fazer o último nó apontar para o nó recém-criado temp->proximo = novo; return n; // vamos retornar o início da lista intacto } } int main(int argc, char *argv[]) { // declara a lista struct No *inicio = NULL; // vamos inserir quatro valores no final // da lista inicio = inserir_final(inicio, 45); inicio = inserir_final(inicio, 3); inicio = inserir_final(inicio, 98); inicio = inserir_final(inicio, 47); // vamos exibir a lista puts("Valores atuais:\n"); exibir(inicio); // vamos inserir o valor 50 antes do 98 inicio = inserir_antes_valor(inicio, 50, 98); // vamos exibir a lista novamente puts("\nValores agora:\n"); exibir(inicio); puts("\n\n"); system("pause"); return 0; } |
Desafios, Exercícios e Algoritmos Resolvidos de C |
Veja mais Dicas e truques de C |
Dicas e truques de outras linguagens |
C# - Como testar se uma string é null ou vazia em C# usando a função IsNullOrEmpty() da classe String |
Códigos Fonte |
Software de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais |
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais |
Linguagens Mais Populares |
1º lugar: Java |