![]() |
|
|
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 Engenharia Civil - Estruturas de Concreto Armado |
||
|
||
|
|
||
Delphi ::: Dicas & Truques ::: MIDI Musical Instrument Digital Interface, Mapeamento e sequenciamento MIDI, Entrada e saída MIDI |
Como retornar uma lista dos dispositivos de saída MIDI no sistema usando DelphiQuantidade de visualizações: 11570 vezes |
|
Em algumas ocasiões nós precisamos obter uma lista dos dispositivos de saída MIDI no sistema, talvez com o propósito de selecionar um determinado dispositivo em uma ListBox ou ComboBox. O trecho de código abaixo mostra como isso pode ser feito. O primeiro passo é declarar uma variável do tipo TMidiOutCaps. Este registro está declarado na unit MMSystem.pas e é uma tradução da estrutura MIDIOUTCAPS da API do Windows. Entre outros tipos de dados, esta estrutura possui um membro szPname que retorna o nome do dispositivo. Na unit MMSystem.pas este membro está declarado como array[0..MAXPNAMELEN-1] of AnsiChar, ou seja, uma matriz de AnsiChar que será preenchida pela API do Windows e terá seu final marcado com o caractere null (NULL terminated string). Note a conversão deste valor para o tipo String no momento de inserí-lo no ComboBox. Em versões anteriores do Delphi (estou escrevendo este código no Delphi 2009) podíamos usar a função StrPas() para esta finalidade. O passo seguinte é obter a quantidade de dispositivos de saída MIDI. Isso é feito com uma chamada à função midiOutGetNumDevs da API do Windows. Uma vez obtida a quantidade de dispositivos nós usamos um laço for e, no corpo deste laço, usamos o valor da variável de controle i para efetuar uma chamada à função midiOutGetDevCaps(), também da API do Windows: midiOutGetDevCaps(i, @MidiOutCaps, sizeof(TMidiOutCaps)); Esta função recebe o identificador do dispositivo (um valor inteiro começando em 0 e indo até a quantidade de dispositivos - 1), um ponteiro para um registro MidiOutCaps e o tamanho em bytes do registro. Se a função for executada com sucesso, o registro MidiOutCaps será preenchido com várias informações úteis, tais como o nome do dispositivo, o ID do fabricante, o ID do produto, versão do driver, tipo do dispositivo MIDI, número de vozes suportadas, número máximo de notas que podem ser tocadas simultaneamente, etc. Para finalizar, nós acessamos o campo szPname do registro MidiOutCaps e o adicionamos no ComboBox. Veja o código completo a seguir:
procedure TForm1.Button2Click(Sender: TObject);
var
i: Integer;
MidiOutCaps: TMidiOutCaps; // este registro (record) está definido em MMSystem.pas
erro: Word;
begin
// uses MMSystem
ComboBox2.Clear;
// midiOutGetNumDevs retorna a quantidade de dispositivos de saída MIDI no sistema
for i := 0 to midiOutGetNumDevs - 1 do
begin
// vamos obter o dispositivo identificado pela variável i (uDeviceID)
erro := midiOutGetDevCaps(i, @MidiOutCaps, sizeof(TMidiOutCaps));
if erro <> MMSYSERR_NOERROR then
raise Exception.Create('Não foi possível obter a lista de dispositivos ' +
'de saída MIDI');
// vamos adicionar o nome do dispositivo no ComboBox
ComboBox2.Items.Add(StrPas(MidiOutCaps.szPname));
end;
end;
Ao executar este código o ComboBox será preenchido com valores semelhantes à: Microsoft GS Wavetable SW Synth MPU-401 Nas demais dicas relacionadas a este assunto você deverá sempre indicar o dispositivo de saída MIDI. Geralmente você poderá fornecer os valores 0 ou 1 para as funções MIDI que pedem o ID do dispositivo de saída. Para fins de compatibilidade esta dica ou anotação foi escrita usando Delphi 2009. |
C# ::: Dicas & Truques ::: Strings e Caracteres |
Como testar a ocorrência de uma substring em uma string do C# usando o método Contains() da classe StringQuantidade de visualizações: 4 vezes |
|
Nesta dica mostrarei como usar o método Contains() da classe String do C# para verificar se uma letra ou palavra está contida em uma frase ou texto. Se a substring for encontrada, a função Contains() retorna um valor true (verdadeiro), e false (falso) em caso contrário. Veja o exemplo completo:
using System;
namespace Estudos {
class Program {
static void Main(string[] args) {
string frase = "Gosto de programar em C#";
// a frase contém a palavra "programar"?
if (frase.Contains("programar")) {
Console.WriteLine("A palavra pesquisada está contida na string");
}
// a palavra pesquisada não foi encontrada na string
else {
Console.WriteLine("A palavra pesquisada NÃO está contida na string");
}
Console.WriteLine("\n\nPressione uma tecla para sair...");
Console.ReadKey();
}
}
}
Ao executar este código C# nós teremos o seguinte resultado: A palavra pesquisada está contida na string Tenha em mente que o método Contains() da classe String do C# diferencia letras maiúsculas de letras minúsculas. |
Firebird ::: Dicas & Truques ::: Strings e Caracteres |
Como substituir valores em campos CHAR ou VARCHAR usando a função REPLACE() do FirebirdQuantidade de visualizações: 16469 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 |
Laravel ::: Artigos e Tutorias ::: CRUD - CREATE, READ, UPDATE, DELETE |
Como criar um CRUD completo em Laravel 8 - CRUD em Laravel usando PHP e MySQL (MariaDB) - Parte 2Quantidade de visualizações: 3476 vezes |
|
Na parte 1 deste tutorial sobre CRUD em Laravel usando PHP e MySQL (MariaDB) nós criamos a base de dados MySQL para a nossa aplicação biblioteca, criamos a aplicação Laravel, fizemos a migração e rodamos a migração, o que resultou na criação de uma tabela MySQL chamada livros. Nessa segunda parte nós vamos iniciar criando a rota de redirecionamento das ações do CRUD. Vamos criar também o controller e as primeiras views. Criando a rota de redirecionamento - routes/web.php Vá até o diretório C:\xampp\htdocs\biblioteca\routes e abra o arquivo web.php. Você verá que ele possui o seguinte conteúdo:
<?php
use Illuminate\Support\Facades\Route;
/*
|--------------------------------------
| Web Routes
|--------------------------------------
|
| Here is where you can register web routes
| for your application. These routes are loaded
| by the RouteServiceProvider within a group
| which contains the "web" middleware group.
| Now create something great!
|
*/
Route::get('/', function () {
return view('welcome');
});
?>
Vamos alterar o seu conteúdo para a versão abaixo:
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\LivroController;
Route::resource('livros', LivroController::class);
?>
Veja que criamos uma rota para um recurso, que neste caso será o controller LivroController. Passamos o nome livros para esta rota, de forma que a URL http://localhost/biblioteca/public/livros/create abrirá a view para cadastrar um novo livro. Hora de criar o controller e o model - a parte controle e modelo do MVC Com a rota de direcionamento devidamente criada, vamos partir para o controller. Abra uma janela de terminal e digite o comando abaixo: C:\xampp\htdocs\biblioteca>php artisan make:controller LivroController --resource --model=Livro O Artisan nos perguntará se queremos criar o modelo também. Informe "yes" e pressione Enter. A App\Models\Livro model does not exist. Do you want to generate it? (yes/no) [yes]: > yes Se tudo correr bem, você verá a seguinte mensagem: Model created successfully. Controller created successfully. Vá até o diretório C:\xampp\htdocs\biblioteca\app\Http\Controllers e localize o arquivo LivroController.php. Abra-o e note que temos os métodos index(), create(), store(), show(), edit(), update() e destroy(). Cada um destes métodos corresponde a uma ação que podemos executar na tabela de livros. Vamos começar com o método create(). Limpe todo o conteúdo deste controller e deixe apenas o código abaixo:
<?php
namespace App\Http\Controllers;
use App\Models\Livro;
use Illuminate\Http\Request;
class LivroController extends Controller{
// mostra a view para cadastrar um novo livro
public function create(){
return view('livros.create');
}
}
?>
O método create() apenas exibirá a página (view) que nos permitirá cadastrar um novo livro. Porém, antes de criar a primeira view, vá no diretório C:\xampp\htdocs\biblioteca\app\Models, localize e abra o arquivo Livro.php. Vamos modificá-lo para o código abaixo:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Livro extends Model{
use HasFactory;
protected $fillable = [
'titulo', 'autor', 'paginas'
];
}
?>
Veja que informamos, no model Livro, os campos da tabela que serão preenchidos com as nossas informações. Os campos id, created_at e updated_at serão gerenciados pelo Laravel. A view para cadastrar um novo livro Chegou o grande momento. Vamos criar a página que nos permitirá cadastrar os livros. Para manter as coisas simples, escreveremos um view bem simples, sem muita formatação. Mas você poderá deixá-la mais bonita mais tarde. O importante aqui é entender a funcionalidade. Veja o código completo para a view create.blade.php:
<html>
<head>
<meta charset="utf-8">
<title>Biblioteca</title>
</head>
<body>
<h1>Novo Livro</h1>
@if($status = Session::get('mensagem'))
<h2>{{ $status }}</h2>
@endif
@if($errors->any())
<h2>Houve alguns erros ao processar o formulário</h2>
<ul>
@foreach($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
@endif
<form action="{{ route('livros.store') }}" method="post">
@csrf
<table width="200" border="0" cellspacing="3"
cellpadding="3">
<tr>
<td>Título:</td>
<td><input type="text" name="titulo" id="titulo"
placeholder="Título"></td>
</tr>
<tr>
<td>Autor:</td>
<td><input type="text" name="autor" id="autor"
placeholder="Autor"></td>
</tr>
<tr>
<td>Páginas</td>
<td><input type="text" size="10" name="paginas"
id="paginas" placeholder="Quant. Páginas"></td>
</tr>
<tr>
<td> </td>
<td><button type="submit">Gravar</button></td>
</tr>
</table>
</form>
</body>
</html>
Aqui nós criamos um formulário com a action apontando para {{route('livros.store')}}, e a forma de envio é POST. Temos também três elementos HTML do tipo input text, cada um com a propriedade name contendo o mesmo nome do campo na tabela livros. Salve esta view no diretório C:\xampp\htdocs\biblioteca\resources\views\livros. Agora abra o seu navegador no endereço http://localhost/biblioteca/public/livros/create e teremos o seguinte resultado: ![]() Agora só precisamos obter as informações do formulário e salvá-las no banco de dados. Gravando o novo livro na tabela do banco de dados Vamos ver agora como obter os dados do formulário, passá-los para o controller, instanciar o model e finalmente persistir no banco de dados MySQL. Você viu que os dados do form são enviados para o método store() do controller livros. Assim, abra o LivroController.php e adicione o código abaixo:
<?php
namespace App\Http\Controllers;
use App\Models\Livro;
use Illuminate\Http\Request;
class LivroController extends Controller{
// mostra a view para cadastrar um novo livro
public function create(){
return view('livros.create');
}
// recebe as informações do formulário e as grava
// no banco de dados
public function store(Request $request){
// valida o formulário
$request->validate([
'titulo' => 'required',
'autor' => 'required',
'paginas' => 'required']);
// obtém os valores do form
Livro::create($request->all());
// direciona para página cadastro novamente,
// com uma mensagem de sucesso
return redirect()->route('livros.create')
->with('mensagem', 'Livro salvo com sucesso.');
}
}
?>
Pronto! A parte CREATE do CRUD já está completa. Experimente cadastrar um novo livro e veja o resultado na tabela do banco de dados. Observe que temos também a validação dos dados do formulário (mensagens indicando quais campos não foram preenchidos) e também uma mensagem de sucesso indicando que os dados foram gravados com sucesso. Na parte 3 deste tutorial veremos como listar os livros cadastrados e a opção de excluir e editar os livros. Até lá. Leia a parte 3 aqui: Como criar um CRUD completo em Laravel 8 - CRUD em Laravel usando PHP e MySQL (MariaDB) - Parte 3 |
Python ::: Desafios e Lista de Exercícios Resolvidos ::: Recursão (Recursividade) |
Exercícios Resolvidos de Python - Uma função recursiva que conta quantas vezes um valor inteiro k ocorre em um vetor de inteirosQuantidade de visualizações: 859 vezes |
|
Pergunta/Tarefa: Escreva uma função recursiva em Python que conta quantas vezes um valor inteiro k ocorre em um vetor de 10 inteiros. Sua função deverá ter a seguinte assinatura: # função recursiva que recebe um valor e informa quantas vezes # ele aparece no vetor também informado def quant_repeticoes(indice, valor, vetor): # sua implementação aqui Sua saída deverá ser parecida com: Informe o 1 valor: 2 Informe o 2 valor: 7 Informe o 3 valor: 4 Informe o 4 valor: 7 Informe o 5 valor: 1 Informe o valor a ser pesquisado no vetor: 7 O valor informado se repete 2 vezes. Veja a resolução comentada deste exercício usando Python:
# método principal
def main():
# vamos declarar um vetor de 10 inteiros
valores = [0 for x in range(5)]
# vamos pedir ao usuário que informe os valores do vetor
for i in range(len(valores)):
valores[i] = int(input("Informe o %d.o valor: " % ((i + 1))))
# agora vamos pedir para informar o valor a ser pesquisado
valor = int(input("\nInforme o valor a ser pesquisado no vetor: "))
# e vamos ver a quantidade de repetições
repeticoes = quant_repeticoes(0, valor, valores)
print("O valor informado se repete {0} vezes.".format(repeticoes))
# função recursiva que recebe um valor e informa quantas vezes
# ele aparece no vetor também informado
def quant_repeticoes(indice, valor, vetor):
if indice == len(vetor) - 1: # caso base...hora de parar a recursividade
if vetor[indice] == valor:
return 1 # mais um repetição foi encontrada
else: # dispara mais uma chamada recursiva
if vetor[indice] == valor: # houve mais uma repetição
return 1 + quant_repeticoes(indice + 1, valor, vetor)
else:
return 0 + quant_repeticoes(indice + 1, valor, vetor) # não repetiu
return 0 # só para deixar o compilador satisfeito...esta linha nunca é executada
if __name__== "__main__":
main()
|
Mais Desafios de Programação e Exercícios e Algoritmos Resolvidos de Python |
Veja mais Dicas e truques de Python |
Dicas e truques de outras linguagens |
|
JavaScript - Como exibir apenas dois dígitos após o ponto decimal em JavaScript usando a função toFixed() do objeto Number |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |






