![]() |
|||||
![]() Planilha Web - Planilhas e Calculadoras online para estudantes e profissionais de Engenharia Civil, Engenharia Elétrica e Engenharia Mecânica. |
|||||
|
C++ ::: Dicas & Truques ::: Programação Orientada a Objetos |
Programação Orientada a Objetos em C++ - Como usar construtores em suas classes C++Quantidade de visualizações: 15958 vezes |
Quando um objeto de uma classe C++ é criado, a linguagem chama um construtor para tal classe. Se nenhum construtor estiver definido, um construtor padrão é invocado. Este construtor aloca memória para o objeto, mas não o inicializa. Um construtor é um método que definimos em nossas classes C++ e que possui o mesmo nome da classe. Um construtor não possui tipo de retorno e não retorna nenhum valor. Em geral construtores são públicos, mas, é possível termos construtores privados. Neste caso, somente um método estático da classe poderia criar novos objetos da classe (quando puder dê uma olhada no padrão de projeto Singleton). O uso mais frequente dos métodos construtores é quando queremos inicializar valores das variáveis e demais recursos no momento da criação de uma nova instância da classe. Esta é uma técnica útil, visto que não precisamos dispor de esforço extra para inicializar as variáveis de instância de um objeto, individualmente, após sua criação. Vamos ver um exemplo da definição e uso de construtores em uma classe C++? Comece analisando o código para o arquivo de definição da classe Pessoa: Código para Pessoa.h: // vamos evitar múltiplas inclusões do // arquivo de cabeçalho (header file) #ifndef PESSOA_H #define PESSOA_H // vamos incluir o header string #include <string> using namespace std; class Pessoa{ public: // construtor da classe Pessoa Pessoa(string, string, int); // método que permite retornar o nome da pessoa string getNome(); // método que permite retornar o e-mail da pessoa string getEmail(); // método que permite retornar a idade da pessoa int getIdade(); private: // variáveis privadas string nome; string email; int idade; }; #endif Veja a assinatura do método construtor: Pessoa(string, string, int); Note que na lista de parâmetros do construtor não precisamos informar os nomes dos parâmetros, apenas seus tipos. Veja agora o arquivo de implementação para esta classe: Código para Pessoa.cpp: // arquivo de implementação para a // classe Pessoa // vamos incluir o header Pessoa.h #include "Pessoa.h" // implementação do construtor Pessoa::Pessoa(string nome, string email, int idade){ this->nome = nome; this->email = email; this->idade = idade; } // método que permite obter o nome da pessoa string Pessoa::getNome(){ return this->nome; } // método que permite obter o email da pessoa string Pessoa::getEmail(){ return this->email; } // método que permite obter a idade da pessoa int Pessoa::getIdade(){ return this->idade; } Note que na implementação do método construtor nós recebemos os argumentos para os parâmetros e os usamos para inicializar as variáveis privadas da instância da classe. Observe o uso do ponteiro this para nos referirmos à instância atual da classe Pessoa. Finalmente, veja o código para o método main() do programa. É aqui que criamos um novo objeto da classe Pessoa e usamos seu método construtor para inicializar suas variáveis privadas de uma só vez: Código para main.cpp: #include <cstdlib> #include <iostream> // vamos incluir a classe Pessoa #include "Pessoa.h" using namespace std; int main(int argc, char *argv[]) { // vamos criar um novo objeto da classe Pessoa Pessoa *p = new Pessoa("Osmar J. Silva", "osmar@arquivodecodigos.net", 38); // vamos exibir os dados da pessoa cout << "Nome: " << p->getNome() << endl; cout << "E-Mail: " << p->getEmail() << endl; cout << "Idade: " << p->getIdade() << endl; system("PAUSE"); return EXIT_SUCCESS; } Além do construtor, uma classe C++ possui também um método destrutor. Veja minhas dicas relacionadas a este assunto para aprender como definir e usar destrutores em suas classes C++. |
Java ::: Java para Engenharia ::: Geometria Analítica e Álgebra Linear |
Como calcular a norma ou módulo de vetores nos espaços R2 e R3 usando Java - Geometria Analítica e Álgebra Linear usando JavaQuantidade de visualizações: 2556 vezes |
Em Geometria Analítica e Álgebra Linear, a magnitude, norma, comprimento, tamanho ou módulo (também chamado de intensidade na Física) de um vetor é o seu comprimento, que pode ser calculado por meio da distância de seu ponto final a partir da origem, no nosso caso (0,0). Considere o seguinte vetor no plano, ou seja, no espaço bidimensional, ou R2: \[\vec{v} = \left(7, 6\right)\] Aqui este vetor se inicia na origem (0, 0) e vai até as coordenadas (x = 7) e (y = 6). Veja sua plotagem no plano 2D: ![]() Note que na imagem já temos todas as informações que precisamos, ou seja, o tamanho desse vetor é 9 (arredondado) e ele faz um ângulo de 41º (graus) com o eixo x positivo. Em linguagem mais adequada da trigonometria, podemos dizer que a medida do cateto oposto é 6, a medida do cateto adjacente é 7 e a medida da hipotenusa (que já calculei para você) é 9. Note que já mostrei também o ângulo theta (__$\theta__$) entre a hipotenusa e o cateto adjacente, o que nos dá a inclinação da reta representada pelos pontos (0, 0) e (7, 6). Relembrando nossas aulas de trigonometria nos tempos do colegial, temos que o quadrado da hipotenusa é a soma dos quadrados dos catetos, ou seja, o Teorema de Pitágoras: \[a^2 = b^2 + c^2\] Como sabemos que a potenciação é o inverso da radiciação, podemos escrever essa fórmula da seguinte maneira: \[a = \sqrt{b^2 + c^2}\] Passando para os valores x e y que já temos: \[a = \sqrt{7^2 + 6^2}\] Podemos comprovar que o resultado é 9,21 (que arredondei para 9). Não se esqueça da notação de módulo ao apresentar o resultado final: \[\left|\vec{v}\right| = \sqrt{7^2 + 6^2}\] E aqui está o código Java que nos permite informar os valores x e y do vetor e obter o seu comprimento, tamanho ou módulo: package arquivodecodigos; import java.util.Scanner; public class Estudos{ public static void main(String args[]){ Scanner entrada = new Scanner(System.in); // vamos ler os valores x e y System.out.print("Informe o valor de x: "); double x = Double.parseDouble(entrada.nextLine()); System.out.print("Informe o valor de y: "); double y = Double.parseDouble(entrada.nextLine()); // vamos calcular a norma do vetor double norma = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)); // mostra o resultado System.out.println("A norma do vetor é: " + norma); } } Ao executar este código nós teremos o seguinte resultado: Informe o valor de x: 7 Informe o valor de y: 6 A norma do vetor é: 9.219544457292887 Novamente note que arredondei o comprimento do vetor para melhor visualização no gráfico. Para calcular a norma de um vetor no espaço, ou seja, no R3, basta acrescentar o componente z no cálculo. |
Python ::: Desafios e Lista de Exercícios Resolvidos ::: Hidrologia e Hidráulica |
Exercícios Resolvidos de Python - FEMPERJ-2012-TCE-RJ: A vazão de dimensionamento de uma galeria de águas pluviais que drena uma área densamente urbanizada de 10 hectaresQuantidade de visualizações: 538 vezes |
Pergunta/Tarefa: 1) FEMPERJ-2012-TCE-RJ: A vazão de dimensionamento de uma galeria de águas pluviais que drena uma área densamente urbanizada de 10 hectares, considerando-se uma chuva de projeto com intensidade de 60 mm/hora, duração igual ao tempo de concentração da bacia e coeficiente de escoamento superficial igual a 0,90, através do Método Racional, é: A) 150 m3/s B) 0,150 l/s C) 1,5 m3/s D) 150 l/s E) 15 m3/s Sua saída deve ser parecida com: Intensidade da chuva em mm/h: 60 Área da bacia em hectares: 10 Coeficiente de escoamento: 0.9 A vazão de dimensionamento é: 1.5 m3/s O primeiro passo para resolver esta questão é relembrar a fórmula da Vazão pelo Método Racional. Apresentado pela primeira vez em 1851 por Mulvaney e usado por Emil Kuichling em 1889, o Método Racional é um método indireto e estabelece uma relação entre a chuva e o escoamento superficial (deflúvio). Usamos esta fórmula para calcular a vazão de pico de uma determinada bacia, considerando uma seção de estudo. Eis a fórmula: \[Q = \frac{C \cdot I \cdot A}{360} \] Onde: Q = vazão de pico (m3/s); C = coeficiente de escoamento superficial que varia de 0 a 1. Coeficiente de Runoff (adimensional). I = intensidade média da chuva (mm/h); A = área da bacia (ha), onde 1 ha = 10.000m2. A [[menor_igual]] 300 ha. Na questão do concurso nós já temos a intensidade da chuva em milímetros por hora e a área já está em hectares. Tudo que temos a fazer é jogar na fórmula. Então, hora de vermos a resolução comentada deste exercício usando Python: # função principal do programa def main(): # vamos ler a precipitação ou intensidade da chuva em mm/h intensidade = float(input("Intensidade da chuva em mm/h: ")) # vamos ler a área da bacia em hectares area_bacia = float(input("Área da bacia em hectares: ")) # vamos ler o coeficiente de escoamento coeficiente = float(input("Coeficiente de escoamento: ")) # e vamos calcular a vazão de pico em metros cúbicos vazao = ((coeficiente * intensidade * area_bacia) / 360.0) # e mostramos o resultado print("A vazão de dimensionamento é: {0} m3/s".format(vazao)) if __name__== "__main__": main() |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Java Básico |
Exercício Resolvido de Java - Como ler um número inteiro e imprimir seu sucessor e seu antecessor em JavaQuantidade de visualizações: 1377 vezes |
Pergunta/Tarefa: Escreva um programa Java para ler um número inteiro e imprimir seu sucessor e seu antecessor. O usuário poderá informar um valor positivo ou negativo. Sua saída deverá ser parecida com: Informe um número inteiro: 16 O número informado foi: 16 O antecessor é 15 O sucessor é: 17 Veja a resolução comentada deste exercício usando Java: package estudos; import java.util.Scanner; public class Estudos{ public static void main(String[] args) { // para ler a entrada do usuário Scanner entrada = new Scanner(System.in); // vamos pedir para o usuário informar um número inteiro System.out.print("Informe um número inteiro: "); int numero = Integer.parseInt(entrada.nextLine()); // vamos calcular o sucessor do número informado int sucessor = numero + 1; // vamos calcular o antecessor do número informado int antecessor = numero - 1; // e agora mostramos os resultados System.out.println("O número informado foi: " + numero); System.out.println("O antecessor é " + antecessor); System.out.println("O sucessor é: " + sucessor); } } |
Java ::: Java para Engenharia ::: Geometria Analítica e Álgebra Linear |
Como calcular o produto escalar entre dois vetores usando Java - Geometria Analítica e Álgebra Linear usando JavaQuantidade de visualizações: 3520 vezes |
O produto escalar (em inglês: dot product) entre dois vetores é um número real que relaciona o comprimento desses dois vetores e o ângulo formado por eles. É importante notar que alguns autores se referem ao produto escalar como produto interno. Obtém-se o produto escalar entre dois vetores, no R2, ou três vetores, no R3, por meio da fórmula a seguir (assumindo dois vetores __$\vec{u} = (a, b)__$ e __$\vec{v} = (c, d)__$ no R2). \[\vec{u} \cdot \vec{v} = a \cdot c + b \cdot d \] Vamos agora a um exemplo prático. Veja a imagem abaixo, na qual temos dois vetores, com suas coordenadas e magnitudes (módulo, comprimento ou norma): ![]() Note que ambos os vetores possuem como origem as coordenadas (0, 0). O primeiro vetor possui as coordenadas finais (4, 10) e magnitude 11, e o segundo vetor possui as coordenadas finais (11, 6) e magnitude 13. Magnitude é o tamanho do vetor, ou seja, seu comprimento, seu módulo ou norma. Veja agora o código Java completo que lê as coordenadas dos dois vetores e calcula e mostra o produto escalar entre eles: package arquivodecodigos; import java.util.Scanner; public class Estudos{ public static void main(String[] args){ Scanner entrada = new Scanner(System.in); // x e y do primeiro vetor System.out.print("Coordenada x do primeiro vetor: "); float x1 = Float.parseFloat(entrada.nextLine()); System.out.print("Coordenada y do primeiro vetor: "); float y1 = Float.parseFloat(entrada.nextLine()); // x e y do segundo ponto System.out.print("Coordenada x do segundo vetor: "); float x2 = Float.parseFloat(entrada.nextLine()); System.out.print("Coordenada y do segundo vetor: "); float y2 = Float.parseFloat(entrada.nextLine()); // vamos calcular o produto escalar float pEscalar = (x1 * x2) + (y1 * y2); // mostramos o resultado System.out.println("O produto escalar é: " + pEscalar); } } Ao executar este código Java nós teremos o seguinte resultado: Coordenada x do primeiro vetor: 4 Coordenada y do primeiro vetor: 10 Coordenada x do segundo vetor: 11 Coordenada y do segundo vetor: 6 O produto escalar é: 104.0 |
C++ ::: Fundamentos da Linguagem ::: Estruturas de Controle |
C++ para iniciantes - Como criar um laço while infinito na linguagem C++Quantidade de visualizações: 9574 vezes |
É possível criar um laço while infinito em C++ simplesmente fornecendo o valor true para o teste da condição. Veja:#include <string> #include <iostream> using namespace std; int main(int argc, char *argv[]){ // um laço while infinito int valor = 0; while(true){ cout << valor << "\n"; valor++; if(valor > 10) break; } cout << "\n\n"; system("PAUSE"); // pausa o programa return EXIT_SUCCESS; } Veja que aqui nós usamos a instrução break para interromper a execução do laço. Tenha o cuidado de sempre monitorar os laços infinitos. Se não houver nenhum ponto de parada, seu programa executará indefinidamente até que sua máquina seja desligada ou o programa seja forçosamente terminado. |
Java ::: Dicas & Truques ::: Geometria, Trigonometria e Figuras Geométricas |
Como calcular o diâmetro, a circunferência e a área de um círculo dado o raio em Java - Java para GeometriaQuantidade de visualizações: 2435 vezes |
O círculo é uma figura geométrica plana e que possui quatro características: seu raio, seu diâmetro, sua circunferência e sua área. Aqui já podemos aproveitar e relembrar a diferença entre o círculo e a circunferência. O círculo é o conjunto de pontos resultantes da união entre uma circunferência e seus pontos internos, ou seja, o círculo é a área cuja delimitação é uma circunferência. É importante observar que alguns autores tratam o círculo como uma circunferência. Assim, para estes autores, calcular a circunferência de um círculo equivale a calcular o perímetro da circunferência. Veja a figura a seguir para relembrar o que é o raio de um círculo: ![]() Nesta dica mostrarei como podemos usar Java para calcular o diâmetro, a circunferência e a área de um círculo tendo apenas o raio como informação. Antes, porém, vamos às formulas. Sabendo que r é o raio, temos: \[\text{Diâmetro d} = 2 \times r \] \[\text{Circunferência C} = 2 \times \pi \times r \] \[\text{Área A} = \pi \times r^2 \] Agora vamos ver o código Java que solicita ao usuário que informe o raio do círculo e mostra o diâmetro, a circunferência e a área: package arquivodecodigos; import java.util.Scanner; public class Estudos{ public static void main(String[] args){ Scanner entrada = new Scanner(System.in); // vamos ler o raio do círculo System.out.print("Informe o raio do círculo: "); double raio = Double.parseDouble(entrada.nextLine()); // vamos achar o diâmetro do círculo double diametro = 2 * raio; // agora calculamos a circunferência double circunferencia = 2 * Math.PI * raio; // finalmente calculamos a área do círculo double area = Math.PI * Math.pow(raio, 2); // vamos mostrar os resultados System.out.println("O diâmetro do círculo é: " + diametro); System.out.println("A circunferência do círculo é: " + circunferencia); System.out.println("A área do círculo é: " + area); } } Ao executar este código Java nós teremos o seguinte resultado: Informe o raio do círculo: 10 O diâmetro do círculo é: 20.0 A circunferência do círculo é: 62.83185307179586 A área do círculo é: 314.1592653589793 Lembre-se de que a área é em centímetros quadrados, metros quadrados, etc. |
C# ::: Dicas & Truques ::: Arquivos e Diretórios |
Como adicionar conteúdo ao final de um arquivo em C# usando as classes FileStream e StreamWriterQuantidade de visualizações: 10307 vezes |
Nesta dica mostro como usar as classes FileStream e StreamWriter para adicionar conteúdo a um arquivo já existente. Note que usamos o construtor de FileStream que aceita o caminho e nome do arquivo e o modo que ele será aberto. Ao fornecer o valor FileMode.Append nós estamos informando que, se o arquivo existir, mais conteúdo será adicionando ao seu final. Do contrário o arquivo é criado. Já no construtor de StreamWriter nós estamos fornecendo a codificação dos caracteres, neste caso, UTF-8. Para finalizar, escrevemos no arquivo usando os métodos Write() e WriteLine() da classe StreamWriter. Veja o código: static void Main(string[] args){ // vamos criar uma instância de FileStream. Note que neste // construtor nós estamos informando o caminho e nome do // arquivo e o modo de abertura do arquivo. Se o arquivo já existir // o novo conteúdo é adicionado. Se não existir, o arquivo é criado FileStream fs = new FileStream("dados.txt", FileMode.Append); // já temos o FileStream? vamos fornecê-lo a um StreamWriter StreamWriter sw = new StreamWriter(fs, Encoding.UTF8); // vamos escrever ou adicioar conteúdo no arquivo sw.WriteLine("Esta é mais uma linha"); sw.Write("Hoje é: "); sw.WriteLine(DateTime.Now); sw.WriteLine("Esta é a última linha"); sw.Flush(); sw.Close(); fs.Close(); Console.WriteLine("Acabei de escrever no arquivo"); Console.WriteLine("Pressione qualquer tecla para sair..."); // pausa o programa Console.ReadKey(); } Ao executar este código C# nós teremos o seguinte resultado: Acabei de escrever no arquivo Pressione qualquer tecla para sair... |
JavaScript ::: Dicas & Truques ::: Data e Hora |
Como construir uma determinada data e hora usando o construtor do objeto Date do JavaScriptQuantidade de visualizações: 7033 vezes |
Em algumas situações precisamos construir um objeto Date representando uma determinada data e hora. Para isso podemos usar o construtor deste objeto. Veja a sintáxe:new Date(year, month[, date[, h[, m[, s[, ms]]]]]); Veja que temos que fornecer os argumemtos na ordem ano, mês, dia, horas, minutos, segundos e milisegundos. Apenas os argumentos para os parâmetros ano e mês são obrigatórios. Veja, por exemplo, como podemos construir a data 01/08/2010: <html> <head> <title>Estudos JavaScript</title> </head> <body> <script type="text/javascript"> // vamos construir a data 01/08/2010 var data = new Date(2010, 7); // vamos exibir o resultado document.write("A data é: " + data); </script> </body> </html> Este trecho de código exibirá o seguinte resultado: A data é: Sun Aug 1 00:00:00 UTC-0300 2010. É importante ficar atento à faixa de valores permitida para cada um dos parâmetros: year - Exigido. Aqui devemos fornecer o ano completo, por exemplo, 1997 (e não 97). month - Exigido. Devemos fornecer o mês como um inteiro na faixa de 0 a 11 (janeiro é 0 enquanto dezembro é 11). date - Opcional. Aqui devemos fornecer o dia como um inteiro na faixa de 1 a 31. hours - Opcional. Devemos fornecer as horas como um inteiro na faixa de 0 a 23. minutes - Opcional. Devemos fornecer os minutos como um inteiro na faixa de 0 a 59. seconds - Opcional. Devemos fornecer os segundos como um inteiro na faixa de 0 a 59. ms - Opcional. Um inteiro na faixa de 0 a 999. Veja agora um trecho de código no qual construímos a data 14/05/2010 às 17:50: <script type="text/javascript"> // vamos construir a data 14/05/2010 às 17:50 var data = new Date(2010, 4, 14, 17, 50); // vamos exibir o resultado document.write("A data é: " + data); </script> Este código exibirá o seguinte resultado: A data é: Fri May 14 17:50:00 UTC-0300 2010. Esta dica foi escrita e testada no Internet Explorer 8 e Firefox 3.6. |
Java ::: Dicas & Truques ::: Arquivos e Diretórios |
Manipulação de arquivos em Java - Como ler o conteúdo de um arquivo um byte de cada vezQuantidade de visualizações: 11198 vezes |
Nesta dica mostrarei como ler texto de um arquivo um byte de cada vez. Para isso vamos usar o método readByte() da classe DataInputStream, do pacote java.io. Note que este método retorna um inteiro com sinal na faixa de -128 até 127. Neste exemplo faremos um cast do byte lido para um char, já que estaremos lendo um arquivo de texto. Sim, é isso mesmo que você pensou. Se houver caracteres acentuados no arquivo texto, os mesmo não serão exibidos corretamente. A idéia do exemplo é mostrar o funcionamento do método readByte(). Veja o código Java completo: package arquivodecodigos; import java.io.*; public class Estudos{ public static void main(String[] args){ try { DataInputStream in = new DataInputStream(new BufferedInputStream( new FileInputStream("C:\\java\\conteudo.txt"))); while (in.available() != 0){ System.out.print((char) in.readByte()); } } catch (IOException e){ System.out.println("Erro: " + e.getMessage()); } System.exit(0); } } Ao executarmos este código nós teremos o seguinte resultado: Primeira linha do arquivo Segunda linha do arquivo Terceira linha do arquivo |
Nossas 20 dicas & truques de programação mais populares |
C - Como escrever uma função C personalizada que copia os caracteres de uma string para outra string |
Você também poderá gostar das dicas e truques de programação abaixo |
Java - Java Swing para iniciantes - Como detectar eventos do teclado em uma janela JFrame do Java Swing wxWidgets - Como usar a classe wxFrame para criar a janela principal de suas aplicações C++ wxWidgets |
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 |