Tópico da Programação (desenvolvimento de software)

Tópico da Programação (desenvolvimento de software)

  • Java

    Votes: 66 53.2%
  • C

    Votes: 77 62.1%
  • C++

    Votes: 58 46.8%
  • C#

    Votes: 47 37.9%
  • PHP

    Votes: 45 36.3%
  • BASIC (Visual e outros)

    Votes: 63 50.8%
  • Objective-C

    Votes: 2 1.6%
  • Python

    Votes: 23 18.5%
  • PERL

    Votes: 11 8.9%
  • JavaScript

    Votes: 55 44.4%
  • Ruby

    Votes: 6 4.8%
  • Pascal (ANSI, Turbo, Delphi, outros)

    Votes: 55 44.4%
  • Lisp

    Votes: 9 7.3%
  • Assembly (quais?)

    Votes: 35 28.2%
  • Fortran

    Votes: 12 9.7%
  • COBOL

    Votes: 16 12.9%
  • Haskell / OCaml

    Votes: 8 6.5%
  • Prolog

    Votes: 22 17.7%
  • .NET

    Votes: 37 29.8%
  • Struts/Hibernate

    Votes: 4 3.2%

  • Total voters
    124
Houve um período da minha vida que também andei a ler sobre a programação e cheguei a fazer umas coisas no vb6, mas pelo que andei averiguar na altura uma das coisas aprender era começar pela lógica da programação e a linguagem adoptar para aprendizagem devia ser python. Já sei que cada cabeça sua sentença, mas em várias fontes que na altura li, recomendavam a mesma.

A vermelho:
Sim.

Quanto a Python...
Sim, e não.

Para aquilo que está a vermelho é não.

A Python é uma boa substituta do BASIC para quem quer aprender a programar.
Ou seja, como HOBBY.

Para aprender a programar a sério, a Python é uma má opção.
A Python não permite aprender alguns conceitos fundamentais como é o caso dos
apontadores.

NOTA:
Não estou a dizer que a Python não é uma excelente linguagem para fazer aplicações
sérias. Antes pelo contrário. Apenas estou a dizer que para aprender conceitos de
programação não é a mais indicada.

Portanto, para aprender a fazer programas (hobby), a Python é uma boa opção.
Para aprender a programar, a Python não é uma boa opção.

Parece uma contradição, mas não é.
Costuma-se dizer que fazer programas não é o mesmo que programar. Ou seja, que
um programador faz programas, mas quem faz programas não é imediatamente um
programador. Isto porque programar não é apenas fazer programas, e um programador
é muito mais que alguém que faz programas.

Para aprender a programar não aconselho a aprender sozinho, porque dificilmente se
irá descobrir sozinho os conceitos necessários.
Quanto à linguagem para essa aprendizagem... não pode ser apenas uma. São muitas.
Por ordem do que acho ideal:
- PASCAL (esta linguagem foi feita de propósito para implementar os conceitos)
- C
- JAVA
Idealmente também será necessário outras linguagens com diferentes paradigmas:
- ASSEMBLY
- PROLOG
- OCAML/HASKELL
- PERL/PHP/PYTHON
- etc.

Para saber programar a sério é necessário aprender os conceitos, várias linguagens,
e bastante experiência (anos). E mesmo assim, não existe garantia de ser um bom
(ou mesmo razoável) programador. Para ser bom é necessário gostar (muito) de
programar, e estar constantemente a aprender (a vida toda).
Quem não aprende constantemente fica para trás (isto evolui todos os dias), e quem
não gosta dificilmente aprende o que é necessário.

Pascal (programming language) - Wikipedia, the free encyclopedia
C (programming language) - Wikipedia, the free encyclopedia
Java (programming language) - Wikipedia, the free encyclopedia
Assembly language - Wikipedia, the free encyclopedia
Prolog - Wikipedia, the free encyclopedia
OCaml - Wikipedia, the free encyclopedia
Haskell (programming language) - Wikipedia, the free encyclopedia
Perl - Wikipedia, the free encyclopedia
PHP - Wikipedia, the free encyclopedia
Python (programming language) - Wikipedia, the free encyclopedia
 
E que tal um Ruby on rails, só para ganhar o bichinho da programação? hehe

ou então um grails.

óptimas ferramentas para quem já tem uns anos de experiência, mas péssimas ferramentas para quem está a começar porque encapsulam uma serie de conceitos, as pessoas ficam todas contentes porque fazem coisas rápidas, mas quando tem que fazer algo de diferente e mexer nas entranhas ficam a olhar para as paredes
 
Boas tardes, preciso de uma ajuda.

Tenho uma jTable que contem objetos em cada célula. Agora preciso de alterar a cor da célula tendo em conta um atributo desse objeto.

Pelo que pude pesquisar, tenho que criar uma classe que implemente TableCellRenderer, e aí fazer as alterações que quero ao render. Depois é chamar essa classe quando construo a tabela.

Já tentei mil e uma coisa, mas não estou a conseguir alterar cor nenhuma. Eu até já ficava meio contente se conseguisse alterar a cor de uma coluna ou linha qualquer, mas nem isso estou a conseguir.

Agradeço qualquer ajuda desde já.
 
Boas tardes, preciso de uma ajuda.

Tenho uma jTable que contem objeCtos em cada célula. Agora preciso de alterar a cor da célula tendo em conta um atributo desse objeCto.

Pelo que pude pesquisar, tenho que criar uma classe que implemente TableCellRenderer, e aí fazer as alterações que quero ao render. Depois é chamar essa classe quando construo a tabela.

Já tentei mil e uma coisa, mas não estou a conseguir alterar cor nenhuma. Eu até já ficava meio contente se conseguisse alterar a cor de uma coluna ou linha qualquer, mas nem isso estou a conseguir.

Agradeço qualquer ajuda desde já.

A vermelho:
Vê o texto do meu avatar...

EDIT:
O fórum está a substituir o fecho das chavetas por **...

