As funções getch() e kbhit() da biblioteca CONIO proporcionam funcionalidades para monitoramento de teclas pressionadas, permitindo obter o código da tecla sem precisar aguardar que o usuário pressione ENTER, como ocorre com a getchar() padrão.
//--------------------------------------------------------------------------- #pragma hdrstop #include <stdio.h> // printf //--------------------------------------------------------------------------- #pragma argsused while ( keycode != 27 ) // ESCAPE // ler o código da tecla pressionada // keycode = 0 se for tecla especial // se tecla especial, if ( normalkey && keycode >= 48 && keycode <= 57 ) else if ( normalkey && keycode >= 65 && keycode <= 90 ) else if ( normalkey && keycode >= 97 && keycode <= 122 ) else if ( !normalkey && keycode >= 59 && keycode <= 68 ) else if ( !normalkey && keycode >= 133 && keycode <= 134 ) else if ( normalkey && keycode == 27 ) else if ( normalkey && keycode == 8 ) else if ( normalkey && keycode == 9 ) else if ( normalkey && keycode == 13 ) else if ( normalkey && keycode == 10 ) else if ( !normalkey && keycode == 75 ) else if ( !normalkey && keycode == 77 ) else if ( !normalkey && keycode == 72 ) else if ( !normalkey && keycode == 80 ) else if ( !normalkey && keycode >= 82 && keycode <= 83 ) else if ( !normalkey && keycode == 71 ) else if ( !normalkey && keycode == 79 ) else if ( !normalkey && keycode == 73 ) else if ( !normalkey && keycode == 81 ) else return 0; |
Com o código acima, espero ter apresentado dicas para os exercícios propostos em sala de aula.
Bom estudo e até a próxima.
3 comentários:
Eae blz
queria saber pra que serve
" #pragma hdrstop"
" #pragma argsused "
e pq "int main(int argc, char* argv[])"
mais especificamente o do pq desses argumentos "(int argc, char* argv[])" e pra que serve.
OBrigado
Alias gostei muito deste post bem intuitivo e facil de entender!
Questão#1 - 'pragma' diretiva ao compilador
#pragma hdrstop
Diretiva para instruir o compilador a parar de gerar arquivos PCH (pre compiled headers).
fontes:
https://computing.llnl.gov/tutorials/linux_clusters/man/icc.txt
http://msdn.microsoft.com/en-us/library/d9x1s805.aspx
http://www.vxdev.com/docs/vx55man/diab5.0ppc/c-additi.htm#3000323
http://ps-2.kev009.com/rs6000/docs/visualage/pragmas.pdf
#pragma argsused
1. Em uma linha precedente a uma função, como no exemplo a seguir:
#pragma argsused
int Max10(N,a,b,c,d,e,f,g,h,i)
...
alerta o compilador que a função irá usar todos os seus argumentos, mesmo que eles não sejam necessariamente usados (referenciados).
fonte:
http://www.thinkage.ca/english/gcos/expl/lint/manu/manu.html#PragmaArgsused
2. Para o Borland C++, define-se o seguinte:
O "pragma argsused" é válido somente para a próxima função declarada e serve para desativar o aviso:
" Parameter name is never used in function 'function-name' "
fonte:
http://bitsavers.trailing-edge.com/pdf/borland/borland_C++/Borland_C++_Version_3.1_Programmers_Guide_1992.pdf
Questão #2 - Protótipo da função 'main'
int main(int argc, char* argv[]);
Os argumentos são:
int argc : contador de argumentos recebidos
char *argv[] : arranjo de strings as quais representam os argumentos recebidos
Quando se executa um programa, podemos inserir dados na linha de comando do shell ou interface de linha de comando ( cmd.exe, p.exemplo ), como a seguir:
C:\programa.exe São Paulo 04 de setembro de 2014
O programa irá receber:
int argc : 8 argumentos
char *argv[0] : C:\programa.exe
char *argv[1] : São
char *argv[2] : Paulo
char *argv[3] : 04
char *argv[4] : de
char *argv[5] : setembro
char *argv[6] : de
char *argv[7] : 2014
Também podemos construir um programa que execute um segundo programa de maneira automática, passando a este os argumentos necessários (mais informações em http://msdn.microsoft.com/en-us/library/20y988d2.aspx).
Postar um comentário