Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

henry1

Entendendo uma procedure simples !!!!!

Recommended Posts

Olá Pessoal !!

Sou novo aqui no Fórum e estou começando a aprender Delphi !!!

Peço ajuda dos feras aqui e gostaria de saber para que servem

as letras (não achei definição melhor) em vermelho:

 

 

procedure ContaDigitos (S: String; var N: Integer);

var

I: Integer;

begin

N:= 0;

for I := 1 to Length(S) do

if S[I] in ['0'..'9'] then

Inc(N);

end;

 

 

Obrigado !!!!!!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

é o seguinte:este procedimento recebe duas variáveis como parâmetro:'S' como valor e 'N' por referência.Entaum se cria a variavel 'I', sendo do tipo inteiro;Dá o valor de 0 a variavel 'N', que veio como parâmetroEntra num loop que vai de 1 até o tamanho da string 'S' que veio como parâmetroEntaum verifica se alguma posicao da string e um numero de 0 a 9.Se for entaum ele incrementa a variavel 'N', dando o valor que ela tinha +1;Qualquer dúvida post de novo!falow!kartter

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu Kartter !!As coisas estão clareando, mas ainda to com algumas dúvidas !!!O tamanho da string 'S' em length, é o valor do ultimo caracter ou da soma de todos eles?Cada passada em for se soma 1 no "I" ?em if o "I" e usado como um indice indicando uma hora o primeiro caracter depois o segundo e assim por diante ?Obrigado !!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

o lenght conta o tamanho da letra pela seguinte lógicaex: Palavra => P = 0 , a = 1 , l = 2 , a = 3 , v = 4 , r = 5 , a = 6Logo, no seu exemplo, o for I:= 1 to Lenght(S) , vai resultar em um loop de 1 à 6 ( se usar como exemplo a 'Palavra' )No seu exemplo está incorreto, pois o I deveria contar à partir do 0 e não do 1Toda vez q ele fecha o FOR, ele conta +1 na variável que você está usando como contador ( no seu caso, o I )Corrijam-me se eu estiver errado =)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá !!

Ultra, na minha opnião depois de refletir sua resposta

acredito que você está certo, apenas penso que no:

for I := 1 to Length(S) do

Pode-se começar com 1 sem problemas !!

Uma ultima duvida, na linha:

 

if S in ['0'..'9'] then

 

o "S" significa o valor do string que no seu exemplo seria "palavra" ?

o "I" funciona no "S" percorrendo todo os caracteres da string "palavra" ?

 

 

Valeu !!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom..... no caso do seu exemplo, se você começar o I sendo 1, você irá pular a primeira linha, pois no lenght o primeiro caractere é de valor 0

 

Vamos ao caso:

 

procedure ContaDigitos (S: String; var N: Integer);

var

I: Integer;

begin

N:= 0;

for I := 1 to Length(S) do

if S in ['0'..'9'] then

Inc(N);

end;

 

Oq irá acontecer aí em cima: ao chamar a procedure ContaDigitos(), o código vai receber o valor S por uma palavra, exemplo 'palavra'

 

Ao primeiro FOR, se caso seja 1, vou traduzir como ficará:

---------

Para I é 1 até N° de letras da 'palavra' faça

Se 'palavra'[letra posição I] está contido entre [0 à 9] então

Adiciona à N

fim

---------

logo, ao primeiro FOR, ele dirá q o I é 1, e mandará puxar da letra posição 1(no caso, é a segunda)

===================

S ==== S(palavra) (posição)

 

Mais uma vez, se eu estiver errado, me corrijam ! =)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Thanks !!!!!" Para I é 1 até N° de letras da 'palavra' façaSe 'palavra'[letra posição I] está contido entre [0 à 9] entãoAdiciona à Nfim "O que irá ser adicionado a N será o "valor 7" correspondente a sete caracteres de(palavra) ?Valeu !!!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

nao nao, N é Integer, e alí está declarado como N:= 0....... ele acrescentará +1 ao N, oque torna a procedure conta digitos correta =)AbraçosULTRA

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá !!!ex: Palavra => P = 0 , a = 1 , l = 2 , a = 3 , v = 4 , r = 5 , a = 6Então independente de quantos caracteres ele achar será somente acrescentado o valor mais 1 a "N" ??Thanks !!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, à cada caractere que ele achar, irá acrescentar +1 à Nportanto, se a palavra for "carro", ele irá rodar o FOR 5 vezes ( no seu exemplo vai ser 4, pois o For I está incorreto como 1 )

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oopa..E æ, estava lendo essa pekena discução.......mas fiquei sem entender...como eu coloco essa procedure pra funcionar...suponhamos qu eu queira que o meu código seja incrementado ....entaum eu usaria essa variável ?se sim, como eu a colocaria no meu dbcodigo?se n]ao como que eu faria isto entaum?vlw..fui.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oopa..

E æ, estava lendo essa pekena discução.......mas fiquei sem entender...como eu coloco essa procedure pra funcionar...suponhamos qu eu queira que o meu código seja incrementado ....entaum eu usaria essa variável ?

se sim, como eu a colocaria no meu dbcodigo?

se n]ao como que eu faria isto entaum?

 

 

vlw..

 

 

 

fui.

Oi Rodrigo

 

É simples..... basta no seu projeto você chamar pelo nome da procedure. Exemplo:

 

procedure Form.ContaDigitos (S: String; var N: Integer);varI: Integer;beginN:= 0;for I := 1 to Length(S) doif S[I] in ['0'..'9'] thenInc(N);end;
Basta escrever no projeto:

ContaDigitos (S,N);

 

Sendo S - String, e N - Integer

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.