GoLang ::: Fundamentos da Linguagem ::: Laços de Repetição |
Como usar o laço for em GoLang - O laço for da linguagem GoQuantidade de visualizações: 1171 vezes |
|
Como todas (ou praticamente todas) as linguagens de programação, a GoLang também possui o seu laço for, ou loop for. Este laço é usado para repetir uma ou mais instruções quando sabemos exatamente quantas vezes essa repetição ocorrerá. Em Go, o laço for é composto de três partes: inicialização, teste de continuidade e incremento ou decremento da variável de controle. Na parte da inicialização nós declaramos e inicializamos as variáveis que serão usadas dentro da estrutura. O teste de continuidade é a parte na qual verificamos se o laço deverá continuar repetindo ou encerrar. Finalmente, a parte de incremento ou decremento é usada para ajustarmos a variável de controle do laço. Veja, por exemplo, como escrever um laço for em GoLang que contará de 1 até 10, escrevendo os números na tela:
// pacote principal
package main
// vamos importar o módulo de formatação de
// entrada e saída
import "fmt"
// esta é a função principal do programa
func main() {
for i := 1; i <= 10; i++ {
fmt.Printf("%d ", i)
}
}
Ao executar este código Go nós teremos o seguinte resultado: 1 2 3 4 5 6 7 8 9 10 O laço for da linguagem GoLang nos permite omitir as partes da inicialização e de incremento ou decremento, embora esse tipo de código não seja muito usual. Veja um trecho de código no qual usamos o laço for da linguagem Go para contar de 10 até 0 (omitindo a parte da inicialização da variável de controle):
// pacote principal
package main
// vamos importar o módulo de formatação de
// entrada e saída
import "fmt"
// esta é a função principal do programa
func main() {
i := 10 // definimos o valor inicial aqui
for ; i >= 0; i-- {
fmt.Printf("%d ", i)
}
}
Ao executarmos este código Go nós teremos o seguinte resultado: 10 9 8 7 6 5 4 3 2 1 0 Veja, agora, uma modificação do código acima. Desta vez eu omiti a parte de incremento ou decremento da variável de controle:
// pacote principal
package main
// vamos importar o módulo de formatação de
// entrada e saída
import "fmt"
// esta é a função principal do programa
func main() {
for i := 10; i >= 0; {
fmt.Printf("%d ", i)
i--
}
}
|
Python ::: PyQt GUI Toolkit ::: QPushButton |
Como criar um botão em Python PyQt usando a classe QPushButtonQuantidade de visualizações: 1404 vezes |
Os botões QPushButton são os controles mais básicos e comuns em aplicações GUI PyQt. Eles são criados a partir da classe QPushButton. Veja a sua posição na hierarquia de classes dos PyQt:
QObject, QPaintDevice
QWidget
QAbstractButton
QPushButton
QCommandLinkButton
Veja um trecho de código no qual criamos um botão QPushButton e o colocamos em uma janela QWidget:
# vamos importar os módulos necessários
import sys
from PyQt6.QtCore import *
from PyQt6.QtGui import *
from PyQt6.QtWidgets import *
# método que mostrará a janela principal
def mostrar_janela_principal():
# cria uma instância da classe QApplication
app = QApplication(sys.argv)
# criamos a janela principal
janela = QWidget()
# definimos o título da janela
janela.setWindowTitle("Cadastro de Clientes")
# definimos as coordenadas e as dimensões da janela
janela.setGeometry(100, 100, 500, 300)
# vamos criar um botão QPushButton
botao = QPushButton("Cadastrar", janela)
# definimos a localização do botão
botao.move(10, 10)
# tornamos a janela visível
janela.show()
# e executamos a aplicação
sys.exit(app.exec())
if __name__== "__main__":
mostrar_janela_principal()
Ao executar este código Python PyQt nós teremos o seguinte resultado: ![]() |
MySQL ::: Dicas & Truques ::: Chaves, Índices e Restrições de Integridade Referencial |
Como criar chaves primárias compostas em uma tabela do MySQLQuantidade de visualizações: 2038 vezes |
|
Sabemos que o uso do atributo PRIMARY KEY (PK) permite marcar um campo de uma tabela MySQL como chave primária. Assim, este campo não poderá ter valores repetidos nem conter o valor NULL. Há, no entanto, situações nas quais precisamos marcar mais de um campo como chave primária, ou seja, a chave primária é composta de dois ou mais campos. Estas situações surgem nos cenários em que temos relacionamentos N x N (muitos para muitos) e uma tabela associativa que represente o relacionamento. Um exemplo disso é a relação autor-livro: um autor pode escrever vários livros e um livro pode ser escrito por mais um autor (vários autores em conjunto). Mas, o mesmo autor não pode aparecer no mesmo livro mais de uma vez. Vamos representar isso passo-a-passo. Comece criando a tabela autores. Veja o comando CREATE TABLE completo para esta tarefa: CREATE TABLE autores( id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, nome VARCHAR(45) NOT NULL, email VARCHAR(45) NOT NULL, PRIMARY KEY(id) ) ENGINE = InnoDB; Este comando CREATE TABLE vai gerar a seguinte estrutura: Field Type Null Key Default Extra id int(10) unsigned NO PRI - auto_increment nome varchar(45) NO - email varchar(45) NO - Vamos agora criar a tabela livros. Veja o comando CREATE TABLE completo: CREATE TABLE livros( id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, titulo VARCHAR(45) NOT NULL, paginas INTEGER UNSIGNED NOT NULL, PRIMARY KEY (id) ) ENGINE = InnoDB; Este comando CREATE TABLE vai gerar a seguinte estrutura: Field Type Null Key Default Extra id int(10) unsigned NO PRI - auto_increment titulo varchar(45) NO - paginas int(10) unsigned NO - CREATE TABLE autores_livros( id_autor int(10) unsigned NOT NULL, id_livro int(10) unsigned NOT NULL, PRIMARY KEY(id_autor,id_livro), KEY FK_autores_livros_2(id_livro), CONSTRAINT FK_autores_livros_2 FOREIGN KEY(id_livro) REFERENCES livros(id), CONSTRAINT FK_autores_livros_1 FOREIGN KEY(id_autor) REFERENCES autores(id) ) ENGINE=InnoDB Este comando CREATE TABLE vai gerar a seguinte estrutura: Field Type Null Key Default Extra id_autor int(10) unsigned NO PRI - - id_livro int(10) unsigned NO PRI - - Agora experimente inserir dados nas tabelas autores e livros. Em seguida faça o relaciomento na tabela autores_livros. Tente repetir o id do autor para o mesmo livro. Imediatamente o MySQL recusará a inserção com a mensagem de erro: Error 1062: Duplicate entry '2-2' for key 1 E, como usamos chaves estrangeiras na tabela autores_livros, ao tentarmos excluir um livro já relacionado com um autor, teremos a seguinte mensagem de erro: Cannot delete or update a parent row: a foreign key constraint fails (`estudos/autores_livros`, CONSTRAINT `FK_autores_livros_2` FOREIGN KEY (`id_livro`) REFERENCES `livros` (`id`)) Veja mais dicas nesta seção para aprender mais sobre chaves estrangeiras e restrições de integridade referencial. |
C ::: Dicas & Truques ::: Ponteiros, Referências e Memória |
Como alocar memória dinâmica em C usando a função malloc()Quantidade de visualizações: 29502 vezes |
A função malloc() é usada em C para alocarmos um bloco de memória. Esta função recebe a quantidade de bytes a serem alocados e retorna um ponteiro do tipo void (genérico) para o início do bloco de memória obtido. Veja sua assinatura:void *malloc(size_t size); Se a memória não puder se alocada, um ponteiro nulo (NULL) será retornado. É importante se lembrar de alguns conceitos antes de usar esta função. Suponhamos que você queira alocar memória para um inteiro. Você poderia ter algo assim: // aloca memória para um int ponteiro = malloc(4); Embora este código esteja correto, não é um boa idéia assumir que um inteiro terá sempre 4 bytes. Desta forma, é melhor usar o operador sizeof() para obter a quantidade de bytes em um inteiro em uma determinada arquitetura. Veja: // aloca memória para um int ponteiro = malloc(sizeof(int)); Eis o código completo para um aplicativo C que mostra como alocar memória para um inteiro e depois atribuir e obter o valor armazenado no bloco de memória alocado:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
// ponteiro para uma variável do tipo inteiro
int *ponteiro;
// aloca memória para um int
ponteiro = malloc(sizeof(int));
// testa se a memória foi alocada com sucesso
if(ponteiro)
printf("Memoria alocada com sucesso.\n");
else
printf("Nao foi possivel alocar a memoria.\n");
// atribui valor à memória alocada
*ponteiro = 45;
// obtém o valor atribuído
printf("Valor: %d\n\n", *ponteiro);
// libera a memória
free(ponteiro);
system("PAUSE");
return 0;
}
Uma aplicação interessante da função malloc() é quando precisamos construir uma matriz dinâmica. Veja como isso é feito no código abaixo:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int i;
// quantidade de elementos na matriz
int quant = 10;
// ponteiro para o bloco de memória
int *ponteiro;
// aloca memória para uma matriz de inteiros
ponteiro = malloc(quant * sizeof(int));
// testa se a memória foi alocada com sucesso
if(ponteiro)
printf("Memoria alocada com sucesso.\n");
else{
printf("Nao foi possivel alocar a memoria.\n");
exit(1);
}
// atribui valores aos elementos do array
for(i = 0; i < quant; i++){
ponteiro[i] = i * 2;
}
// exibe os valores
for(i = 0; i < quant; i++){
printf("%d ", ponteiro[i]);
}
// libera a memória
free(ponteiro);
printf("\n\n");
system("PAUSE");
return 0;
}
|
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 |







