Conceitos Básicos de Programação Simplificados
Aprenda termos e ideias essenciais de programação em uma linguagem simples.
― 5 min ler
Índice
- O que é uma Variável?
- Usando Constantes
- Listas e Arrays
- Funções e Procedimentos
- O que é uma Função?
- O que é um Procedimento?
- Entendendo Tipos de Dados
- Estruturas de Controle
- If Statements
- Loops
- Tratamento de Erros
- Try e Catch
- Algoritmos
- Exemplo de um Algoritmo Simples
- Estruturas de Dados
- Estruturas de Dados Comuns
- Conclusão
- Fonte original
- Ligações de referência
No mundo da programação, existem algumas ideias e termos básicos que ajudam a gente a escrever e entender código melhor. Este artigo tem como objetivo explicar alguns desses conceitos de forma simples.
O que é uma Variável?
Uma variável é como um recipiente que guarda dados. Pense nisso como uma caixa onde você pode armazenar coisas diferentes. Você pode dar um nome pra caixa pra conseguir encontrá-la mais fácil depois. Por exemplo, se você quer acompanhar quantas maçãs você tem, pode criar uma variável chamada maçãs
e definir ela como um número tipo 5
.
Constantes
UsandoUma constante é parecida com uma variável, mas depois que você define seu valor, não dá pra mudar. Isso é útil quando você tem um valor que deve permanecer o mesmo durante o seu programa. Por exemplo, se você quer definir o número de dias em uma semana, poderia usar uma constante chamada DIAS_EM_UMA_SEMANA
e definir ela como 7
.
Listas e Arrays
Às vezes, você precisa armazenar várias informações juntas. É aí que entram as listas e arrays. Elas permitem que você mantenha uma coleção de itens sob um único nome. Por exemplo, você poderia ter uma lista de frutas como frutas = [‘maçã’, ‘banana’, ‘laranja’]
.
Funções e Procedimentos
Funções e procedimentos são blocos de código que realizam uma tarefa específica. Você pode pensar neles como receitas que dizem ao programa o que fazer. Quando você quer usar uma função ou procedimento, é só chamá-lo pelo nome.
O que é uma Função?
Uma função geralmente recebe alguma entrada, faz algo com isso e depois dá um resultado de volta. Por exemplo, você pode ter uma função chamada adicionarNumeros
que pega dois números, soma eles e depois retorna a soma.
O que é um Procedimento?
Um procedimento é parecido, mas pode não retornar um valor. Ele realiza uma ação, mas não devolve nada. Por exemplo, você pode ter um procedimento que imprime uma mensagem de boas-vindas na tela.
Tipos de Dados
EntendendoOs tipos de dados são categorias que nos dizem que tipo de dado estamos trabalhando. Tipos de dados comuns incluem:
- Inteiros: Números inteiros como
1
,2
ou100
. - Floats: Números decimais como
3.14
ou0.5
. - Strings: Texto entre aspas, como
"Olá"
ou"Mundo"
. - Booleanos: Valores verdadeiro ou falso, como
true
oufalse
.
Cada tipo de dado serve a um propósito diferente e ajuda o programa a saber como lidar com os valores.
Estruturas de Controle
As estruturas de controle nos permitem controlar o fluxo do nosso programa. Elas deixam a gente decidir o que fazer com base em certas condições.
If Statements
Uma instrução if verifica se uma condição é verdadeira ou falsa. Se for verdadeira, o programa faz uma coisa; se for falsa, pode fazer outra. Por exemplo:
if (numero > 10) {
print("Número é maior que 10")
} else {
print("Número é 10 ou menor")
}
Loops
Loops são usados pra repetir um bloco de código várias vezes. Existem diferentes tipos de loops, mas um comum é o for loop, que passa por uma lista ou intervalo de números.
for (i = 0; i < 5; i++) {
print(i)
}
Esse loop vai imprimir os números 0
a 4
.
Tratamento de Erros
Erros podem acontecer na programação, e é importante lidar com eles. O tratamento de erros é uma forma de gerenciar problemas pra que seu programa não quebre.
Try e Catch
Você pode usar um bloco try-catch pra tratar erros. O código tenta rodar o que está na seção try, e se acontecer um erro, ele vai pra seção catch pra lidar com o erro.
try {
// Código que pode causar um erro
} catch (erro) {
// Código pra lidar com o erro
}
Algoritmos
Um algoritmo é um conjunto de instruções passo a passo pra resolver um problema ou completar uma tarefa. Pense nisso como uma receita que diz exatamente o que fazer do início ao fim.
Exemplo de um Algoritmo Simples
Vamos supor que você quer encontrar o maior número em uma lista. Um algoritmo poderia ser assim:
- Comece com o primeiro número como o maior.
- Compare o maior número com cada número da lista.
- Se um número for maior, atualize o maior número.
- Depois que você checar todos os números, o maior número é sua resposta.
Estruturas de Dados
As estruturas de dados são formas de organizar e armazenar dados em um programa. Elas ajudam a manter nossos dados organizados e acessíveis.
Estruturas de Dados Comuns
- Arrays: Uma lista de itens de tamanho fixo.
- Listas Ligadas: Uma coleção de itens onde cada item aponta para o próximo.
- Árvores: Uma estrutura que se ramifica, com um item principal no topo e outros itens abaixo.
- Dicionários: Uma coleção de pares chave-valor, onde você pode procurar um valor com base na sua chave.
Conclusão
Programar pode parecer complicado no começo, mas dividindo em conceitos simples, fica mais fácil de entender. Compreender Variáveis, funções, estruturas de controle, algoritmos e estruturas de dados é fundamental pra escrever e entender código. Com esses básicos, qualquer um pode começar sua jornada na programação e, eventualmente, construir projetos mais complexos. A chave é ir passo a passo, praticar e não ter medo de cometer erros.
Título: Efficient Signature-Free Validated Agreement
Resumo: Byzantine agreement enables n processes to agree on a common L-bit value, despite up to t > 0 arbitrary failures. A long line of work has been dedicated to improving the bit complexity of Byzantine agreement in synchrony. This has culminated in COOL, an error-free (deterministically secure against a computationally unbounded adversary) solution that achieves O(nL + n^2 logn) worst-case bit complexity (which is optimal for L >= n logn according to the Dolev-Reischuk lower bound). COOL satisfies strong unanimity: if all correct processes propose the same value, only that value can be decided. Strong unanimity is, however, not sufficient for today's state machine replication (SMR) and blockchain protocols. These systems value progress and require a decided value to always be valid, excluding default decisions (such as EMPTY) even in cases where there is no unanimity a priori. Validated Byzantine agreement satisfies this property (called external validity). Yet, the best error-free (or even signature-free) validated agreement solutions achieve only O(n^2L) bit complexity, a far cry from the Omega(nL + n^2) Dolev-Reishcuk lower bound. In this paper, we present two new synchronous algorithms for validated Byzantine agreement, HashExt and ErrorFreeExt, with different trade-offs. Both algorithms are (1) signature-free, (2) optimally resilient (tolerate up to t < n / 3 failures), and (3) early-stopping (terminate in O(f+1) rounds, where f = n^2 kappa (where kappa is the size of a hash). On the other hand, ErrorFreeExt is error-free, using no cryptography whatsoever, and achieves O( (nL + n^2) logn ) bit complexity, which is near-optimal for any L.
Autores: Pierre Civit, Muhammad Ayaz Dzulfikar, Seth Gilbert, Rachid Guerraoui, Jovan Komatovic, Manuel Vidigueira, Igor Zablotchi
Última atualização: 2024-08-20 00:00:00
Idioma: English
Fonte URL: https://arxiv.org/abs/2403.08374
Fonte PDF: https://arxiv.org/pdf/2403.08374
Licença: https://creativecommons.org/licenses/by/4.0/
Alterações: Este resumo foi elaborado com a assistência da AI e pode conter imprecisões. Para obter informações exactas, consulte os documentos originais ligados aqui.
Obrigado ao arxiv pela utilização da sua interoperabilidade de acesso aberto.