Clipper On Line • Ver Tópico - Livro (e-book) Harbour

Livro (e-book) Harbour

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

 

Livro (e-book) Harbour

Mensagempor Vlademiro » 12 Ago 2016 13:33

Pessoal, estou escrevendo, nas horas vagas, um e-book sobre introdução a programação usando Harbour. O público alvo são os aprendizes que não tem experiência com linguagens de programação e ppessoas sem muito conhecimento técnico . Os usuários que tem experiência podem se beneficiar também pois eu estou tendo o cuidado de seguir toda a sequencia dos livros de programação. Em anexo tem o que fiz até agora.

O formato é bem acadêmico pois estou aproveitando um template em latex que usei para publicar uma monografia que eu fiz. Depois eu posto os fontes em latex no github para quem quiser acrescentar algo.

Introdução a programação com Harbour.pdf
(659.46 KiB) Baixado 350 vezes
Avatar de usuário

Vlademiro
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 222
Data de registro: 11 Jul 2005 02:46
Curtiu: 2 vezes
Mens.Curtidas: 17 vezes

Livro (e-book) Harbour

Mensagempor fladimir » 12 Ago 2016 19:33

Parabéns!!! com certeza é e será de grande valia...

Fiquei surpreso e lisongeado ao ver meu nickname nos agradecimentos em meio a tantos feras do fórum...

Eu / nós q agradecemos a toda comunidade q participa trocando idéias e contribuindo para o crescimento e compartilhamento do conhecimento.

[]´s
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


DESKTOP CONSOLE Harbour 3.4.0dev (4541270) (2016-06-28 07:05) | Console | MINGW | DBF | CDX | FastReport | MySQL
DESKTOP VISUAL... Harbour 3.2 | MinGW | Xailer 4.0.2 | MariaDB Nativo | Outros via ADO | FastReport
MOBILE Android/IOS e WEB - Outros
Avatar de usuário

fladimir
Colaborador

Colaborador
 
Mensagens: 2173
Data de registro: 15 Nov 2006 19:21
Curtiu: 16 vezes
Mens.Curtidas: 123 vezes

Livro (e-book) Harbour

Mensagempor Vlademiro » 14 Ago 2016 10:58

Criei um repositório no github com os fontes do e-book e com o PDF também.
Vou ficar atualizando por lá e notificando aqui pelo fórum.

https://github.com/vlademiro/ebook-harbour
Avatar de usuário

Vlademiro
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 222
Data de registro: 11 Jul 2005 02:46
Curtiu: 2 vezes
Mens.Curtidas: 17 vezes

Livro (e-book) Harbour

Mensagempor janio » 14 Ago 2016 13:34

Cara, Muuuito bom! Show! Parabéns1

Gosto muito dessa parte teórica pq com o passar dos anos a gente vai usando muita coisa sem ter um conhecimento 'adequado' da função ou comando. Até hj eu não sabia, por exemplo, a diferença entre FUNCTION e PROCEDURE.

Show

Jânio
(eterno aprendiz)
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Avatar de usuário

janio
Colaborador

Colaborador
 
Mensagens: 1688
Data de registro: 06 Jul 2004 07:43
Cidade/Estado: UBAJARA - CE
Curtiu: 7 vezes
Mens.Curtidas: 38 vezes

Livro (e-book) Harbour

Mensagempor Vlademiro » 14 Ago 2016 21:33

Bom saber que lhe ajudou. :)Pos

Eu tb estou aprendendo enquanto escrevo.
E, sendo bem sincero, já cometi erros grotescos por falta de teoria.
Não como esse seu que, no final das contas, é irrelevante.

Por exemplo, eu não sabia que a função SELECT é diferente do comando SELECT

Isso me causou algumas dores de cabeça, só porque eu não tinha me dedicado um pouco mais nas leituras.


FUNCTION MAIN()
LOCAL x

   USE BRW
   
   USE BRW_COL NEW
   
   SELE BRW
   x := SELECT( "BRW_COL" )
   ? x // A funçao SELECT retorna apenas o valor, mas não muda de área
   ? "A AREA ATUAL E ", ALIAS()
   
   SELECT ("BRW_COL") // O comando SELECT muda de área
   ? "A AREA ATUAL E ", ALIAS()
   
   // Apenas um espaço faz muita diferença SELECT( carea ) <> SELECT (carea)
   
   

RETURN NIL


Vivendo e aprendendo.
Avatar de usuário

Vlademiro
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 222
Data de registro: 11 Jul 2005 02:46
Curtiu: 2 vezes
Mens.Curtidas: 17 vezes

