![]() |
|
||||
![]() Planilha Web - Planilhas e Calculadoras online para estudantes e profissionais de Engenharia Civil, Engenharia Elétrica e Engenharia Mecânica. |
|||||
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: 1596 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. |
Python ::: Dicas & Truques ::: HTTP Web Server |
Como criar um servidor web em Python usando as classes BaseHTTPRequestHandler e HTTPServerQuantidade de visualizações: 735 vezes |
Nesta dica mostrarei como criar um web server em Python, ou seja, o nosso próprio servidor web. Para isso nós vamos criar uma classe ServidorWeb que herda de BaseHTTPRequestHandler, que nos fornece todos os métodos necessários para tratar requisições HTTP, tais como GET e POST. Note que definir o nome do host como "localhost" e a porta como "8080". Veja o código completo para o nosso web server em Python: # precisamos importar os objetos BaseHTTPRequestHandler e HTTPServer # do módulo http.server from http.server import BaseHTTPRequestHandler, HTTPServer # precisamos também do módulo time import time # vamos criar a classe ServidorWeb, que herda de # BaseHTTPRequestHandler class ServidorWeb(BaseHTTPRequestHandler): # vamos implementar o método que responde às requisições GET def do_GET(self): self.send_response(200) self.send_header("Content-type", "text/html") self.end_headers() self.wfile.write(bytes("<html><head><title>Meu Servidor Web</title></head>", "utf-8")) self.wfile.write(bytes("<p>Requsição: %s</p>" % self.path, "utf-8")) self.wfile.write(bytes("<body>", "utf-8")) self.wfile.write(bytes("<p>Exemplo de Web Server em Python</p>", "utf-8")) self.wfile.write(bytes("</body></html>", "utf-8")) # função principal do programa def main(): # agora criamos um objeto HTTPServer host = "localhost" porta = 8080 servidorWeb = HTTPServer((host, porta), ServidorWeb) print("Servidor iniciado em http://%s:%s" % (host, porta)) # tentamos levantar o servidor try: servidorWeb.serve_forever() except KeyboardInterrupt: pass # liberamos o servidor web servidorWeb.server_close() print("O servidor web foi parado.") if __name__== "__main__": main() Ao executar este código você verá a seguinte mensagem: Servidor iniciado em http://localhost:8080 A partir daí você pode abrir o seu navegador neste endereço e já verá a página web que definimos no corpo do método do_GET() da classe ServidorWeb. Agora é só explorar as dicas dessa seção para aprender ainda mais sobre redes, soquetes e servidores web usando a linguagem Python. |
C++ ::: Win32 API (Windows API) ::: Arquivos e Diretórios |
C++ Windows API - Como ler o conteúdo de um arquivo usando a função ReadFile() da Win32 APIQuantidade de visualizações: 9008 vezes |
A função ReadFile() é usada quando queremos ler o conteúdo de um arquivo. A leitura se inicia na posição zero do arquivo e mantém um ponteiro de arquivo, a partir do qual as leituras subsequentes ocorrerão. Esta função pode ser usada para leituras síncronas e assíncronas. Para leituras apenas assíncronas devemos usar ReadFileEx(). Veja seu protótipo na documentação da API do Windows: BOOL WINAPI ReadFile( HANDLE hFile, LPVOID lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped ); Antes de vermos um exemplo de como usar a função ReadFile(), vamos dar uma olhada em seus parâmetros: a) HANDLE hFile - Este é o handle para o arquivo a partir do qual queremos ler. Tal handle deve ser criado com o direito de acesso GENERIC_READ. b) LPVOID lpBuffer - Um ponteiro para o buffer que receberá os dados lidos do arquivo. c) DWORD nNumberOfBytesToRead - O número máximo de bytes a serem lidos de cada vez. Geralmente este número está relacionado à quantidade de bytes dos elementos do buffer. d) LPDWORD lpNumberOfBytesRead - Um ponteiro para uma variável que receberá o número de bytes lidos. A função ReadFile() define o valor desta variável como 0 antes de cada leitura e verificação de erros. e) LPOVERLAPPED lpOverlapped - Um ponteiro para um estrutura OVERLAPPED. Esta estrutura é exigida se o handle para o arquivo for obtido usando FILE_FLAG_OVERLAPPED para o parâmetro dwFlagsAndAttributes da função CreateFile(). Geralmente usamos NULL para este parâmetro. A função ReadFile() retorna quando um erro ocorre ou a quantidade de bytes solicitados é alcançada. Veja um trecho de código no qual lemos o conteúdo de um arquivo chamado testes.txt: #include <cstdlib> #include <iostream> #include <windows.h> #define TAM_BUFFER 256 // tamanho do buffer em bytes using namespace std; int main(int argc, char *argv[]){ // nome do arquivo CHAR arquivo[] = "C:\\testes.txt"; CHAR buffer[TAM_BUFFER]; // buffer para o conteúdo do arquivo DWORD nIn; // bytes lidos // vamos abrir o arquivo para leitura. // se o arquivo não existir uma mensagem de erro é exibida. HANDLE hArquivo = CreateFile(arquivo, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if(hArquivo == INVALID_HANDLE_VALUE){ cout << "Erro ao abrir o arquivo: " << GetLastError() << endl; } else{ // arquivo aberto com sucesso. Vamos ler while(ReadFile(hArquivo, buffer, TAM_BUFFER, &nIn, NULL) && nIn > 0){ cout << "Efetuei a leitura de " << nIn << " bytes." << endl; // vamos adicionar o caractere de final de linha // caso os bytes lidos não preencham todo o buffer buffer[nIn] = 0; cout << "Conteudo da leitura: " << buffer << endl; } } // vamos fechar o handle CloseHandle(hArquivo); system("PAUSE"); return EXIT_SUCCESS; } |
Java ::: Java Swing - Gerenciadores de Layout ::: GridBagLayout |
Como adicionar espaço entre o GridBagLayout do Java Swing e as bordas da janela JFrame usando o método setBorder()Quantidade de visualizações: 11424 vezes |
Se o GridBagLayout for o gerenciador de layout principal da janela, pode ser interessante adicionar algum espaço (padding) entre ele e as bordas da janela JFrame ou JDialog. Isso pode ser feito obtendo-se uma referência ao painel de conteúdo (ContentPane) da JFrame e adicionando uma borda EmptyBorder. Veja como isso é feito no trecho de código abaixo:package arquivodecodigos; import javax.swing.*; import javax.swing.border.*; import java.awt.*; public class Estudos extends JFrame{ public Estudos(){ super("Como usar a classe GridBagLayout"); // define o layout setLayout(new GridBagLayout()); // define uma borda para aumentar o espaço // entre as bordas da janela e o gerenciador // de layout ((JComponent)getContentPane()).setBorder( new EmptyBorder(10, 10, 10, 10)); // cria o GridBagConstraints GridBagConstraints gbc = new GridBagConstraints(); // controla o espaço entre os componentes // e as linhas do GridBagLayout. // aqui nós definimos 5 pixels para os // lados de cima, esquerda, inferior e direita gbc.insets = new Insets(5, 5, 5, 5); // adiciona componentes à janela gbc.gridy = 0; // linha gbc.gridx = 0; // coluna add(new JButton("Botão 1"), gbc); gbc.gridy = 0; // linha gbc.gridx = 1; // coluna add(new JButton("Botão 2"), gbc); gbc.gridy = 0; // linha gbc.gridx = 2; // coluna add(new JButton("Botão 3"), gbc); gbc.gridy = 1; // linha gbc.gridx = 0; // coluna add(new JButton("Botão 4"), gbc); gbc.gridy = 1; // linha gbc.gridx = 1; // coluna add(new JButton("Botão 5"), gbc); gbc.gridy = 1; // linha gbc.gridx = 2; // coluna add(new JButton("Botão 6"), gbc); //setSize(350, 150); pack(); // ajusta o tamanho da janela ao // dos componentes setVisible(true); } public static void main(String args[]){ Estudos app = new Estudos(); app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } Ao executar este código Java Swing nós teremos o seguinte resultado: ![]() |
Python ::: Dicas & Truques ::: Formatação de datas, strings e números |
Como formatar inteiros com uma determinada quantidade de zeros à esquerda usando PythonQuantidade de visualizações: 11392 vezes |
Nesta dica eu mostro como formatar um valor inteiro com uma determinada quantidade de zeros à sua esquerda. Note que aqui eu estou combinando a função print() com o operador de módulo (%) para indicar os valores que serão formatados. Esta técnica foi muito usada na época do Python 2.5 e ainda está disponível no Python 3.0 (e creio que deverá continuar por muito tempo ainda). Veja o trecho de código completo: # função principal do programa def main(): valor1 = 343 valor2 = 3 # exibirá 000342 print("O valor é %06d" % (valor1)) # exibirá 0342 e 00000003 print("Os valor sao %04d e %08d" % (valor1, valor2)) if __name__== "__main__": main() Ao executar este código Python nós teremos o seguinte resultado: O valor é 000343 Os valor são 0343 e 00000003 |
Ruby ::: Dicas & Truques ::: Strings e Caracteres |
Como acessar os caracteres individuais de uma string em Ruby usando o método slice() da classe StringQuantidade de visualizações: 7527 vezes |
O método slice() da classe String da linguagem Ruby se torna realmente útil quando precisamos acessar os caracteres individuais de uma string. Neste caso, só precisamos fornecer o índice do caractere a ser acessado e o número 1. O retorno do método é uma nova string ou nulo. Veja o exemplo a seguir: nome = "Arquivo de Códigos" # vamos acessar os caracteres individualmente usando # o método slice for i in (0..nome.length - 1) letra = nome.slice(i, 1) print letra + " " end Ao executar este código Ruby nós teremos o seguinte resultado: A r q u i v o d e C ó d i g o s |
C ::: Desafios e Lista de Exercícios Resolvidos ::: Geometria Analítica e Álgebra Linear |
Exercício Resolvido de C - Como calcular o quadrante de uma coordenada cartesiana em CQuantidade de visualizações: 1713 vezes |
Pergunta/Tarefa: O Plano Cartesiano, ou Sistema de Coordenadas Cartesianas, é formado por duas retas reais perpendiculares, ou seja, o ângulo entre elas é de 90 graus. Essas retas determinam um único plano, que é denominado como sistema ortogonal de coordenadas cartesianas ou somente plano cartesiano. No ano de 1637, René Descartes teve a brilhante ideia de relacionar álgebra e geometria, dando início à conhecida geometria analítica, método que possibilita descrever a geometria utilizando uma menor quantidade de diagramas e desenhos. Apesar de os créditos dessa descoberta serem dados a Descartes, Pierre de Fermat já conhecia e utilizava alguns conceitos de geometria analítica, logo o plano cartesiano. Há quatro quadrantes no Sistema de Coordenadas Cartesianas, conforme a figura a seguir: ![]() Como podemos ver, no primeiro quadrante, tanto o x quanto o y são positivos. No segundo quadrante o x é negativo e o y é positivo. No terceiro quadrante, tanto o x quanto o y são negativos. Por fim, no quarto quadrante, o x é positivo e o y é negativo. Escreva um programa C que pede para o usuário informar os valores x e y de uma coordenada cartesiana e informe em qual quadrante essa coordenada se situa. Se os valores de x e y forem zero, informe que o ponto se situa na origem do plano cartesiano. Sua saída deverá ser parecida com: Informe o valor x da coordenada: 12 Informe o valor y da coordenada: -7 A coordenada (12,-7) está no Quarto Quadrante (+,-) Veja a resolução comentada deste exercício em C: #include <stdio.h> #include <stdlib.h> #include <locale.h> // função principal do programa int main(int argc, char *argv[]){ // variáveis usadas na resolução do problema int x, y; setlocale(LC_ALL,""); // para acentos do português // vamos pedir para o usuário informar as coordenadas printf("Informe o valor x da coordenada: "); scanf("%d", &x); printf("Informe o valor y da coordenada: "); scanf("%d", &y); // a coordenada está no primeiro quadrante? if (x > 0 && y > 0){ printf("A coordenada (%d,%d) está no Primeiro Quadrante (+,+)", x, y); } // a coordenada está no segundo quadrante? else if (x < 0 && y > 0){ printf("A coordenada (%d,%d) está no Segundo Quadrante (-,+)", x, y); } // a coordenada está no terceiro quadrante? else if (x < 0 && y < 0){ printf("A coordenada (%d,%d) está no Terceiro Quadrante (-,-)", x, y); } // a coordenada está no quarto quadrante? else if (x > 0 && y < 0){ printf("A coordenada (%d,%d) está no Quarto Quadrante (+,-)", x, y); } // a coordenada está na origem else{ printf("A coordenada (%d,%d) está na origem", x, y); } printf("\n\n"); system("PAUSE"); return 0; } |
C# ::: Dicas & Truques ::: Sistema |
Como verificar o formato de um drive (NTFS, FAT32, etc) usando a propriedade DriveFormat da classe DriveInfo da linguagem C#Quantidade de visualizações: 7279 vezes |
A propriedade DriveFormat da classe DriveInfo pode ser usada para obter o formato de um drive, ou seja, ela nos permite saber se o formato de um drive é NTFS ou FAT32, por exemplo. Veja um trecho de código exemplificando seu uso: using System; using System.IO; namespace Estudos{ class Program{ static void Main(string[] args) { DriveInfo di = new DriveInfo("C"); // vamos obter o formato deste drive string formato = di.DriveFormat; // vamos exibir o resultado Console.WriteLine("O formato deste drive é: " + formato); } } } Ao executar este código nós teremos o seguinte resultado: O formato deste drive é: NTFS |
C++ ::: Dicas & Truques ::: Trigonometria - Funções Trigonométricas |
Como calcular o comprimento da hipotenusa em C++ dadas as medidas do cateto oposto e do cateto adjascenteQuantidade de visualizações: 2313 vezes |
Nesta dica mostrarei como é possível usar a linguagem C++ para retornar o comprimento da hipotenusa dadas as medidas do cateto oposto e do cateto adjascente. Vamos começar analisando a imagem a seguir:![]() Veja que, nessa imagem, eu já coloquei os comprimentos da hipotenusa, do cateto oposto e do cateto adjascente. Para facilitar a conferência dos cálculos, eu coloquei também os ângulos theta (que alguns livros chamam de alfa) e beta já devidamente calculados. Então, sabendo que o quadrado da hipotenusa é igual à soma dos quadrados dos catetos (Teorema de Pitógoras): \[c^2 = a^2 + b^2\] Tudo que temos a fazer a converter esta fórmula para código C++. Veja: #include <iostream> #include <math.h> #include <cstdlib> using namespace std; int main(int argc, char *argv[]){ float a = 20; // medida do cateto oposto float b = 30; // medida do cateto adjascente // agora vamos calcular o comprimento da hipotenusa float c = sqrt(pow(a, 2) + pow(b, 2)); // e mostramos o resultado cout << "O comprimento da hipotenusa é: " << c << "\n\n"; system("PAUSE"); // pausa o programa return EXIT_SUCCESS; } Ao executar este código C++ nós teremos o seguinte resultado: O comprimento da hipotenusa é: 36.0555 Como podemos ver, o resultado retornado com o código C++ confere com os valores da imagem apresentada. |
C# ::: Dicas & Truques ::: Strings e Caracteres |
C# para iniciantes - Qual a diferença entre string e String?Quantidade de visualizações: 198 vezes |
Muitos usuários do nosso site nos enviam essa pergunta, pois ficam confusos com a escrita de "string" e "String". Nesta dica mostrarei a diferença entre esses dois tipos de dados. Comece analisando o código abaixo:using System; namespace Estudos{ class Program{ static void Main(string[] args) { string frase = "Sou uma string"; String outra = "Sou outra string"; Console.WriteLine("\n\nPressione uma tecla para sair..."); Console.ReadKey(); } } } Se você tentar compilar o código acima, verá que ele não somente compila como também executa sem problemas. Isso acontece porque, do ponto de vista do compilador e interpretador C#, não há diferença alguma entre "string" e "String". O tipo string representa uma string de caracteres Unicode (16 bits - 2 bytes) e é um apelido para a classe String da plataforma .NET. O fato de os projetistas da linguagem C# terem permitido a escrita toda em letras minúsculas se deve à frequência com que esse tipo é usado em nossos códigos, se asemelhando aos tipos primitivos int, float, double, etc. |
Nossas 20 dicas & truques de programação mais populares |
VB.NET - Como usar o laço While em VB.NET |
Você também poderá gostar das dicas e truques de programação abaixo |
Delphi - Delphi para iniciantes - Como criar uma data e hora em Delphi usando a função EncodeDateTime() Python - Como usar a função type() da linguagem Python para descobrir o tipo de dados de uma variável |
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 |