- Criacao de classes 🔥 🔥
-
type TNomeClasse = class🔥 🔥
-
Atributos: NomeAtributo : Tipo (pode ser string, integer, etc...)🔥 🔥
-
Methods: procedure NomeDoMetodo, Lembrando que esse procedure ele é uma funcao que não tem retorno ou seja void🔥 🔥
-
no implementation inicializar os methods : 🔥 🔥
procedure TNomeClasse.NomeDoMetodo; begin end;
-
A unit é um local onde são agrupados as funções e os procedimentos de maneira que possam vir a ser utilizados pelo programa principal. Além dessas três partes, o código poderá ter a chamada initialization e finalization que são opcionais🔥 🔥
-
Unit exemplo:🔥 🔥
unit NomeDaUnit; interface uses NomeDaUnitQueQueiraUtilizar; type NomeClasse = (herancaDentroDosParenteses) procedure Metodo1; procedure Motodo2; end; implementation { NomeClasse } procedure TAdministrador.Metodo1; begin end; procedure TAdministrador.Motodo2; begin end; // initialization - opcional // finalization - opcional end.
-
( + ) Adição
( - ) Subtração
( * ) Multiplicação
( / ) Divisão de reais
( Div ) Divisão de inteiros
( Mod ) Resto da divisão de inteiros
1 - As operações envolvendo apenas números inteiros resultam sempre em um número inteiro. As operações envolvendo número inteiro com número real resulta sempre em um número real.
A atribuição de valores é feita usando os caracteres dois pontos e igual (:=).
Exemplos:
A := 5;
D := (a-b)/3;
Nome := 'Maria';
A esquerda deve estar apenas o nome da variável, enquanto que na direita podem estar constantes, variáveis ou expressões que correspondam ao tipo de dados armazenáveis na variável.
AND (E Lógico)
OR (OU Lógico)
NOT (NÃO Lógico)
2 - Os operadores lógicos ou operadores booleanos são utilizados quando é necessário trabalhar com o relacionamento de duas ou mais condições ao mesmo tempo, dentro de um if ou dentro de uma estrutura de teste de um loop.
( > ) Maior que
( < ) Menor que
( >= ) Maior ou igual a
( <= ) Menor ou igual a
( = ) Igual a
( <> ) Diferente de
// Linha de Comentário
{} Texto de Comentário - várias linhas
if
if (condição) then
begin
{Bloco de comandos executados se a condição for verdadeira}
end
else
begin
{Bloco de comandos executados se a condição for falsa}
end;
If encadiado
if (condição) then
begin
{Bloco de comandos executados se a condição for verdadeira}
end
else if (condição) then
begin
{Bloco de comandos executados se a primeira condição for falsa e está condicao for verdadeira}
end
else
begin
{Bloco de comandos executados se a condição for falsa}
end;
begin e o end são opcionais case ouver uma unica instrução de codigo
if (condição) then
{comando executado se a condição for verdadeira}
else
{comando executado se a condição for falsa};
if not then
if not (false) then
begin
{Bloco de comandos executados se a condição for verdadeira}
end
else
begin
{Bloco de comandos executados se a condição for falsa}
end;
case of
var
NumeroEscolhido: Integer;
RespostaMenssage: String;
begin
NumeroEscolhido := StrToInt(edtNumeroEscolhido.Text);
case NumeroEscolhido of
1..5: begin // 1 a 5
Memo1.Clear;
Memo1.Lines.Add('Semana padrão')
end;
6: begin
Memo1.Clear;
Memo1.Lines.Add('Sabado!!')
end;
7: begin
Memo1.Clear;
Memo1.Lines.Add('Domingo!!!')
end;
else
ShowMessage('Semana invalida');
end;
end;
O with é como se fosse um comando de leitura e pode ser usado assim:
with Query1 do
begin
Close;
SQL.CLear;
SQL.Add(´Select * from CLientes´);
Open;
end;
do contario vc teria que fazer assim:
Query1.Close;
Query1.SQL.CLear;
Query1.SQL.Add(´Select * from CLientes´);
Query1.Open;
para varrer e setar propriedades dos componentes.
-
Uso sem with num memo
memo1.clear; memo1.loadfromfile(''); memo1.lines.add('teste1');
-
Uso com with num memo
with memo1 do begin clear; loadfromfile(''); lines.add('teste1'); end;
for - to - crescente
var I : Integer;
begin
for I := 0 to 100 do
begin
{Bloco a ser executado até o fim do loop}
end;
end;
for - DownTo - decrecente
var I : Integer;
begin
for I := 100 DownTo 0 do
begin
{Bloco a ser executado até o fim do loop}
end;
end;
While do
var
i : Integer;
message: String;
begin
i := 0;
while i < 10 do
begin
if (i mod 2 = 0) then
begin
message := 'O valor ' + i.ToString() + ' é par! ';
ListBox1.Items.Add(message);
inc(i);
end
else
begin
message := 'O valor ' + i.ToString() + ' é Impar! ';
ListBox1.Items.Add(message);
inc(i);
end;
end;
end;
repeat until
- obs :. Para quem vem de outras linguagens o reapeat until seria o mesmo que : do while
outras linguagens:.
do {
// o bloco de comandos deve se executado pelo menos 1 vez
} while ( condicao );
// Se a condicao for verdadeira o bloco de codigo e repetido
Delphi :.
var
i : Integer;
message: String;
begin
i := 0;
repeat
// o bloco de comandos deve se executado pelo menos 1 vez
if (i mod 2 = 0) then
begin
message := 'O valor ' + i.ToString() + ' é par! ';
ListBox1.Items.Add(message);
inc(i);
end
else
begin
message := 'O valor ' + i.ToString() + ' é Impar! ';
ListBox1.Items.Add(message);
inc(i);
end;
until ( i > 10 ); //condicao false o bloco é executado novamente
// Preste atencao enquanto o codigo for false ele continua a execucao
// 😏 é diferente do tradicional do while que enquanto for verdade o codigo repete
end;
A sintaxe base de uma matriz é bastante simples. Basta definir o nome da variável, o tamanho e o tipo de seus elementos:
var
MinhaMatrizInt: array [0..5] of Integer;
MinhaMatrizString: array [0..7] of String;
MinhaMatrizDouble: array [0..9] of Double;
MinhaMatrizDinamica: array of integer;
Quando uma matriz estática é declarada, os valores de cada elemento assumem valores aleatórios vindos da memória. É possível acessa-los através de seus respectivos índices. Declarar uma matriz estática só é recomendável quando se há certeza de que todos os elementos serão utilizados, pois cada elemento ocupa espaço na memória e isso pode ser bastante problemático em métodos com recursividade ou loops encadeados.
Uma matriz pode conter elementos que também são matrizes. Isso é vantajoso quando existe a necessidade de armazenar informações que seguem o estilo [x, y]
procedure TForm1.Exemplo2;
var
MatrizMulti: array [0..3] of array [0..1] of integer;
OutraMatrizMulti: array [0..5, 0..1] of integer; //Declaração alternativa.
MinhaMatrizDinamica: array of array of integer;
begin
MatrizMulti[0][0] := 5;
MatrizMulti[0][1] := 10;
MatrizMulti[1][0] := 15;
MatrizMulti[1][1] := 20;
MatrizMulti[2][0] := 25;
MatrizMulti[2][1] := 30;
MatrizMulti[3][0] := 35;
MatrizMulti[3][1] := 40;
ShowMessage(SizeOf(MatrizMulti).ToString);
end;
Na maioria dos casos trabalharemos com matrizes dinâmicas que precisam aumentar ou diminuir conforme a necessidade do método um exe :.
private
Vetor: Array of Integer;
Matriz: Array of Array of Integer;
tamnaho: Integer;
procedure TForm1.Button1Click(Sender: TObject);
var
i, j : Integer; // Index do for
s: String; // para armazenar uma messagem
begin
tamanho := StrToInt(edtTamanho.Text); // pegar o valor do Edit e passar ele para int
mmoResultado.Lines.Clear; // apagar as linhas do Memo
Randomize; // avisar ao compilador que vamos utilizar um comando Random
if rdgTipoArray.ItemIndex = -1 then // radio não selecionado
begin
ShowMessage('Escolha um tipo de Array/Matriz para obter um resultado!!');
Abort; // nao permite que os demais comandos abaixo sejem chamados.
end;
if rdgTipoArray.ItemIndex = 0 then // radio selecionado
begin
SetLength(Vetor, tamanho); // Cria o vetor Dinamicamente
mmoResultado.Lines.Clear; // apagar as linhas do Memo
for i := Low(Vetor) to High(Vetor) do
begin
Vetor[i] := Random(100);
mmoResultado.Lines.Add(Format('Vetor[%2d] = %2d',[i, vetor[i]]));
end;
end
else
begin
setLength(Matriz, tamanho); // Criar uma matriz Dinamicamente
mmoResultado.Lines.Clear; // apagar as linhas do Memo
for i := Low(Matriz) to High(Matriz) do
begin
s := Format('%2da. linha = ',[i + 1]);
// seta o tamanho da linha
setLength(Matriz[i], tamanho);
for j := Low(Matriz[i]) to High(Matriz[i]) do
begin
Matriz[i, j] := Random(100); // Matriz[0 -> col , 0 -> linha] := numeroAleatorio
s := s + Format('%2d ', [Matriz[i,j]]);
end;
mmoResultado.Lines.Add(s); // mostra no Memo o resultado
end;
end;
end;