Livro (e-book) Harbour

Mensagempor JoséQuintas » 14 Ago 2016 21:56

Está bem didático, mas...
Vamos reclamar um pouquinho.... rs

Porque nos exemplos sempre define UTF-8 como codepage?

Tem exemplo com comando abreviado, isso é péssimo, porque exemplos costumam ser base pra outras coisas

Porque mostra parêntesis como sendo parte de PROCEDURE e mostra como equivalente a FUNCTION?
Não tem, por exemplo, isto:
PROCEDURE Main
   ? 5
   RETURN


Porque mostra exemplo de variáveis, e só depois fala sobre variáveis?

Porque mostra LOCAL x AS CHARACTER, se isso não é totalmente válido, pra não dizer que não serve pra nada?

Porque tem exemplo pra procurar erro de compilação que só ocorre se usar -w3 -es2, que talvez nem seja apresentado como erro?

Porque trata IF-ELSE-ELSEIF-ENDIF, e não faz o mesmo em DO CASE-CASE-OTHERWISE-ENDCASE?

Tipos de variáveis LOCAL, PRIVATE, PUBLIC, STATIC, acho que traduzir isso é um erro.
Aliás... apesar de costumarem traduzir PRIVATE pra PRIVADA, seria mais adequado PARTICULAR.
Como PRIVATE não tem nada de particular, melhor nem traduzir mesmo.

Aliás... o fórum também trata mensagens PRIVADAS, que são mensagens PARTICULARES.
Esse termo também é usado pelo governo, sobre empresas públicas e privadas, que seriam empresas públicas ou particulares.
Com os políticos atuais, a parte pública é que parece uma PRIVADA, grande e cheia.... rs
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 9690
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 6 vezes
Mens.Curtidas: 607 vezes

Livro (e-book) Harbour

Mensagempor JoséQuintas » 14 Ago 2016 22:00

Até hj eu não sabia, por exemplo, a diferença entre FUNCTION e PROCEDURE


Olhei novamente o manual, pra localizar aonde mostra isso, mas não encontrei.
Talvez tenha passado direto.
Ia confirmar se foi mostrado como as variáveis são tratadas diferentes, mas não encontrei.
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 9690
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 6 vezes
Mens.Curtidas: 607 vezes

Livro (e-book) Harbour

Mensagempor JoséQuintas » 14 Ago 2016 22:10

Aproveitando....
Neste final de semana encontrei um erro no manual do Harbour (3.2/3.4)

doc/en/memo.txt

$SYNTAX$
hb_MemoWrit( <cFileName>, <cString>, [<lWriteEof>] ) --> lSuccess
...
<lWriteEof> Is a logic variable that settle if the "end of file"
character - Chr( 26 ) - is written to disk.
This parameter is optional. By default is true (.T.)
...
There is a third parameter (optional), <lWriteEof>, (not found in
CA-Cl*pper) which let to programmer change the default behavior of
- always - to write the EOF character, Chr( 26 ) as in CA-Cl*pper.

If there is no third parameter, nothing change, EOF is written as
in CA-Cl*pper, the same occurs when <lWriteEof> is set to .T.
But, if <lWriteEof> is set to .F., EOF char is Not written to the
end of the file.
...
hb_MemoWrit() vs MemoWrit():
hb_MemoWrit() never writes the obsolete EOF char at the end of the file.

PROCEDURE Main

   hb_MemoWrit( "A", "A" )
   hb_MemoWrit( "B", "B", .F. )
   hb_MemoWrit( "C", "C", .T. )
   MemoWrit( "D", "D" )
   RETURN


no disco:

14/08/2016  12:53                 1 A
14/08/2016  12:53                 1 B
14/08/2016  12:53                 1 C
14/08/2016  12:53                 2 D


O ideal seria atualizar os documentos existentes no Harbour.
O difícil é pensar em português, e escrever em inglês.... rs
Não é tão simples quanto parece.

Nota: espero que seja erro no manual mesmo, se alterarem o funcionamento de hb_MemoWrit() ferrou.
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 9690
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 6 vezes
Mens.Curtidas: 607 vezes

Livro (e-book) Harbour

Mensagempor Vlademiro » 14 Ago 2016 22:22

Quintas, vou dar uma olhada nas suas observações, depois eu dou um retorno.

Valeu
Avatar de usuário

Vlademiro
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 222
Data de registro: 11 Jul 2005 02:46
Curtiu: 2 vezes
Mens.Curtidas: 17 vezes

Livro (e-book) Harbour

Mensagempor JoséQuintas » 14 Ago 2016 23:09

A diferença básica entre PROCEDURE e FUNCTION é que PROCEDURE não retorna nada, e FUNCTION retorna alguma coisa.

Geralmente em PROCEDURE usávamos PARAMETERS, que cria variáveis PRIVATE, apesar que FUNCTION também aceitava e ainda deve aceitar isso.
Já como parêntesis, as variáveis são tratadas como LOCAL.

PROCEDURE Teste
   PARAMETERS a, b
   ...

FUNCTION Teste( a, b )
...


A diferença é que LOCAL só existe dentro da rotina, e PRIVATE existe a partir daquela rotina e sub-rotinas, só desaparecendo quando sair da rotina que a "criou".
Isso faz muita diferença quando se tem rotina chamando rotina, chamando rotina, chamando rotina, etc. etc. etc. onde usar o mesmo nome pode interferir no valor de rotina anterior. Ou, sendo mais prático, quando o aplicativo vai crescendo, e começa a repetir nomes, declarar como LOCAL faz toda a diferença.
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 9690
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 6 vezes
Mens.Curtidas: 607 vezes

Livro (e-book) Harbour

Mensagempor Vlademiro » 14 Ago 2016 23:36

Vou postar as respostas. Só agora vi que vc postou algo sobre as variáveis, mas vou manter a postagem original que eu redigi no Notepad e vim aqui colar.

Segue :

* ) Porque nos exemplos sempre define UTF-8 como codepage?

Motivo 1 )

Lá no tópico 2.2.1 Uma pequena pausa para a acentuação correta tem o trecho onde eu abordo essa
questão. Alguns trechos eu resolvi adiantar para criar logo um padrão de codificação.

O público alvo é o desenvolvedor que está começando e que poderá
também usar os conhecimentos adquiridos em outras linguagens que ele possa
vir a aprender no futuro.

Atualmente esse padrão de codificação é recomendado
por vários desenvolvedores de softwares.

Por exemplo :

[url]
https://developer.gnome.org/integration ... html.pt_BR
[/url]

[url]
https://www.w3.org/International/questi ... ings.pt-br
[/url]

(faça uma busca por UTF-8 ou UTF8 nessas páginas que da para encontrar referencias
a essa nova forma de codificar. Eles claramente estão dando prioridade a ela)

É claro que as codificações vigentes não sairão de cena, mas UTF-8 parece que está
se estabelecendo como um principal padrão para troca de dados.

--------------------------------------------------------------------------------------------------
Eu penso assim, deixar os códigos em UTF-8 mas criar um apêndice explicando como mudar para as
outras codificações como a (WIN)ANSI e o velho padrão do DOS (esqueci o nome dele, acho eque é OEM).
--------------------------------------------------------------------------------------------------

Motivo 2 ) Eu estou preparando um material com os códigos e eu estou usando o UTF-8 neles. Já tem bastante
código digitado. Se alguém me ajudar a gente pode deixar tudo em outra codificação, mas tem que alterar
todos os fontes de exemplo. Não sei se vale a pena ficar com uma codificação que está sendo claramente preterida.

* ) Tem exemplo com comando abreviado, isso é péssimo, porque exemplos costumam ser base pra outras coisas

Tem razão, com certeza eu me enganei. Eu até programo SET DATE BRIT, mas lá eu coloco sempre SET DATE BRITISH.
Eu não encontrei esse comando. Daria pra vc me mostrar copiando e colando o trecho ?

* ) Porque mostra parênteses como sendo parte de PROCEDURE e mostra como equivalente a FUNCTION?

Posso acrescentar essa forma lá. Eu só vou abordar a diferença nos tópicos sobre funções.

* ) Porque mostra exemplo de variáveis, e só depois fala sobre variáveis?

Sim, eu adiantei alguns conceitos, como uma pequena introdução as funções (para mostrar a codificação) e também as variáveis, para
tornar alguns exemplos mais interessantes. A geração Y (convivo com ela todos os dias no trabalho) tem pressa e eu não quero
que fique muito enfadonho até chegar nas estruturas de controle e de repetição.
Vou mudar a parte das variáveis para o próximo capítulo, mas a pequena introdução as funções acho que da pra deixar como está.
Ainda bem que o latex permite essas mudanças sem muita dificuldade.

* ) Porque mostra LOCAL x AS CHARACTER, se isso não é totalmente válido, pra não dizer que não serve pra nada?