Code:
public class [COLOR=#ff0000][B]XXXX[/B][/COLOR] [B]extends JLabel implements TableCellRenderer[/B] {
    @Override
    public Component getTableCellRendererComponent(
            JTable table,
            Object value,
            boolean isSelected,
            boolean hasFocus,
            int row,
            int column) {
        [B]// Alteras aqui a cor.[/B]
        return this;
    **
**

Code:
TableCellRenderer xxxx = new [COLOR=#ff0000][B]XXXX[/B][/COLOR]();
//...
table = new JTable(...) {
    public TableCellRenderer getCellRenderer(int row, int column) {
        if (...) {
            return xxxx;
        **
        return super.getCellRenderer(row, column);
    **
**;

How to Use Tables (The Java™ Tutorials > Creating a GUI With JFC/Swing > Using Swing Components)
 
Eu neste momento já consigo mudar a cor das células sem nenhuma condição. Mas como disse em cima, preciso de ir buscar um atributo do objecto que lá se encontra. Mas tem um problema pois existem células vazias, e eu não estou a conseguir gerir essas duas coisas.

Neste momento uso esta instrução para aceder ao objecto que se encontra na tabela. Mas não tenho a certeza se funciona. Eu uso-a numa outra tabela, onde tenho um objecto por linha.

Nesta tabela onde estou a trabalhar, tenho um objecto por célula.

A instrução em causa é esta:

Pagamento a = (Pagamento) table.getModel().getValueAt(table.convertRowIndexToModel(row), column);

Obrigado pela ajuda
 
Eu neste momento já consigo mudar a cor das células sem nenhuma condição. Mas como disse em cima, preciso de ir buscar um atributo do objecto que lá se encontra. Mas tem um problema pois existem células vazias, e eu não estou a conseguir gerir essas duas coisas.

Neste momento uso esta instrução para aceder ao objecto que se encontra na tabela. Mas não tenho a certeza se funciona. Eu uso-a numa outra tabela, onde tenho um objecto por linha.

Nesta tabela onde estou a trabalhar, tenho um objecto por célula.

A instrução em causa é esta:

Pagamento a = (Pagamento) table.getModel().getValueAt(table.convertRowIndexToModel(row), column);

Obrigado pela ajuda

Deverá funcionar, mas depois de obteres o conteúdo tens de verificar se a==null.
Se for null não podes fazer as outras validações baseadas no conteúdo de a.
 
se existem células vazias então o getValueAt devolve null

eu fazia

Object o = table.getModel().getValueAt(table.convertRowIndexT oModel(row), column);
if (o instanceOf Pagamento) {
Pagamento a = (Pagamento) o;
...
**

.

 
Eu neste momento já consigo mudar a cor das células sem nenhuma condição. Mas como disse em cima, preciso de ir buscar um atributo do objecto que lá se encontra. Mas tem um problema pois existem células vazias, e eu não estou a conseguir gerir essas duas coisas.

Neste momento uso esta instrução para aceder ao objecto que se encontra na tabela. Mas não tenho a certeza se funciona. Eu uso-a numa outra tabela, onde tenho um objecto por linha.

Nesta tabela onde estou a trabalhar, tenho um objecto por célula.

A instrução em causa é esta:

Pagamento a = (Pagamento) table.getModel().getValueAt(table.convertRowIndexToModel(row), column);

Obrigado pela ajuda

Depois dessa instrução podes colocar:
if ( a != null ){
dosomething....
**

isto assumindo que o método getValueAt(...) retorna "null" numa linha vazia, mas isso podes confirmar no javadoc.

Acho que é isto que queres(?).
 
Muito obrigado aos 3 (O ptsyndicate também merece), consegui resolver o problema. Usei o instanceof que já nem me lembrava dele (já não mexia em java há quase 3 anos)[kiss]
 
Last edited:
se existem células vazias então o getValueAt devolve null

eu fazia

Object o = table.getModel().getValueAt(table.convertRowIndexT oModel(row), column);
if (o
instanceOf Pagamento) {
Pagamento a = (Pagamento) o;
...
**

.



Ui... "instanceof" é a "versão" object oriented do "goto" na programação estruturada.
Não era preferível usar um try-catch para a excepção gerada no cast?

Java Practices -> Beware of instanceof operator
Prefer polymorphism over instanceof and downcasting
Replace Conditional with Polymorphism
 
obrigado pelo aviso, vou reescrever o código tendo isso em atenção. Por acaso nunca me tinham dito para evitar o instanceof.
 
obrigado pelo aviso, vou reescrever o código tendo isso em atenção. Por acaso nunca me tinham dito para evitar o instanceof.

E o CAST idem.
O problema é que há muitas bibliotecas que não implementam o polimorfismo de forma satisfatória...
E nessas situações não há grande volta a dar.
O ideal era que essas classes usassem genéricos, para permitir a validação correcta do código e evitar
a necessidade de cast.

Java Generics Quick Tutorial | Java Code Geeks
 
Nuno156 ou alguém que perceba da poda... o que aconselham para um miúdo de 13 anos iniciar-se em programação? Será que há cursos em Lisboa específicos para a idade dele?



Thanks [;)]
 
Nuno156 ou alguém que perceba da poda... o que aconselham para um miúdo de 13 anos iniciar-se em programação? Será que há cursos em Lisboa específicos para a idade dele?
Thanks [;)]

Primeira questão:
O miúdo está MESMO interessado?
É que se não estiver (MESMO), dificilmente vai aprender.

Segunda questão:
Sabe razoavelmente bem inglês?
É que se não souber vai ter muuuuuitas dificuldades.

Quanto aos cursos...
Não sei se há.
Mas mesmo que haja, não me parece boa ideia. Pelo menos nessa idade.
Normalmente os cursos têm uma cadência lenta, para que possa acomodar
todas as diferentes cadências de aprendizagem de cada um dos alunos.
Ora, alguém que esteja interessado em aprender ao seu próprio ritmo
poderá ter mais dificuldades num curso.

O ideal é comprar um livro, e segui-lo. Depois comprar outro mais avançado,
e repetir o processo.
Isto permite que o aprendiz possa aprender ao seu próprio ritmo e interesse.
No limite, em lugar de um curso, é usar a possibilidade de colocar questões
a alguém que as saiba responder.

Estive aqui a fazer umas pesquisas, e tenho alguns links...

Uns livros que me parecem interessantes:
http://www.amazon.co.uk/Python-Kids...4076/ref=sr_1_1?ie=UTF8&qid=1378402715&sr=8-1
http://www.amazon.co.uk/Hello-World...0920/ref=sr_1_6?ie=UTF8&qid=1378402715&sr=8-6

Um site para te dar algumas ideias adicionais:
How and Why to Teach Your Kids to Code

Caso o miúdo não esteja MESMO interessado...
Existem "brinquedos" programáveis, em que os miúdos ganham interesse
em programar para que possam usar os brinquedos:
LEGO.com MINDSTORMS : Home
 
Deve haver livros em portugues. Por exemplo os livros que dao no secundario nas aulas de TIC.

Por acaso tambem comecei por volta dessa idade com um x286 e um manual de qbasic que vinha com o MS DOS [:D]
Que tal o petiz comecar por construir um website?

Criar Websites Para Totós

Criar Websites Para Totós
 
Deve haver livros em portugues. Por exemplo os livros que dao no secundario nas aulas de TIC.

Por acaso tambem comecei por volta dessa idade com um x286 e um manual de qbasic que vinha com o MS DOS [:D]
Que tal o petiz comecar por construir um website?

Criar Websites Para Totós

Criar Websites Para Totós

Livros em Português?
Não sei qual a vantagem.

Para fazer desenvolvimento de software convém saber bem inglês. As linguagens
de programação são todas em inglês. A maioria dos recursos (que interessam) são
todos em inglês.

Mais vale fazer 2-em-1 e começar logo a aproveitar para melhorar também as
capacidades em inglês.

Além disso, sempre que pego num livro de informática de um autor português para o
ensino universitário, a excepção é não ser uma grande porcaria. E não estou a falar
em mal escrito, ou pouco didáctico. Refiro-me mesmo a ficar bem patente que não
sabe do que está a falar (escrever). O problema é que só repara nisto quem já sabe,
e como a maioria de quem lê ainda não sabe... acredita e acaba por aprender mal.

Estas coisas têm de ser escritas por quem sabe efectivamente, e não por teóricos
académicos com experiência nula no mundo real.

Até dou um exemplo com um autor que não é português, para demonstrar que é
necessário saber MESMO a sério do que se está a falar.

Andrew S. Tanenbaum - Wikipedia, the free encyclopedia

Este senhor tem 2 livros bastante usados para estudar na universidade (ele próprio é
professor).
- Computer Networks
- Modern Operating Systems

Se forem ao link do autor, irão reparar que da lista de livros apenas dois têm links.
Esses dois são sobre um mesmo tema: Sistemas Operativos.

Ora, este senhor é o criador do MINIX. Um kernel de sistema operativo que inspirou
o Linus Torvalds a criar o kernel LINUX.

Portanto, é bem claro que este senhor (Tanenbaum) é um perito em sistemas operativos.
E é precisamente que dos livros dele, aqueles com o link (sobre sistemas operativos)
sejam os mais referenciados.

Ora, quem perceber (e gostar) alguma coisa do assunto (informática a sério), ao ler
os dois livros que referi anteriormente (Computer Networks / Modern Operating Systems)
consegue observar as diferenças que referi sobre a necessidade de se ser um verdadeiro
especialista no assunto.
Não é que ele fale sobre o que não sabe (porque nunca o apanhei a inventar nada, ao
contrário de alguns autores portugueses), nota-se apenas na emoção colocada na
escrita. O livro Modern Operating Systems faz vibrar o leitor com a mesma emoção
que o autor sente pelo tema. Já o Computer Networks é "frio" e simplesmente técnico.
 
Eu gostei do Computer Networks (gosto especialmente da parte da Trudy, Bob & Alice ), mas verdade seja dita, não li o dos S.O. [;)]
 
Eu gostei do Computer Networks (gosto especialmente da parte da Trudy, Bob & Alice ), mas verdade seja dita, não li o dos S.O. [;)]

Provavelmente não me terei explicado bem...
Eu não estou a dizer que não gostei do CN.
Apenas estava a dizer que se nota quando o autor domina, respira e vive o tema sobre
o qual escreve. Essa paixão e conhecimento nota-se bem no MOS, ao passo que no CN
nota-se que a paixão não é a mesma.
[;)]
 
Back
Top