![]() |
|||||
![]() Planilha Web - Planilhas e Calculadoras online para estudantes e profissionais de Engenharia Civil, Engenharia Elétrica e Engenharia Mecânica. |
|||||
|
C++ ::: Win32 API (Windows API) ::: Arquivos e Diretórios |
Como obter o diretório atual usando a função GetCurrentDirectory() da API do Windows - C++ e WinAPIQuantidade de visualizações: 9756 vezes |
Nesta dica mostrarei como chamar, a partir de um programa C++, a função GetCurrentDirectory() da API do Windows com o propósito de obter o diretório atual, ou seja, o diretório de trabalho da nossa aplicação. Esta função é declarada no header winbase.h (que vem junto quando fazemos include do header windows.h). Veja o exemplo completo: #include <cstdlib> #include <iostream> #include <windows.h> using namespace std; int main(int argc, char *argv[]) { // buffer que receberá o nome do diretório TCHAR szDirAtual[MAX_PATH]; // chama a função GetCurrentDirectory GetCurrentDirectory(MAX_PATH, szDirAtual); // Exibe o resultado cout << "O diretório atual é " << szDirAtual << "\n\n"; system("PAUSE"); return EXIT_SUCCESS; } Ao executar este código nós teremos o seguinte resultado: O diretório atual é C:\estudos_c++ |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Laços de Repetição |
Exercícios Resolvidos de Java - Escreva um programa Java que usa o laço for para desenhar um padrão de diamante de estrelasQuantidade de visualizações: 1429 vezes |
Exercício Resolvido de Java - Escreva um programa Java que usa o laço for para desenhar um padrão de diamante de estrelas Pergunta/Tarefa: Neste exercício para a prática da linguagem Java você deverá usar o laço for para desenhar o famoso padrão de diamante de estrelas. Você pode também usar o laço while, se assim você o desejar. O programa deverá pedir que o usuário informe a quantidade de linhas que marcará a metade do diamante. Seu programa deve apresentar a seguinte saída: Informe a quantidade de linhas: 5 * *** ***** ******* ********* ******* ***** *** * Veja a resolução comentada deste exercício em Java: package exercicio; import java.util.Scanner; public class Exercicio { public static void main(String[] args) { // vamos usar um objeto Scanner para ler a entrada do usuário Scanner leitura = new Scanner(System.in); // vamos pedir a quantidade de linhas System.out.print("Informe a quantidade de linhas: "); // vamos ler a entrada do usuário int linhas = Integer.parseInt(leitura.nextLine()); int estrelas = 1; // começamos com uma estrela (no topo do diamante) int espacos = linhas - 1; // se linhas for igual a 5 nós começamos // com 4 espaços // repete duas vezes a quantidade de linhas informadas for(int i = 1; i < linhas * 2; i++){ // vamos imprimir os espaços for(int j = 1; j <= espacos; j++){ System.out.print(" "); } // agora vamos imprimir estrelas for(int j = 1; j < estrelas * 2; j++){ System.out.print("*"); } // passamos para a próxima linha System.out.println(); if(i < linhas){ // é a parte superior do diamante espacos--; // diminui os espaços estrelas++; // e aumenta as estrelas } else{ // é a parte inferior do diamente espacos++; // aumenta os espaços estrelas--; // e diminui as estrelas } } } } |
Java ::: Coleções (Collections) ::: HashMap |
Como testar se uma determinada chave está contida no HashMap do Java usando o método containsKey()Quantidade de visualizações: 8590 vezes |
Em algumas situações precisamos verificar se uma determinada chave está contida no HashMap. Para isso podemos usar o método containsKey(), definido originalmente na interface Map. Veja sua assinatura:public boolean containsKey(Object key) Note que este método recebe um objeto contendo o valor da chave a ser pesquisada e retorna um valor true se o HashMap contiver a chave e false caso contrário. Veja o exemplo: package estudos; import java.util.*; public class Estudos{ public static void main(String[] args){ // vamos criar uma instância de HashMap HashMap<Integer, String> clientes = new HashMap<>(); // vamos adicionar três chaves e seus valores clientes.put(1, "Osmar J. Silva"); clientes.put(2, "Salvador Miranda de Andrade"); clientes.put(3, "Marcos da Costa Santos"); // vamos verificar se a chave 2 está contida no HashMap if(clientes.containsKey(2)){ System.out.println("A chave está contida no mapa"); } else{ System.out.println("A chave NÃO está contida no mapa"); } System.exit(0); } } Ao executar este código Java nós teremos o seguinte resultado: A chave está contida no mapa |
Delphi ::: Dicas & Truques ::: Imagens e Processamento de Imagens |
Como carregar uma imagem JPG, convertê-la em Bitmap e desenhá-la no formulário usando DelphiQuantidade de visualizações: 18663 vezes |
Em algumas situações nós precisamos carregar uma imagem JPG, convertê-la em Bitmap e desenhá-la em nosso formulário. Nesta dica eu mostro como isso pode ser feito. Vamos começar lendo a imagem JPG a partir do diretório da aplicação:procedure TForm3.Button1Click(Sender: TObject); var bmp: TBitmap; jpg: TJPEGImage; begin // uses Jpeg; // não esqueça // vamos criar o bitmap bmp := TBitmap.Create; // vamos criar o JPG jpg := TJPEGImage.Create; try // vamos carregar a imagem JPG jpg.LoadFromFile('foto.jpg'); // vamos convertê-la para Bitmap bmp.Assign(jpg); // vamos desenhar o bitmap no formulário // começando nas coordenadas x = 0; y = 0 a partir // do canto superior esquerdo da área cliente do formulário Form3.Canvas.Draw(0, 0, bmp); finally Jpg.Free; Bmp.Free; end; end; Veja que a técnica consiste em carregar a imagem JPG e convertê-la em Bitmap usando o método Assign() da classe TBitmap. Em seguida só precisamos usar o método Draw() do Canvas do formulário para desenhar a imagem já convertida. Caso você precise carregar a imagem JPG em tempo de execução, basta colocar um TOpenPictureDialog no formulário e alterar o código do evento Click do botão para: procedure TForm3.Button1Click(Sender: TObject); var bmp: TBitmap; jpg: TJPEGImage; begin // uses Jpeg; // não esqueça if OpenPictureDialog1.Execute then begin // vamos criar o bitmap bmp := TBitmap.Create; // vamos criar o JPG jpg := TJPEGImage.Create; try // vamos carregar a imagem JPG jpg.LoadFromFile(OpenPictureDialog1.FileName); // vamos convertê-la para Bitmap bmp.Assign(jpg); // vamos desenhar o bitmap no formulário // começando nas coordenadas x = 0; y = 0 a partir // do canto superior esquerdo da área cliente do formulário Form3.Canvas.Draw(0, 0, bmp); finally Jpg.Free; Bmp.Free; end; end; end; Vamos complicar um pouco mais? Que tal uma função que carrega a imagem JPG, faz a conversão para Bitmap e retorna o Bitmap para o chamador? Veja: function jpg2bitmap(const imagem: String): TBitmap; var bmp: TBitmap; jpg: TJPEGImage; begin // uses Jpeg; // não esqueça // vamos criar o bitmap bmp := TBitmap.Create; // vamos criar o JPG jpg := TJPEGImage.Create; try // vamos carregar a imagem JPG jpg.LoadFromFile(imagem); // vamos convertê-la para Bitmap bmp.Assign(jpg); except bmp := nil; end; // vamos retornar o bitmap resultante Jpg.Free; Result := bmp; end; procedure TForm3.Button1Click(Sender: TObject); var bmp: TBitmap; begin // vamos obter o Bitmap a partir da função personalizada bmp := jpg2bitmap('foto2.jpg'); // a imagem Bitmap foi obtida com sucesso? if bmp <> nil then begin // vamos desenhar o bitmap no formulário // começando nas coordenadas x = 0; y = 0 a partir // do canto superior esquerdo da área cliente do formulário Form3.Canvas.Draw(0, 0, bmp); bmp.Free; end else ShowMessage('Não foi possível obter o Bitmap'); end; Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009. |
GNU Octave ::: Dicas & Truques ::: Trigonometria - Funções Trigonométricas |
Como calcular o cosseno de um ângulo em GNU Octave usando a função cos() - Calculadora de cosseno em OctaveQuantidade de visualizações: 2916 vezes |
Em geral, quando falamos de cosseno, estamos falando do triângulo retângulo de Pitágoras (Teorema de Pitágoras). A verdade é que podemos usar a função cosseno disponível nas linguagens de programação para calcular o cosseno 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 cosseno. 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 cosseno é a razão entre o cateto adjascente e a hipotenusa, ou seja, o cateto adjascente dividido pela hipotenusa. Veja a fórmula: \[\text{Cosseno} = \frac{\text{Cateto adjascente}}{\text{Hipotenusa}} \] Então, se dividirmos 30 por 36.056 (na figura eu arredondei) nós teremos 0.8320, que é a razão entre o cateto adjascente e a hipotenusa (em radianos). Agora, experimente calcular o arco-cosseno de 0.8320. O resultado será 0.5881 (em radianos). Convertendo 0.5881 radianos para graus, nós obtemos 33.69º, que é exatamente o ângulo em graus entre o cateto adjascente e a hipotenusa na figura acima. Pronto! Agora que já sabemos o que é cosseno na trigonometria, vamos entender mais sobre a função cos() da linguagem GNU Octave (script do GNU Octave). Esta função, já embutida na linguagem, recebe um valor numérico double e retorna um valor double, ou seja, também numérico) entre -1 até 1 (ambos inclusos). Veja: # vamos calcular o cosseno de três números fprintf("Cosseno de 0 = %f\n", cos(0)) fprintf("Cosseno de 1 = %f\n", cos(1)) fprintf("Cosseno de 2 = %f\n", cos(2)) Ao executar este código GNU Octave nós teremos o seguinte resultado: Cosseno de 0 = 1.000000 Cosseno de 1 = 0.540302 Cosseno de 2 = -0.416147 Note que calculamos os cossenos dos valores 0, 1 e 2. Observe como os resultados conferem com a curva da função cosseno mostrada abaixo: ![]() |
Python ::: Desafios e Lista de Exercícios Resolvidos ::: Python Básico |
Exercícios Resolvidos de Python - Lendo a idade de um nadador e classificando sua categoria como infantil, juvenil, adolescente, adulto ou sêniorQuantidade de visualizações: 570 vezes |
Pergunta/Tarefa: Escreva um programa Python que solicita a idade de um nadador e classifica sua categoria de acordo com as seguintes regras: a) De 5 a 7 anos - Infantil; b) De 8 a 10 anos - Juvenil; c) De 11 a 15 anos - Adolescente; d) De 16 a 30 anos - Adulto; e) Acima de 30 anos - Sênior. Sua saída deverá ser parecida com: Informe sua idade: 19 Sua categoria é Adulto Veja a resolução comentada deste exercício usando Python: # vamos solicitar a idade do nadador idade = int(input("Informe sua idade: ")) # vamos verificar a categoria do nadador if ((idade >= 5) and (idade <= 7)): print("Sua categoria é Infantil") elif ((idade >= 8) and (idade <= 10)): print("Sua categoria é Juvenil") elif ((idade >= 11) and (idade <= 15)): print("Sua categoria é Adolescente") elif ((idade >= 16) and (idade <= 30)): print("Sua categoria é Adulto") elif (idade > 30): print("Sua categoria é Sênior") else: print("Não pertence a nenhuma categoria.") |
C# ::: Dicas & Truques ::: Gráficos |
Como desenhar texto em C# usando o método DrawString() da classe GraphicsQuantidade de visualizações: 8805 vezes |
Em algumas situações precisamos desenhar uma string (texto) no formulário ou algum outro controle. Para isso podemos usar o método DrawString() da classe Graphics. A assinatura mais comumente usada deste método é:Graphics.DrawString(String, Font, Brush, Single, Single) Note que precisamos fornecer a string a ser desenhada, a fonte a ser usada (como um objeto da classe Font), a cor e preenchimento (um objeto de alguma classe que herde de Brush) e as coordenadas x e y. Veja um trecho de código no qual desenhamos a string "Arquivo de Códigos" no formulário: private void button1_Click(object sender, EventArgs e){ // vamos obter o Graphics do formulário Graphics g = this.CreateGraphics(); // vamos desenhar a string "Arquivo de Códigos" g.DrawString("Arquivo de Códigos", this.Font, new SolidBrush(Color.Red), 40, 60); // vamos liberar o objeto Graphics g.Dispose(); } Aqui a string será desenhada usando a fonte do formulário e na cor vermelha e sólida. Se quiséssemos definir a fonte, o código ficaria algo assim: g.DrawString("Arquivo de Códigos", new Font("Verdana", 30), new SolidBrush(Color.Red), 40, 60); As coordenadas x e y nas quais o desenho ocorrerá podem ser informadas como um objeto da estrutura PointF. Veja: g.DrawString("Arquivo de Códigos", new Font("Verdana", 30), new SolidBrush(Color.Red), new PointF(80f, 120f)); |
C# ::: Coleções (Collections) ::: List<T> |
Como inserir um novo elemento em uma posição N de uma List<T> do C# usando a função Insert()Quantidade de visualizações: 9149 vezes |
Em algumas situações gostaríamos de inserir um novo elemento em uma determinada posição de uma List<T>, ou seja, queremos ser capazes de inserir o novo elemento em qualquer posição, e não somente no final da lista. Para isso podemos usar o método Insert(). Veja sua assinatura:public void Insert( int index, T item ) static void Main(string[] args){ // vamos criar um objeto da classe List<T> List<int> valores = new List<int>(); // vamos inserir quatro valores na lista valores.Add(5); valores.Add(2); valores.Add(6); valores.Add(9); // vamos usar o laço foreach para percorrer os elementos na lista Console.WriteLine("Elementos na lista:"); foreach(int v in valores){ Console.WriteLine(v); } // vamos inserir um novo elemento no índice 2 valores.Insert(2, 20); // vamos usar o laço foreach para percorrer os elementos na lista novamente Console.WriteLine("Elementos na lista:"); foreach(int v in valores){ Console.WriteLine(v); } // vamos pausar a execução Console.ReadKey(); } Ao executarmos este código teremos o seguinte resultado: Elementos na lista: 5 2 6 9 Elementos na lista: 5 2 20 6 9 Este método pode lançar uma exceção do tipo ArgumentOutOfRangeException se o índice fornecido for menor que 0 ou superior à quantidade de itens na lista. |
Java ::: Dicas & Truques ::: Programação Orientada a Objetos |
Programação Orientada a Objetos em Java - Java OOP - Como chamar o construtor de uma superclasse a partir da classe derivadaQuantidade de visualizações: 19304 vezes |
Em algumas situações, é necessário efetuar uma chamada ao construtor de uma superclasse a partir da sub-classe, ou classe derivada. Principalmente quando temos que inicializar dados privados pertencentes à superclasse. Imaginemos o seguinte cenário: uma classe Pessoa cujo construtor recebe o nome e idade da pessoa. Temos então uma classe Aluno que herda de pessoa e cujo construtor recebe nome, idade e matrícula. Desta forma, temos aqui uma boa oportunidade para efetuarmos uma chamada ao construtor da superclasse a partir da classe derivada. Comece criando a classe Pessoa (Pessoa.java): public class Pessoa{ public String nome; public int idade; // construtor da classe public Pessoa(String nome, int idade){ this.nome = nome; this.idade = idade; } } Compile Pessoa.java. Agora vamos criar um classe Aluno (Aluno.java) que herda da classe Pessoa: public class Aluno extends Pessoa{ public String matricula; // construtor public Aluno(String nome, int idade, String matricula){ // chama o construtor da superclasse super(nome, idade); this.matricula = matricula; } } Compile Aluno.java e escreva o programa abaixo, que demonstra como a chamada ao construtor da superclasse é feita a partir da subclasse, ou classe derivada: public class Estudos{ public static void main(String args[]){ // cria um objeto da classe Aluno Aluno aluno = new Aluno("Osmar J. Silva", 36, "AC434-23"); // Exibe o resultado System.out.println("Nome: " + aluno.nome + "\n" + "Idade: " + aluno.idade + "\n" + "Matrícula: " + aluno.matricula); } } Execute este código e observe alguns detalhes interessantes. O mais importante é a forma de chamar o construtor da superclasse: // chama o construtor da superclasse super(nome, idade); Veja como recebemos três variáveis no construtor da classe Aluno e passamos duas delas para o construtor da superclasse. |
JavaScript ::: Dicas & Truques ::: Recursão (Recursividade) |
JavaScript Avançado - Como remover todas as ocorrências de uma substring em uma string usando uma função recursivaQuantidade de visualizações: 368 vezes |
Esta dica contém um ótimo exercício de recursão. Trata-se de uma função JavaScript recursiva para remover todas as ocorrências de uma substring em uma string. Analise o código cuidadosamente e você conseguirá desenvolver várias funções de recursividade a partir dele. Veja o código JavaScript completo: <html> <head> <title>Estudando JavaScript</title> </head> <body> <script type="text/javascript"> // função recursiva que remove todas as ocorrências // de uma substring em uma string function remover(string, substring){ // primeiro obtemos o índice da substring // dentro da string var indice = string.indexOf(substring); var resultado = ""; // interromper a recursividade? if(indice == -1){ return string; } else{ resultado += string.substring(0, indice) + remover(string.substring(indice + substring.length), substring); } return resultado; } // hora de testar a função recursiva var frase = "Ontem comprei duas camisas e uma calça"; document.writeln("Original: " + frase); frase = remover(frase, "duas"); document.writeln("<br>Nova frase: " + frase); </script> </body> </html> Ao executar este código nós teremos o seguinte resultado: Original: Ontem comprei duas camisas e uma calça Nova frase: Ontem comprei camisas e uma calça |
Nossas 20 dicas & truques de programação mais populares |
Delphi - Como obter a quantidade de registros em um TClientDataSet do Delphi usando a propriedade RecordCount |
Você também poderá gostar das dicas e truques de programação abaixo |
C - Como inverter (reverter) o conteúdo de uma string em C usando uma função str_reverse() personalizada JavaScript - Como converter uma string para letras minúsculas em JavaScript usando a função toLowerCase() do objeto String |
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 |