![]() |
|
|
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 Aço e Madeira |
||
|
||
|
|
||
Delphi ::: Data Access Controls (Controles de Acesso a Dados) ::: TClientDataSet |
Como usar a propriedade Eof para verificar se estamos no último registro do TClientDataSet do DelphiQuantidade de visualizações: 14825 vezes |
|
Em algumas situações gostaríamos de verificar se já estamos no último registro do TClientDataSet, ou seja, estamos percorrendo todos os registros do dataset e queremos saber se já estamos no último. Para isso podemos usar a propriedade Eof da classe TClientDataSet. Esta propriedade retorna true se estivermos no último registro e false em caso contrário. Veja um trecho de código no qual usamos um laço while para percorrer todos os registros de um TClientDataSet. Note o uso da propriedade Eof para finalizar as iterações do laço:
procedure TForm3.Button4Click(Sender: TObject);
begin
// vamos percorrer todos os registros do TClientDataSet
ClientDataSet1.First; // vamos para o primeiro registro
// e agora disparamos um laço While
while not ClientDataSet1.Eof do
begin
// vamos mostrar em um TMemo os valores do
// campo id de cada registro
Memo1.Lines.Add(ClientDataSet1.FieldByName('id').AsString);
// vamos mover para o próximo registro
ClientDataSet1.Next;
end;
end;
A propriedade Eof é verdadeira quando: a) Abrimos um dataset vazio. b) Efetuamos uma chamada ao método Last do dataset. c) Chamamos o método Next do dataset e a chamada falha porque o registro atual já é o último registro no dataset. d) Efetuamos uma chamada ao método SetRange em uma faixa de dados ou dataset vazio. Esta dica foi escrita e testada no Delphi 2009. |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Arrays e Matrix (Vetores e Matrizes) |
Exercício Resolvido de Java - Escreva um programa Java que leia os elementos de um vetor A de dez elementos inteiros e construa outro vetor BQuantidade de visualizações: 689 vezes |
|
Pergunta/Tarefa: Escreva um programa Java que leia os elementos de um vetor A de dez elementos inteiros e construa outro vetor B com seus elementos distribuídos da seguinte forma: Vetor A = [8, 5, 4, 1, 2, 3, 4, 6, 9, 7] Vetor B = [24, 10, 12, 2, 6, 6, 12, 12, 27, 14] Note que os elementos do vetor B seguem um padrão. Se o elemento do vetor A estiver em uma posição par, então o elemento do vetor B será o triplo do elemento do vetor A. Caso contrário o elemento do vetor B será o dobro do elemento do vetor A. Neste exercício a primeira posição/índice dos vetores é assumida como sendo zero. Em algumas linguagens de programação o primeiro índice é um e não zero. Sua saída deverá ser parecida com: Informe o valor do 1.o elemento: 8 Informe o valor do 2.o elemento: 5 Informe o valor do 3.o elemento: 4 Informe o valor do 4.o elemento: 1 Informe o valor do 5.o elemento: 2 Informe o valor do 6.o elemento: 3 Informe o valor do 7.o elemento: 4 Informe o valor do 8.o elemento: 6 Informe o valor do 9.o elemento: 9 Informe o valor do 10.o elemento: 7 Elementos do vetor A: 8, 5, 4, 1, 2, 3, 4, 6, 9, 7 Elementos do vetor B: 24, 10, 12, 2, 6, 6, 12, 12, 27, 14 Veja a resolução comentada deste exercício em Java:
package estudos;
import java.util.Scanner;
public class Estudos {
public static void main(String[] args) {
// vamos fazer a leitura usando a classe Scanner
Scanner entrada = new Scanner(System.in);
// vamos declarar e construir dois vetores de 10 inteiros
int vetor_a[] = new int[10];
int vetor_b[] = new int[10];
// agora vamos pedir para o usuário informar os valores
// dos elementos do vetor A
for(int i = 0; i < vetor_a.length; i++){
System.out.print("Informe o valor do " + (i + 1) +
".o elemento: ");
vetor_a[i] = Integer.parseInt(entrada.nextLine());
}
// vamos construir o vetor B
for(int i = 0; i < vetor_a.length; i++){
// o índice atual é par?
if(i % 2 == 0){
vetor_b[i] = vetor_a[i] * 3;
}
else{
vetor_b[i] = vetor_a[i] * 2;
}
}
// vamos mostrar os elementos do vetor A
System.out.println("\nElementos do vetor A:\n");
for(int i = 0; i < vetor_a.length; i++){
System.out.print(vetor_a[i] + ", ");
}
// vamos mostrar os elementos do vetor B
System.out.println("\n\nElementos do vetor B:\n");
for(int i = 0; i < vetor_b.length; i++){
System.out.print(vetor_b[i] + ", ");
}
System.out.println();
}
}
|
PHP ::: Dicas & Truques ::: Arquivos e Diretórios |
Arquivos e diretórios em PHP - Como montar uma árvore de arquivos e diretórios recursivamenteQuantidade de visualizações: 17003 vezes |
|
Este exemplo mostra como listar todo o conteúdo de um diretório recursivamente em forma de árvore. Note que usei um objeto da classe RecursiveDirectoryIterator da linguagem PHP para facilitar nosso trabalho. Veja o código completo para o exemplo:
<html>
<head>
<title>Estudando PHP</title>
</head>
<body>
<?php
// nome e local do diretório
$dir = $_SERVER["DOCUMENT_ROOT"] . "/escola/app";
// função recursiva que lista o diretório atual
function montarArvore($it){
echo '<ul>';
for(; $it->valid(); $it->next()){
if($it->isDir() && !$it->isDot()) {
printf('<li>%s</li>', $it->current());
if($it->hasChildren()) {
$filho = $it->getChildren();
echo '<ul>' . montarArvore($filho) . '</ul>';
}
}
elseif($it->isFile()) {
echo '<li>'. $it->current() . '</li>';
}
}
echo '</ul>';
}
// faz a primeira chamada à função recursiva
montarArvore(new RecursiveDirectoryIterator($dir));
?>
</body>
</html>
|
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: 3540 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 ::: Python para Engenharia ::: Engenharia Civil - Cálculo Estrutural |
Como calcular o Índice de Esbeltez de um pilar em Python - Python para Engenharia Civil e Cálculo EstruturalQuantidade de visualizações: 667 vezes |
![]() O índice de esbeltez de um pilar, representado pela letra grega λ (lambda) é uma relação que mede a altura do pilar em relação à sua largura ou seção transversal. Esse índice é usado para avaliar a suscetibilidade de um pilar à flambagem, que é um tipo de falha estrutural que pode ocorrer em pilares esbeltos sob compressão. Segundo a NBR 6118, 15.8.2, os pilares devem ter índice de esbeltez menor ou igual a 200 (λ ≤ 200). Apenas no caso de postes com força normal menor que 0,10 fcd x Ac, o índice de esbeltez pode ser maior que 200. O índice de esbeltez é a razão entre o comprimento de flambagem e o raio de giração, nas direções a serem consideradas. De acordo com o comprimento de flambagem, os pilares classificam-se como: curto, se λ < 35; medianamente esbelto, se 35 < λ < 90; esbelto, se 90 < λ < 140; e muito esbelto, se 140 < λ < 200. A fórmula para o cálculo do índice de esbeltez pode ser definida como: \[\lambda = 3,46 \cdot \frac{le}{h} \] Onde: λ = número adimensional representando o índice de esbeltez ao longo da direção escolhida (x ou y); le = algura do pilar, ou seja, o comprimento do pilar em centímetros. h = dimensão escolhida (x ou y) em centímetros. De acordo com a norma NBR 6118 (ABNT, 2014), se o índice de esbeltez na direção escolhida for menor que 35, nós não precisamos considerar os efeitos locais de 2ª ordem. Vamos agora ao código Python? Pediremos ao usuário para informar o comprimento (altura) do pilar em metros, as dimensões nas direções x e y e mostraremos os índices de esbeltez nas direções x e y do pilar com as respectivas anotações da necessidade ou não da consideração dos efeitos locais de 2ª ordem. Veja:
# método principal
def main():
# vamos pedir o comprimento do pilar em metros (pé direito)
le = float(input("Informe o comprimento do pilar (em metros): "))
# vamos converter o comprimento em metros para centímetros
le = le * 100.0
# vamos pedir as dimensões do pilar
hx = float(input("Informe a dimensão do pilar na direção x (em cm): "))
hy = float(input("Informe a dimensão do pilar na direção y (em cm): "))
# agora vamos calcular o índice de esbeltez na direção x
lambda_x = 3.46 * (le / hx)
# agora vamos calcular o índice de esbeltez na direção y
lambda_y = 3.46 * (le / hy)
# e mostramos os resultados
print("\nO índice de esbeltez na direção x é: {0}".format(round(lambda_x, 2)))
# precisamos considerar os efeitos locais de segunda ordem na direção x?
if lambda_x < 35:
print("Não considerar os efeitos locais de 2ª ordem na direção x")
else:
print("Considerar os efeitos locais de 2º ordem na direção x")
print("\nO índice de esbeltez na direção y é: {0}".format(round(lambda_y, 2)))
# precisamos considerar os efeitos locais de segunda ordem na direção y?
if lambda_y < 35:
print("Não considerar os efeitos locais de 2ª ordem na direção y")
else:
print("Considerar os efeitos locais de 2ª ordem na direção y")
if __name__== "__main__":
main()
Ao executar este código Python nós teremos o seguinte resultado: Informe o comprimento do pilar (em metros): 2.88 Informe a dimensão do pilar na direção x (em cm): 40 Informe a dimensão do pilar na direção y (em cm): 19 O índice de esbeltez na direção x é: 24.91 Não considerar os efeitos locais de 2ª ordem na direção x O índice de esbeltez na direção y é: 52.45 Considerar os efeitos locais de 2ª ordem na direção y |
Desafios, Exercícios e Algoritmos Resolvidos de Python |
Veja mais Dicas e truques de Python |
Dicas e truques de outras linguagens |
|
JavaScript - Cookies em JavaScript - Como escrever uma função para a criação de cookies em JavaScript Java - Java Swing - Como criar sua primeira JTree usando um vetor de nomes de linguagens de programação |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |







