Você está na página 1de 107
ator ‘tia Chipper Instalando o Clipper no Ubuntu XHARBOUR [xharbour- 1.2.1.sre.tar.gz HARBOUR bh =2.0.0tar, =Iib-2.0.0- is Primeiro programa Arquivo: hello.prg fimetion main) ? "Hello, World!" return nil ~$ vhbmk2 ello.prg Tipos de variaveis em Clipper Numérico| 2 a ou sem casas decinais ( 0 ponte da (width). nTOTAL InCAMPO = 125 String fAceita 1 Tamanho maximo de 256 cazacteres Exemp 1 Jenome = s\ Jocame (35) "ANDERSON" Data [Aceita apena SET DATE BRITISH para dere também o g do Milénic", ve DATE () JaDTeINAL ("06/08/2005") nas Verdadeire (.T.) ou Falso ( rxemp1 COMPLETO = .T. ERI oso ‘postin Clipper Memo ||variavel do tipo Memo ngo existe, seria uma variavel do tipo caracter com Inais de 256 bytes que sé caberia em um campo Memo. Exemplo: mORS = MEMOREAD ("NOTAS .TXT") [Array [Também chamado de matriz ou vetor. S80 como varios campos agrupados em uma lista. £ uma estrutura de dados que contém uma série de dados ordenados, lchamados "elementos". Os elementos so referenciados por niimero ordinal, primeiro elemento é 1, segundo 2... Os elementos poden ser de qualquer tipo, caracter, numérico, data etc. Veja mais detalhes em ZUD0 SOBRE lARRAYS. Code ff un =ipo especial de variavel que armazena um pedago de cédigo compilado Exenplo: Block /@é 10,10 SAY "CODIGO: evan( 4 | wcop GET WCOD PICT "999999" VALID; STRZERO(WCOD, 6), -T.} ) Mouse Fungao: mrow() Propésito: Devolver a coordenada atual cursor do mouse em tela referente & posigtio da columa, Fungao: meol() 'Propésito: Devolver o nimero da linha do cursor do mouse em video na qual o cursor se encontra (Comando: SET EVENTMASK TO 255 Propésito: Insere uma miscara do mouse nos gets, prompts € etc. Arquivo: mouse.prg lHinclude “inkey.ch” Iproc main localn = 0 ‘setmode(25,80) els Iwhile n != K_ESC inkey(0,INKEY_ALL) @ 12,30 say strzero(mrow(),2)+"/"+strzero(meol{),2) enddo proc main Teste1= space(10) Teste2= space(10) cls SET EVENTMASK TO 255 }@ 13,30 say "Teste 1" get Testel @ 14,30 say "Teste 2" get Teste2 Read [proc main ck SE 'VENTMASK TO 255 ‘swsaabtestot23.convestudofeusoeeisloms_urs/unixeippeilippe hil anor ato ‘tia Chipper lopc=0 L=08 C=22 '@ LC PROMPT "PROC PROMPT "PROC! .C PROMPT "PROCESSAR ALUNO" C PROMPT "VOLTAR AO D.0.S." TO OPC AR FACULDADES" SAR TABELA DE CURSOS" Pseudofuncées [A diferenga basica entre uma pseudo fimgdo © uma constante manifesta & que a pseudofimsao aceita argumentos, Toda vezx que o nome de uma pseudofiungo for encontrado, o pré-processador ira substituiclo ipela exmpressio. Veja 0 exemplo do cédigo abaixo finetion main) define simnao(ok) (iffok, "sim", "nao")) Cs tudobem= *? simnao(tudobem) |Ap6s o pré-processamento, 0 c6digo a ser compilado serd o seguinte: function main Cls Tudobem = .T. ‘QOut((IF (tudobem, "sim", "nao"))) ‘Veja que o segundo exemplo 0 compikador interpreta mais ripido, isto se chama pseudofinsao. Lista de Pseudofuncées Para vera lista de pseudofingées clique aqui #INCLUDE AA ditetiva HINCLUDE inclui um arquivo dentro do programa fonte. Sintaxe: INCLUDE "ARQUIVO PRG" "ARQUIVO.PRG" é o nome do arquivo que serd inserido e deve estar entre aspas. ator ‘tia Chipper Carregando um arquivo externo No Clipper , hd a possibilidade de colocar mais de 1 arquivo extemo ao documento. Ao invés de trabalharmos com o Clipper internamente, podemos trabalhi-lo extemamente, Fm vez de trabalharmos com tum arquivo, podemos trabalhar com mais de um arquivo, Isto pode faciltar e muito a vida do programador. |Abra um editor de texto e copie 0 arquivo abaixo: function main include "teste.prg" Salve este arquivo com arquivoestemo.prg [Para incluir um arquivo externo ao documento use © comando ste, no exemplo acima o arquivo externo & "teste.pre". Devemos sempre salvar este arquivo extemo coma extensio prg. Abra o editor de texto de novo e copie este arquivo abaixo: ) "Testando um arquivo externo. " ? "Bom dia" 2? "Boa tarde e" 22 "Boa noite. "Fim do arquivo externo." Salve este arquivo como teste.prg, Assim que 0 documento arquivoextemno.prg seja executado ao ser executado 0 programa enviaré para a tela do monitor: "Testando um arquivo extemo, Bom dia, Boa tarde e Boa noite. Fim do arquivo extemo." Macro [Uma macro é um simbolo que diz ao compilador para assumir o conteiido de uma variivel como se fosse uma fungd0. Uma macro normalmente é usada quando se deseja escrever alguma rotina reutilizavel, Exemplo: function main() macro = 'QOut("TESTE'Y ¯o Utilidade de um Code Block [Ui code block sozinho no tem utiidade alguma. Eke precisa, em dado momento, ser avaliado. ‘A avaliagdo de um code block se faz através de trés fimgdes do Clipper: EVALO, AEVAL(, DBEVALO. ‘Vejamos um exemplo simples da aplicagdo de um code block. Primeiro vamos usar uma macro para fazer 0 trabalho para nis. oartona Aocea Cloper fetion main) exp ="x>y" 0 y= 10 °? &exp if retoma .T. Usando um code block teriamos algo parecido como seguinte: y=10 ibI= {Il x> y} 7 eval(bl) // retorna .T. (0 code block é muito usado na fingo DIRECTORY (): Propésito: Criar uma matriz multidimensional e armazenar nesta, informagdes sobre um diret6rio, ‘Sintaxe: DIRECTORY (, ). Exemplo: # INCLUDE "DIRECTRY.CH"//inchiio arquivo de definigdes LOCAL DIRETORIO = DIRECTRY ("*.DBF", "D') i! é 0 diret6rio \// avalia e executa o bloco de cddigo AEVAL (diretorio, {Jarquivo| qout (arquivo [F_NAME])}) Tabela de caracteres Use a tabela de caracteres coma fimgdio: CHR(valor) Exemplo: fimetion main 2. CHRG4) Ouse este cédigo para ver os caracteres: function main() FOR x=0 TO 255 27 STR(X)+"="+CHROO#"" NEXT [Decimal|Caracter| _ |[Decimal|Caricter, B2 lespago 80 P [33 ! 81 a Ba * 82 R 35, iit 83 Ss oso ‘postin Clipper Bo is [ga ir B7 lv 85 lu bs le 86 Vv Bo [ 87 iw [40 ( 88 x lat b 89 Y a2. a 90 Zz las io 91 [ 44 le 92 I\ las E (93 (] las 04 [* a7 l 95 L las. 0 96 lao I 97 fa [50 p 98 'b [51 B 99 le b2 ia 100 fd [53 5 101 fe [54 6 102 | [ss 7 103 |g 56 8 104 |b [57 9 105 ii [58 i 106 59 i 107k [oo K 108 [or F 109 [im [62 > 110 [a [63 P fo [oa le 112 p [os A 13 iq [66 B 14 fr [67 g 115s [68 > 16 ft [oo le 7 iw [70 F us iy a ‘swsaabtestot23.conmfestudofeusoe/eisome_urs/unixeippelippe hil anor ator ‘tia Clipper [71 lc 119 lw [72 H 120k [73 i 21 ily iz Vr 12 |Z [7s K 123k [76 L 124 || [77 M 125 i} [78 IN 126 [79 lo #COMMAND & #TRANSLATE Sintaxe: #command => #translate => Essas diretibas tém como finalidade criar um comando definido pelo usuario, Argumentos: - A miscara de entrada - A miscara que indica como o pré-processador registrara as camadas resultantes. Exemplo: #command montabox(, , , , =>; @ , , , BOX |Mascara 1) Sintaxe: Esse tipo de mascara é a mais comum ¢ busca a expresso contida dentro de si como um tinico elemento. Exemplo 1 translate Isdigit() => () >="0" and, () <="9") Exemplo 2: command SAVE SCREEN TO =>; = SaveScreen(0, 0, Maxtow(), Maxcol) 2) Sintaxe: (Observe que hé uma virguk ¢ 3 pontos que devem ser especificados apés o nome da lista de pardmetros. Esta mascara busca uma lista de expressdes separadas por virgula Exemplo: Hcommand ? [] => QOut() ‘Veja o programa seguinte: oartona Aocea Cloper JOSE ANTONIO", DATE(, TIMEQ, 600 2? "MILENE", 100/4 Que, apés o pré-processamento, gerard o seguinte cédigo: QOut(JOSE ANTONIO", DATE(, TIME, 600) QQOut("MILENE", 10014) 3) Sintaxe: Esta méscara procura na lista uma palavra. Se nenhuma palavra da lista for encontrada, 0 nome do marcador Indo conterd nada, Este recurso é ttl quando se usa uma ckiusula opeional em um comando, ‘Veja exemplo: command SET ALTERNATE => Set(_SET_ALTERNATE, <(x)> ‘Veja o comando a seguir: SET ALTERNATE ON arquivo gerado: Set(18, "ON") |4) Sintaxe: <*idMascara*> Esta opedo aceita qualquer tipo de conteiido, Este tipo de miscara normalmente é utiizado para receber texto que no so uma expressdo legal do Clipper. Exemplo: command ENDDO <*x*> -> enddo command ENDIF <*x*> => endif command EndCase <*x"> => endcase ‘Veja o programa a seguir DO WHILE.T. FOR I-1 TO 10 21 IF I-3 ? "ESTAMOS NO NUMERO 3" ENDIF O TESTE DO NUMERO 3 NEXTI A=INKEY(0) IF 13 EXIT ENDIF A ENDDO O LACO PRINCIPAL ( arquivo gerado: Iwhile .T, FOR 1 TO 10 QOutd) IF I=3 QOUT(’ESTAMOS NO NUMERO 3") endif next ownone ‘tia Chipper A=INKEY(0) IF A=13 EXIT endif enddo 5) Sintaxe:[ | Indica que seu contetido ¢ opeional, command USE <(db)> [] [ALIAS ] [! |_dbUse(<.new.>, NIL, <(db)>, ) Texto resultante 1) Sintaxe: Identico ao ilustrado anteriormente 2) Sintaxe: Este marcador gera uma string, Se nio for encontrado nenhum texto de entrada, serd gravada uma string nula ("). Veja 0 exemplo a seguir: command RUN <*cmd*> => Run(}!) Exemplo: RUN DATE ‘Comando: |_Run("DATE") 3) Sintaxe: <"idMarcador"> Este marcador gera uma string e grava-a no texto. Se nfo for encontrado nenhum texto de entrada, nada seré gravado no texto final. Se o texto encontrado for uma lista, cada clemento seri convertido para string ¢ igravado no texto de saida, |4) Sintaxe: <(idMarcador)> Ea marca de string “inteligente". O conteiido da marca de comparagdo sé fica entre aspas quando ¢ formado [por uma expresso alfinumferica simples. Se o marcador form uma expresso estendida (usando um ou mais operadores), a saida nio sera modificada, permitindo que a expresso seja resolvida em tempo de execugio. 5) Sintaxe: < fidMarcador}> Grava o texto de entrada encontrado como um code bloc sem nenum argumento no texto final. Se nenum_ texto de entrada for achado, nada sera gravado. Exempla: #command LOCATE [FOR ] [WHILE => __dbLocade(<{for}>, <{while}>) 6) Sintaxe: <.idMarcador> Este marcador escreve no texto de saida 0 valor Kogico «1 em caso conttrio, Exemplo: se algum texto de entrada for encontrado, ou F ownone ‘tia Chipper #command RESTORE [FROM <(file)>] [] =>; MRestore(<(ile)>, <.add.>) Depuracio (O depurador pode ser acionado da seguinte maneira: - No cédigo fonte insira a fngio ALTDO) - Na hora da compilago digite o seguinte comando: hbmk2 exemplo.prg-b hbdebug ti - Depois de compilado, execute 0 programa: Jexemplo e tudo der certo, veja a seguinte imagem: Locate View Run Point Monitor Options Window Help Sete eo Fl-Help F2-Zoom F F5-Go FO-WA F7-Here F8-Step F9-BKPt F10-Trace ~ Para ativar as vari E eative a aba le Locate View Run Options Window Help | REED Cl a Oise a er a eee || nnn Vv private v Static v Local ¥ Global Vall Show all Globals sort nen nnne EE] Help F2-Zoom ~ Clique em F8 para pass Arquivo: exemplo.prg fanetion main ALTDO cls SET EVENTMASK TO 255 SAR FACULDADES" @L,C PROMPT_A |_B = "PROCESSAR TABELA DE CURSOS" @ L+2,C PROMPT_B ROCE: R ALUNO" @ L+4,C PROMPT_C _D="VOLTAR AO D.0.S." @ L+6,C PROMPT _D MENU TO OPC Linguagem C Linguagem Assembly ator ‘tia Chipper Clipper 5.2 Conversores Converter uma expr: VAL () « Jo caractere em um valor numérico. 929.20" 2 VAL (SALARIO) * 2 TESTE := "COMPUTAL 2 VAL(TESTE) // re SALARIO := 3020.29 28 ARIO, 4) // resultad 30 2 SRT(SALARIO, 7,3) // resultado: 3020.290 VALTYPE( ) Especi £0 tipo do dado retornado por uma expresséo. Sintaxe: VALTYPE () . Exemplo. 2 VALTYPE(STR( ) ) // retorna: "Cc" ? E(SQRT( )) // xetorna: "N" 2 VALIYPE (2929) // retorna: "N" : Identificar qual o tipo de uma informagao. TYPE () . di Lt} VALOR") // resultado: N NOME") // resultado: C 2 TYPE("BLOCO") // resultado: B Funcées Matematicas SET DECIMALS Propésito: Configurar a quantidade de casas decimais exibidas Sintaxe: SET DECIMALS Exemplo: SET FIXED ON SET DECIMALS TO 2 // 2 casas decimais (0 padré 2? 10/3 2 20/7 SET DECIMALS TO 2 10/3 2 20/7 command SET DECIMALS TO ¥command SET DECIMALS TO SET FIXED Sintaxe rina a saida de casas d XED ONJOFE(.T.)/(.F.} command SET FIXED ) MED, <(x)> ) ED, ) EVAL( ) Propésito: Exe Sintaxe: EVAL(, } to de uma expressao n x numérico> é uma expressao rica a ser devolvida ao seu valor absoluto. fa) // devolve 9 (b) // devolve 4 SORT( ) Propésito: Devolver a raiz quadrada de uma expressdo numérica SORT (). Exemplo: 2 SQRT(2) // resultado: 1.41 2? SORT(4) // resultado: 2.00 MoD( ) 0: Retorna o resto da divisio do primeiro valor pelo outro Sintaxe: MOD(VALORI, VALOR2). ROUND( ) : Arredondar expressdes num Sintaxe: ROUND(, ) Exempl 2 ROUND (103.3385 ? ROUND (103.3385 2) I/ resultado: 103, 5, 0) // resultado: 103.00 INTC) Propés rnar o valor inteiro de uma expre: Sintaxe nlimero>) ExempL VARI :=VAR2 = 2? INT(VAR1), -93 LENNUM( ) Propésito: xo tamanho de uma expressdo numérica Sintaxe + numérica>) . Exemplo: VAR := 299.9: 2 LENNUM(VAR) // resultado: ornecer o maior valor entre di Sintaxe: MAX(, , ) Fornecer o menor valor entre di MIN (, , ). as datas a 2>). Exemplo: 2 MIN (300,252) // resultad 2.MIN (DATE( ), DATE( ) + ltado: 0 valor de date( } LoG( ) Sintaxe: LOG(). Exemplo 2 L0G(10) // resultado: 2.30 2? LOG(2.71) // resultado: 1 EX?( ) Propésite: Calcular 0 B ** X Sintaxe: FXP() Exemplo: ator ‘tia Chipper 2? EXP(1) // resultado: 2.72 Funcées tipo String EMPTY ( ) Propésito: Verifica se uma expressao é vazi Sintaxe: EMPTY () . Exemplo veop @ 10,10 SAY "DIGITE 0 CODIGO.. VALID .NOT. EMPTY (VCOD) READ " GET vCoD PCr "99999"; ALLPRIM( ) Propésito: Remover todos os espagos em branco que existirem em uma cadeia de Sintaxe: ALLIRIM (<; Exemplo PRIVATE STRING RING : = SPA 2 STRING ? ALLIRIM (STRING) 5(30)+ " GORKI " +" LIRIM( ) Remover todos os espagos em branco 4 ja de uma expressao >). STRING := STR (VALOR) RING // resultado: 100 ? LTRIM(STRING) // resultado: 100 0: Remover espacos em branco existentes no final de uma expressao Sintaxe: RTRIM(). REPLICATE ( ) Propésito: Retornar uma cadeia de caracteres contendo a repetigao de um ou mais Sintaxe: REPLICATE (, ). ator ‘tia Chipper Exemplo: 2? REPLICATE (" 2? REPLICATE ("CASA" / resultado: PAD( ) Proposito: Proporcionar 0 preenchimento de caracteres em varidveis ou valores dos tipos numérico, data ou caractere. yb (, , , , ) |valor>, , ) Sintaxe: PI ctere>) PADC () . Exemplo: NOME := SAPCE( ) azena 30 espago de: ' “TESTE2" LOWER( ) Propés conve} ere de maidsculas para minisculas. Sintaxe: LOWER(). Exemplo. NOME JORO DA SILVA" ? LOWER(NOME) // resultado: JORO DA SILVA. UPPER( ) Propésito: Transforma as letras de uma string para maidsculas. Sintaxe: UPPER () . Exemplo NOME := "EDITORA ERICA" 2 UPPER (NOME) // resultado: BDITORA ER! @ 20,20 SAY “NOME. . UPPER (NOME) ASC( ) Sintaxe: ASC ()

Você também pode gostar