![]() |
|
||||
Código-Fonte Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidadesTenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais |
|||||
Você está aqui: Cards de Engenharia Civil - Estruturas de Aço e Madeira |
||
|
||
|
|
||
C ::: Dicas & Truques ::: Arrays e Matrix (Vetores e Matrizes) |
Como passar um vetor para uma função CQuantidade de visualizações: 12613 vezes |
|
Muitas vezes precisamos passar um vetor, ou seja, um array unidimensional para uma função na linguagem C. O trecho de código abaixo mostra como isso é feito. Observe que a passagem de um vetor para uma função é feita por referência, ou seja, qualquer alteração nos valores do array dentro da função será refletida no vetor original:
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
// protótipo da função que recebe o array e exibe os seus elementos
void exibir_vetor(int vetor[], int tamanho);
// função principal do programa
int main(int argc, char *argv[]){
// cria um vetor com 5 inteiros
int valores[] = {54, 3, 89, 6, 1};
setlocale(LC_ALL,""); // para acentos do português
// passa o vetor para a função exibir_vetor()
// veja que temos que enviar também a quantidade
// de elementos
exibir_vetor(valores, 5);
printf("\n\n");
system("PAUSE");
return 0;
}
// função que recebe o array e exibe os seus elementos
void exibir_vetor(int vetor[], int tamanho){
int i;
printf("Os elementos do vetor são:\n\n");
for(i = 0; i < tamanho; i++){
printf("%d ", vetor[i]);
}
}
Ao executar este código C nós teremos o seguinte resultado: Os elementos do vetor são: 54 3 89 6 1 |
QGIS ::: PyQGIS API ::: Aplicações com código fonte completo |
Como listar os 5 municípios goianos com maior área em uma camada do QGIS usando PyQGIS - Código Python completoQuantidade de visualizações: 618 vezes |
|
Este código completo mostra uma aplicação QGIS na qual usei PyQGIS para resolver um desafio muito interessante, e complexo. Acredito que servirá de base para muitos códigos interessantes envolvendo QGIS, Python e PyQGIS. Comecei fazendo o download do shapefile do Estado de Goiás, contendo seus 246 municípios no site do IBGE. Em seguida carreguei o shapefile no QGIS usando um objeto QgsVectorLayer. Note que criei uma classe Municipio para guardar cada um dos municípios encontrados no shapefile. E, para agrupar os objetos da classe Municipio eu criei uma lista chamada municipios. Para acessar cada um dos municipios, ou seja, cada uma das 246 feições da camada, eu usei a função getFeatures() da classe QgsVectorLayer. Então, ao percorrer cada uma dessas feições, eu obtive seus atributos, por meio da função attributes(), e os usei para criar os objetos da classe Municipio. Uma vez obtida a lista de municípios, o passo seguinte foi classificar a lista por ordem crescente de área (a área dos municípios). Um laço for me permitiu listar apenas os 5 municípios com maiores áreas e, além de registrar o somatório de seus áreas, obter os seus códigos para selecioná-los na camada, usando a função selectByExpression(). O desafio final foi mostrar as labels, ou seja, os rótulos de cada um dos municípios no mapa do QGIS, porém, eu queria mostrar os rótulos apenas dos 5 municípios com as maiores áreas. Para resolver o desafio, lancei mão da função setFilterExpression(). Veja o código completo para o exemplo:
# uma classe para guardar cada um dos municípios
# do Estado de Goiás
class Municipio:
# método construtor
def __init__(self, codigo, nome, estado, area):
self.codigo = codigo
self.nome = nome
self.estado = estado
self.area = area
# para guardar os municípios
municipios = []
# vamos criar um novo objeto QgsVectorLayer com o local
# do nosso shapefile
camada = QgsVectorLayer("C:\\GOIAS\\GO_Municipios_2022.shp",
"Municípios do Estado de Goiás", "ogr")
# vamos testar se a camada é válida
if not camada.isValid():
print("Não foi possível carregar a camada %s" % camada.name())
else:
# vamos percorrer todas as feições da camada
# e obter os seus atributos
feicoes = camada.getFeatures()
for f in feicoes:
# vamos obter os atributos desta feição
atributos = f.attributes()
# e criamos um novo objeto da classe Municipio
municipio = Municipio(atributos[0], atributos[1],
atributos[2], atributos[3])
# adicionamos este município na lista
municipios.append(municipio)
# agora vamos ordenar a lista por área da maior para
# a menor
municipios = sorted(municipios,
key=lambda municipio:municipio.area, reverse=True)
# vamos adicionar a camada à relação de camadas
QgsProject.instance().addMapLayer(camada)
# vamos calcular a área ocupada pelos 5 maiores municípios
# do Estado de Goiás
area_5_maiores = 0
for i in range(5):
area_5_maiores = area_5_maiores + municipios[i].area
# agora vamos selecionar os 5 maiores municípios na
# camada do QGIS
codigos = ""
for i in range(5):
codigos = codigos + municipios[i].codigo + ", "
codigos = codigos[0:len(codigos) - 2]
camada.selectByExpression('"CD_MUN" IN (' + codigos + ')')
# e mostramos os resultados
print("Os 5 maiores municípios do Estado de Goiás são:\n")
for i in range(5):
print("{0}) {1} - Área: {2} km2".format(i + 1, municipios[i].nome,
municipios[i].area))
print("\nÁrea ocupada pelos 5 maiores municípios: {0} km2".format(
area_5_maiores))
# finalmente vamos exibir os nomes dos municípios. Essa foi
# a parte mais desafiadora do código, pois eu queria mostrar
# somente os rótulos dos cinco maiores municípios
settings = QgsPalLayerSettings()
settings.isExpression = True
settings.placement = QgsPalLayerSettings.Line
settings.placement = QgsPalLayerSettings.Horizontal
# mostra o nome do município
settings.fieldName = "NM_MUN"
format = QgsTextFormat()
format.setColor(QColor('Black'))
settings.setFormat(format)
settings.enabled = True
# cria e adiciona uma nova regra
root = QgsRuleBasedLabeling.Rule(QgsPalLayerSettings())
rule = QgsRuleBasedLabeling.Rule(settings)
rule.setDescription("5 Maiores Municípios do Estado de Goiás")
# define o campo que será usado no filtro. Note que somente
# serão listados os rótulos dos municípios com área maior ou
# igual ao quinto elemento da lista municípios
campo_area = "AREA_KM2"
rule.setFilterExpression(f"\"{campo_area}\" >= {municipios[4].area}")
root.appendChild(rule)
# define as configurações do rótulo
camada.setLabelsEnabled(True)
rules = QgsRuleBasedLabeling(root)
camada.setLabeling(rules)
# redesenha a camada no canvas do QGIS
camada.triggerRepaint()
Ao executar este código QGIS, Python e PyQGIS nós teremos o seguinte resultado: Os 5 maiores municípios do Estado de Goiás são: 1) Niquelândia - Área: 9846.293 km2 2) Mineiros - Área: 9042.844 km2 3) Caiapônia - Área: 8627.961 km2 4) Rio Verde - Área: 8374.255 km2 5) Nova Crixás - Área: 7308.681 km2 Área ocupada pelos 5 maiores municípios: 43200.03399999999 km2 Para fins de compatibilidade este código foi escrito e testado no QGIS 3.34.5-Prizren. |
Python ::: Dicas & Truques ::: Strings e Caracteres |
Como substituir partes de uma palavra, frase ou texto em Python usando a função replace() do objeto StringQuantidade de visualizações: 2035 vezes |
Em várias ocasiões nós precisamos efetuar a substituição de substrings em uma string. Para isso nós podemos usar o método replace() da linguagem Python. Esta função possui a seguinte assinatura:string.replace(oldvalue, newvalue, count) onde oldvalue é trecho da string a ser substituído, newvalue é o valor que substituirá o valor antigo e count é a quantidade de substituições. Na ausência do terceiro argumento, TODAS as ocorrências da substring pesquisada serão substituídas. Veja um exemplo no qual substituímos todas as ocorrências de "Java" por "Python" em uma frase:
def main():
# frase original
original = "Gosto de Java porque Java é fácil"
print("Frase original:", original)
# vamos substituir "Java" por "Python"
nova_frase = original.replace("Java", "Python")
print("Após a substituição:", nova_frase)
if __name__== "__main__":
main()
Ao executarmos este código Python nós teremos o seguinte resultado: Frase original: Gosto de Java porque Java é fácil Após a substituição: Gosto de Python porque Python é fácil |
GNU Octave ::: Dicas & Truques ::: Trigonometria - Funções Trigonométricas |
Como calcular o cosseno de um ângulo em GNU Octave usando a função cos() - Calculadora de cosseno em OctaveQuantidade de visualizações: 3095 vezes |
|
Em geral, quando falamos de cosseno, estamos falando do triângulo retângulo de Pitágoras (Teorema de Pitágoras). A verdade é que podemos usar a função cosseno disponível nas linguagens de programação para calcular o cosseno de qualquer número, mesmo nossas aplicações não tendo nenhuma relação com trigonometria. No entanto, é sempre importante entender o que é a função cosseno. Veja a seguinte imagem: ![]() Veja que temos um triângulo retângulo com as medidas já calculadas para a hipotenusa e os dois catetos, assim como os ângulos entre eles. Assim, o cosseno é a razão entre o cateto adjascente e a hipotenusa, ou seja, o cateto adjascente dividido pela hipotenusa. Veja a fórmula: \[\text{Cosseno} = \frac{\text{Cateto adjascente}}{\text{Hipotenusa}} \] Então, se dividirmos 30 por 36.056 (na figura eu arredondei) nós teremos 0.8320, que é a razão entre o cateto adjascente e a hipotenusa (em radianos). Agora, experimente calcular o arco-cosseno de 0.8320. O resultado será 0.5881 (em radianos). Convertendo 0.5881 radianos para graus, nós obtemos 33.69º, que é exatamente o ângulo em graus entre o cateto adjascente e a hipotenusa na figura acima. Pronto! Agora que já sabemos o que é cosseno na trigonometria, vamos entender mais sobre a função cos() da linguagem GNU Octave (script do GNU Octave). Esta função, já embutida na linguagem, recebe um valor numérico double e retorna um valor double, ou seja, também numérico) entre -1 até 1 (ambos inclusos). Veja:
# vamos calcular o cosseno de três números
fprintf("Cosseno de 0 = %f\n", cos(0))
fprintf("Cosseno de 1 = %f\n", cos(1))
fprintf("Cosseno de 2 = %f\n", cos(2))
Ao executar este código GNU Octave nós teremos o seguinte resultado: Cosseno de 0 = 1.000000 Cosseno de 1 = 0.540302 Cosseno de 2 = -0.416147 Note que calculamos os cossenos dos valores 0, 1 e 2. Observe como os resultados conferem com a curva da função cosseno mostrada abaixo: ![]() |
C++ ::: Desafios e Lista de Exercícios Resolvidos ::: Laços de Repetição |
Exercício Resolvido de C++ - Escreva um programa em C++ para ler dois números inteiros M e N e, a seguir, imprimir os números paresQuantidade de visualizações: 789 vezes |
|
Pergunta/Tarefa: Escreva um programa em C++ para ler dois números inteiros M e N e, a seguir, imprimir os números pares existentes no intervalo [M, N] e imprimir a multiplicação desses números (os pares). Observe que os valores M e N devem ser fornecidos pelo usuário. Nota: por se tratar de intervalo fechado [M, N], os números M e N devem ser incluídos na amostra. Além disso, seu código deve assegurar que M seja menor que N. Sua saída deverá ser parecida com: Informe o valor de M: 3 Informe o valor de N: 9 Números pares no intervalo [M, N]: 4, 6, 8, Multiplicação dos números pares no intervalo [M, N]: 192 Veja a resolução comentada deste exercício em C++:
#include <string>
#include <iostream>
using namespace std;
int main(int argc, char *argv[]){
// variáveis usadas na resolução do problema
int m, n, i, multiplicacao = 1;
// vamos pedir para o usuário informar os valores de M e N
cout << "Informe o valor de M: ";
cin >> m;
cout << "Informe o valor de N: ";
cin >> n;
// M é menor que N?
if(m >= n){
cout << "M deve ser menor que N";
}
else{
// mostra os números pares no intervalo
cout << "Números pares no intervalo [M, N]: ";
for(i = m; i <= n; i++){
if(i % 2 == 0){
cout << i << ", ";
// aproveitamos para calcular a multiplicação dos números
// pares no intervalo informado
multiplicacao = multiplicacao * i;
}
}
// mostramos a multiplicação
cout << "\nMultiplicação dos números pares no intervalo [M, N]: " <<
multiplicacao << endl;
}
cout << "\n\n";
system("PAUSE"); // pausa o programa
return EXIT_SUCCESS;
}
|
Mais Desafios de Programação e Exercícios e Algoritmos Resolvidos de C++ |
Veja mais Dicas e truques de C++ |
Dicas e truques de outras linguagens |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |








