![]() |
|
|
Planilha de Dimensionamento de Tubulações
Hidráulicas Água Fria e Água Quente CompletaNossa planilha automática de dimensionamento de tubulações de água fria e quente é uma ferramenta desenvolvida para auxiliar engenheiros e projetistas no cálculo rápido e preciso das redes hidráulicas de edificaçoes. Por meio da inserçao de dados como vazao, diâmetro da tubulaçao, comprimento da rede, material do tubo e coeficientes hidráulicos, a planilha realiza automaticamente os cálculos necessários para verificar velocidade da água, perda de carga e dimensionamento adequado das tubulaçoes. |
||
C ::: Dicas & Truques ::: Ordenação e Pesquisa (Busca) |
Ordenação e pesquisa em C - Como ordenar um vetor de inteiros usando a ordenação Insertion Sort (Ordenação por Inserção)Quantidade de visualizações: 3346 vezes |
|
A ordenação Insertion Sort, ou Ordenação por Inserção, possui uma complexidade de tempo de execução igual à ordenação Bubble Sort (Ordenação da Bolha), ou seja, O(n2). Embora mais rápido que o Bubble Sort, e ser um algorítmo de ordenação quadrática, a ordenação Insertion Sort é bastante eficiente para problemas com pequenas entradas, sendo o mais eficiente entre os algoritmos desta ordem de classificação, porém, nunca recomendada para um grande conjunto de dados. A forma mais comum para o entendimento da ordenação Insertion Sort é compará-la com forma pela qual algumas pessoas organizam um baralho num jogo de cartas. Imagine que você está jogando as cartas. Você está com as cartas na mão e elas estão ordenadas. Você recebe uma nova carta e deve colocá-la na posição correta da sua mão de cartas, de forma que as cartas obedeçam à ordenação. A cada nova carta adicionada à sua mão de cartas, a nova carta pode ser menor que algumas das cartas que você já tem na mão ou maior, e assim, você começa a comparar a nova carta com todas as cartas na sua mão até encontrar sua posição correta. Você insere a nova carta na posição correta, e, novamente, a sua mão é composta de cartas totalmente ordenadas. Então, você recebe outra carta e repete o mesmo procedimento. Então outra carta, e outra, e assim em diante, até não receber mais cartas. Esta é a ideia por trás da ordenação por inserção. Percorra as posições do vetor (array), começando com o índice 1 (um). Cada nova posição é como a nova carta que você recebeu, e você precisa inseri-la no lugar correto no sub-vetor ordenado à esquerda daquela posição. Vamos ver a implementação na linguagem C agora? Observe o seguinte código, no qual temos um vetor de inteiros com os elementos {4, 6, 2, 8, 1, 9, 3, 0, 11}:
#include <stdio.h>
#include <stdlib.h>
// função que permite ordenar um vetor de inteiros
// usando a ordenação Insertion Sort
void insertionSort(int vetor[], int tam){
int i, temp, j;
// este laço varre os elementos a partir do segundo
// elemento, ou seja, o índice 1
for(i = 1; i < tam; i++){
// guardamos o elemento atual em temp
temp = vetor[i];
for(j = i; ((j > 0) && (vetor[j - 1] > temp)); j--){
vetor[j] = vetor[j - 1]; // houve uma troca
}
vetor[j] = temp; // colocamos temp em seu devido lugar
}
}
int main(int argc, char *argv[]){
int valores[] = {4, 6, 2, 8, 1, 9, 3, 0, 11};
int i, tamanho = 9;
// imprime a matriz sem a ordenação
puts("Sem ordenação:\n");
for(i = 0; i < 9; i++){
printf("%d ", valores[i]);
}
// vamos ordenar a matriz
insertionSort(valores, tamanho);
// imprime a matriz ordenada
puts("\n\nOrdenada usando Insertion Sort:\n");
for(i = 0; i < 9; i++){
printf("%d ", valores[i]);
}
printf("\n\n");
system("PAUSE");
return 0;
}
Ao executar este código C nós teremos o seguinte resultado: Sem ordenação: 4 6 2 8 1 9 3 0 11 Ordenada usando Insertion Sort: 0 1 2 3 4 6 8 9 11 |
C# ::: Fundamentos da Linguagem ::: Estruturas de Controle |
Como usar a instrução switch do C#Quantidade de visualizações: 26963 vezes |
|
A instrução switch da linguagem C# é útil quando queremos testar condições nas quais o uso de if..else if..else poderia ser considerado excessivo ou não aplicável. Esta instrução recebe uma variável como argumento e testa seu valor por meio de cláusulas case. Veja o exemplo:
static void Main(string[] args){
Console.Write("Digite um número inteiro: ");
int valor = int.Parse(Console.ReadLine());
switch(valor){
case 1:
Console.WriteLine("Você digitou o valor 1");
break;
case 2:
Console.WriteLine("Você digitou o valor 2");
break;
case 3:
Console.WriteLine("Você digitou o valor 3");
break;
default:
Console.WriteLine("Valor incorreto.");
break;
}
Console.WriteLine("\n\nPressione uma tecla para sair...");
Console.ReadKey();
}
Note que a instrução switch possui uma cláusula default para os casos nos quais o valor da variável não estiver presente em nenhuma das cláusulas case. Observe também o uso da instrução break para evitar a avaliação das cláusulas seguintes àquela na qual o valor desejado foi encontrado. Qualquer objeto, valor ou tipo referência que puder ser convertido em um valor inteiro, caractere, enumeração (enum) ou string pode ser usado como argumento para uma instrução switch. Veja:
static void Main(string[] args){
Console.Write("Digite uma letra: ");
char letra = Char.Parse(Console.ReadLine().ToLower());
switch(letra){
case "a":
Console.WriteLine("Você digitou a letra a");
break;
case "b":
Console.WriteLine("Você digitou a letra b");
break;
case "c":
Console.WriteLine("Você digitou a letra c");
break;
default:
Console.WriteLine("Letra inválida.");
break;
}
Console.WriteLine("\n\nPressione uma tecla para sair...");
Console.ReadKey();
}
É possível haver cláusulas case vazias. Neste caso, o bloco de instruções é executado caso o valor da variável seja encontrado em qualquer uma das cláusulas. Veja:
static void Main(string[] args){
Console.Write("Digite uma letra: ");
char letra = Char.Parse(Console.ReadLine().ToLower());
switch(letra){
case "a":
case "b":
Console.WriteLine("Você digitou a ou b");
break;
case "c":
case "d":
Console.WriteLine("Você digitou c ou d");
break;
case "e":
Console.WriteLine("Você digitou a letra e");
break;
default:
Console.WriteLine("Letra inválida.");
break;
}
Console.WriteLine("\n\nPressione uma tecla para sair...");
Console.ReadKey();
}
|
AngularJS ::: Angular / AngularJS + JavaScript ::: Controllers AngularJS |
Como adicionar funções (ou métodos) ao seu controller AngularJSQuantidade de visualizações: 2369 vezes |
|
Nesta dica mostrarei como adicionar comportamento ao seu controller AngularJS, ou seja, adicionar funções ou métodos para acessar e/ou modificar as variáveis contidas no escopo. Para este exemplo criaremos um controller chamado "VolumeTV". Este controller terá uma variável chamada "volume" e dois botões para aumentar ou diminuir o volume. Note que, tanto a variável quanto as duas funções são colocadas no $scope para facilitar o acesso destes a partir da view. Veja o exemplo completo, sem usar AngularJS CLI nem TypeScript, somente JavaScript e HTML:
<!DOCTYPE html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Cadastro de Alunos AngularJS</title>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.7.9/angular.min.js">
</script>
</head>
<body>
<script type="text/javascript">
// vamos criar uma nova aplicação
var app = angular.module('MinhaApp', []);
// vamos criar o controller VolumeTV
app.controller('VolumeTV', function ($scope){
// define o volume inicial
$scope.volume = 5;
// função para aumentar o volume
$scope.aumentarVolume = function(){
$scope.volume++;
};
// função para diminuir o volume
$scope.diminuirVolume = function(){
$scope.volume--;
};
});
</script>
<div ng-app="MinhaApp" ng-controller="VolumeTV">
<h1>Volume atual: {{volume}}</h1>
<button ng-click="aumentarVolume()">Aumentar Volume</button>
<button ng-click="diminuirVolume()">Diminuir Volume</button>
</div>
</body>
</html>
|
Flutter ::: Material Library - Biblioteca Material ::: TextField |
Como clicar em um botão, obter o texto digitado em um TextField do Flutter e exibí-lo em uma AlertDialogQuantidade de visualizações: 3110 vezes |
|
Nesta dica mostrarei como clicar em um botão, obter o texto que o usuário digitou em um TextField e exibí-lo em uma caixa de mensagem AlertDialog. Para isso vamos tirar proveito da classe TextEditingController, que nos fornece um controller que pode ser associado a uma caixa de texto. Quando o usuário clicar no botão, nós chamamos o método setState() para atualizar uma variável com o texto do controller e em seguida exibimos uma mensagem AlertDialog com o texto digitado. Veja o exemplo completo:
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 nomeUsuario; // vai guarda o nome digitado no TextField
// controler para o TextField
TextEditingController nomeController = TextEditingController();
// método que nos permite obter o conteúdo digitado no TextField
void obterTexto() {
setState(() {
// transferimos para a variável nomeUsuario o conteúdo
// do texto do controller do TextField
nomeUsuario = nomeController.text;
});
// agora vamos mostrar o texto digitado em uma mensagem
// AlertDialog
showDialog<void>(context: context,
barrierDismissible: false, builder: (BuildContext context) {
return new AlertDialog(
title: new Text("Texto Digitado"),
content: new SingleChildScrollView(
child: new ListBody(
children: [
new Text("O texto digitado foi: $nomeUsuario"),
],
),
),
actions: [
new FlatButton(
child: new Text('OK'),
onPressed: () {
Navigator.of(context).pop();
},
),
],
);
},
);
}
@override
Widget build(BuildContext context) {
// vamos criar uma caixa de texto chamada nomeTxt
final nomeTxt = TextField(
controller: nomeController,
decoration: InputDecoration(
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(10.0)),
hintText: 'Digite seu nome'
),
);
final btnNome = ElevatedButton(
onPressed: obterTexto,
child: Text('Clique Aqui'),
);
return Scaffold(
appBar: AppBar(
title: Text("O Widget TextField"),
),
body: Center(
child: Container(
child: Padding(
padding: const EdgeInsets.all(20.0),
child: Column(
children: <Widget>[
// a caixa de texto TextField vai aqui
nomeTxt,
// o botão vai aqui
btnNome,
],
),
),
),
),
);
}
}
|
Nossas 20 dicas & truques de programação mais populares |
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 |





