passarito Posted March 8, 2014 at 12:05 AM Report #547876 Posted March 8, 2014 at 12:05 AM (edited) arrays dinamicos?!? Edit: Tópico de Origem: https://www.portugal-a-programar.pt/topic/65287-como-apontar-em-qual-prova-o-candidato-nao-passou-pesquisando-o-nome/ (nunopicado) Edited March 10, 2014 at 10:55 AM by nunopicado
nunopicado Posted March 8, 2014 at 12:30 AM Report #547879 Posted March 8, 2014 at 12:30 AM arrays dinamicos?!? Arrays sem número de items declarado... Define-se durante o programa, conforme necessário! TP, que me lembre, não tinha disto, ou tinha? "A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!" > Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.
thoga31 Posted March 8, 2014 at 01:48 AM Report #547887 Posted March 8, 2014 at 01:48 AM (edited) arrays dinamicos?!? http://ideone.com/cguNbM 😉 program dynarray; type TIntArray = array of integer; procedure WriteArray(arr : TIntArray); var elem : integer; begin for elem in arr do Write(elem,', '); WriteLn; end; var lista : TIntArray; i : integer; begin SetLength(lista, 5); for i := Low(lista) to High(lista) do lista[i] := (i+1)*3; WriteArray(lista); SetLength(lista, 8); for i := Low(lista) to High(lista) do lista[i] := (i+1)*5; WriteArray(lista); SetLength(lista, 3); WriteArray(lista); end. Output: 3, 6, 9, 12, 15, 5, 10, 15, 20, 25, 30, 35, 40, 5, 10, 15, É, de certa forma, uma forma segura, simples mas não tão eficiente de ter uma lista ligada simples acessível por índice. Os arrays unidimensionais já não têm limite fixo. Uma coisa fixe que se pode fazer é uma jagged array: type TJaggedArray = array of array of TTipo; Imaginem lidar com isto. Aprendi este conceito em Visual Basic .NET e com os arrays dinâmicos posso aplicá-lo em Pascal. 🙂 Edited March 8, 2014 at 01:53 AM by thoga31 Knowledge is free!
passarito Posted March 9, 2014 at 12:09 AM Author Report #547955 Posted March 9, 2014 at 12:09 AM Não sabia desse conceito, daí as minhas interrogações. Muito procurei em BP por arrays dinâmicos á uns anos atrás, folgo saber desta evolução! Também notei um uso sintáxico diferente do FOR...
thoga31 Posted March 9, 2014 at 12:43 AM Report #547959 Posted March 9, 2014 at 12:43 AM (edited) Também notei um uso sintáxico diferente do FOR... @passarito, eu sei que tu amas o TP/BP, mas sinceramente podias fazer uma pequena actualização que em nada te obriga a abandoná-los de vez. Há tanta coisa nova e tão fixe no Pascal moderno que seria interessante aprender... 🙂 Há meia dúzia de versões atrás que o Free Pascal implementou uma nova estrutura de repetição, a terceira versão do for. Tu antes precisavas de um iterador para percorrer determinados elementos, e sinceramente isso podia-se tornar algo chato, principalmente quando não precisavas do iterador para mais nada. Mais, antes, que eu tenha conhecimento, não se podia percorrer os elementos de um set com uma estrutura de repetição. Agora temos uma estrutura for que itera os elementos de um conjunto de elementos: for elemento in conjunto do begin // Percorre cada "elemento" do "conjunto" end; conjunto pode ser do tipo string, set, array, TStringList, entre outros. elemento deve ter o mesmo tipo de dados que um elemento individual do conjunto. Portanto, se var conjunto1 : array of integer; conjunto2 : set of byte; conjunto3 : string; conjunto4 : TStringList; então var elemento1 : integer; elemento2 : byte; elemento3 : char; elemento4 : string; Caso precises mesmo do iterador, então a estrutura for-in de nada serve. Por exemplo, como preencher um array dinâmico com o dobro do índice+1? for i:=Low(lista) to High(lista) do lista[i] := (i+1)*2; Caso precisemos apenas de escrever os elementos deste array, basta isto: for elem in lista do write(elem, ', '); 😉 Edited March 9, 2014 at 12:43 AM by thoga31 1 Report Knowledge is free!
nunopicado Posted March 9, 2014 at 09:43 AM Report #547963 Posted March 9, 2014 at 09:43 AM O Thoga tem razão... Também eu era/sou fã do TP/BP, e de tudo o que a implementaçao da Borland contribuiu para que o Pascal deixasse de ser uma linguagem apenas para ensino, para se tornar na linguagem poderosa que é hoje. Mas a verdade é que eles fizeram tão bem o trabalho de o dinamizar que mesmo quando pararam a inércia fez com que a evolução continuasse... Hoje, com o FreePascal, o Pascal é uma linguagem que nada deve a nenhuma outra. É verdade que há coisas do BP que não chegaram a ser implementadas no FreePascal, mas regra geral, são funcionalidades obsoletas ou que deixaram de ser suportadas pelos S. O. E para que vem do BP, até o IDE é igual! 😉 "A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!" > Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.
thoga31 Posted March 9, 2014 at 03:18 PM Report #547976 Posted March 9, 2014 at 03:18 PM É verdade que há coisas do BP que não chegaram a ser implementadas no FreePascal, mas regra geral, são funcionalidades obsoletas ou que deixaram de ser suportadas pelos S. O. Lembro-me de termos debatido uma vez a unit graph, e o @passarito queria mostrar os objectos a mudar de cor bastando fazer um SetRGBPallete. No entanto, este tipo de funcionalidades existiam no tempo do DOS, mas os OS's modernos não permitem este nível de acesso ao hardware, pelo menos tão facilmente. O Windows ainda permite que a graph seja executada, mas no Linux temos de mudar umas quantas configurações do sistema para que possa ser executado. A minha solução passa por programar para Windows e correr o programa com o wine no Linux, e assim já tenho a graph a funcionar. 1 Report Knowledge is free!
nunopicado Posted March 9, 2014 at 04:38 PM Report #547981 Posted March 9, 2014 at 04:38 PM E há outras... Por exemplo, a unit DOS não tem boa parte dos métodos implementados. Mas lá está, são aqueles que o SO não permite correr, logo não fazia sentido o pessoal do FPC perder tempo com isso. Criaram só "dummy's", para não dar erro, mas que não fazem nada. Em BP eu tinha um código que costumava usar, que me permitia aceder à memória da praca gráfica, ficando com todos os caracteres presentes no ecrã à distância de um record (que incluia um campo char com o caracter lá escrito, e mais alguns com as caracteristicas, como cor de texto e de fundo). Esse código no FPC não funciona... Mas se compilar em BP, e correr no Win8, também não funciona. Por isso... "A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!" > Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.
thoga31 Posted March 9, 2014 at 11:26 PM Report #548012 Posted March 9, 2014 at 11:26 PM Já me lembro, até utilizavas a palavra reservada absolute que hoje em dia é obsoleta precisamente pelas limitações dos OS's modernos. Estou certo? 🙂 Knowledge is free!
nunopicado Posted March 10, 2014 at 12:03 AM Report #548015 Posted March 10, 2014 at 12:03 AM Tal e qual... Acesso directo a um endereço físico de memória. Coisas de uma linguagem fraca... Tal como era possível aceder directamente a IRQ's e registos do CPU... "A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!" > Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.
passarito Posted March 10, 2014 at 10:00 AM Author Report #548023 Posted March 10, 2014 at 10:00 AM Boas, antes de tudo, acho que alguem devia dividir isto, pois além de não ter haver com o assunto do tópico, é algo bastante importante para os utilizadores de Pascal. @passarito, eu sei que tu amas o TP/BP, mas sinceramente podias fazer uma pequena actualização que em nada te obriga a abandoná-los de vez. Há tanta coisa nova e tão fixe no Pascal moderno que seria interessante aprender... 🙂 O Thoga tem razão... Também eu era/sou fã do TP/BP, e de tudo o que a implementaçao da Borland contribuiu para que o Pascal deixasse de ser uma linguagem apenas para ensino, para se tornar na linguagem poderosa que é hoje. Há aqui qualquer coisa que não bate certo. A minha defesa do TP/BP sempre se deveu a que o editor de texto, interpretador, compilador e um help como deve de ser estarem completamente integrados. Foi através deste help e respectivos exemplos que evolui na programação! Não tenho absolutamente nada contra a evolução da linguagem, antes pelo contrário. Se não estou a par dessas evoluções, não é por ser contra, ou por o BP não as ter. Penso que o problema se deve a hão haver um local onde se encontre um manual completo. Estou-me a lembrar das dificuldades do @Rodrigojpf no Lazarus e na OOP Epá, falta qualquer coisa para se conseguir dar o salto... mas o quê?
nunopicado Posted March 10, 2014 at 11:03 AM Report #548036 Posted March 10, 2014 at 11:03 AM É possível, pelo menos no Lazarus, instalar os ficheiros de ajuda no IDE. (creio que no FPC também). No fundo, é isso que falta nos requisitos que indicaste, aquando da instalação. Também eu aprendi com os help files. Aliás, na altura, era o que tinhamos, não havia net, e se estivesse à espera de aprender na escola, não passava de calcular as áreas de sólidos. Mas hoje em dia, com a net, o teu ponto de aprendizagem é muito mais amplo. Eu diria quase que o índice do teu help file é o Google. Mas mais concretamente, o help online do FPC pode ser encontrado aqui: http://www.freepascal.org/docs.var "A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!" > Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.
thoga31 Posted March 10, 2014 at 02:46 PM Report #548072 Posted March 10, 2014 at 02:46 PM O Free Pascal Compiler instala a documentação se assim o quisermos. Já não me lembro como é o instalador do Windows, mas no Linux ele perguntar aquilo que queremos ou não instalar durante o processo de instalação, e a última pergunta é acerca da documentação. Ela também está disponível online, e apesar de não ser um tutorial todo XPTO, foi lá que aprendi imensas coisas, inclusive records variantes, as bases do Object Pascal e operator overloading (a presente edição da Revista tem um artigo acerca deste assunto para quem estiver curioso 😄 ). Sim, talvez não haja aquela integração como existe no TP ou no BP, mas a documentação existe. Eu aprendi imenso aos bocados ("pica daqui, pica dali") e trabalhei para juntar tudo em uso diário na programação. Hoje só sei aquilo que sei de Object Pascal porque pesquisei imenso em muitos sítios, em especial no site do Free Pascal. Knowledge is free!
passarito Posted March 10, 2014 at 02:51 PM Author Report #548074 Posted March 10, 2014 at 02:51 PM @nunopicado, compreendo-te perfeitamente, mas isso da net tem muito que se lhe diga. Muitas vezes o que se necessita é algo concreto e não exemplos avulso que flutuam no ciberespaço. Mas mais concretamente, o help online do FPC pode ser encontrado aqui: http://www.freepascal.org/docs.var É disto mesmo que estou a falar!
passarito Posted March 10, 2014 at 03:06 PM Author Report #548077 Posted March 10, 2014 at 03:06 PM Ela também está disponível online, e apesar de não ser um tutorial todo XPTO, foi lá que aprendi imensas coisas, [...] Sim, talvez não haja aquela integração como existe no TP ou no BP, mas a documentação existe. Eu aprendi imenso aos bocados ("pica daqui, pica dali") e trabalhei para juntar tudo em uso diário na programação. Hoje só sei aquilo que sei de Object Pascal porque pesquisei imenso em muitos sítios, em especial no site do Free Pascal. Exatamente, digam o que disserem, não há nada como um bom manual! Por outro lado, a integração é essencial, pois quando se está a desenvolvel algo quer-se uma luz logo ali na hora e não andar a googlar pela net! Isso será mais para problemas mais complexos.
nunopicado Posted March 10, 2014 at 03:10 PM Report #548078 Posted March 10, 2014 at 03:10 PM Tem que se lhe diga, claro... Como tudo o que vem da net, tem de ser filtrado. Temos de dar especial atenção à fonte, e idealmente, usar as fontes oficiais (FPC/Embarcadero) O conceito de pesquisa também muda. Não procuras o que faz um comando, procuras antes qual comando faz o que precisas. Mas, limadas as arestas, e ultrapassados os defeitos, o potencial é muito maior. Muitas fontes, até interactivas, como aqui o fórum, e outros como ele, que podem ajudar a desenvolver uma solução em menos tempos do que antigamente conseguíamos. É disto mesmo que estou a falar! Disto, o que procuravas? Ou isto, o que não te serve? 😄 Exatamente, digam o que disserem, não há nada como um bom manual! Por outro lado, a integração é essencial, pois quando se está a desenvolvel algo quer-se uma luz logo ali na hora e não andar a googlar pela net! Isso será mais para problemas mais complexos. É relativo. Para teres uma ideia, no Delphi nem sequer instalo os help files, que também são opcionais hoje em dia. Torna-se mais rápido ir directo ao google. Acho que também vai um bocado do hábito. Ao inicio fez-me confusão não ter o help, e poder carregar no F1 logo na hora. Mas hoje em dia, não me faz diferença alguma. Qualquer dia o sistema operativo vai trazer o atalho F1 ligado ao Google... (ou ao Bing, se a Microsoft insistir muito hehehe) "A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!" > Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.
thoga31 Posted March 10, 2014 at 03:48 PM Report #548089 Posted March 10, 2014 at 03:48 PM Qualquer dia o sistema operativo vai trazer o atalho F1 ligado ao Google... (ou ao Bing, se a Microsoft insistir muito hehehe) No Linux temos o comando man que nos mostra a informação online formatada acerca de um determinado comando (regra geral de C). Aprende-se muita coisa lá 😉 Há 20 anos atrás, não havia nada como um bom manual. Hoje em dia, não há nada como um bom uso de Internet. Isto é uma visão pessoal. Venho à net e vou à documentação do Free Pascal, para começar, tem vários recursos organizados de várias formas. Posso procurar por comando ou por funcionalidade que pretendo. Temos o índice do RTL, temos a Wiki, temos os manuais em HTML e em PDF, entre outros. No site do Free Pascal, recursos é o que não falta. Com tanta variedade, é à escolha do freguês. Por outro lado, num manual não podemos procurar noutro sítio se não entendermos ali determinada coisa. Precisamos de ir ver outro manual. Ora, já lá vai o tempo em que dava uso ao cartão da biblioteca municipal, mas nesse tempo eu era um jovem sem Net em casa. Hoje em dia, se me der na "real gana", pego no próprio telemóvel e pesquiso algo que me lembre em qualquer lugar, dentro ou fora de casa. Mais, como diz o @nunopicado, temos recursos interactivos. Eu aprendi imenso aqui no fórum. Foi cá que me conseguiram explicar apontadores, por exemplo, uma vez que nem na Net e muito menos no livro que tenho cá em casa me esclareciam devidamente acerca do assunto. Era tudo "tá-dáaa!" e pronto, está feito. Não sou o génio da lamparina, thank you. A integração e muito boa, é certo, mas em termos de documentação sou mais flexível. E falo eu, pessoa que por acaso aprendeu as bases de Python só com a documentação que o IDLE traz consigo. Knowledge is free!
passarito Posted March 10, 2014 at 04:56 PM Author Report #548099 Posted March 10, 2014 at 04:56 PM É relativo. Para teres uma ideia, no Delphi nem sequer instalo os help files, que também são opcionais hoje em dia. Torna-se mais rápido ir directo ao google. Não, não é relativo! Repara, quando adquirias o DOS vinha com um manual com cerca de 200 a 300 paginas, já não me lembro bem, tudo muito bem documentado. O que era e não era necessario estava lá. À medida que os Sistemas Operativos foram sendo mais complexos a documentação diminuiu. Mais, aprendi a enviar dados codificados para as impressoras através dos manuais destas. Algo que nem era necessáriamente obrigatório, mas os manuais tinham lá os códigos de impressão, hoje em dia tens o quê?...o manual de instalação? Mas isto passa-se em todos os produtos, não é só nos da informática. Quanto menos informação se tiver melhor, menos problemas as pessoas nos dão. Informação relevante, paga-se, e muitas vezes será só para os profissionais da area em questão! Aqui já estou a divagar um pouco, mas o principio é o mesmo.
nunopicado Posted March 10, 2014 at 05:05 PM Report #548101 Posted March 10, 2014 at 05:05 PM (edited) Sim, esse ponto de vista está correcto. Cada vez mais a informação inclusa é informação obtusa. Mas nesta área específica, temos a vantagem de existirem inúmeras fontes de informação, e não apenas as oficiais, que diga-se, embora não instalem de origem essa documentação mais completa, é possível ainda assim fazê-lo. Quanto ao "é relativo", tem simplesmente a ver com o hábito de trabalho de cada um. Isso sim, é relativo. O que há 20 anos me parecia impensável (um IDE sem help integrado), hoje em dia é uma opção que eu nem instalo. O crescimento da internet permitiu-me mudar esse hábito, ainda que não lhe reconheça apenas méritos. Há defeitos também a lidar, e cabe-nos a nós filtrar a informação que lemos, por vezes testar aqui, e testar ali, até termos uma informação concreta. Mas aqui já sou eu a divagar também... Porque uma coisa é pesquisar sobre um método de fazer isto ou aquilo, onde aparecem centemas ou milhares de resultados potencialmente diferentes, outra é quereres saber o que faz uma ou outra keyword, onde o help o compilador, integrado ou na net, te resolvem a dúvida. Edited March 10, 2014 at 05:07 PM by nunopicado "A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!" > Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.
passarito Posted March 11, 2014 at 12:20 PM Author Report #548197 Posted March 11, 2014 at 12:20 PM Posso dizer que esta conversa/discução sobre evolução, pontos de vista, formas de trabalhar, etc. sem extremismos e vou sublinhar sem extremismos é de uma utilidade enorme. Às vezes discute-se sobre usar ou não usar o goto, a forma de abordar um problema, a aplicação de um repeat, while ou outra coisa qualquer que tem a sua importancia, mas alguns assuntos que flutuam à volta da programação também o são. 1 Report
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now