Você está aqui: Cards de Hidrostática |
||
|
||
|
|
||
C++ ::: Dicas & Truques ::: Geometria, Trigonometria e Figuras Geométricas |
Como calcular o coeficiente angular de uma reta em C++ dados dois pontos no plano cartesianoQuantidade de visualizações: 1499 vezes |
|
O Coeficiente Angular de uma reta é a variação, na vertical, ou seja, no eixo y, pela variação horizontal, no eixo x. Sim, isso mesmo. O coeficiente angular de uma reta tem tudo a ver com a derivada, que nada mais é que a taxa de variação de y em relação a x. Vamos começar analisando o seguinte gráfico, no qual temos dois pontos distintos no plano cartesiano: ![]() Veja que o segmento de reta AB passa pelos pontos A (x=3, y=6) e B (x=9, y=10). Dessa forma, a fórmula para obtenção do coeficiente angular m dessa reta é: \[\ \text{m} = \frac{y_2 - y_1}{x_2 - x_1} = \frac{\Delta y}{\Delta x} = tg \theta \] Note que __$\Delta y__$ e __$\Delta x__$ são as variações dos valores no eixo das abscissas e no eixo das ordenadas. No triângulo retângulo que desenhei acima, a variação __$\Delta y__$ se refere ao comprimento do cateto oposto e a variação __$\Delta y__$ se refere ao comprimento do cateto adjascente. Veja agora o trecho de código na linguagem C++ que solicita as coordenadas x e y dos dois pontos, efetua o cálculo e mostra o coeficiente angular m da reta que passa pelos dois pontos:
#include <iostream>
#include <cstdlib>
using namespace std;
int main(int argc, char *argv[]){
// coordenadas dos dois pontos
float x1, y1, x2, y2;
// guarda o coeficiente angular
float m;
// x e y do primeiro ponto
cout << "Coordenada x do primeiro ponto: ";
cin >> x1;
cout << "Coordenada y do primeiro ponto: ";
cin >> y1;
// x e y do segundo ponto
cout << "Coordenada x do segundo ponto: ";
cin >> x2;
cout << "Coordenada y do segundo ponto: ";
cin >> y2;
// vamos calcular o coeficiente angular
m = (y2 - y1) / (x2 - x1);
// mostramos o resultado
cout << "O coeficiente angular é: " << m << "\n\n";
system("PAUSE"); // pausa o programa
return EXIT_SUCCESS;
}
Ao executar este código C++ nós teremos o seguinte resultado: Coordenada x do primeiro ponto: 3 Coordenada y do primeiro ponto: 6 Coordenada x do segundo ponto: 9 Coordenada y do segundo ponto: 10 O coeficiente angular é: 0.666667 Pressione qualquer tecla para continuar... Veja agora como podemos calcular o coeficiente angular da reta que passa pelos dois pontos usando o Teorema de Pitágoras. Note que agora nós estamos tirando proveito da tangente do ângulo Theta (__$\theta__$), também chamado de ângulo Alfa ou Alpha (__$\alpha__$):
#include <iostream>
#include <cstdlib>
#include <math.h>
using namespace std;
int main(int argc, char *argv[]){
// coordenadas dos dois pontos
float x1, y1, x2, y2;
// guarda os comprimentos dos catetos oposto e adjascente
float cateto_oposto, cateto_adjascente;
// guarda o ângulo tetha (em radianos) e a tangente
float tetha, tangente;
// x e y do primeiro ponto
cout << "Coordenada x do primeiro ponto: ";
cin >> x1;
cout << "Coordenada y do primeiro ponto: ";
cin >> y1;
// x e y do segundo ponto
cout << "Coordenada x do segundo ponto: ";
cin >> x2;
cout << "Coordenada y do segundo ponto: ";
cin >> y2;
// vamos obter o comprimento do cateto oposto
cateto_oposto = y2 - y1;
// e agora o cateto adjascente
cateto_adjascente = x2 - x1;
// vamos obter o ângulo tetha, ou seja, a inclinação da hipetunesa
// (em radianos, não se esqueça)
tetha = atan2(cateto_oposto, cateto_adjascente);
// e finalmente usamos a tangente desse ângulo para calcular
// o coeficiente angular
tangente = tan(tetha);
// mostramos o resultado
cout << "O coeficiente angular é: " << tangente << "\n\n";
system("PAUSE"); // pausa o programa
return EXIT_SUCCESS;
}
Ao executar este código você verá que o resultado é o mesmo. No entanto, fique atento às propriedades do coeficiente angular da reta: 1) O coeficiente angular é positivo quando a reta for crescente, ou seja, m > 0; 2) O coeficiente angular é negativo quando a reta for decrescente, ou seja, m < 0; 3) Se a reta estiver na horizontal, ou seja, paralela ao eixo x, seu coeficiente angular é zero (0). 4) Se a reta estiver na vertical, ou seja, paralela ao eixo y, o coeficiente angular não existe. |
Flutter ::: Material Library - Biblioteca Material ::: TextField |
Como usar a propriedade onChanged da classe TextField do Flutter para detectar mudança em seu conteúdo e exibí-lo como título da janelaQuantidade de visualizações: 1933 vezes |
|
A propriedade onChanged da classe TextField nos permite detectar quando o conteúdo da caixa de texto sofre alterações (quando o usuário digita mais conteúdo ou deleta o conteúdo já existente. Nesta dica eu mostro como tirar proveito dessa propriedade para atualizar o título da AppBar com o mesmo texto da caixa de texto à medida que o usuário digita.
import 'package:flutter/material.dart';
// método principal do Dart, que inicia a aplicação
void main() {
runApp(MeuApp());
}
class MeuApp extends StatelessWidget {
// Este widget é a raiz da aplicação Flutter
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Controle TextField',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: TelaInicial(),
);
}
}
// Vamos construir a view e retornar para a raiz da aplicação
class TelaInicial extends StatefulWidget {
TelaInicial({Key key}) : super(key: key);
@override
_TelaInicialState createState() => _TelaInicialState();
}
class _TelaInicialState extends State<TelaInicial> {
String tituloJanela = "Título da Janela";
@override
Widget build(BuildContext context) {
// vamos criar uma caixa de texto chamada nomeTxt
final nomeTxt = TextField(
decoration: InputDecoration(
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(10.0)),
hintText: 'Digite seu nome'
),
// Vamos detectar a mudança de conteúdo do TextField
onChanged: (String value) async {
// setState() força a atualização da janela
setState(() {
tituloJanela = value;
});
}
);
return Scaffold(
appBar: AppBar(
title: Text(tituloJanela),
),
body: Center(
child: Container(
child: Padding(
padding: const EdgeInsets.all(20.0),
child: Column(
children: <Widget>[
// a caixa de texto TextField vai aqui
nomeTxt,
],
),
),
),
),
);
}
}
|
Delphi ::: Dicas & Truques ::: Imagens e Processamento de Imagens |
Como capturar um screenshot da área de trabalho e salvá-lo como um Bitmap usando DelphiQuantidade de visualizações: 13838 vezes |
|
Em algumas situações precisamos capturar um screenshot da área de trabalho (Windows Desktop) e salvá-lo como um Bitmap. Esta dica mostra como isso pode ser feito. Note que aqui estamos salvando o bitmap gerado no mesmo diretório do executável. Caso queira salvar o resultado em outra pasta ou diretório, consulte minhas dicas sobre a manipulação de arquivos e diretórios usando Delphi. Veja o código (coloquei no evento OnClick de um botão:
procedure TForm2.Button1Click(Sender: TObject);
var
DCDesk: HDC;
bmp: TBitmap;
begin
// vamos criar o Bitmap
bmp := TBitmap.Create;
// vamos definir o tamanho do bitmap
bmp.Height := Screen.Height;
bmp.Width := Screen.Width;
// aqui nós obtemos um handle para o contexto de dispositivo
// de exibição do Desktop
DCDesk := GetWindowDC(GetDesktopWindow);
// vamos copiar a imagem do desktop para o bitmap criado
// anteriormente
BitBlt(bmp.Canvas.Handle, 0, 0, Screen.Width, Screen.Height,
DCDesk, 0, 0, SRCCOPY);
// salvamos o bitmap
bmp.SaveToFile('screenshot.bmp');
// liberamos o handle do desktop
ReleaseDC(GetDesktopWindow, DCDesk);
// e finalmente liberamos o bitmap
bmp.Free;
ShowMessage('Screenshot criado com sucesso.');
end;
Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009. |
JavaScript ::: Fundamentos da Linguagem ::: Estruturas de Controle |
JavaScript para leigos - Como usar o laço while da linguagem JavaScriptQuantidade de visualizações: 7408 vezes |
O laço while (também chamado de loop ou laço enquanto) da linguagem JavaScript é usado quando queremos repetir uma instrução ou um grupo de instruções ENQUANTO uma condição for satisfeita. Veja sua sintáxe:
while(condição){
// uma instrução ou grupo de instruções
}
A condição pode ser qualquer expressão que resulte em um valor boolean (true ou false). Note também que o teste condicional é feito antes de cada iteração (repetição) do laço. Isso faz com que este laço, dependendo da condição inicial, possa nunca ser executado. Veja um trecho de código no qual usamos o laço while para contar de 0 até 10:
<html>
<head>
<title>Estudos JavaScript</title>
</head>
<body>
<script type="text/javascript">
var i = 0;
while(i <= 10){
document.write(i + "<br>");
i++;
}
</script>
</body>
</html>
Ao executarmos este código teremos o seguinte resultado: 0 1 2 3 4 5 6 7 8 9 10 Veja que declaramos uma variável de controle i e a inicializamos com o valor 0. Na entrada do laço nós verificamos se seu valor é menor ou igual a 10. Como esta condição é satisfeita, o laço é executado pela primeira vez. No corpo do laço nós exibimos o valor da variável de controle e a incrementamos em 1. Agora o ciclo se repete. A condição é testada novamente. Se esta for satisfeita, o código entra no corpo do laço novamente e assim por diante. Veja agora como modificar o laço while anterior para exibir os números de 10 até 0:
<html>
<head>
<title>Estudos JavaScript</title>
</head>
<body>
<script type="text/javascript">
var i = 10;
while(i >= 0){
document.write(i + "<br>");
i--;
}
</script>
</body>
</html>
Agora o resultado do código será: 10 9 8 7 6 5 4 3 2 1 0 Esta dica foi escrita e testada no Internet Explorer 8 e Firefox 3.6. |
C ::: Fundamentos da Linguagem ::: Estruturas de Controle |
Apostila de C para iniciantes - Como criar um laço for infinito na linguagem CQuantidade de visualizações: 10463 vezes |
A linguagem C nos permite criar laços for infinitos. Para isso, só precisamos omitir as partes de inicialização, teste e incremento/decremento. Veja um exemplo:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int i = 1;
for(;;){
printf("%d ", i);
i++;
if(i > 10)
break; // sai do laço
}
printf("\n\n");
system("PAUSE");
return 0;
}
Veja que só usamos for(;;). Tenha o cuidado de fornecer uma forma de parar o laço. Do contrário seu programa executará até travar. |
Desafios, Exercícios e Algoritmos Resolvidos de C |
Veja mais Dicas e truques de C |
Dicas e truques de outras linguagens |
|
C++ - Como inicializar os valores dos elementos de um vetor C++ usando valores randômicos - Revisado |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |






