iunix 41 Postado Dezembro 11, 2012 Share Postado Dezembro 11, 2012 (editado) Hoje vamos dar continuidade as aulas. Aprenderemos Lógica, Algorítimos e Organização, que para mim são as coisas básicas que TODO programador deve conhecer. Lógica de Programação O que é Lógica de Programação? é uma sequencia de pensamentos com fim de atingir determinado resultado. E esses pensamentos, podem ser usados para construir uma sequencia lógica, afim de executar uma ação da maneira mais simples o possível. Isso é o conceito básico de lógica de programação. Algorítimos Agora começa a parte divertida. Algorítimo é uma sequencia de comandos(instruções) para executar tal ação, como uma receita que sua mãe usa para fazer bolos. Quaisquer sequencias de instruções podem ser consideradas algorítimos. "Algorítimo de Chupar uma bala". • Pegar a bala • Retirar o papel • Chupar a bala • Jogar o papel no lixo Todos algorítimos devem ser simples e objetivos. Organização Essa é uma parte realmente "importante": (O Mock deveria ler isso todo dia, falo mesmo) Endentação: Endentação, identação ou edentação, é o espaçamento no inicio de qualquer paragrafo, afim de diferenciar e melhorar a visualização dos escopos do algorítimo. Código sem indentação (Na verdade ele tem, mas eu tirei para usar de exemplo) function doPlayerAddAchiev(cid, achievid) local pid = getPlayerGUID(cid) local value = tonumber(getPlayerAchievById(cid, achievid)) if value == -1 then return true end if value == 0 then db.executeQuery("INSERT INTO `achievements` (`player_id`, `achievement_id`, `value`) VALUES ('"..pid.."', '"..achievid.."', '1');") end if (tonumber(getPlayerAchievById(cid, achievid)) >= achievs[achievid].qt) then doPlayerSendTextMessage(cid,22, 'Você recebeu a conquista "'..achievs[achievid].name..'"') db.executeQuery("UPDATE `achievements` SET `value` = ".. -1 .." WHERE `player_id`= " .. pid .. " AND `achievement_id`= " .. achievid .. ";") doPlayerAddAchievPoint(cid, achievs[achievid].pt) else db.executeQuery("UPDATE `achievements` SET `value` = ".. (tonumber(getPlayerAchievById(cid, achievid))) + 1 .." WHERE `player_id`= " .. pid .. " AND `achievement_id`= " .. achievid .. ";") end doPlayerSave(cid) return true end Código com identação: function doPlayerAddAchiev(cid, achievid) local pid = getPlayerGUID(cid) local value = tonumber(getPlayerAchievById(cid, achievid)) if value == -1 then return true end if value == 0 then db.executeQuery("INSERT INTO `achievements` (`player_id`, `achievement_id`, `value`) VALUES ('"..pid.."', '"..achievid.."', '1');") end if (tonumber(getPlayerAchievById(cid, achievid)) >= achievs[achievid].qt) then doPlayerSendTextMessage(cid,22, 'Você recebeu a conquista "'..achievs[achievid].name..'"') db.executeQuery("UPDATE `achievements` SET `value` = ".. -1 .." WHERE `player_id`= " .. pid .. " AND `achievement_id`= " .. achievid .. ";") doPlayerAddAchievPoint(cid, achievs[achievid].pt) else db.executeQuery("UPDATE `achievements` SET `value` = ".. (tonumber(getPlayerAchievById(cid, achievid))) + 1 .." WHERE `player_id`= " .. pid .. " AND `achievement_id`= " .. achievid .. ";") end doPlayerSave(cid) return true end Dá para perceber uma diferença bem grande na parte de visualização, certo? Nomenclatura: Essa é outra parte importante que poucos prestam atenção. Você deve criar os códigos para os OUTROS (mesmo que você não for liberar ele), e você deve imaginar que TODO mundo não entende nada de programação. Por isso, você deve usar nomes simples e sugestivos. Você NUNCA deve usar nomes assim: local var_que_solta_raio_lasers_e_panz = 12 Tente sempre ser sugestivo, nomes mais simples: local quantidade_de_stones = 12 Comentários: Essa é uma das partes mais importantes, na minha opinião. Sempre que for começar alguma ação ou escopo, comente no final da 1º Linha o que ele faz, como ele faz e por que ele faz. Como eu já disse, você deve pensar que está programando para pessoas leigas. Sem comentário: function doPlayerAddAchiev(cid, achievid) local pid = getPlayerGUID(cid) local value = tonumber(getPlayerAchievById(cid, achievid)) if value == -1 then return true end if value == 0 then db.executeQuery("INSERT INTO `achievements` (`player_id`, `achievement_id`, `value`) VALUES ('"..pid.."', '"..achievid.."', '1');") end if (tonumber(getPlayerAchievById(cid, achievid)) >= achievs[achievid].qt) then doPlayerSendTextMessage(cid,22, 'Você recebeu a conquista "'..achievs[achievid].name..'"') db.executeQuery("UPDATE `achievements` SET `value` = ".. -1 .." WHERE `player_id`= " .. pid .. " AND `achievement_id`= " .. achievid .. ";") doPlayerAddAchievPoint(cid, achievs[achievid].pt) else db.executeQuery("UPDATE `achievements` SET `value` = ".. (tonumber(getPlayerAchievById(cid, achievid))) + 1 .." WHERE `player_id`= " .. pid .. " AND `achievement_id`= " .. achievid .. ";") end doPlayerSave(cid) return true end Com Comentário: function doPlayerAddAchiev(cid, achievid) local pid = getPlayerGUID(cid) -- declaração da variavel com GUID do player. local value = tonumber(getPlayerAchievById(cid, achievid)) -- Declaração da váriavel que irá conter o valor do Achiev. if value == -1 then return true end -- Se o valor for 0, então ele irá retornar true e irá parar o código aqui. if value == 0 then db.executeQuery("INSERT INTO `achievements` (`player_id`, `achievement_id`, `value`) VALUES ('"..pid.."', '"..achievid.."', '1');") end -- Se ele for 0, então ele irá mudar o valor para 1. if (tonumber(getPlayerAchievById(cid, achievid)) >= achievs[achievid].qt) then -- Se o valor for maior ou igual ao valor da tabela, então ele irá executar o escopo. doPlayerSendTextMessage(cid,22, 'Você recebeu a conquista "'..achievs[achievid].name..'"') db.executeQuery("UPDATE `achievements` SET `value` = ".. -1 .." WHERE `player_id`= " .. pid .. " AND `achievement_id`= " .. achievid .. ";") doPlayerAddAchievPoint(cid, achievs[achievid].pt) else -- Se não, ele executará esse escopo. db.executeQuery("UPDATE `achievements` SET `value` = ".. (tonumber(getPlayerAchievById(cid, achievid))) + 1 .." WHERE `player_id`= " .. pid .. " AND `achievement_id`= " .. achievid .. ";") end doPlayerSave(cid) return true end Finalização Espero que tenham gostado dessa aula, tentei ser direto e simplório. Porém eu falei só sobre o básico, só a ponta do iceberg. Quem tiver mais interesse, o google tem milhares de apostilas sobre Algorítimos de Lógica de Programação. Link da primeira aula: http://www.xtibia.com/forum/topic/201079-aulas-basicas-com-o-sr-iunix-1-lua-o-que-e Editado Dezembro 11, 2012 por iunix Link para o comentário https://xtibia.com/forum/topic/201145-aulas-b%C3%A1sicas-com-o-sr-iunix-2-l%C3%B3gica-algor%C3%ADtimos-e-organiza%C3%A7%C3%A3o/ Compartilhar em outros sites More sharing options...
fredpadua 65 Postado Dezembro 11, 2012 Share Postado Dezembro 11, 2012 Bom pra quem não tem noção . Parabens. Link para o comentário https://xtibia.com/forum/topic/201145-aulas-b%C3%A1sicas-com-o-sr-iunix-2-l%C3%B3gica-algor%C3%ADtimos-e-organiza%C3%A7%C3%A3o/#findComment-1409871 Compartilhar em outros sites More sharing options...
Oneshot 732 Postado Dezembro 11, 2012 Share Postado Dezembro 11, 2012 (editado) Bom tutorial, espero que a sequência de aulas continue. Gostei da tirinha também. Mas aproveita e esculhamba o título logo: Aulas Básicas com o Senhorito iuniX. Abraços. Editado Dezembro 11, 2012 por Oneshot Link para o comentário https://xtibia.com/forum/topic/201145-aulas-b%C3%A1sicas-com-o-sr-iunix-2-l%C3%B3gica-algor%C3%ADtimos-e-organiza%C3%A7%C3%A3o/#findComment-1409903 Compartilhar em outros sites More sharing options...
iunix 41 Postado Dezembro 11, 2012 Autor Share Postado Dezembro 11, 2012 Bom tutorial, espero que a sequência de aulas continue. Gostei da tirinha também. Mas aproveita e esculhamba o título logo: Aulas Básicas com o Senhorito iuniX. Abraços. Eu não posso usar iuniX no titulo... #xatiadu. Link para o comentário https://xtibia.com/forum/topic/201145-aulas-b%C3%A1sicas-com-o-sr-iunix-2-l%C3%B3gica-algor%C3%ADtimos-e-organiza%C3%A7%C3%A3o/#findComment-1409907 Compartilhar em outros sites More sharing options...
Slicer 1070 Postado Dezembro 12, 2012 Share Postado Dezembro 12, 2012 bom tutorial ms... soh achu q a parte de por comentario em tudo por um lado eh bom e por outro deixa o codigo mais 'pesado' sei la.. ^^ espero q as aulas continuem tb ^^ Link para o comentário https://xtibia.com/forum/topic/201145-aulas-b%C3%A1sicas-com-o-sr-iunix-2-l%C3%B3gica-algor%C3%ADtimos-e-organiza%C3%A7%C3%A3o/#findComment-1410071 Compartilhar em outros sites More sharing options...
MaXwEllDeN 89 Postado Dezembro 12, 2012 Share Postado Dezembro 12, 2012 Dahora iunikiss, tô gostando de ver [: REP+ bom tutorial ms... soh achu q a parte de por comentario em tudo por um lado eh bom e por outro deixa o codigo mais 'pesado' sei la.. ^^ espero q as aulas continuem tb ^^ Mas os comentários são ignorados pelo compilador, então não deixa pesado xD. Link para o comentário https://xtibia.com/forum/topic/201145-aulas-b%C3%A1sicas-com-o-sr-iunix-2-l%C3%B3gica-algor%C3%ADtimos-e-organiza%C3%A7%C3%A3o/#findComment-1410082 Compartilhar em outros sites More sharing options...
Slicer 1070 Postado Dezembro 12, 2012 Share Postado Dezembro 12, 2012 /\ quis dizer 'pesado' no sentido de enxer ainda mais o codigo... talvez ate confundindo um pouco, para iniciantes... Link para o comentário https://xtibia.com/forum/topic/201145-aulas-b%C3%A1sicas-com-o-sr-iunix-2-l%C3%B3gica-algor%C3%ADtimos-e-organiza%C3%A7%C3%A3o/#findComment-1410093 Compartilhar em outros sites More sharing options...
MaXwEllDeN 89 Postado Dezembro 12, 2012 Share Postado Dezembro 12, 2012 /\ quis dizer 'pesado' no sentido de enxer ainda mais o codigo... talvez ate confundindo um pouco, para iniciantes... Entendo ^^. Mas tipo, normalmente os comentários ajudam os iniciantes . Só é o programador saber utilizá-los bem. [: Link para o comentário https://xtibia.com/forum/topic/201145-aulas-b%C3%A1sicas-com-o-sr-iunix-2-l%C3%B3gica-algor%C3%ADtimos-e-organiza%C3%A7%C3%A3o/#findComment-1410098 Compartilhar em outros sites More sharing options...
iunix 41 Postado Dezembro 12, 2012 Autor Share Postado Dezembro 12, 2012 bom tutorial ms... soh achu q a parte de por comentario em tudo por um lado eh bom e por outro deixa o codigo mais 'pesado' sei la.. ^^ espero q as aulas continuem tb ^^ Em lua realmente fica um pouco feio, mas porem é uma pratica que todos devem ter. (Eu não tenho, realmente odeio fica comentando código). Link para o comentário https://xtibia.com/forum/topic/201145-aulas-b%C3%A1sicas-com-o-sr-iunix-2-l%C3%B3gica-algor%C3%ADtimos-e-organiza%C3%A7%C3%A3o/#findComment-1410222 Compartilhar em outros sites More sharing options...
Yan Oliveira 215 Postado Dezembro 12, 2012 Share Postado Dezembro 12, 2012 Seu Tutorial foi Aprovado, Estará sendo movido para Tutoriais de Scripting. Gostei da Tirinha ^^. Link para o comentário https://xtibia.com/forum/topic/201145-aulas-b%C3%A1sicas-com-o-sr-iunix-2-l%C3%B3gica-algor%C3%ADtimos-e-organiza%C3%A7%C3%A3o/#findComment-1410367 Compartilhar em outros sites More sharing options...
caotic 393 Postado Dezembro 12, 2012 Share Postado Dezembro 12, 2012 Eu também me incomodo com os comentários. Na hora de refazer o script fica mais difícil a organização. Link para o comentário https://xtibia.com/forum/topic/201145-aulas-b%C3%A1sicas-com-o-sr-iunix-2-l%C3%B3gica-algor%C3%ADtimos-e-organiza%C3%A7%C3%A3o/#findComment-1410477 Compartilhar em outros sites More sharing options...
Roksas 846 Postado Dezembro 12, 2012 Share Postado Dezembro 12, 2012 Boa iunix, ficarei aguardando pelas próximas aulas. Sou "intermediário", mas tenho que aprender muito mais e treinar, irei acompanhar seus Tutoriais. Quem sabe um dia eu chegue ao topo, haha. Amanhã REP++, to sem ) Link para o comentário https://xtibia.com/forum/topic/201145-aulas-b%C3%A1sicas-com-o-sr-iunix-2-l%C3%B3gica-algor%C3%ADtimos-e-organiza%C3%A7%C3%A3o/#findComment-1410498 Compartilhar em outros sites More sharing options...
Demonbholder 420 Postado Dezembro 19, 2012 Share Postado Dezembro 19, 2012 podia melhorar na identação. fora isso, bom tutorial. Link para o comentário https://xtibia.com/forum/topic/201145-aulas-b%C3%A1sicas-com-o-sr-iunix-2-l%C3%B3gica-algor%C3%ADtimos-e-organiza%C3%A7%C3%A3o/#findComment-1417387 Compartilhar em outros sites More sharing options...
Posts Recomendados