![]() |
|
||||
![]() Planilha Web - Planilhas e Calculadoras online para estudantes e profissionais de Engenharia Civil, Engenharia Elétrica e Engenharia Mecânica. |
|||||
C# ::: Dicas & Truques ::: Data e Hora |
Como usar a classe Calendar em suas aplicações C#Quantidade de visualizações: 11824 vezes |
A classe Calendar da plataforma .NET está presente no namespace System.Globalization. Esta é uma classe abstrata (não pode ser instanciada e serve somente como classe base para futuras implementações) que implementa a interface ICloneable. Veja sua posição na hierarquia de classes da plataforma .NET:System.Object System.Globalization.Calendar Um calendário divide o tempo em unidades, tais como semanas, meses e anos. O número, comprimento e início destas divisões variam de acordo com cada calendário. Qualquer momento no tempo pode ser representado como um conjunto de valores numéricos usando um calendário em particular. Por exemplo, um equinócio vernal ocorreu em (1999, 3, 20, 8, 46, 0, 0.0) no calendário Gregoriano (Gregorian calendar), ou seja, 20 de março de 1999 C.E às 8:46:00:0.0. Uma implementação de Calendar pode mapear cada data na faixa de um calendário específico para um conjunto similiar de valores numéricos, e DateTime pode mapear tais conjuntos de valores numéricos para uma representação textual usando informações de Calendar e DateTimeFormatInfo. A representação textual pode ser dependente de cultura (culture-sensitive) (por exemplo, "8:46 AM March 20th 1999 AD" para a cultura en-US) ou independente de cultura (culture-insensitive) (por exemplo, "1999-03-20T08:46:00" no formato ISO 8601). Uma implementação de Calendar pode definir uma ou mais eras. A classe Calendar identifica tais eras como uma enumeração de inteiros na qual a era atual (CurrentEra) tem o valor 0. Para compensar a diferença entre o ano do calendário e a tempo real que a terra se movimenta ao redor do sol ou o tempo real que a lua se movimenta ao redor da terra, um ano bissexto tem um número diferente de dias que um ano padrão de um calendário. Cada implementação de Calendar define anos bissextos de forma diferenciada. Para fins de consistência, a primeira unidade de cada intervalo (por exemplo, o primeiro mês) recebe o valor 1. O trecho de código abaixo mostra como obter o calendário padrão não dependente de cultura e então exibir o valor numérico referente ao dia do mês: static void Main(string[] args){ // using System.Globalization; // obtém uma instância da implementação padrão de // Calendar não dependente da cultura local Calendar c = CultureInfo.InvariantCulture.Calendar; // obtém a data e hora atual DateTime agora = DateTime.Now; // obtém o dia do ano int dia = c.GetDayOfMonth(agora); Console.WriteLine("O dia do mês é: {0}", dia); // pausa o programa Console.ReadKey(); } O namespace System.Globalization inclui as seguintes implementações de Calendar: GregorianCalendar, HebrewCalendar, HijriCalendar, JapaneseCalendar, JulianCalendar, KoreanCalendar, TaiwanCalendar e ThaiBuddhistCalendar. |
Delphi ::: Dicas & Truques ::: Arquivos e Diretórios |
Como listar todos os arquivos de um diretório usando DelphiQuantidade de visualizações: 2020 vezes |
Como listar todos os arquivos de um diretório usando Delphi Em algumas situações precisamos listar todos os arquivos contidos em um determinado diretório. Para isso podemos usar a função abaixo. Esta função recebe o caminho e nome de um diretório e uma coleção de strings TStrings. Como resultado de sua execução, a função insere em TStrings todos os nomes dos diretórios encontrados. Para facilitar o entendimento do exemplo eu incluí uma chamada à função a partir do evento Click de um botão. Tenha a certeza de colocar uma TListBox no formulário antes de executar o código: procedure listarArquivosDir(diretorio: string; lista: TStrings); var search_rec: TSearchRec; begin if FindFirst(diretorio + '*.*', faAnyFile, search_rec) = 0 then begin repeat if search_rec.Attr <> faDirectory then lista.Add(search_rec.Name); until FindNext(search_rec) <> 0; FindClose(search_rec); end; end; procedure TForm1.Button1Click(Sender: TObject); begin listarArquivosDir('c:\', ListBox1.Items); end; Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009. |
Firebird ::: Dicas & Truques ::: Tipos de Dados |
Como usar o tipo de dados BLOB do Firebird para a gravação de imagens, vídeos e arquivos de músicaQuantidade de visualizações: 18955 vezes |
Um BLOB é um tipo de dados que permite armazenar grandes informações no formato binário (Binary Large OBject). Campos deste tipo podem conter dados binários ou ASCII, por exemplo, grandes arquivos de texto, documentos para o processamento de dados, arquivos de programas CAD, imagens e gráficos, vídeos, arquivos de música, etc. O tamanho de um BLOB é quase ilimitado, uma vez que eles podem ser armazenados utilizando-se várias páginas. Isso assume, contudo, que um tamanho de página suficiente tenha sido fornecido para a base de dados. Por exemplo, usando uma página de 1kb, o tamanho do BLOB não pode exceder 0,5Gb. Se usarmos um tamanho de página de 4Kb, o tamanho do BLOB está limitado a 8Gb. O Firebird suporta dois tipos pré-definidos de BLOB, diferenciados pelo atributo sub-type (palavra-chave SQL SUB_TYPE): a) BLOB SUB_TYPE 0 - Este é o tipo BLOB genérico para o armazenamento de qualquer tipo de dados, incluindo texto. Geralmente chamado de "BLOB binário sem registro de tipo". b) BLOB SUB_TYPE 1 (BLOB SUB_TYPE TEXT) - Sub-tipo mais especializado para o armazenamento de texto puro. É equivalente aos tipos CLOB e MEMO implementados em alguns bancos de dados (DBMS). É recomendado para uso com interfaces de aplicações tais como componentes RAD ou motores de pesquisa que fornecem um tratamento especial para tais tipos. Veja um comando DDL CREATE TABLE que cria uma tabela contendo um campo do tipo BLOB (usando o sub-tipo text): CREATE TABLE COMPROMISSOS ( ID INTEGER NOT NULL, DESCRICAO BLOB SUB_TYPE 1 SEGMENT SIZE 4096 NOT NULL, DATA_HORA TIMESTAMP NOT NULL ); Aqui nós temos uma tabela com três campos: ID é do tipo INTEGER, DESCRICAO é do tipo BLOB com o sub-tipo 1 e DATA_HORA é do tipo TIMESTAMP. Veja agora um comando DML INSERT INTO que insere um registro nesta tabela: INSERT INTO COMPROMISSOS VALUES(10, 'REUNIÃO COM CLIENTE - SÃO PAULO', '2010-12-02 12:30:00'); Note que os valores para campos do tipo BLOB devem ser fornecidos entre aspas simples. Agora, veja um comando SQL DML SELECT que lista o registro inserido anteriormente: SELECT * FROM COMPROMISSOS; Este comando vai gerar o seguinte resultado: ID DESCRICAO DATA_HORA 10 REUNIÃO COM CLIENTE - SÃO PAULO 2/12/2010 12:30:00 |
Python ::: Desafios e Lista de Exercícios Resolvidos ::: Python Básico |
Exercício Resolvido de Python - Ler um número inteiro na faixa 0-999 e mostrar a soma de seus dígitos - Apostila de Python BásicoQuantidade de visualizações: 3294 vezes |
Pergunta/Tarefa: Escreva um programa Python que leia um inteiro na faixa 0-999 e mostre a soma de seus dígitos. Por exemplo, se o valor for 523, a soma de seus dígitos será 5 + 2 + 3 = 10. Lembre-se que você deverá usar apenas os operadores matemáticos e o operador de módulo (%). Seu programa deverá exibir a seguinte saída: Informe um valor de 0 até 999: 821 A soma dos dígitos é: 11 Veja a resolução comentada deste exercício usando Python console: # função principal do programa def main(): # vamos solicitar ao usuário que informe um valor inteiro # na faixa 0 a 999 (incluindo) valor = int(input("Informe um valor de 0 até 999: ")) # vamos verificar se o valor está na faixa permitida if(valor < 0 or valor > 999): print("Valor fora da faixa permitida") else: # vamos obter o terceiro dígito terceiro = valor % 10 # obtém os digitos restantes valor = valor // 10 # vamos obter o segundo dígito segundo = valor % 10 # obtém os digitos restantes valor = valor // 10 # vamos obter o primeiro dígito primeiro = valor % 10 # obtém os digitos restantes valor = valor // 10 # vamos obter a soma dos dígitos soma = terceiro + segundo + primeiro # vamos mostrar o resultado print("A soma dos dígitos é:", soma) if __name__== "__main__": main() |
Java ::: Dicas & Truques ::: Strings e Caracteres |
Como testar se duas strings são iguais em Java sem considerar letras maiúsculas e minúsculas usando o método equalsIgnoreCase()Quantidade de visualizações: 337 vezes |
Nesta dica mostrarei como podemos usar o método equalsIgnoreCase() da classe String da linguagem Java para verificar se duas palavras, frases ou textos são iguais desconsiderando letras maiúsculas e minúsculas. Veja o código completo para o exemplo: package estudos; public class Estudos{ public static void main(String[] args){ String s1 = "GOSTO de Java"; String s2 = "gosto de java"; System.out.println("A primeira string é: " + s1); System.out.println("A segunda string é: " + s2); if(s1.equalsIgnoreCase(s2)){ System.out.println("As duas strings sao iguais"); } else{ System.out.println("As duas strings não sao iguais"); } System.exit(0); } } Ao executar este código Java nós teremos o seguinte resultado: A primeira string é: GOSTO de Java A segunda string é: gosto de java As duas strings são iguais |
PHP ::: Dicas & Truques ::: Arquivos e Diretórios |
Como ler e processar os dados de um arquivo CSV usando a função fgetcsv() do PHPQuantidade de visualizações: 26930 vezes |
Arquivos CSV são arquivos texto cujas linhas possuem valores separados por vírgulas (ou ponto-e-vírgula, dois pontos, etc). As informações contidas em tais arquivos podem ser lidas usando-se a função fgetcsv(). Esta função recebe um ponteiro para um arquivo, o tamanho da maior linha de texto no arquivo (forneça 0 se não quiser ter este limite em seu código) e o caractere de delimitação (no exemplo eu usei ponto-e-vírgula). Observe a estrutura do seguinte arquivo CSV: 23;OSMAR J SILVA;AV. LESTE, 54;GOIANIA;GO 19;MARCOS DE PAULA;RUA L, 523;SÃO PAULO;SP As informações deste arquivo podem ser lidas usando-se o código abaixo: <?php // nome do arquivo $arquivo = 'dados.csv'; // ponteiro para o arquivo $fp = fopen($arquivo, "r"); // processa os dados do arquivo while(($dados = fgetcsv($fp, 0, ";")) !== FALSE){ $quant_campos = count($dados); for($i = 0; $i < $quant_campos; $i++){ echo $dados[$i] . "<br>"; } echo "<br>"; } fclose($fp); ?> Ao executar este código PHP nós teremos o seguinte resultado: 23 OSMAR J SILVA AV. LESTE, 54 GOIANIA GO 19 MARCOS DE PAULA RUA L, 523 SÃO PAULO SP |
C ::: Dicas & Truques ::: Ponteiros, Referências e Memória |
Como alocar memória dinâmica em C usando a função malloc()Quantidade de visualizações: 29253 vezes |
A função malloc() é usada em C para alocarmos um bloco de memória. Esta função recebe a quantidade de bytes a serem alocados e retorna um ponteiro do tipo void (genérico) para o início do bloco de memória obtido. Veja sua assinatura:void *malloc(size_t size); Se a memória não puder se alocada, um ponteiro nulo (NULL) será retornado. É importante se lembrar de alguns conceitos antes de usar esta função. Suponhamos que você queira alocar memória para um inteiro. Você poderia ter algo assim: // aloca memória para um int ponteiro = malloc(4); Embora este código esteja correto, não é um boa idéia assumir que um inteiro terá sempre 4 bytes. Desta forma, é melhor usar o operador sizeof() para obter a quantidade de bytes em um inteiro em uma determinada arquitetura. Veja: // aloca memória para um int ponteiro = malloc(sizeof(int)); Eis o código completo para um aplicativo C que mostra como alocar memória para um inteiro e depois atribuir e obter o valor armazenado no bloco de memória alocado: #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { // ponteiro para uma variável do tipo inteiro int *ponteiro; // aloca memória para um int ponteiro = malloc(sizeof(int)); // testa se a memória foi alocada com sucesso if(ponteiro) printf("Memoria alocada com sucesso.\n"); else printf("Nao foi possivel alocar a memoria.\n"); // atribui valor à memória alocada *ponteiro = 45; // obtém o valor atribuído printf("Valor: %d\n\n", *ponteiro); // libera a memória free(ponteiro); system("PAUSE"); return 0; } Uma aplicação interessante da função malloc() é quando precisamos construir uma matriz dinâmica. Veja como isso é feito no código abaixo: #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int i; // quantidade de elementos na matriz int quant = 10; // ponteiro para o bloco de memória int *ponteiro; // aloca memória para uma matriz de inteiros ponteiro = malloc(quant * sizeof(int)); // testa se a memória foi alocada com sucesso if(ponteiro) printf("Memoria alocada com sucesso.\n"); else{ printf("Nao foi possivel alocar a memoria.\n"); exit(1); } // atribui valores aos elementos do array for(i = 0; i < quant; i++){ ponteiro[i] = i * 2; } // exibe os valores for(i = 0; i < quant; i++){ printf("%d ", ponteiro[i]); } // libera a memória free(ponteiro); printf("\n\n"); system("PAUSE"); return 0; } |
R ::: Dicas & Truques ::: Trigonometria - Funções Trigonométricas |
Como calcular o seno de um número ou ângulo usando a função sin() da linguagem RQuantidade de visualizações: 1773 vezes |
Em geral, quando falamos de seno, estamos falando do triângulo retângulo de Pitágoras (Teorema de Pitágoras). A verdade é que podemos usar a função seno disponível nas linguagens de programação para calcular o seno de qualquer número, mesmo nossas aplicações não tendo nenhuma relação com trigonometria. No entanto, é sempre importante entender o que é a função seno. Veja a seguinte imagem: ![]() Veja que temos um triângulo retângulo com as medidas já calculadas para a hipotenusa e os dois catetos, assim como os ângulos entre eles. Assim, o seno é a razão entre o cateto oposto (oposto ao ângulo theta) e a hipotenusa, ou seja, o cateto oposto dividido pela hipotenusa. Veja a fórmula: \[\text{Seno} = \frac{\text{Cateto oposto}}{\text{Hipotenusa}} \] Então, se dividirmos 20 por 36.056 (na figura eu arredondei) nós teremos 0.5547, que é a razão entre o cateto oposto e a hipotenusa (em radianos). Agora, experimente calcular o arco-cosseno de 0.5547. O resultado será 0.9828 (em radianos). Convertendo 0.9828 radianos para graus, nós obtemos 56.31º, que é exatamente o ângulo em graus entre o cateto oposto e a hipotenusa na figura acima. Pronto! Agora que já sabemos o que é seno na trigonometria, vamos entender mais sobre a função sin() da linguagem R. Esta função recebe um valor numérico e retorna um valor, também numérico) entre -1 até 1 (ambos inclusos). Veja: > sin(0) [ENTER] [1] 0 > sin(1) [ENTER] [1] 0.841471 > sin(2) [ENTER] [1] 0.9092974 > Note que calculamos os senos dos valores 0, 1 e 2. Observe como os resultados conferem com a curva da função seno mostrada abaixo: ![]() |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Laços de Repetição |
Exercícios Resolvidos de Java - Um laço for que solicita ao usuário 10 números inteiros e mostra o menor e o maior valor informadoQuantidade de visualizações: 1421 vezes |
Pergunta/Tarefa: Escreva um programa Java console que usa o laço for para solicitar ao usuário que informe 10 números inteiros. Em seguida mostre o maior e o menor valor lido. Não é permitido usar matrizes: Dica: Use um objeto da classe Scanner para obter a entrada do usuário. Resposta/Solução: Como a solução deste exercício depende de valores informados pelo usuário, a classe Scanner deverá ser usada. Desta forma, você deverá importá-la, usando a linha: import java.util.Scanner; public static void main(String[] args){ // para este exercício você deverá importar a classe // Scanner. Ela está no pacote java.util.*; // vamos construir um objeto da classe Scanner para ler a // entrada do usuário Scanner entrada = new Scanner(System.in); int valor; // guarda o valor lido int maior = 0, menor = 0; // variáveis que guardarão o maior e o menor valor lido // vamos pedir ao usuário que informe 10 valores inteiros for(int i = 0; i < 10; i++){ System.out.print("Informe o " + (i + 1) + "º valor: "); valor = Integer.parseInt(entrada.nextLine()); // esta é a primeira iteração do laço? se for vamos assumir que o // maior e menor valor lido são o primeiro valor informado if(i == 0){ maior = valor; menor = valor; // poderia ser escrito assim: //maior = menor = valor; } else{ // não é a primeira iteração // vamos verificar se é maior que o valor atual da variável maior if(valor > maior){ maior = valor; } // vamos verificar se é menor que o valor atual da variável menor if(valor < menor){ menor = valor; } } } // vamos exibir o maior e o menor valor lido System.out.println("\nO maior valor lido foi: " + maior); System.out.println("O menor valor lido foi: " + menor); } |
C# ::: Dicas & Truques ::: Programação Orientada a Objetos |
C# para iniciantes - Programação orientada a objetos em C#: Classes, objetos, métodos e variáveis de instânciaQuantidade de visualizações: 30825 vezes |
A melhor forma de entender a programação orientada a objetos é começar com uma analogia simples. Suponha que você queira dirigir um carro e fazê-lo ir mais rápido pressionado o acelerador. O que deve acontecer antes que você seja capaz de fazer isso? Bem, antes que você possa dirigir um carro, alguém tem que projetá-lo. Um carro geralmente começa com desenhos feitos pelos engenheiros responsáveis por tal tarefa, tal qual a planta de uma casa. Tais desenhos incluem o projeto de um acelerador que possibilita ao carro ir mais rápido. O pedal do acelerador "oculta" os mecanismos complexos responsáveis por fazer o carro ir mais rápido, da mesma forma que o pedal de freio "oculta" os mecanismos que fazem o carro ir mais devagar e o volante "oculta" os mecanismos que fazem com que o carro possa virar para a direita ou esquerda. Isso permite que pessoas com pequeno ou nenhum conhecimento de motores possam facilmente dirigir um carro. Infelizmente, não é possível dirigir o projeto de um carro. Antes que possamos dirigí-lo, o carro deve ser construído a partir do projeto que o descreve. Um carro já finalizado tem um pedal de aceleração de verdade, que faz com que o carro vá mais rápido. Ainda assim, é preciso que o motorista pressione o pedal. O carro não acelerará por conta própria. Agora vamos usar nosso exemplo do carro para introduzir alguns conceitos de programação importantes à programação orientada a objetos. A execução de uma determinada tarefa em um programa exige um método. O método descreve os mecanismos que, na verdade, executam a tarefa. O método oculta tais mecanismos do usuário, da mesma forma que o pedal de aceleração de um carro oculta do motorista os mecanismos complexos que fazem com que um carro vá mais rápido. Em C#, começamos criando uma unidade de programa chamada classe para abrigar um método, da mesma forma que o projeto de um carro abriga o design do pedal de acelerador. Em uma classe fornecemos um ou mais métodos que são projetados para executar as tarefas da classe. Por exemplo, a classe que representa uma conta bancária poderia conter muitos métodos, incluindo um método para depositar dinheiro na conta, outro para retirar dinheiro, um terceiro para verificar o saldo, e assim por diante. Da mesma forma que não podemos dirigir o projeto de um carro, nós não podemos "dirigir" uma classe. Da mesma forma que alguém teve que construir um carro a partir de seu projeto antes que pudessémos dirigí-lo, devemos construir um objeto de uma classe antes de conseguirmos executar as tarefas descritas nela. Quando dirigimos um carro, o pressionamento do acelerador envia uma mensagem ao carro informando-o da tarefa a ser executada (neste caso informando-o de que queremos ir mais rápido). Da mesma forma, enviamos mensagens aos objetos de uma classe. Cada mensagem é uma chamada de método e informa ao objeto qual ou quais tarefas devem ser executadas. Até aqui nós usamos a analogia do carro para introduzir classes, objetos e métodos. Já é hora de saber que um carro possui atributos (propriedades) tais como cor, o número de portas, a quantidade de gasolina em seu tanque, a velocidade atual, etc. Tais atributos são representados como parte do projeto do carro. Quando o estamos dirigindo, estes atributos estão sempre associados ao carro que estamos usando, e cada carro construído a partir do projeto sofrerá variações nos valores destes atributos em um determinado momento. Da mesma forma, um objeto tem atributos associados a ele quando o usamos em um programa. Estes atributos são definidos na classe a partir da qual o objeto é instanciado (criado) e são chamados de variáveis de instância da classe. Veremos agora como definir uma classe em C# e usar um objeto desta classe em um programa. Se estiver usando o Visual C# 2005 ou 2008, a forma mais comum de adicionar uma classe ao seu projeto é clicando com o botão direito no namespace do projeto (o primeiro filho do solution explorer) e escolhendo a opção Add -> Class. Em seguida dê o nome "Cliente.cs" para a classe e clique o botão Add. Imediatamente o código inicial para a classe será exibido, contendo o namespace e alguns using padrões. Agora faça sua classe Cliente parecida com o código abaixo (não altere nada em relação ao namespace): class Cliente{ private String nome; // Um método que permite definir um valor // para a variável privada nome public void setNome(String nome){ this.nome = nome; } // Um método que permite obter o valor // da variável privada nome public String getNome(){ return this.nome; } } Agora vamos aprender a usar esta classe a partir da classe principal do programa (aquela que contém o método Main). Veja: static void Main(string[] args){ // Cria uma instância da classe Cliente Cliente c = new Cliente(); // Define um nome para o cliente c.setNome("Osmar J. Silva"); // Obtém o nome do cliente string nome = c.getNome(); Console.WriteLine(nome); Console.WriteLine("\n\nPressione uma tecla para sair..."); Console.ReadKey(); } |
Você também poderá gostar das dicas e truques de programação abaixo |
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 |