![]() |
|
![]() 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 |
PHP ::: Dicas & Truques ::: Programação Orientada a Objetos |
Programação Orientada a Objetos em PHP - Como criar e usar variáveis estáticas em PHPQuantidade de visualizações: 10113 vezes |
Como já vimos em outras dicas desta seção, uma classe possui propriedades (variáveis) e métodos. Dessa forma, cada instância (cópia ou objeto) desta classe possui suas próprias cópias das variáveis declaradas na classe. Veja a seguinte declaração de uma classe Produto: <? // classe Produto com duas variáveis privadas e seus // correspondentes métodos mutatórios e acessórios class Produto{ private $nome; private $preco; public function setNome($nome){ $this->nome = $nome; } public function getNome(){ return $this->nome; } public function setPreco($preco){ $this->preco = $preco; } public function getPreco(){ return $this->preco; } } ?> Aqui cada instância da classe Produto terá suas próprias variáveis $nome e $preco. Há, porém, situações nas quais gostaríamos que uma determinada variável pertencesse à classe e não à cada instância individual. Um bom exemplo disso seria uma variável que registra a quantidade de instâncias que temos de uma classe ou a técnica de se atribuir um identificador único a cada instância da classe. Variáveis estáticas em PHP podem ser criadas por meio do uso da palavra-chave static. É comum tais variáveis serem declaradas com o modificador public, o que as torna acessíveis fora da classe na qual estas estão declaradas. Veja um exemplo: <? // classe Produto com duas variáveis privadas e seus // correspondentes métodos mutatórios e acessórios class Produto{ private $nome; private $preco; // uma variável estática que permite contar as instâncias // desta classe public static $contador = 0; // construtor da classe Produto function __construct(){ // vamos incrementar o contador aqui self::$contador++; } } // vamos criar duas instâncias da classe Produto $p1 = new Produto(); $p2 = new Produto(); // vamos obter o valor do contador de instâncias echo "Até este momento já criamos " . Produto::$contador . " instâncias da classe Produto"; ?> Este código possui alguns pontos interessantes e merece uma análise bem detalhada. Perceba que, dentro da classe, uma variável estática é acessada usando-se self e não $this, como fazemos com as variáveis de instâncias. Outra observação interessante é em relação ao acesso da variável estática fora da classe. Aqui nós usamos o nome da classe seguida por um par de dois pontos "::" e não por meio de referências às suas instâncias individuais. Finalmente observe o construtor da classe. A cada instância construída nós acessamos a variável estática e incrementamos seu valor em 1. É importante observar que variáveis estáticas não podem ser acessadas por meio de referências às instâncias da classe usando o operador "->". Assim, o trecho de código abaixo: // vamos tentar alterar o valor da variável estática por meio // de uma referência a uma das instâncias da classe Produto $p1->contador = 5; não provoca erros mas, também não traz o resultado esperado. |
Python ::: Flask Micro Framework ::: Rotas e Roteamento |
Como criar rotas em suas aplicações Flask usando o decorador @app.route() - Tutorial Flask para iniciantesQuantidade de visualizações: 1717 vezes |
Aplicações web modernas usam uma técnica chamada roteamento nomeado, ou, na linguagem do pessoal do SEO, URLs amigáveis. Isso quer dizer que, em vez de termos URLS do tipo /livro.php?id_livro=39 nós temos /livro/39. Neste modelo de roteamento, livro é o nome de uma função Python que será chamada quando o usuário acessar este endereço, e 39 será o argumento passado para o método. Em Flask, as URLs são associadas às funções Python por meio do decorador @app.route(). Veja uma aplicação Flask completa que possui um método index() que é chamado quando o usuário acessa a raiz da aplicação: # vamos importar a biblioteca Flask from flask import Flask # função principal do programa def main(): # vamos criar a aplicação Flask app = Flask(__name__) # definimos a rota para a função index() @app.route("/") def index(): return "Este é o método index()" # e iniciamos a aplicação web na porta 5000 app.run(port=5000, debug=True) if __name__== "__main__": main() Note que a nossa aplicação Flask estará disponível na porta 5000. Assim, ao acessar o endereço http://127.0.0.1:5000 nós teremos o seguinte resultado: Este é o método index() Veja agora como criar uma URL /listar_usuarios e associá-la a uma função listar_usuarios(): # vamos importar a biblioteca Flask from flask import Flask # função principal do programa def main(): # vamos criar a aplicação Flask app = Flask(__name__) # definimos a rota para a função index() @app.route("/") def index(): return "Este é o método index()" # definimos a rota para a função listar_usuarios() @app.route("/listar_usuarios") def listar_usuarios(): return "Este é o método para listar os usuários" # e iniciamos a aplicação web na porta 5000 app.run(port=5000, debug=True) if __name__== "__main__": main() Agora, experimente acessar o endereço http://127.0.0.1:5000/listar_usuarios e veja o resultado. Se tudo estiver correto, você verá o seguinte resultado: Este é o método para listar os usuários Em mais dicas desta seção você verá como criar URLs com parâmetros e passá-los para suas funções Python. |
JavaScript ::: Dicas & Truques ::: Data e Hora |
Como exibir a data e hora atual em JavaScript usando o objeto DateQuantidade de visualizações: 8302 vezes |
O objeto Date da linguagem JavaScript pode ser usado quando queremos retornar ou exibir a data e hora atual. Nesta dica eu mostro como criar um objeto Date e em seguida mostrar os resultados na página. Veja o código HTML completo para o exemplo: <!doctype html> <html> <head> <title>Datas em JavaScript</title> </head> <body> <script type="text/javascript"> // vamos obter a data e hora atual var data = Date(); // e mostramos o resultado document.write("Data e hora atual: " + data); </script> </body> </html> Ao executar este código JavaScript nós teremos o seguinte resultado: Data e hora atual: Sat Feb 04 2023 15:08:32 GMT-0300 (Horário Padrão de Brasília) |
JavaScript ::: Dicas & Truques ::: Arrays e Matrix (Vetores e Matrizes) |
Como testar se todos os elementos de um array satisfazem uma condição em JavaScript usando a função every()Quantidade de visualizações: 1537 vezes |
Em algumas situações nós gostaríamos de testar todos os elementos de um vetor e verificar se todos eles passam em um determinado teste. Para isso podemos usar a função every(), adicionada à linguagem JavaScript por meio do ECMAScript 5 (JavaScript 5, ECMAScript 2009, ES5). Este método nos permite fornecer uma função de callback que será chamada para cada um dos elementos do vetor. E o retorno do método every() é um valor true se todos os elementos passarem no teste e false em caso contrário. Veja um exemplo no qual testamos se TODOS os elementos de um vetor são maiores que 10: <script type="text/javascript"> function testarTodos(valor, indice, vetor){ if(valor > 10){ return true; } } var valores = new Array(21, 50, 30, 70, 12, 3); // vamos verificar se TODOS os valores são // maiores que 10 var res = valores.every(testarTodos); window.alert("Todos passaram no teste: " + res); </script> Aqui o resultado será false, pois o valor 3 não passou no teste. É importante observar que, assim que a função de callback retorna false pela primeira vez, o método every() já abandona sua execução. Uma função passada para o método every() pode conter os seguintes argumentos (nessa mesma ordem): a) O valor do item; b) O índice do item (opcional); c) O vetor a partir do qual o método every() está sendo chamado (opcional). Como última observação, o método every() não modifica o array original. |
C# ::: Dicas & Truques ::: Data e Hora |
Como calcular a diferença de anos, meses ou dias entre duas datas em C# usando a função Subtract() da classe DateTimeQuantidade de visualizações: 21430 vezes |
Esta dica mostra como obter a diferença de anos, meses ou dias entre duas datas. O truque aqui é usar o método Subtract() da estrutura DateTime. Este método recebe um objeto DateTime, subtrai seus valores do DateTime atual e retorna um objeto TimeSpan, usada para representar um intervalo de tempo. Veja o código completo:using System; namespace Estudos { class Program { static void Main(string[] args) { // vamos obter a diferença em anos, meses ou dias entre // duas datas DateTime data_inicial = new DateTime(2008, 4, 10); // 10/04/2008 DateTime data_final = new DateTime(2008, 5, 15); // 15/05/2008 // obtém a diferença TimeSpan dif = data_final.Subtract(data_inicial); // exibe o resultado System.Console.WriteLine("Diferença em:\nAnos: " + (dif.Days / 365) + "\nMeses: " + (dif.Days / 30) + "\nDias: " + dif.Days); Console.WriteLine("\n\nPressione uma tecla para sair..."); Console.ReadKey(); } } } Ao executar este código C# nós teremos o seguinte resultado: Diferença em: Anos: 0 Meses: 1 Dias: 35 Tome cuidado. Este método pode lançar uma exceção do tipo ArgumentOutOfRangeException se os valores fornecidos estiverem fora das faixas permitidas. |
PHP ::: Fundamentos da Linguagem ::: Métodos, Procedimentos e Funções |
Como usar funções e variáveis globais em PHPQuantidade de visualizações: 38680 vezes |
Por padrão, variáveis definidas a nível de página, ou seja, variáveis globais, não podem ser acessadas a partir de uma função. Veja um exemplo:<? // variável global $usuario = "Osmar"; function exibir(){ echo $usuario; // acessa a variável gloal } // chama a função exibir(); ?> Ao executar este exemplo teremos o seguinte resultado: Notice: Undefined variable: usuario in xxx/estudos.php on line 6 Para contornar este problema, temos que empregar a palavra-chave global seguida pelo nome da variável global que queremos acessar. Veja: <? // variável global $usuario = "Osmar"; function exibir(){ // permite acesso à variável global global $usuario; echo $usuario; // acessa a variável gloal } // chama a função exibir(); ?> Ao executarmos o código novamente, percebemos que o resultado é o esperado. Outra forma de acessar variáveis globais a partir de uma função é usando $GLOBALS. Veja: <? // variável global $usuario = "Osmar"; function exibir(){ echo $GLOBALS['usuario']; // acessa a variável global } // chama a função exibir(); ?> |
C ::: Dicas & Truques ::: Arquivos e Diretórios |
Como excluir arquivos em C usando a função remove()Quantidade de visualizações: 19277 vezes |
A função remove(), disponível no header stdio.h, pode ser usada para excluir arquivos. Veja sua assinatura:int remove(const char *filename); Veja que esta função recebe o caminho e nome do arquivo a ser excluído e retorna um valor inteiro. Se o arquivo for excluído com sucesso, o valor 0 será retornado. Veja um exemplo: #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { // nome do arquivo a ser excluído char *arquivo = "c:\\testes.txt"; // vamos excluir if(remove(arquivo) == 0) printf("Arquivo foi excluido com sucesso."); else printf("Nao foi possivel excluir o arquivo."); printf("\n\n"); system("PAUSE"); return 0; } |
AngularJS ::: Angular / AngularJS + JavaScript ::: Controllers AngularJS |
Como adicionar funções (ou métodos) ao seu controller AngularJSQuantidade de visualizações: 2023 vezes |
Nesta dica mostrarei como adicionar comportamento ao seu controller AngularJS, ou seja, adicionar funções ou métodos para acessar e/ou modificar as variáveis contidas no escopo. Para este exemplo criaremos um controller chamado "VolumeTV". Este controller terá uma variável chamada "volume" e dois botões para aumentar ou diminuir o volume. Note que, tanto a variável quanto as duas funções são colocadas no $scope para facilitar o acesso destes a partir da view. Veja o exemplo completo, sem usar AngularJS CLI nem TypeScript, somente JavaScript e HTML: <!DOCTYPE html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Cadastro de Alunos AngularJS</title> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.7.9/angular.min.js"> </script> </head> <body> <script type="text/javascript"> // vamos criar uma nova aplicação var app = angular.module('MinhaApp', []); // vamos criar o controller VolumeTV app.controller('VolumeTV', function ($scope){ // define o volume inicial $scope.volume = 5; // função para aumentar o volume $scope.aumentarVolume = function(){ $scope.volume++; }; // função para diminuir o volume $scope.diminuirVolume = function(){ $scope.volume--; }; }); </script> <div ng-app="MinhaApp" ng-controller="VolumeTV"> <h1>Volume atual: {{volume}}</h1> <button ng-click="aumentarVolume()">Aumentar Volume</button> <button ng-click="diminuirVolume()">Diminuir Volume</button> </div> </body> </html> |
Python ::: Python para Engenharia ::: Engenharia Civil - Cálculo Estrutural |
Como calcular a Posição da Linha Neutra em vigas de concreto armado usando Python - Python para Engenharia Civil - Cálculo EstruturalQuantidade de visualizações: 145 vezes |
O concreto possui excelente resistência à compressão, porém, sua resistência à tração é muito pequena, chegando em torno de 10% da sua resistência à compressão. O aço, por sua vez, apresenta alta resistência à tração. Por esta razão a combinação destes dois materiais resulta no que conhecemos por concreto armado, no qual o concreto, no caso das vigas, resiste às solicitações de compressão (em geral na parte superior da viga) e o aço se encarrega da tração (na parte inferior da viga). Entre as forças de compressão e tração da viga de concreto armado existe uma região na qual as tensões são nulas, ou seja, não há nem tração nem compressão. Essa região é conhecida como linha neutra da viga e é usada, entre outras coisas, para verificarmos se a viga se encontra nas condições mínimas de dutibilidade exigidas pela ABNT NBR 6118/2014. Outra característica muito importante da linha neutra é que ela nos permite indicar em qual domínio de deformação as nossas vigas de concreto armado estão trabalhando. A posição da linha neutra em vigas de concreto armado pode ser calculada por meio da seguinte fórmula: \[x = 1,25 \cdot d \cdot \left(1 - \sqrt{1 - \frac{M_d}{0,425 \cdot b_w \cdot d^2 \cdot f_\text{cd}}}\right)\] Onde: x é a posição da linha neutra a partir da fibra mais comprimida da viga, em metros (que depois convertemos para cm); d é a altura útil da viga em metros; Md é o momento solicitante de cálculo na viga, em kN.m; bw é a largura da viga, em metros; fcd é a resistência de cálculo do concreto, em kN/m2; Veja agora o código Python completo que pede para o usuário informar a altura e largura da viga em centímetros, o momento solicitante na viga em kN.m e o FCK do concreto em Mpa, mostra a posição da linha neutra da viga e informa se ela obedece ao valor máximo imposto pela ABNT NBR 6118/2014 e também o domínio de deformação que ela está atuando: # precisamos importar o módulo Math import math # função principal do programa Python def main(): # vamos pedir para o usuário informar a altura da viga altura = float(input("Informe a altura H da viga em cm: ")) # vamos converter de centímetros para metros altura = altura / 100.00 # vamos pedir para o usuário informar a largura da viga largura = float(input("Informe a largura bw da viga em cm: ")) # vamos converter de centímetros para metros largura = largura / 100.00 # vamos calcular a altura útil da viga # aqui eu usei 0.9 mas alguns engenheiros usam 0.95 altura_util = 0.9 * altura # vamos pedir para o usuário informar o momento # máximo solicitante Mk (calculado no Ftool ou outra ferramenta) Mk = float(input("Informe o momento solicitante Mk em kN.m: ")) # vamos definir o valor do gama f yf = 1.4 # calculamos o md, ou seja, o momento solicitante de cálculo Md = Mk * yf # vamos pedir para o usuário informar o FCK do concreto fck = float(input("Informe o FCK do concreto em Mpa: ")) # vamos definir o valor do gama c yc = 1.4 # calculamos o fcd, ou seja, a resistência de cálculo do concreto fcd = fck / yc # finalmente vamos calcular a posição da linha neutra # note que converti o fcd de Mpa para kN/m2 x = 1.25 * altura_util * (1 - math.sqrt(1 - (Md / (0.425 * largura * math.pow(altura_util, 2) * (fcd * 1000.0))))) # vamos mostrar os resultados print("\nA altura útil da viga é: {0} cm ({1} m)".format( round(altura_util * 100, 5), round(altura_util, 5))) print("O momento solicitante de cálculo é: {0} kN.m".format( round(Md, 5))) print("O fcd do concreto é: {0} Mpa".format(round(fcd, 5))) print("A posição da linha neutra é: {0} cm".format(round(x * 100.0, 5))) # vamos verificar se a posição da linha neutra está dentro do # limite máximo imposto pela ABNT NBR 6118/2014 para FCK até 50 Mpa if ((x / altura_util) <= 0.45): print("Garante condições mínimas de dutibilidade? SIM") else: print("Garante condições mínimas de dutibilidade? NÃO") # vamos verificar o domínio de deformação da vaga temp = x / altura_util if (temp <= 0.167): print("A viga está trabalhando no domínio 1") elif ((temp > 0.167) and (temp <= 0.259)): print("A viga está trabalhando no domínio 2") elif ((temp > 0.259) and (temp <= 0.628)): print("A viga está trabalhando no domínio 3") else: print("A viga está trabalhando no domínio 4/5") if __name__ == "__main__": main() Ao executar este código Python nós teremos o seguinte resultado: Informe a altura H da viga em cm: 35 Informe a largura bw da viga em cm: 19 Informe o momento solicitante Mk em kN.m: 32.3 Informe o FCK do concreto em Mpa: 25 A altura útil da viga é: 31.5 cm (0.315 m) O momento solicitante de cálculo é: 45.22 kN.m O fcd do concreto é: 17.85714 Mpa A posição da linha neutra é: 6.81136 cm Garante condições mínimas de dutibilidade? SIM A viga está trabalhando no domínio 2 |
C ::: Fundamentos da Linguagem ::: Tipos de Dados |
Como usar o tipo de dados boolean nas linguagens C e C++ - Como usar true (verdadeiro) e false (false) em C/C++Quantidade de visualizações: 18765 vezes |
Em praticamente todas as linguagens de programação nós encontramos expressões condicionais que definem o fluxo de execução. Expressões condicionais são aquelas que, quando avaliadas, resultam em um valor true (verdadeiro) ou false (falso). Muitas linguagens de programação possuem um tipo booleano que armazena os valores true ou false. Enquanto o C++ possui o tipo bool, o C possui uma forma bem interessante de definir true ou false. Em C, um valor true é qualquer valor diferente de 0, incluindo numeros negativos. Veja: #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int pode = 1; // verdadeiro int nao_pode = 0; // falso if(pode) printf("Teste resultou verdadeiro\n\n"); if(!nao_pode) printf("Teste resultou verdadeiro\n\n"); system("PAUSE"); return 0; } Ao executar este código nós teremos o seguinte resultado: Teste resultou verdadeiro Teste resultou verdadeiro Lembre-se então: false em C é o valor zero. Qualquer outro valor é true. Embora C++ já possua o tipo bool, é possível usar a abordagem do zero para false e qualquer outro valor para true em C++ também. Você verá muito código legado usando este artifício. Quer ver algo interessante agora? Execute o seguinte código C++: #include <string> #include <iostream> using namespace std; int main(int argc, char *argv[]){ bool pode = true; bool nao_pode = false; cout << pode << "\n"; cout << nao_pode << "\n\n"; system("PAUSE"); // pausa o programa return EXIT_SUCCESS; } Nos compiladores que obedecem o C++ padrão você verá os valores 1 e 0 serem impressos. |
Nossas 20 dicas & truques de programação mais populares |
C++ - Como inicializar os valores dos elementos de um vetor C++ usando valores randômicos - Revisado Laravel - Como criar um CRUD completo em Laravel 8 - CRUD em Laravel usando PHP e MySQL (MariaDB) - Parte 1 |
Você também poderá gostar das dicas e truques de programação abaixo |
C++ - Como inicializar os valores dos elementos de um vetor C++ usando valores randômicos - Revisado Laravel - Como criar um CRUD completo em Laravel 8 - CRUD em Laravel usando PHP e MySQL (MariaDB) - Parte 1 |
Nossas 20 dicas & truques de programação mais recentes |
Últimos Projetos e Códigos Fonte Liberados Para Apoiadores do Site |
Python - Como criar o jogo Pedra, Papel, Tesoura em Python - Jogo completo em Python com código comentado |
Últimos Exercícios Resolvidos |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
1º lugar: Java |