Eu resolvi fazer assim porque acho que é a forma que irá prevalecer daqui para frente. No final do capítulo sobre variáveis eu
abordo isso e deixo claro que ainda é um recurso que está sendo implantado. Andei postando no forum dos desenvolvedores, mas eu
não obtive nenhuma previsão sobre a adoção dessa nova forma. Vou perguntar de novo por lá.

* ) Porque trata IF-ELSE-ELSEIF-ENDIF, e não faz o mesmo em DO CASE-CASE-OTHERWISE-ENDCASE?

Eu descrevi essas estruturas corretamente, só que em alguns pontos eu não coloquei o nome correto. Vou ter que mudar lá.

* ) Tipos de variáveis LOCAL, PRIVATE, PUBLIC, STATIC, acho que traduzir isso é um erro.

Essa parte vai ser revista, eu apenas movi para o final do livro porque será um dos últimos assuntos. Para entender totalmente
esses conceitos precisa entender primeiro o que é sub-rotina (função) para depois partir para esses conceitos de escopo e tempo
de vida da variável.


RESUMINDO TUDO

1 ) UTF-8 : deixa como está, mas cria um apêndice esclarecendo os outros padrões.
2 ) Comandos abreviados : Vou mudar, mas se vc me ajudar colando o trecho eu agradeço
3 ) Parênteses em procedure : vou acrescentar a forma sem parenteses e deixar como principal. Mas eles reaparecerão com os parâmetros. Tem que revisar bem direitinho.
4 ) Formato novo de declaração de variável (AS CHARACTER) : Vou ver com o fórum de desenvolvedores. Se não houver previsão ou demorar muito eu tiro.
5 ) Formato CASE e IF : Vou procurar o ponto e alterar
6 ) Variáveis LOCAL, PRIVATE, etc. Essa parte ainda será revisada totalmente. Os livros de Clipper (Ramalho, Vidal, etc.) traduzem esses termos, tem que ver se os outros autores também fazem assim. Não queria me distanciar muito do estilo deles.

Obrigado pelas observações. :xau
Avatar de usuário

Vlademiro
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 222
Data de registro: 11 Jul 2005 02:46
Curtiu: 2 vezes
Mens.Curtidas: 17 vezes

Livro (e-book) Harbour

Mensagempor Vlademiro » 14 Ago 2016 23:38

Avatar de usuário

Vlademiro
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 222
Data de registro: 11 Jul 2005 02:46
Curtiu: 2 vezes
Mens.Curtidas: 17 vezes

Livro (e-book) Harbour

Mensagempor Vlademiro » 15 Ago 2016 00:03

Quintas, faltou essa :

Porque tem exemplo pra procurar erro de compilação que só ocorre se usar -w3 -es2, que talvez nem seja apresentado como erro?

Não achei esse falso erro. Todos os exemplos que tem erros de compilação realmente não compilam, independente de qual warning vc coloque. Esse aí vc tem que me mostar pois eu não estou encontrando.

Valeu
Avatar de usuário

Vlademiro
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 222
Data de registro: 11 Jul 2005 02:46
Curtiu: 2 vezes
Mens.Curtidas: 17 vezes

Livro (e-book) Harbour

Mensagempor janio » 15 Ago 2016 09:03

Vlademiro, meu conterrâneo cearense hehehe

Uma sugestão: acredito que também para o iniciamente, que é pra quem se destina seu e-book, seria bom um capítulo sobre a montagem do ambiente para compilação (isso eh chato pra caramba hehe), com links para baixar o Harbour 3.2 (acredito que é o mais usado) e também o compilador MinGW, com os respectivos ajustes do path,

Janio
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Avatar de usuário

janio
Colaborador

Colaborador
 
Mensagens: 1688
Data de registro: 06 Jul 2004 07:43
Cidade/Estado: UBAJARA - CE
Curtiu: 7 vezes
Mens.Curtidas: 38 vezes

Livro (e-book) Harbour

Mensagempor JoséQuintas » 15 Ago 2016 09:14

1 ) UTF-8 : deixa como está, mas cria um apêndice esclarecendo os outros padrões.


O mais comum em qualquer linguagem de programação é usar o padrão - default - que a linguagem já tem.

Quando esse leitor for olhar um aplicativo pronto, a primeira coisa que ele vai descobrir é que isso que viu no livro não está no fonte.
A segunda coisa, talvez, será estragar todo visual do aplicativo colocando UTF-8.
E talvez a terceira, seja descobrir que editores de texto não servem pra misturar codepages, e talvez seja tarde demais.
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 9690
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 6 vezes
Mens.Curtidas: 607 vezes

Próximo



Retornar para Contribuições, Dicas e Tutoriais

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 8 visitantes


Faça uma doação para o forum
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro