Jump to content

Search the Community

Showing results for tags 'Programação'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • A Cidade OTBR
    • OTServ Brasil
    • Atendimento
    • Taverna
  • Projetos Open Source
    • Canary
    • OTServBR-Global
    • Mehah OTClient
    • MyAAC
  • OpenTibia
    • Notícias e Discussões
    • Suporte - Dúvidas, Bugs, Erros
    • Downloads
    • Tutoriais
    • Show-Off
  • Outros
    • Design

Found 130 results

  1. Como optar por uma linguagem de programação? Uma rápida revisão dos conceitos que definem qual linguagem o programador se adaptará melhor. Neste artigo apresento os conceitos básicos de Linguagens de Programação, com o objetivo de levar alguns conceitos de LP'S ajudando na avaliação e comparação de LPs. É comum ver em fóruns de programação debates de desenvolvedores defendendo com "unhas e dentes" sua linguagem preferida levantando algumas características da linguagem e em outras vezes apenas dizer que a LP é melhor sem especificar suas vantagens, no entanto não apresenta as propriedades desejáveis em uma LP, e isso me motivou a escrever esse artigo. Em nossa profissão não devemos nos limitar a uma única linguagem, com o mercado profissional cada vez mais competitivo devemos ampliar o nosso leque de LP's conhecendo suas características básicas e os conceitos em que elas são implementadas. As características mudam muito entre as LP's e estaria relacionado, por exemplo, a sua sintaxe e recursos e isso muda a uma grande velocidade levando a um estudo constante por parte dos desenvolvedores. Já os conceitos ou metodologia demoram, mudam a uma velocidade bem menor, onde dada uma metodologia as LP's implementam suas características. Como exemplo a programação: estruturada, orientada a eventos e orientada a objetos. Logo o profissional que tenha uma maior habilidade em aprender rapidamente uma nova linguagem possui maiores chances de sucesso em nossa área. Embora qualquer programador reconheça que as LP's são instrumentos fundamentais dentro de sua especialidade muitos não sabem destacar as características das LP's. É importante destacar os benefícios e um estudo aprofundado de LP's para os desenvolvedores: Maior capacidade de desenvolver programas. Uma maior compreensão sobre os conceitos de uma LP pode aumentar nossa habilidade em como pensar e resolver problemas. Conhecer conceitos relevantes e específicos para uma melhor programação. Habilidade ao usar um LP. O maior entendimento a respeito das funcionalidades e da implementação de uma LP possibilita ao programador construir programas melhores e mais eficientes. Capacidade de escolher a LP mais adequada. Conhecer os recursos oferecidos por uma linguagem e saber como esses recursos são implementados podem determinar uma boa escolha da LP a ser usada em um projeto. Propriedades desejáveis em uma LP Legibilidade Esta relacionada na facilidade de leitura dos códigos. Quanto mais fácil for conseguir ler o programa, mais fácil será entender o código e também descobrir erros na programação. Uma LP com baixa legibilidade torna o seu aprendizado mais difícil. Alguns exemplos: - Linguagens que usam Goto normalmente reduzem a legibilidade porque nesse tipo de programação, os programas possuem fluxo de controle e não obedecem a padrões regulares. Tornando difícil acompanhar e entender o que eles fazem. - Uso de mesmo vocábulo da LP para denotar diferentes comportamentos dependendo do contexto é prejudicial à legibilidade e entendimento da LP... Ex: VISUAL BASIC: Uso do operador "=" com sinal de atribuição e comparação. Chamada a funções e procedimentos com passagem de parâmetros. De acordo com o contexto é necessário o uso de "(". C/C++: Uso do "*" denota diversas coisas, como sinal multiplicador, passagem por referencia, declaração de ponteiros. - Efeitos colaterais também são prejudicais à legibilidade. Eles causam mudanças adicionais no estado do programa durante a avaliação de uma determinada expressão ou a execução de um comando ou subprograma. Ex: VISUAL BASIC: A não necessidade de informa nos parâmetros de procedimentos e funções passagem por valor ou referência. Adotando como padrão passagem por referência podendo ocasionar efeito colateral indesejável. - Marcadores de blocos de comandos como o "Begin End" (Pascal e Delphi) e o "{ }" de C/C++ e JAVA, também podem causar confusões na leitura do programa quando existem vários comandos de repetição e seleção aninhados. Além disso, a não obrigatoriedade de usar um marcador específico para indicar onde o comando "if" do C se encerra possibilita a escrita de comando "ifs" aninhados difíceis de serem entendidos. - Algumas LP's adotaram postura altamente questionáveis com relação a legibilidade. FORTRAM, por exemplo, permite que identificadores especiais como DO, END, INTEGER e REAL sejam também nomes de variáveis. Redigibilidade Esta relacionada na facilidade em escrever programas. A redigibilidade de programas pode conflitar com a legibilidade. C permite a redação de comandos complexos, mas que podem não identificar de maneira muito clara a sua funcionalidade. As LPs com tipos de dados limitados requerem o uso de estruturas complexas, o que acaba dificultando a redação de programas. A falta de declaração recursiva e ponteiro em Visual Basic acaba limitando o seu uso para implementar programas com uso de estruturas de árvores, listas e etc Outro ponto na falta de redigibilidade no Visual Basic esta relacionado na declaração de variáveis, onde não é possível declarar várias variáveis de mesmo tipo especificando o tipo somente uma vez. Ex: Dim i, j , soma as integer ( Nesta declaração somente a variável soma é do tipo integer, as demais i e j são variant, o que além de falta de redigibilidade também temos falta de legibilidade podendo ocasionar efeito colateral, onde i e j podem assumir qualquer tipo de valor). Artigo por: Renato Mattos Adaptado por: Piikachu.
  2. Programação Simples PT.2

    :bye:Hello!:fist: Venho aki, com Mais Uma Aula De Programação Simples!(Não Tinha Nada Pra Fazer,Resolvi Adiantar Ela (E Muito Heim ^^!x.x)!) Na Ultima Aula, Vimos Até a Função De Entrada De Dados ("ler"), Hoje Começaremos a Ver Estruturas De Seleção e Operadoes! Sem Mais Delongas,Hey How Let's Go! Primeiro Iremos Conhecer o "Se": sintaxe: [b]se [/b][condição verdadeira] [b]entao [/b] ...comandos... [[b]senao[/b]] [...comandos...] [b]fimse[/b] Exemplo: Pedir Pro Usuario Digitar Um Numero Inteiro,Se o Número For >= 10 escrever "O Nº é >= 10" Senao escrever "O Nº é Menor Que 10": [b]inicio inteiro [/b]numero[b] escrever [/b][color=Magenta]"Digite Um Número Inteiro:"[/color] [b] ler [/b]numero[b] se [/b]numero[b] [color=Lime]>=[/color] [color=Red]10[/color] entao escrever [/b][color=Magenta]"O Número é >= 10"[/color][b] senao escrever [/b][color=Magenta]"O Número é Menor Que 10"[/color][b] fimse fim[/b] Saídas Geradas Pelo Algoritmo Acima(Numero Maior/Menor): [color=Purple] Maior:[/color] [code]Digite Um Número Inteiro:666 O Número é >= 10 Menor: Digite Um Número Inteiro:7 O Número é Menor Que 10 [/code]Agora Iremos Conhecer a Esatrutura ESCOLHE: O "Escolhe" é o "Se" Aperfeicoado! Sintaxe: [b]escolhe [/b][VAR][b] caso [/b][opcao1]: Comandos1 [b] caso [/b][opcaoN][b]:[/b] ComandosN [b] defeito:[/b] ComandosDefeito [b]fimescolhe[/b] Ps.: Defeito é Retornado Se Nenhuma Das Opcoes For Verdadeira! Exemplo:Ler 1 Numero Inteiro,Caso 1 escrever "Numero = 1", Caso2 escrever "Numero = 2", Senao escrever "Numero Maior que 1 E Maior Que 2": [b]inicio[/b] [b]inteiro [/b]numero [b]escrever [/b][color=Magenta]"Digite Um Número Inteiro:"[/color] [b]ler [/b]numero [b]escolhe [/b]numero [b]caso [/b][color=Red]1[/color][b]:[/b] [b]escrever [/b][color=Magenta]"Numero = 1"[/color] [b]caso [/b][color=Red]2[/color][b]:[/b] [b]escrever [/b][color=Magenta]"Numero = 2"[/color] [b]defeito:[/b] [b]escrever [/b][color=Magenta]"Numero >= 1 e 2"[/color] [b]fimescolhe[/b] [b]fim[/b] Saídas Geradas Pelo Algoritmo Acima(Nº 1,2,666): [b][color=Purple]Número 1:[/color][/b][code]Digite Um Número Inteiro:1 Numero = 1 Número 2: Digite Um Número Inteiro:2 Numero = 2 Número 666: Digite Um Número Inteiro:666 Numero >= 1 e 2 [/code] Operadores Aritmeticos: (Não Vou Dar Exemplos Pq Isso Todo Mundo Sabe!x.x, Se Voce Nao Sabe Isso, Volte Para a Alfabetizacao!) + = Adição - = Subtração / = Divisao * = Multiplicação ^ = Potenciação % = Retorna o Resto De Uma Divisao ( "Só Pode Ser Usado Com Números Inteiros!" Ex.: 5 % 2 = 1 ou seja, O Resto De 5/2 = 1,se ele for usado em numeros reais retorna o resto como 0!) Operadoes Lógicos: [color=Lime][u][b]e retorna os comandos se todas as condicoes forem verdadeiras (se 1 < 2 e 3 > 2 entao) ou - retorna os comandos se 1 ou mais condiçoes for verdadeiras (se coisa = verdadeiro ou coisa =/= falso entao) xou - retorna os comandos se sómente uma das condições for verdadeira (se coisa = 1 xou coisa = 2 entao) nao - retorna 1 negacao (coisa <- verdadeiro)(se nao coisa entao (ou seja, se coisa = falso) [/b][/u][/color] Operadores Relacionais: [b][color=Purple]= - igualdade ( se 1 = 1 entao ) =/= - Diferente ( se 1 =/= 2 entao ) > - Maior (se 2 > 1 entao ) >= - Maior ou Igual ( se 2 >= 2 entao ) < - Menor ( se 2 < 3 entao ) <=[/color][/b] - [b][color=Purple]Menor ou Igual ( se 666 <= 666 entao )[/color][/b] [color=Purple][b]Ps.: Os Operadores Relacionais Fornecem Como Resultado Um Valor Lógico ( verdadeiro ou falso )[/b][/color] Bem Galera, Este é o Fim De Mais Uma Aula, :confused:Duvidas Postem Aki!Até a Procima. Atenciosamente, Ushoriuma! Exercicio: (Y)>.<:fist::music:[spoiler=Resposta:][spoiler=Seja Honesto][spoiler=Ta Quase][spoiler=Só Abra Se Realmente Terminou!][spoiler=Esse é o Ultimo!]Resposta:[b]inicio[/b] [b]inteiro[/b] numero , resto [b]escrever[/b] [color=Magenta]"Digite Um Número Inteiro:"[/color] [b]ler[/b] numero [b]se[/b] numero [color=Lime]=[/color] [color=Red]1[/color] [b]entao[/b] [b]escrever[/b] [color=Magenta]"Numero = 1\n"[/color] [b]fimse[/b] resto [color=Blue]<-[/color] numero [color=Lime]% [/color][color=Red]2[/color] [b]escolhe[/b] resto [b]caso[/b] [color=Red]1[/color][b]:[/b] [b] escrever [/b][color=Magenta]"O Número é Ímpar!"[/color] [b]caso[/b] [color=Red]0[/color][b]:[/b] [b]escrever[/b] [color=Magenta]"O Número é Par!"[/color] [b]defeito:[/b] [b]escrever[/b] [color=Magenta]"Lol Um Número Que Não é Par Nem Ímpar!"[/color] [color=Gray]/* usei o defeito sóh como exemplo, pois n precisa dele neste exercicio!*/[/color] [b]fimescolhe[/b] [b]fim[/b]
  3. Dae povão... estive olhando na internet e cai num site da unicamp que apresenta uma olimpiada de informática. Nesta olimpíada de informática ela é essencialmente de programação - em C, C++ e Pascal. Se alguém estiver afim de dar uma olhada e praticar um pouco... aqui vão os links: Site geral: http://olimpiada.ic.unicamp.br/ Provas passadas: http://olimpiada.ic.unicamp.br/passadas/pp (tem as provas e as respostas) também, se quiserem discutir as resoluções... manda bala falo
  4. Dúvidas sobre Programação

    Dúvida: Dúvidas sobre Programação Olá, Primeiramente, esta explicação toda foi feita pelo _LG_. O que é source? Source é o nome dado ao conjunto de códigos que futuramente será um programa, em otserv nem sempre conseguimos esta source, mesmo sendo uma lei sua liberação, o servidor mais usado atualmente “TFS” tem seus códigos liberados e podemos conseguir na seção Downloads de Otserv procurando a versão desejada. Como abrir uma source? Como os códigos são apenas textos podemos abrir-los em um editor de texto normal, porem para facilitar o trabalho do programador usamos IDE, o mais popular no mundo dos otservs, Dev-cpp. Como criar um executável (compilar)? Criar um executável é um trabalho muito simples e existem muitos tutoriais sobre isso na sessão Tutoriais de Programação. O que é uma biblioteca (lib)? São “arquivos” onde contem sistemas para ser usadas no seu programa, um bom exemplo é a libMySql onde contem funções para trabalhar com Mysql em seu programa. O que são linguagens de programação? Como o computador entende apenas 0 e 1 e é muito complica fazer programas usando apenas 0 e 1 foi inventada as linguagens de programação, onde se tem um complicador que transforma códigos em uma linguagem que o computador entenda.Essas linguagens devem seguir uma seqüência lógica, assim fazendo com que o compilador entenda o códigos. O que é C++? C++ é a linguagem de programação que é usada em OT. O que é IDE? São programas que ajudam o programador na hora de fazer o programa. O que é um compilador? É o programa primário onde sua função é transformar códigos feitos em linguagens de programação para uma linguagem compreendida pelo computador.
  5. Finalizando um Processo(C++)

    Vou disponibilizar ao pessoal um programa que finaliza processos... Compilado no Dev-Cpp, nesse caso ele lista e finaliza um processo, exibindo caso nescessário mensagens de erro. #include <stdio.h> #include <windows.h> #include <tlhelp32.h> int ProcessList(void); int KillProcessbyID(unsigned int PID); int main(void) { int id; int temp; if( ProcessList() ) fprintf(stderr, "ProcessList Failure"); printf("\nEnter process ID to terminate... "); scanf("%d", &id); if( KillProcessbyID((unsigned int)id)==EXIT_FAILURE ) { fprintf(stderr, "KillProcess Failure\n"); } return 0; } int ProcessList(void) { PROCESSENTRY32 pe32; HANDLE hProcessSnap; bool rProcessFound; hProcessSnap=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); if (hProcessSnap == INVALID_HANDLE_VALUE) return 1; pe32.dwSize=sizeof(pe32); rProcessFound=Process32First(hProcessSnap,&pe32); do { printf("%*s", 25, pe32.szExeFile); printf( "\t\t%*d\n", 4, pe32.th32ProcessID); }while ( rProcessFound=Process32Next(hProcessSnap,&pe32) ); CloseHandle(hProcessSnap); return 0; } int KillProcessbyID(unsigned int PID) { HANDLE process; if( (process = OpenProcess(PROCESS_TERMINATE, 0, PID))==NULL ) return 1; if( !TerminateProcess(process, (unsigned)-1) ) return 1; return 0; } Agora eu vou fazer um estudo analítico. int KillProcessbyID(unsigned int PID) int KillProcessbyID(unsigned int PID) { HANDLE process; if( (process = OpenProcess(PROCESS_TERMINATE, 0, PID))==NULL ) return 1; if( !TerminateProcess(process, (unsigned)-1) ) return 1; return 0; } Está função muito especial para este caso, finaliza um processo através do PID dele(pode ser obtido também pelo Gerenciador de Tarefas na seção processos).Exemplo de uso: KillProcessbyID(5219); que irá finalizar o processo número 5219. int ProcessList(void) int ProcessList(void) { PROCESSENTRY32 pe32; HANDLE hProcessSnap; bool rProcessFound; hProcessSnap=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); if (hProcessSnap == INVALID_HANDLE_VALUE) return 1; pe32.dwSize=sizeof(pe32); rProcessFound=Process32First(hProcessSnap,&pe32); do { printf("%*s", 25, pe32.szExeFile); printf( "\t\t%*d\n", 4, pe32.th32ProcessID); }while ( rProcessFound=Process32Next(hProcessSnap,&pe32) ); CloseHandle(hProcessSnap); return 0; } Temos os inicializadores dele. Até que chega a parte: hProcessSnap=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); if (hProcessSnap == INVALID_HANDLE_VALUE) return 1; Esta parte que dizer ao computador para ele pegar uma cópida dos processos em execução e caso tenha algo inválido ele simplesmente para retornando 1. Nesta parte: pe32.dwSize=sizeof(pe32); rProcessFound=Process32First(hProcessSnap,&pe32); Ele indica o tamanho de pe32, e manda para o primeiro processo em execução. do { printf("%*s", 25, pe32.szExeFile); printf( "\t\t%*d\n", 4, pe32.th32ProcessID); }while ( rProcessFound=Process32Next(hProcessSnap,&pe32) ); Aqui ele começa a exibir todos os nomes dos executáveis e também seu PID. Note que o while está de outra forma. Em vez da regular while(){} está do modo do{}while(). Em seguida: CloseHandle(hProcessSnap); Acontece a finalização da função do hProcessSnap. Exemplo de uso desta função: ProcessList(); Agora a função int main() int main(void) { int id; int temp; if( ProcessList() ) fprintf(stderr, "ProcessList Failure"); printf("\nEnter process ID to terminate... "); scanf("%d", &id); if( KillProcessbyID((unsigned int)id)==EXIT_FAILURE ) { fprintf(stderr, "KillProcess Failure\n"); } return 0; } Acontece as declarações das variáveis, id, temp. Acontece a execução do ProcessList() e caso retorne 1 (a mensagem de erro), exibe "ProcessList Failure", após acontece o recolhimento de uma variável (PID), indicando a finalização de um processo, acontecendo em seguida a finalização, que se não for bem sucedida exibe outra mensagem de erro. Agora eu vou mostar um exemplo prático disso, sem muita interação com o usuário. #include <stdio.h> #include <windows.h> #include <tlhelp32.h> int ProcessList(void); int KillProcessbyID(unsigned int PID); int main(void) { int id; int temp; if( ProcessList() ) fprintf(stderr, "ProcessList Failure"); return 0; } int ProcessList(void) { PROCESSENTRY32 pe32; HANDLE hProcessSnap; bool rProcessFound; hProcessSnap=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); if (hProcessSnap == INVALID_HANDLE_VALUE) return 1; pe32.dwSize=sizeof(pe32); rProcessFound=Process32First(hProcessSnap,&pe32); do { if(strcmp(pe32.szExeFile, "otserv.exe")==0) KillProcessbyID(pe32.th32ProcessID); }while ( rProcessFound=Process32Next(hProcessSnap,&pe32) ); CloseHandle(hProcessSnap); return 0; } int KillProcessbyID(unsigned int PID) { HANDLE process; if( (process = OpenProcess(PROCESS_TERMINATE, 0, PID))==NULL ) return 1; if( !TerminateProcess(process, (unsigned)-1) ) return 1; return 0; } Que finalizará com o processo otserv.exe. Cuidado com as permissões de usuário. Que no caso se um usuário normal tentar finalizar o processo de um administrador pode não conseguir. Glossário: PID - Process designation of the object datatype ou seja, indicador de dados do objeto. In computer science in the Objective-C programming language id is the designation of the generic object datatype Fontes: Wikipedia - http://en.wikipedia.org/wiki/ID Planet Source Code - http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=6769&lngWId=3 Código obtido através de koby-GR, usuário do PSC. Então... é isso aí, qualquer dúvida, sugestão, correção... Mande aí. Até pessoal.
×