![]() |
|
|
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. |
||
Você está aqui: Cards de Python |
||
|
||
|
|
||
Portugol ::: Desafios e Lista de Exercícios Resolvidos ::: Arrays e Matrix (Vetores e Matrizes) |
Exercícios Resolvidos de Portugol - Faça um algoritmo que preencha um vetor de 30 posições com números entre 1 e 15 sorteados pelo computador. Depois disso, peça para o usuárioQuantidade de visualizações: 611 vezes |
|
Pergunta/Tarefa: Faça um algoritmo que preencha um vetor de 30 posições com números entre 1 e 15 sorteados pelo computador. Depois disso, peça para o usuário digitar um número (chave) e seu programa deve mostrar em que posições essa chave foi encontrada. Mostre também quantas vezes a chave foi sorteada. Sua saída deverá ser parecida com: Digite um número a ser localizado: 8 O número 8 aparece nas seguintes posições: [8] posição => 5 [8] posição => 22 [8] posição => 26 O número 8 apareceu => 3 vez(es). Veja a resolução comentada deste exercício usando Portugol:
programa {
// vamos incluir a biblioteca de utilidades
inclua biblioteca Util --> u
funcao inicio() {
// vamos declarar as variáveis necessárias
inteiro numeros[30]
inteiro chave, vezes = 0
// vamos sortear 30 números de 1 até 15 (incluindo os dois)
para (inteiro i = 0; i < 30; i++) {
numeros[i] = u.sorteia(1, 15)
}
// vamos pedir para o usuário informar a chave e vamos verificar em
// quais posições essa chave foi encontrada
escreva("Digite um número a ser localizado: ")
leia(chave)
escreva("\nO número " + chave + " aparece nas seguintes posições:")
escreva("\n")
para (inteiro i = 0; i < 30; i++) {
se (numeros[i] == chave) {
// registra a quantidade de vezes
vezes = vezes + 1
escreva("\n[" + numeros[i] + "]" + " posição => " + i)
}
}
// agora mostramos quantas vezes o número pesquisado apareceu
escreva("\n\nO número " + chave + " apareceu => " + vezes + " vez(es).")
escreva("\n")
}
}
|
Firebird ::: Dicas & Truques ::: Strings e Caracteres |
Como substituir valores em campos CHAR ou VARCHAR usando a função REPLACE() do FirebirdQuantidade de visualizações: 16497 vezes |
A função REPLACE() do Firebird pode ser usada quando queremos substituir valores no conteúdo de um campo do tipo CHAR ou VARCHAR. Veja um exemplo de um comando SQL DML SELECT FROM no qual usamos a função REPLACE() para substituir todos os espaços por sublinhados (underline) em um campo chamado NOME de uma tabela CLIENTES:SELECT REPLACE(NOME, ' ', '_') FROM CLIENTES WHERE ID = 1; Esta query exibirá o seguinte resultado: REPLACE OSMAR_J._SILVA |
C++ ::: Dicas & Truques ::: Arquivos e Diretórios |
Arquivos e diretórios em C++ - Como excluir um arquivo usando a função remove() do C++Quantidade de visualizações: 10776 vezes |
Em algumas situações nossos códigos C++ precisam excluir arquivos. Isso pode ser feito com o auxílio da função remove() ou _remove(), disponível no header io.h or stdio.h (trazido da linguagem C). Veja a assinatura desta função:int remove(const char *filename); Se o arquivo for excluído com sucesso a função retornará o valor 0. O retorno será -1 se um erro ocorrer. Neste caso a variável global errno será definido como um dos seguintes valores: a) ENOENT - No such file or directory - O caminho do arquivo é inválido; b) EACCESS - Acesso negado - Algum outro programa está usando este arquivo e mantém controle sobre o mesmo. Veja um trecho de código no qual excluimos um arquivo:
#include <iostream>
using namespace std;
int main(int argc, char *argv[]){
// vamos excluir este arquivo
char arquivo[] = "C:\\Dev-Cpp\\arquivo.txt";
// vamos testar se o arquivo foi excluído com sucesso
if(remove(arquivo) != 0){
cout << "Erro: " << strerror(errno) << endl;
}
else{
cout << "Arquivo excluído com sucesso" << endl;
}
system("PAUSE"); // pausa o programa
return EXIT_SUCCESS;
}
É possível usar a versão Unicode de remove(). O método _wremove(), também presente em io.h or stdio.h é útil quando precisamos internacionalizar nossas aplicações. Veja o exemplo:
#include <iostream>
using namespace std;
int main(int argc, char *argv[]){
// vamos excluir este arquivo
wchar_t arquivo[] = L"C:\\Dev-Cpp\\arquivo.txt";
// vamos testar se o arquivo foi excluído com sucesso
if(_wremove(arquivo) != 0){
cout << "Erro: " << strerror(errno) << endl;
}
else{
cout << "Arquivo excluído com sucesso" << endl;
}
system("PAUSE"); // pausa o programa
return EXIT_SUCCESS;
}
Ao executar este código nós teremos o seguinte resultado: Arquivo excluído com sucesso. |
VB.NET ::: Dicas & Truques ::: Matemática e Estatística |
Como resolver uma equação do segundo grau em VB.NET - Como calcular Bhaskara em VB.NETQuantidade de visualizações: 895 vezes |
|
Como resolver uma equação do 2º grau usando VB.NET Nesta dica mostrarei como encontrar as raízes de uma equação quadrática, ou seja, uma equação do 2º usando a linguagem VB.NET. Definimos como equação do 2º grau ou equações quadráticas qualquer equação do tipo ax² + bx + c = 0 em que a, b e c são números reais e a ≠ 0. Ela recebe esse nome porque, no primeiro membro da igualdade, há um polinômio de grau dois com uma única incógnita. Note que, dos coeficientes a, b e c, somente o a é diferente de zero, pois, caso ele fosse igual a zero, o termo ax² seria igual a zero, logo a equação se tornaria uma equação do primeiro grau: bx + c = 0. Independentemente da ordem da equação, o coeficiente a sempre acompanha o termo x², o coeficiente b sempre acompanha o termo x, e o coeficiente c é sempre o termo independente. Como resolver uma equação do 2º grau Conhecemos como soluções ou raízes da equação ax² + bx + c = 0 os valores de x que fazem com que essa equação seja verdadeira. Uma equação do 2º grau pode ter no máximo dois números reais que sejam raízes dela. Para resolver equações do 2º grau completas, existem dois métodos mais comuns: a) Fórmula de Bhaskara; b) Soma e produto. O primeiro método é bastante mecânico, o que faz com que muitos o prefiram. Já para utilizar o segundo, é necessário o conhecimento de múltiplos e divisores. Além disso, quando as soluções da equação são números quebrados, soma e produto não é uma alternativa boa. Como resolver uma equação do 2º grau usando Bhaskara Como nosso código VB.NET vai resolver a equação quadrática usando a Fórmula de Bhaskara, o primeiro passo é encontrar o determinante. Veja: \[\Delta =b^2-4ac\] Nem sempre a equação possui solução real. O valor do determinante é que nos indica isso, existindo três possibilidades: a) Se determinante > 0, então a equação possui duas soluções reais. b) Se determinante = 0, então a equação possui uma única solução real. c) Se determinante < 0, então a equação não possui solução real. Encontrado o determinante, só precisamos substituir os valores, incluindo o determinante, na Fórmula de Bhaskara: \[x = \dfrac{- b\pm\sqrt{b^2- 4ac}}{2a}\] Vamos agora ao código VB.NET. Nossa aplicação vai pedir para o usuário informar os valores dos três coeficientes a, b e c e, em seguida, vai apresentar as raizes da equação:
Imports System
Module Program
Sub Main(args As String())
' os coeficientes
Dim a, b, c As Double
' as duas raizes, a imaginaria e o discriminante
Dim raiz1, raiz2, imaginaria, discriminante As Double
' vamos pedir para o usuário informar os valores dos coeficientes
Console.Write("Valor do coeficiente a: ")
a = Double.Parse(Console.ReadLine())
Console.Write("Valor do coeficiente b: ")
b = Double.Parse(Console.ReadLine())
Console.Write("Valor do coeficiente c: ")
c = Double.Parse(Console.ReadLine())
' vamos calcular o discriminante
discriminante = (b * b) - (4 * a * c)
' a equação possui duas soluções reais?
If discriminante > 0 Then
raiz1 = (-b + Math.Sqrt(discriminante)) / (2 * a)
raiz2 = (-b - Math.Sqrt(discriminante)) / (2 * a)
Console.Write("Existem duas raizes: x1 = " & raiz1 _
& " e x2 = " & raiz2)
ElseIf discriminante = 0 Then
' a equação possui uma única solução real?
raiz1 = raiz2 = -b / (2 * a)
Console.Write("Existem duas raizes iguais: x1 = " _
& raiz1 & " e x2 = " & raiz2)
ElseIf discriminante < 0 Then
' a equação não possui solução real?
raiz1 = raiz2 = -b / (2 * a)
imaginaria = Math.Sqrt(-discriminante) / (2 * a)
Console.Write("Existem duas raízes complexas: x1 = " &
raiz1 & " + " & imaginaria & " e x2 = " & raiz2 _
& " - " & imaginaria)
End If
Console.WriteLine(vbCrLf & "Pressione qualquer tecla para sair...")
' pausa o programa
Console.ReadKey()
End Sub
End Module
Ao executar este código VB.NET nós teremos o seguinte resultado: Valor do coeficiente a: 1 Valor do coeficiente b: 2 Valor do coeficiente c: -3 Existem duas raizes: x1 = 1 e x2 = -3 |
Delphi ::: Dicas & Truques ::: Recursão (Recursividade) |
Como usar recursividade em Delphi - Como usar recursão ou funções recursivas em DelphiQuantidade de visualizações: 16040 vezes |
Recursão ou recursividade é a habilidade que uma procedure ou function (função) possui de chamar a si própria uma vez, várias, indefinidamente ou até que a solução do problema a ser resolvido seja encontrada. Assim, podemos definir uma função recursiva (aqui uma procedure recursiva) em Delphi da seguinte forma (atenção: não execute este código):// uma procedure recursiva procedure Recursiva; begin // chama a si própria Recursiva; end; // vamos chamar a procedure pela primeira vez // a partir do Click de um botão procedure TForm1.Button1Click(Sender: TObject); begin Recursiva; end; O fato de eu pedir para que você não execute o código é que, uma vez clicado o botão, a procedure Recursiva será chamada e continuará chamando a si mesma até que a pilha do sistema estoure, ou seja, como funções recursivas são implementadas usando a pilha do sistema operacional e não na área de memória destinada a cada aplicativo o resultado será um travamento do programa, e, caso não estejamos com sorte, um travamento do sistema operacional. Sabedor do risco, clique no botão para ver o resultado você mesmo. O que devemos saber a respeito das funções recursivas é que estas precisam saber o ponto de parada, de forma a evitar chamadas infinitas. Como exemplo, veja uma procedure recursiva que conta de 0 até 10. Note como cada chamada verifica se já é hora de interromper a cadeia:
// uma procedure recursiva que conta de 0 até 10
procedure Contar(valor: Integer);
begin
// vamos exibir o valor atual
ShowMessage(IntToStr(valor));
// é hora de parar?
if valor = 10 then
ShowMessage('Terminei')
else
begin
// chama a si própria (note que aumentamos o valor atual em 1)
Inc(valor);
Contar(valor);
end;
end;
// vamos chamar a procedure pela primeira vez
// a partir do Click de um botão
procedure TForm1.Button1Click(Sender: TObject);
begin
// chama a função recursiva fornecendo o valor inicial
Contar(0);
end;
Execute este código e veja o resultado. Observe que a cada chamada recursiva nós incrementamos a variável de controle. Ela é a responsável por evitar que chamadas infinitas sejam feitas. Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009. |
Desafios, Exercícios e Algoritmos Resolvidos de Delphi |
Veja mais Dicas e truques de Delphi |
Dicas e truques de outras linguagens |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |




