C ::: Dicas & Truques ::: Recursão (Recursividade) |
Como calcular o fatorial de um número em C usando recursividadeQuantidade de visualizações: 16387 vezes |
O fatorial de um determinado número, representado por n! equivale a multiplicar este número por seus antecessores. Assim, o fatorial de 4 (4!) pode ser calculado da seguinte forma:4 x 3 x 2 x 1 = 24 Sempre que falamos de recursão, o cálculo de fatorial nos auxilia na exemplificação por ser relativamente fácil de se entender todas as etapas do processo. O código abaixo mostra uma função recursiva em C que calcula o fatorial de qualquer número. Tenha cuidado. Calcular o fatorial de um número maior que 10 pode tornar sua máquina extremamente lenta, além de, muitas vezes, não retornar os resultados esperados.
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
// cabeçalho da função fatorial recursiva
int fatorial(int n);
// função principal do programa
int main(int argc, char *argv[]){
setlocale(LC_ALL,""); // para acentos do português
// vamos calcular o fatorial de 5
int res = fatorial(5);
// exibe o resultado
printf("O fatorial de 5 é: %d", res);
printf("\n\n");
system("PAUSE");
return 0;
}
// função recursiva para calcular o fatorial
// de um determinado número
int fatorial(int n){
if(n == 0){
return 1;
}
else{
return n * fatorial(n - 1);
}
}
Ao executar este código C nós teremos o seguinte resultado: O fatorial de 5 é: 120 |
C ::: C para Engenharia ::: Física - Mecânica |
Como calcular a energia cinética de um corpo dado sua massa e sua velocidade usando a linguagem CQuantidade de visualizações: 1743 vezes |
|
Energia Cinética é a forma de energia relacionada aos corpos em movimento e é diretamente proporcional ao quadrado da velocidade do corpo. Sendo uma grandeza física escalar, a energia cinética possui como unidade de medida, de acordo com as unidades do SI (Sistema Internacional de Medidas), o joule. A energia cinética é a capacidade de algum corpo em movimento realizar trabalho, modificando o estado de movimento dos corpos ao seu redor ou deformando-os. Quanto maior é a velocidade e a massa do corpo, maior é a sua capacidade de realizar trabalho quando estiver em movimento. De forma análoga, podemos pensar que um corpo que apresenta uma grande energia cinética necessita de uma grande quantidade de energia para cessar o seu movimento. A fórmula para obtenção da Energia Cinética de um corpo, quando temos a sua massa e a sua velocidade é: \[ E_c = \frac{\text{m} \cdot v^2}{\text{2}} \] Onde: Ec ? energia cinética (em joule, J). m ? massa do corpo (em kg). v ? velocidade do corpo (em m/s). É comum, também, encontrarmos essa fórmula escrita da seguinte forma: \[ E_c = \frac{1}{2} \text{m} \cdot v^2 \] É importante observarmos que, caso um corpo se encontre em repouso, a energia cinética a ele associada é nula, ou seja, zero. Além disso, a energia cinética depende da velocidade desse corpo ao quadrado. Sendo assim, ao duplicarmos a velocidade de um corpo, sua energia cinética aumenta quatro vezes e, ao triplicá-la, a energia cinética desse corpo fica nove vezes maior. Vamos ver um exemplo agora? Observe o seguinte enunciado: 1) Um ciclista e sua bicicleta possuem uma massa total de 100kg, e uma velocidade de 54km/h. Calcule sua energia cinética. O exercício já nos dá a massa total em kg, mas precisamos converter km/h em m/s antes de realizar o cálculo da energia cinética. Fique atento(a). Veja o código C completo que efetua este cálculo e exibe a energia cinética resultante:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(int argc, char *argv[]){
// a massa total
float massa = 100; // em kg
// velocidade (em m/s)
float velocidade = 54 / 3.6; // converti de km/h para m/s
// agora calculamos a energia cinética
float energia_cinetica = (massa * pow(velocidade, 2)) / 2;
// mostramos o resultado
printf("A energia cinética é: %fJ",
energia_cinetica);
printf("\n\n");
system("PAUSE");
return 0;
}
Ao executar este código C nós teremos o seguinte resultado: A energia cinética é: 11250.000000J |
wxWidgets ::: Dicas & Truques ::: wxFrame |
Como usar a classe wxFrame para criar a janela principal de suas aplicações C++ wxWidgetsQuantidade de visualizações: 2308 vezes |
|
A classe wxFrame, definida no arquivo <wx/frame.h>, herda diretamente da classe wxTopLevelWindow (que herda de wxWindow) e, em geral, é usada para representar a janela principal da aplicação. Em tempo de execução seu tamanho pode ser alterado, maximizado, restaurado e minimizado. Esta janela também inclui uma borda mais grossa, uma barra de títulos e, opcionalmente, uma barra de menus, uma barra de ferramentas ou uma barra de status. Uma wxFrame pode atuar como um contâiner para outros controles, tais como botões, caixa de texto, listas, tabelas, etc. No entanto, não podemos inserir em uma wxFrame uma outra wxFrame ou um diálogo. O construtor não vazio da classe wxFrame é: wxFrame::wxFrame(wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_FRAME_STYLE, const wxString& name = wxFrameNameStr) O parâmetro parent pode ser, e geralmente é, NULL. Se esse valor for diferente de NULL, a frame será minimizada quando sua janela mãe foi minimizada e restaurada quando esta for restaurada. Note que estamos falando de aplicações de janelas de múltiplos documentos (janelas MDI). O parâmetro id é o identificador da janela. Podemos informar -1 para indicar um valor default. O parâmetro title é o texto a ser exibido na barra de títulos da janela. O parâmetro pos é a posição da janela, expressa como um wxPoint (coordenada x e y). Se fornecermos o valor wxDefaultPosition para este parâmetro, a posição da janela será escolhida pelo sistema de janelas ou pela biblioteca wxWidgets, dependendo da plataforma. O parâmetro size é o tamanho da janela, expresso como um wxSize (largura e altura). O valor wxDefaultSize indica o tamanho padrão (default), escolhido pelo sistema de janelas ou pela biblioteca wxWidgets, dependendo da plataforma. O parâmetro style é o estilo da janela. O valor padrão é wxDEFAULT_FRAME_STYLE (que pode ser redimensionada, possui um botão de minimizar, de maximizar, etc). O parâmetro name é usado para associar a janela com um item nomeado, permitindo a personalização individual da janela em sistemas que usam o Motif. No Windows este parâmetro não possui nenhum efeito. Vamos ao código agora. Veja os arquivos de definição e de implementação para a criação de uma janela wxFrame: Código para janelaprincipal.h:
#ifndef _JANELAPRINCIPAL_H
#define _JANELAPRINCIPAL
#include <wx/wx.h>
// Definição da nossa janela wxFrame
class JanelaPrincipal : public wxFrame{
public:
// construtor não vazio
JanelaPrincipal(const wxChar *titulo, int posX, int posY,
int largura, int altura);
// destrutor
~JanelaPrincipal();
};
#endif // _JANELAPRINCIPAL_H
Código para janelaprincipal.cpp:
#include "janelaprincipal.h"
// arquivo de implementação
JanelaPrincipal::JanelaPrincipal(const wxChar *titulo, int posX,
int posY, int largura, int altura) : wxFrame((wxFrame *)NULL, -1,
titulo, wxPoint(posX, posY), wxSize(largura, altura)){
// não vamos fazer nada aqui por enquanto
}
JanelaPrincipal::~JanelaPrincipal(){
// por enquanto vamos deixar o construtor vazio
}
Agora veja o arquivo de definição e de implementação necessários para a criação e exibição da nossa janela: Código para aplicacao.h:
#include <wx/wx.h>
// arquivo de definição
// declaramos a classe application
class MinhaAplicacao : public wxApp{
public:
// é chamado no startup da aplicação
virtual bool OnInit();
};
// declara MinhaAplicacao& GetApp()
DECLARE_APP(MinhaAplicacao)
Código para aplicacao.cpp
#include "aplicacao.h"
#include "janelaprincipal.h"
// arquivo de implementação
// aqui o wxWidgets cria nosso objeto MinhaAplicacao e o associa
// com a função de entrada main() ou WinMain()
IMPLEMENT_APP(MinhaAplicacao)
bool MinhaAplicacao::OnInit(){
// vamos criar nossa janela
JanelaPrincipal *janela = new JanelaPrincipal(wxT("Cadastro"),
50, 50, 500, 400);
// vamos exibir a janela wxFrame
janela->Show(TRUE);
// essa vai ser a janela principal da aplicação
SetTopWindow(janela);
// podemos iniciar o loop de eventos
return true;
}
Note que, para que a janela seja visível na tela, devemos fazer uma chamada ao método Show() e fornecer o valor TRUE. Esta função é definida originalmente em wxWindow. Veja também que chamamos SetTopWindow() para informar ao wxWidgets que esta é a janela principal, razão pela qual fornecemos o valor NULL para o parâmetro parent. |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Programação Orientada a Objetos |
Algorítmos Resolvidos de Java - A classe Retangulo (construtores, getters e setters, encapsulamento e static)Quantidade de visualizações: 16432 vezes |
|
Exercícios Resolvidos de Java - A classe Retangulo (construtores, getters e setters, encapsulamento e static) Pergunta/Tarefa: Escreva uma classe Retangulo para representar um retângulo. A classe deve conter: a) Dois campos de dados do tipo double chamados largura e altura que especificam a largura e a altura do retângulo. Os valores padrões são 1 tanto para a largura quanto para a altura. b) Um campo de dado do tipo String chamado cor que especifica a cor do retângulo. Para este exercício em particular, assuma que TODOS os retângulos possuirão a mesma cor. A cor padrão é branco. c) Um construtor sem argumentos que cria um retângulo padrão. d) Um construtor que cria um retângulo com a largura e altura especificadas. e) Métodos get() e set() para os três campos de dados da classe. f) Um método chamado getArea() que retorna a área do retângulo. g) Um método chamado getPerimetro() que retorna o perímetro do retângulo. Escreva um programa de teste que cria dois objetos da classe Retangulo. Sua saída deverá ser parecida com: ![]() Resposta/Solução: Veja a resolução comentada deste exercício usando Java console: Retangulo.java
package estudos;
public class Retangulo {
private double largura; // largura do retângulo
private double altura; // altura do retângulo
// O exercício pede que TODOS os retângulos tenham a mesma cor
// consulte a dica http://www.arquivodecodigos.net/dicas/1158 para mais
// detalhes sobre o modificador static
private static String cor = "branco"; // cor do retângulo
// construtor sem argumentos
public Retangulo(){
this.largura = 1;
this.altura = 1;
}
// construtor que permite especificar a largura e a altura
public Retangulo(double largura, double altura){
this.largura = largura;
this.altura = altura;
}
// obtém a altura
public double getAltura() {
return altura;
}
// define a altura
public void setAltura(double altura){
this.altura = altura;
}
// obtém a largura
public double getLargura(){
return largura;
}
// define a largura
public void setLargura(double largura){
this.largura = largura;
}
// obtém a cor de TODOS os retângulos
public static String getCor(){
return cor;
}
// define a cor de TODOS os retângulos
public static void setCor(String cor){
Retangulo.cor = cor;
}
// este método retorna a área do retângulo (em metros quadrados)
public double getArea(){
return (this.largura * this.altura);
}
// este método retorna o perímetro do retângulo (em metros)
public double getPerimetro(){
return ((2 * this.largura) + (2 * this.altura));
}
}
Agora o teste no método main():
package estudos;
public class Estudos {
public static void main(String[] args) {
// vamos criar uma instância da classe Retangulo com
// os valores padrões
Retangulo a = new Retangulo();
// agora vamos informar a largura e a altura
Retangulo b = new Retangulo(10, 5);
// os dois retângulos terão a cor verde
Retangulo.setCor("verde");
// vamos mostrar os resultados do primeiro retângulo
System.out.println("Primeiro retângulo");
System.out.println("Largura: " + a.getLargura());
System.out.println("Altura: " + a.getAltura());
System.out.println("Cor: " + Retangulo.getCor());
System.out.println("Área: " + a.getArea() + " metros quadrados");
System.out.println("Perímetro: " + a.getPerimetro() + " metros");
// vamos mostrar os resultados do segundo retângulo
System.out.println("\nSegundo retângulo");
System.out.println("Largura: " + b.getLargura());
System.out.println("Altura: " + b.getAltura());
System.out.println("Cor: " + Retangulo.getCor());
System.out.println("Área: " + b.getArea() + " metros quadrados");
System.out.println("Perímetro: " + b.getPerimetro() + " metros");
}
}
|
Você também poderá gostar das dicas e truques de programação abaixo |
|
wxWidgets - Como usar a classe wxFrame para criar a janela principal de suas aplicações C++ wxWidgets JavaScript - Como testar se ao menos um elemento de um array satisfaz uma condição em JavaScript usando a função some() |
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 |





