<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4954264097640739889</id><updated>2011-08-02T11:03:44.765-07:00</updated><category term='manipulaçao ficheiros'/><category term='ficheiro binario'/><category term='texto'/><category term='manipulaçao'/><category term='fread'/><category term='fscanf'/><category term='manipulacao'/><category term='leitura'/><category term='fopen'/><category term='binarios'/><category term='fclose'/><category term='estruturas'/><category term='int'/><category term='variavel'/><category term='BD'/><category term='estrocturas'/><category term='BASE DADOS'/><category term='manipulacao ficheiros'/><category term='escrita'/><category term='qt4'/><category term='introduçao ao qt'/><category term='iniciaçao'/><category term='manipulaçao dados'/><category term='MySql'/><category term='qt'/><category term='fprintf'/><category term='fwrite'/><category term='apontadores'/><category term='ficheiros'/><title type='text'>Programação 08/09</title><subtitle type='html'>&lt;center&gt;WELCOME!!!&lt;/center&gt;&lt;br&gt;
este blog foi feito para a disciplina de Programaçao.
Servirá para a publicação de trabalhos de portefólio electrónico e códigos de alguns programas. cmps Tiago Graça</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://tgraxa.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4954264097640739889/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://tgraxa.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Tiago Graça</name><uri>http://www.blogger.com/profile/09435736787234197248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>12</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4954264097640739889.post-6691383214585897934</id><published>2009-10-12T04:31:00.000-07:00</published><updated>2009-10-12T04:39:39.960-07:00</updated><title type='text'>TRATAMENTO DE IMAGEM - PRIMEIRA EDIÇÃO</title><content type='html'>Well de entre as centenas de edições que o professor nos mandou fazer esta foi a unica que me deu "gosto" fazer. consistia em editarmos um cavalo ao nosso gosto da seguinte imagem inicial:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;BOTÃO DIREITO DO RATO; VER IMAGEM PARA VER A IMAGEM COMPLETA&lt;/b&gt;&lt;br /&gt;&lt;img src="http://img340.imageshack.us/img340/9971/imagem015r.jpg"&gt;&lt;br /&gt;&lt;br /&gt;O resultado final foi o seguinte: &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://img2.imageshack.us/img2/1410/imagem015v.jpg"&gt;&lt;br /&gt;&lt;br /&gt;The rastafari horse :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4954264097640739889-6691383214585897934?l=tgraxa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tgraxa.blogspot.com/feeds/6691383214585897934/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4954264097640739889&amp;postID=6691383214585897934' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4954264097640739889/posts/default/6691383214585897934'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4954264097640739889/posts/default/6691383214585897934'/><link rel='alternate' type='text/html' href='http://tgraxa.blogspot.com/2009/10/tratamento-de-imagem-primeira-edicao.html' title='TRATAMENTO DE IMAGEM - PRIMEIRA EDIÇÃO'/><author><name>Tiago Graça</name><uri>http://www.blogger.com/profile/09435736787234197248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4954264097640739889.post-89258467446852602</id><published>2009-09-30T03:01:00.000-07:00</published><updated>2009-09-30T03:13:03.719-07:00</updated><title type='text'>Ano 09/10 -Tratamento de imagens</title><content type='html'>Começamos este ano a fazer tratamento de imagens e com muita pena minha com o Gimp programa que não gosto. É verdade que é free mas não é comparavel ao seu "rival". o PS não só é profissional como mais fácil de usar e faz-se coisas muito melhores. O gimp tem as suas vantagens mas nenhuma que me agrade. O curso de Artes gráficas desta mesma escola dispõe das licenças de ps e não custava nada termos também. Mas pronto vai-se trabalhando e veremos noo que dá :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4954264097640739889-89258467446852602?l=tgraxa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tgraxa.blogspot.com/feeds/89258467446852602/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4954264097640739889&amp;postID=89258467446852602' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4954264097640739889/posts/default/89258467446852602'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4954264097640739889/posts/default/89258467446852602'/><link rel='alternate' type='text/html' href='http://tgraxa.blogspot.com/2009/09/ano-0910-tratamento-de-imagens.html' title='Ano 09/10 -Tratamento de imagens'/><author><name>Tiago Graça</name><uri>http://www.blogger.com/profile/09435736787234197248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4954264097640739889.post-3917525686333644183</id><published>2009-05-25T01:00:00.000-07:00</published><updated>2009-05-25T01:45:17.596-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MySql'/><category scheme='http://www.blogger.com/atom/ns#' term='BD'/><category scheme='http://www.blogger.com/atom/ns#' term='BASE DADOS'/><category scheme='http://www.blogger.com/atom/ns#' term='qt'/><title type='text'>Introdução aos Sistemas de Informação - BASE DE DADOS EM QT</title><content type='html'>No modulo 12 uma nova componente foi introduzida, aprendemos a criar bases de dados em QT.&lt;br /&gt;Antes da programação em si, começamos por criar uma pequena apresentação onde é explicado o básico sobre bases de dados, mySql, etc. que pode ser baixado no link seguinte:&lt;br /&gt;&lt;center&gt;http://www.4shared.com/file/107613229/b7dbe1d6/psisql.html&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Agora a programação: No programa que eu fiz criei uma ligação a base de dados situada no phpmyadmin em qt mas antes de explicar umas imagens sobre o programa:&lt;br /&gt;&lt;center&gt;&lt;a href="http://img195.imageshack.us/my.php?image=capturaecraprojectmovie.png" target="_blank"&gt;&lt;img src="http://img195.imageshack.us/img195/2317/capturaecraprojectmovie.th.png" border="0" alt="Free Image Hosting at www.ImageShack.us" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://img604.imageshack.us/content.php?page=blogpost&amp;files=img195/2317/capturaecraprojectmovie.png" title="QuickPost"&gt;&lt;/center&gt; &lt;center&gt;&lt;a href="http://img8.imageshack.us/my.php?image=capturaecradialog.png" target="_blank"&gt;&lt;img src="http://img8.imageshack.us/img8/144/capturaecradialog.th.png" border="0" alt="Free Image Hosting at www.ImageShack.us" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://img604.imageshack.us/content.php?page=blogpost&amp;files=img8/144/capturaecradialog.png" title="QuickPost"&gt;&lt;/center&gt; &lt;br /&gt;&lt;br&gt;&lt;br /&gt;Nas imagens pode-se ver um semáforo, este semáforo fica vermelho quando não foi possível a ligação a base de dados e verde quando e possível, é no código que podemos por a nossa palavra passe, nome, etc, como se pode ver no seguinte extracto de código:&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt; myHostName=&amp;quot;xxx.xxx.x.xxx&amp;quot;;&lt;br /&gt;    myDatabase=&amp;quot;graca&amp;quot;;&lt;br /&gt;    myUserName=&amp;quot;graca&amp;quot;;&lt;br /&gt;    myPassword=&amp;quot;xxxxxxxxxx&amp;quot;;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;&lt;br /&gt;bool projectMovie::ligar_bd(){&lt;br /&gt;if((db_status = createConnection(myHostName, myDatabase, myUserName, myPassword))){&lt;br /&gt;createDatabase();&lt;br /&gt;ui-&amp;gt;label_2-&amp;gt;setPixmap(QPixmap(&amp;quot;:/images/green&amp;quot;));&lt;br /&gt;setMenuStatus02();&lt;br /&gt;&lt;br /&gt;    }else{&lt;br /&gt;        ui-&amp;gt;label_2-&amp;gt;setPixmap(QPixmap(&amp;quot;:/images/red&amp;quot;));&lt;br /&gt;        setMenuStatusFAIL();&lt;br /&gt;    }&lt;br /&gt;    return db_status;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;  &lt;br /&gt;Depois criamos a tabela para isso temos que fazer um QtableView e digitar os dados como se pode ver no seguinte:&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;void projectMovie::createDatabase(){&lt;br /&gt;    QSqlQuery query;&lt;br /&gt;    query.exec(&amp;quot;drop table movies&amp;quot;);&lt;br /&gt;    query.exec(&amp;quot;create table movies (&amp;quot;&lt;br /&gt;        &amp;quot;name varchar(20) primary key, &amp;quot;&lt;br /&gt;        &amp;quot;rate varchar(20), &amp;quot;&lt;br /&gt;        &amp;quot;idade_permitida varchar(20), &amp;quot;&lt;br /&gt;        &amp;quot;bilhete varchar(20), &amp;quot;&lt;br /&gt;        &amp;quot;sala int, &amp;quot;&lt;br /&gt;        &amp;quot;disponibilidade varchar(20))&amp;quot;&lt;br /&gt;    );&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;void projectMovie::createTestData(){&lt;br /&gt;    QSqlQuery query;&lt;br /&gt;    query.exec(&amp;quot;insert into movies values('fast &amp;amp; furious', '*****', '+16', '5e', 5 ,'100%')&amp;quot;);&lt;br /&gt;    query.exec(&amp;quot;insert into movies values('Mr Bean', '****', '+6', '5e', 3, '20%')&amp;quot;);&lt;br /&gt;    query.exec(&amp;quot;insert into movies values('B13 2', '*****', '+18', '10e(vip room)', 10 ,'10%')&amp;quot;);&lt;br /&gt;    query.exec(&amp;quot;insert into movies values('Tiago Costa', '*****', '+18', '10e', 1 ,'0%')&amp;quot;);&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;por fim existem vários botões, cada um e um dialog onde podemos ver a tabela, inserir dados, eliminar dados e procurar.&lt;br /&gt;No QT o resultado final é este:&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;a href="http://img22.imageshack.us/my.php?image=capturaecraprojectmovieq.png" target="_blank"&gt;&lt;img src="http://img22.imageshack.us/img22/1076/capturaecraprojectmovieq.th.png" border="0" alt="Free Image Hosting at www.ImageShack.us" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://img604.imageshack.us/content.php?page=blogpost&amp;files=img22/1076/capturaecraprojectmovieq.png" title="QuickPost"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4954264097640739889-3917525686333644183?l=tgraxa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tgraxa.blogspot.com/feeds/3917525686333644183/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4954264097640739889&amp;postID=3917525686333644183' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4954264097640739889/posts/default/3917525686333644183'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4954264097640739889/posts/default/3917525686333644183'/><link rel='alternate' type='text/html' href='http://tgraxa.blogspot.com/2009/05/introducao-aos-sistemas-de-informacao.html' title='Introdução aos Sistemas de Informação - BASE DE DADOS EM QT'/><author><name>Tiago Graça</name><uri>http://www.blogger.com/profile/09435736787234197248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4954264097640739889.post-3928611593886182915</id><published>2009-01-21T08:13:00.000-08:00</published><updated>2009-03-25T08:42:04.419-07:00</updated><title type='text'>MODULO 11 - QT COMES BACK</title><content type='html'>No fim do módulo 10 e agora no começo deste módulo começamos a programar outra vez em QT;&lt;br /&gt;Para isso duas novas ferramentas foram-nos apresentadas:&lt;br /&gt;&lt;b&gt;o QT Creator e o QT Designer&lt;/b&gt; (&lt;a href="http://gracianotorrao.wordpress.com/2009/01/14/qt-creator/"&gt;QT Creator Review&lt;/a&gt;)&lt;br /&gt;Com este programa foi muito mais facil programar nesta plataforma... mas agora ao que interessa.&lt;br /&gt;Fizemos vários tipos de programas como &lt;b&gt;Dialogs&lt;/b&gt;:&lt;br /&gt;Um “dialog” é construído utilizando um conjunto de widgets onde estabelecemos ligações (SIGNALS/SLOTS) entre eles. Para criar estes &lt;i&gt;Dialogs&lt;/i&gt; precisamos de saber o básico de Herança (Explicado no post anterior) e de classes. Depois desta introduçao vamos começar o programa. O que eu fiz foi um widget que nos mostra as matrículas portuguesas:&lt;br /&gt;O resultado final será este:&lt;br /&gt;&lt;center&gt;&lt;a href="http://img230.imageshack.us/my.php?image=capturaecramatrculawv7.png" target="_blank"&gt;&lt;img src="http://img230.imageshack.us/img230/7600/capturaecramatrculawv7.th.png" border="0" alt="Free Image Hosting at www.ImageShack.us" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://img604.imageshack.us/content.php?page=blogpost&amp;files=img230/7600/capturaecramatrculawv7.png" title="QuickPost"&gt;&lt;/a&gt;&lt;/center&gt;&lt;br /&gt;Agora o programa:&lt;br /&gt;&lt;b&gt;IdAutomovelDialog.cpp&lt;/b&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;#include &amp;lt;QtGui&amp;gt;&lt;br /&gt;&lt;br /&gt;#include &amp;quot;IdDoAutomovelDialog.h&amp;quot;&lt;br /&gt;&lt;br /&gt;IdDoAutomovelDialog::IdDoAutomovelDialog(QWidget *parent):QDialog(parent){&lt;br /&gt;    //Label&lt;br /&gt;    label = new QLabel(&amp;quot;&amp;amp;Matr&amp;#237;cula:&amp;quot;);&lt;br /&gt;&lt;br /&gt;    //Line Edit&lt;br /&gt;    lineEdit = new QLineEdit;&lt;br /&gt;&lt;br /&gt;    //Buddyes&lt;br /&gt;    label-&amp;gt;setBuddy(lineEdit);&lt;br /&gt;&lt;br /&gt;    //Spacer&lt;br /&gt;    horizontalSpacer = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);&lt;br /&gt;&lt;br /&gt;    //OK Button&lt;br /&gt;    okButton = new QPushButton(&amp;quot;Ok&amp;quot;);&lt;br /&gt;    okButton-&amp;gt;setEnabled(false);&lt;br /&gt;&lt;br /&gt;    //CANCEL Button&lt;br /&gt;    cancelButton = new QPushButton(&amp;quot;Cancel&amp;quot;);&lt;br /&gt;    cancelButton-&amp;gt;setObjectName(QString::fromUtf8(&amp;quot;cancelButton&amp;quot;));&lt;br /&gt;&lt;br /&gt;    //Validar a matr&amp;#237;cula introduzida ( http://pt.wikipedia.org/wiki/Matr%C3%ADculas_autom%C3%B3veis_em_Portugal )&lt;br /&gt;    listaMatriculasValidas = new QStringList;&lt;br /&gt;    listaMatriculasValidas-&amp;gt;append(&amp;quot;[A-Za-z]{2,2}[-][0-9]{2,2}[-][0-9]{2,2}&amp;quot;);&lt;br /&gt;    listaMatriculasValidas-&amp;gt;append(&amp;quot;[0-9]{2,2}[-][0-9]{2,2}[-][A-Za-z]{2,2}&amp;quot;);      //or&lt;br /&gt;    listaMatriculasValidas-&amp;gt;operator &amp;lt;&amp;lt;(&amp;quot;[0-9]{2,2}[-][A-Za-z]{2,2}[-][0-9]{2,2}&amp;quot;);&lt;br /&gt;    QRegExp regExp(listaMatriculasValidas-&amp;gt;join(&amp;quot;&amp;#124;&amp;quot;));&lt;br /&gt;    lineEdit-&amp;gt;setValidator(new QRegExpValidator(regExp, this));&lt;br /&gt;&lt;br /&gt;    //Definir ac&amp;#231;&amp;#245;es&lt;br /&gt;    connect(lineEdit, SIGNAL(textChanged(const QString &amp;amp;)),&lt;br /&gt;            this, SLOT(on_lineEdit_textChanged()));&lt;br /&gt;&lt;br /&gt;    connect(okButton, SIGNAL(clicked()),&lt;br /&gt;            this, SLOT(accept()));&lt;br /&gt;    connect(cancelButton, SIGNAL(clicked()),&lt;br /&gt;            this, SLOT(close()));&lt;br /&gt;&lt;br /&gt;    //layout Dialog&lt;br /&gt;    horizontalLayout = new QHBoxLayout;&lt;br /&gt;    horizontalLayout_2 = new QHBoxLayout;&lt;br /&gt;    verticalLayout = new QVBoxLayout;&lt;br /&gt;&lt;br /&gt;    horizontalLayout-&amp;gt;addWidget(label);&lt;br /&gt;    horizontalLayout-&amp;gt;addWidget(lineEdit);&lt;br /&gt;&lt;br /&gt;    horizontalLayout_2-&amp;gt;addItem(horizontalSpacer);&lt;br /&gt;    horizontalLayout_2-&amp;gt;addWidget(okButton);&lt;br /&gt;    horizontalLayout_2-&amp;gt;addWidget(cancelButton);&lt;br /&gt;&lt;br /&gt;    verticalLayout-&amp;gt;addLayout(horizontalLayout);&lt;br /&gt;    verticalLayout-&amp;gt;addLayout(horizontalLayout_2);&lt;br /&gt;&lt;br /&gt;    setWindowTitle(&amp;quot;Matr&amp;#237;cula&amp;quot;);&lt;br /&gt;    setLayout(verticalLayout);&lt;br /&gt;&lt;br /&gt;    //Tab order&lt;br /&gt;    QWidget::setTabOrder(lineEdit, okButton);&lt;br /&gt;    QWidget::setTabOrder(okButton, cancelButton);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void IdDoAutomovelDialog::on_lineEdit_textChanged(){&lt;br /&gt;    okButton-&amp;gt;setEnabled(lineEdit-&amp;gt;hasAcceptableInput());&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;IdAutomovelDialog.h&lt;/b&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;#ifndef IDDOAUTOMOVELDIALOG_H&lt;br /&gt;#define IDDOAUTOMOVELDIALOG_H&lt;br /&gt;&lt;br /&gt;#include &amp;lt;QDialog&amp;gt;&lt;br /&gt;&lt;br /&gt;class QLabel;&lt;br /&gt;class QLineEdit;&lt;br /&gt;class QSpacerItem;&lt;br /&gt;class QPushButton;&lt;br /&gt;class QHBoxLayout;&lt;br /&gt;class QVBoxLayout;&lt;br /&gt;class QString;&lt;br /&gt;class QRegExp;&lt;br /&gt;&lt;br /&gt;class IdDoAutomovelDialog : public QDialog&lt;br /&gt;{&lt;br /&gt;    Q_OBJECT&lt;br /&gt;&lt;br /&gt;public:&lt;br /&gt;    IdDoAutomovelDialog(QWidget *parent = 0);&lt;br /&gt;&lt;br /&gt;private slots:&lt;br /&gt;    void on_lineEdit_textChanged();&lt;br /&gt;&lt;br /&gt;private:&lt;br /&gt;    QLabel *label;&lt;br /&gt;    QLineEdit *lineEdit;&lt;br /&gt;    QSpacerItem *horizontalSpacer;&lt;br /&gt;    QPushButton *okButton;&lt;br /&gt;    QPushButton *cancelButton;&lt;br /&gt;    QStringList *listaMatriculasValidas;&lt;br /&gt;    QVBoxLayout *verticalLayout;&lt;br /&gt;    QHBoxLayout *horizontalLayout;&lt;br /&gt;    QHBoxLayout *horizontalLayout_2;&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;#endif // IDDOAUTOMOVELDIALOG_H&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;main.cpp&lt;/b&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;#include &amp;lt;QApplication&amp;gt;&lt;br /&gt;&lt;br /&gt;#include &amp;quot;IdDoAutomovelDialog.h&amp;quot;&lt;br /&gt;&lt;br /&gt;int main(int argc, char *argv[]){&lt;br /&gt;    QApplication app(argc, argv);&lt;br /&gt;    IdDoAutomovelDialog *dialog = new IdDoAutomovelDialog;&lt;br /&gt;    dialog-&amp;gt;show();&lt;br /&gt;    return app.exec();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt; &lt;br /&gt;&lt;br /&gt;Isto feito neste programa foi mesmo o mais facil; O mais dificil vem a seguir; Inda em QT mas agora falando de streaming;&lt;br /&gt;Streaming é basicamente troca de dados através de 2 novas funçoes de QT:&lt;br /&gt;-&lt;b&gt;QTextStream: para manipular dados no formato de texto.&lt;/b&gt;&lt;br /&gt;-&lt;b&gt;QDataStream: Para manipular dados no formato binário.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;O primeiro a ser falado foi o QTextStream talvez por ser o mais facil; Isto permite trocar dados em apenas formato de texto. &lt;br /&gt;Aqui um pequeno programa de exemplo:&lt;br /&gt;&lt;b&gt;dialog.h&lt;/b&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;#define DIALOG_H&lt;br /&gt;&lt;br /&gt;#include &amp;lt;QtGui/QDialog&amp;gt;&lt;br /&gt;#include &amp;lt;QMessageBox&amp;gt;&lt;br /&gt;#include &amp;lt;QTextStream&amp;gt;&lt;br /&gt;#include &amp;lt;QFile&amp;gt;&lt;br /&gt;&lt;br /&gt;namespace Ui&lt;br /&gt;{&lt;br /&gt;    class DialogClass;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;class Dialog : public QDialog&lt;br /&gt;{&lt;br /&gt;    Q_OBJECT&lt;br /&gt;&lt;br /&gt;public:&lt;br /&gt;    Dialog(QWidget *parent = 0);&lt;br /&gt;    ~Dialog();&lt;br /&gt;private slots:&lt;br /&gt;    void processar();&lt;br /&gt;private:&lt;br /&gt;    Ui::DialogClass *ui;&lt;br /&gt;    QFile original;&lt;br /&gt;    QFile copia;&lt;br /&gt;    QString line, new_line;&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;#endif // DIALOG_H&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;dialog.cpp&lt;/b&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;#include &amp;quot;dialog.h&amp;quot;&lt;br /&gt;#include &amp;quot;ui_dialog.h&amp;quot;&lt;br /&gt;&lt;br /&gt;Dialog::Dialog(QWidget *parent)&lt;br /&gt;    : QDialog(parent), ui(new Ui::DialogClass)&lt;br /&gt;{&lt;br /&gt;    ui-&amp;gt;setupUi(this);&lt;br /&gt;    connect(ui-&amp;gt;cancelButton, SIGNAL(clicked()), this, SLOT(reject()));&lt;br /&gt;    connect(ui-&amp;gt;okButton, SIGNAL(clicked()), this, SLOT(accept()));&lt;br /&gt;    connect(ui-&amp;gt;goButton, SIGNAL(clicked()), this, SLOT(processar()));&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Dialog::~Dialog()&lt;br /&gt;{&lt;br /&gt;    delete ui;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void Dialog::processar(){&lt;br /&gt;    QMessageBox msgBox;&lt;br /&gt;    msgBox.setModal(true);&lt;br /&gt;    if(ui-&amp;gt;original-&amp;gt;text().isEmpty() &amp;#124;&amp;#124; ui-&amp;gt;copia-&amp;gt;text().isEmpty() &amp;#124;&amp;#124;&lt;br /&gt;       ui-&amp;gt;palavra-&amp;gt;text().isEmpty() &amp;#124;&amp;#124; ui-&amp;gt;novapalavra-&amp;gt;text().isEmpty()){&lt;br /&gt;        msgBox.setText(&amp;quot;&amp;#201; obrigat&amp;#243;rio o preenchimento de todos os campos!&amp;quot;);&lt;br /&gt;        msgBox.exec();&lt;br /&gt;    }else{&lt;br /&gt;        original.setFileName(ui-&amp;gt;original-&amp;gt;text());&lt;br /&gt;        copia.setFileName(ui-&amp;gt;copia-&amp;gt;text());&lt;br /&gt;        if (original.open(QFile::ReadOnly)) {&lt;br /&gt;            copia.open(QFile::WriteOnly);&lt;br /&gt;            QTextStream in(&amp;amp;original);&lt;br /&gt;            QTextStream out(&amp;amp;copia);&lt;br /&gt;            out.setCodec(&amp;quot;UTF-8&amp;quot;);&lt;br /&gt;            in.setCodec(&amp;quot;UTF-8&amp;quot;);&lt;br /&gt;            do {&lt;br /&gt;                line = in.readLine();&lt;br /&gt;                new_line = line;&lt;br /&gt;                new_line.replace(ui-&amp;gt;palavra-&amp;gt;text(), ui-&amp;gt;novapalavra-&amp;gt;text());&lt;br /&gt;                out &amp;lt;&amp;lt; new_line &amp;lt;&amp;lt; endl;&lt;br /&gt;            } while (!line.isNull());&lt;br /&gt;            original.close();&lt;br /&gt;            copia.close();&lt;br /&gt;            msgBox.setText(&amp;quot;Sucesso!&amp;quot;);&lt;br /&gt;            msgBox.exec();;&lt;br /&gt;&lt;br /&gt;        }else{&lt;br /&gt;            msgBox.setText(&amp;quot;Erro ao abrir o ficheiro: &amp;quot; + ui-&amp;gt;original-&amp;gt;text());&lt;br /&gt;            msgBox.exec();;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Como o modo grafico deste programa é gerado pelo QTDesigner eu ponho aqui um link para download do projecto completo que contém além disto um .ui e um main.cpp.&lt;br /&gt;&lt;a href="http://www.4shared.com/file/93746650/cb49c290/exemplo04tar.html"&gt;Link para Download&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Agora ainda mais difícil começamos a falar do QDataStream:&lt;br /&gt;QDataStream permite a troca de datagramas como neste programa:&lt;br /&gt;&lt;center&gt;&lt;br /&gt; &lt;a href="http://img23.imageshack.us/my.php?image=capturaecraz.png" target="_blank"&gt;&lt;img src="http://img23.imageshack.us/img23/1416/capturaecraz.th.png" border="0" alt="Free Image Hosting at www.ImageShack.us" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;Este programa contém dois ficheiros um que recebe e um que envia dados no caso um receiver e um sender;&lt;br /&gt;&lt;br /&gt;Agora o código; Como no exemplo anterior este código também é gerado pelo QTDesigner e Contém ainda um resource file com imagens do programa;&lt;br /&gt;Deixo o link com o programa completo cujo download pode ser feito clicando &lt;a href="http://www.4shared.com/file/94918958/195caa22/cancelastar.html"&gt;aqui&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;RECEIVER&lt;/b&gt;&lt;br /&gt;&lt;b&gt;receiver.cpp&lt;/b&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;#include &amp;quot;receiver.h&amp;quot;&lt;br /&gt;#include &amp;quot;ui_receiver.h&amp;quot;&lt;br /&gt;&lt;br /&gt;receiver::receiver(QWidget *parent)&lt;br /&gt;    : QWidget(parent), ui(new Ui::receiverClass)&lt;br /&gt;{&lt;br /&gt;    ui-&amp;gt;setupUi(this);&lt;br /&gt;    udpSocket = new QUdpSocket(this);&lt;br /&gt;    udpSocket-&amp;gt;bind(45454);&lt;br /&gt;    connect(udpSocket, SIGNAL(readyRead()),&lt;br /&gt;             this, SLOT(datagramreceiver()));&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;receiver::~receiver()&lt;br /&gt;{&lt;br /&gt;    delete ui;&lt;br /&gt;}&lt;br /&gt;void receiver::datagramreceiver(){&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    QByteArray datagram;&lt;br /&gt;&lt;br /&gt;    do {&lt;br /&gt;        datagram.resize(udpSocket-&amp;gt;pendingDatagramSize());&lt;br /&gt;        udpSocket-&amp;gt;readDatagram(datagram.data(), datagram.size());&lt;br /&gt;    } while (udpSocket-&amp;gt;hasPendingDatagrams());&lt;br /&gt;&lt;br /&gt;    int m;&lt;br /&gt;    bool n;&lt;br /&gt;&lt;br /&gt;    QDataStream in(&amp;amp;datagram, QIODevice::ReadOnly);&lt;br /&gt;    in.setVersion(QDataStream::Qt_4_1);&lt;br /&gt;    in &amp;gt;&amp;gt; m &amp;gt;&amp;gt; n;    //for more data in &amp;gt;&amp;gt; m &amp;gt;&amp;gt; n &amp;gt;&amp;gt; o &amp;gt;&amp;gt; p &amp;gt;&amp;gt; ...;&lt;br /&gt;&lt;br /&gt;      if(m == ui-&amp;gt;lineEdit-&amp;gt;text().toInt()){&lt;br /&gt;          if(n)&lt;br /&gt;            ui-&amp;gt;pushButton-&amp;gt;setIcon(QIcon(&amp;quot;:/imagens/open&amp;quot;));&lt;br /&gt;          else&lt;br /&gt;          ui-&amp;gt;pushButton-&amp;gt;setIcon(QIcon(&amp;quot;:/imagens/close&amp;quot;));&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;receiver.h&lt;/b&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;#ifndef RECEIVER_H&lt;br /&gt;#define RECEIVER_H&lt;br /&gt;&lt;br /&gt;#include &amp;lt;QtGui/QWidget&amp;gt;&lt;br /&gt;#include &amp;lt;QUdpSocket&amp;gt;&lt;br /&gt;#include &amp;lt;QDataStream&amp;gt;&lt;br /&gt;#include &amp;lt;QRegExp&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;namespace Ui&lt;br /&gt;{&lt;br /&gt;    class receiverClass;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;class receiver : public QWidget&lt;br /&gt;{&lt;br /&gt;    Q_OBJECT&lt;br /&gt;&lt;br /&gt;public:&lt;br /&gt;    receiver(QWidget *parent = 0);&lt;br /&gt;    ~receiver();&lt;br /&gt;&lt;br /&gt;private slots:&lt;br /&gt;    void datagramreceiver();&lt;br /&gt;&lt;br /&gt;private:&lt;br /&gt;    Ui::receiverClass *ui;&lt;br /&gt;    QUdpSocket *udpSocket;&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;#endif // RECEIVER_H&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;SENDER&lt;/b&gt;&lt;br /&gt;&lt;b&gt;sender.cpp&lt;/b&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;#include &amp;quot;sender.h&amp;quot;&lt;br /&gt;#include &amp;quot;ui_sender.h&amp;quot;&lt;br /&gt;&lt;br /&gt;sender::sender(QWidget *parent)&lt;br /&gt;    : QWidget(parent), ui(new Ui::senderClass)&lt;br /&gt;{&lt;br /&gt;    ui-&amp;gt;setupUi(this);&lt;br /&gt;    cancela[0] = ui-&amp;gt;push1;&lt;br /&gt;    cancela[1] = ui-&amp;gt;push2;&lt;br /&gt;    cancela[2] = ui-&amp;gt;push3;&lt;br /&gt;    cancela[3] = ui-&amp;gt;push4;&lt;br /&gt;    cancela[4] = ui-&amp;gt;push5;&lt;br /&gt;    cancela[5] = ui-&amp;gt;push6;&lt;br /&gt;    cancela[6] = ui-&amp;gt;push7;&lt;br /&gt;    cancela[7] = ui-&amp;gt;push8;&lt;br /&gt;    cancela[8] = ui-&amp;gt;push9;&lt;br /&gt;    cancela[9] = ui-&amp;gt;push10;&lt;br /&gt;&lt;br /&gt;    QSignalMapper *signalMapper = new QSignalMapper(this);&lt;br /&gt;    connect(signalMapper, SIGNAL(mapped(int)), this, SLOT(mudacancela(int)));&lt;br /&gt;&lt;br /&gt;    for(int i = 0; i &amp;lt; 10; i++){&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        signalMapper-&amp;gt;setMapping(cancela[i], i);&lt;br /&gt;        connect(cancela[i], SIGNAL(clicked()), signalMapper, SLOT(map()));&lt;br /&gt;        estado[i]=true;&lt;br /&gt;    }&lt;br /&gt;  udpSocket = new QUdpSocket(this);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;sender::~sender()&lt;br /&gt;{&lt;br /&gt;    delete ui;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void sender::mudacancela(int m){&lt;br /&gt;    //bool n=false;&lt;br /&gt;    estado[m] = !estado[m];&lt;br /&gt;    if(estado[m])&lt;br /&gt;        cancela[m]-&amp;gt;setIcon(QIcon(&amp;quot;:/imagens/open&amp;quot;));&lt;br /&gt;    else&lt;br /&gt;        cancela[m]-&amp;gt;setIcon(QIcon(&amp;quot;:/imagens/close&amp;quot;));&lt;br /&gt;    QByteArray datagram;&lt;br /&gt;    QDataStream out(&amp;amp;datagram, QIODevice::WriteOnly);&lt;br /&gt;    out.setVersion(QDataStream::Qt_4_1);&lt;br /&gt;    out &amp;lt;&amp;lt; m &amp;lt;&amp;lt; estado[m];   //for more data out &amp;lt;&amp;lt; m &amp;lt;&amp;lt; n &amp;lt;&amp;lt; o &amp;lt;&amp;lt; p &amp;lt;&amp;lt; ...;&lt;br /&gt;    udpSocket-&amp;gt;writeDatagram(datagram, QHostAddress::LocalHost, 45454);&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;sender.h&lt;/b&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;#ifndef SENDER_H&lt;br /&gt;#define SENDER_H&lt;br /&gt;&lt;br /&gt;#include &amp;lt;QtGui/QWidget&amp;gt;&lt;br /&gt;#include &amp;lt;QSignalMapper&amp;gt;&lt;br /&gt;#include &amp;lt;QUdpSocket&amp;gt;&lt;br /&gt;#include &amp;lt;QPushButton&amp;gt;&lt;br /&gt;&lt;br /&gt;namespace Ui&lt;br /&gt;{&lt;br /&gt;    class senderClass;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;class sender : public QWidget&lt;br /&gt;{&lt;br /&gt;    Q_OBJECT&lt;br /&gt;&lt;br /&gt;public:&lt;br /&gt;    sender(QWidget *parent = 0);&lt;br /&gt;    ~sender();&lt;br /&gt;private slots:&lt;br /&gt;    void mudacancela(int m);&lt;br /&gt;private:&lt;br /&gt;    Ui::senderClass *ui;&lt;br /&gt;    QPushButton *cancela[10];&lt;br /&gt;    QUdpSocket *udpSocket;&lt;br /&gt;    bool estado[10];&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;#endif // SENDER_H&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Para vermos isto a funcionar é só abrir os dois programas e trabalhar no sender; Ao carregar numa cancela para abri-la por exemplo no receiver a cancela abre também.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4954264097640739889-3928611593886182915?l=tgraxa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tgraxa.blogspot.com/feeds/3928611593886182915/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4954264097640739889&amp;postID=3928611593886182915' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4954264097640739889/posts/default/3928611593886182915'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4954264097640739889/posts/default/3928611593886182915'/><link rel='alternate' type='text/html' href='http://tgraxa.blogspot.com/2009/01/modulo-11-qt-comes-back.html' title='MODULO 11 - QT COMES BACK'/><author><name>Tiago Graça</name><uri>http://www.blogger.com/profile/09435736787234197248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4954264097640739889.post-2240375975138386738</id><published>2009-01-14T07:46:00.000-08:00</published><updated>2009-01-14T08:38:04.638-08:00</updated><title type='text'>MODULO 10 - classes derivadas - Herança</title><content type='html'>Neste começo de modulo começamos por falar de classes de derivadas, e dentro disso falamos de &lt;b&gt;Herança&lt;/b&gt;&lt;br /&gt;A herança é basicamente uma relação entre duas classes, sendo uma criada a partir de outra já existente.&lt;br /&gt;A classe já existente designa-se de &lt;b&gt;classe-base&lt;/b&gt;; A nova classe designa-se de &lt;b&gt;classe-derivada&lt;/b&gt;.&lt;br /&gt;Vou agora dar um pequeno exemplo:&lt;br /&gt;&lt;marquee&gt;Classe-base&lt;/marquee&gt;&lt;br /&gt;&lt;b&gt;Poligono.h&lt;/b&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;#ifndef POLIGONO_H&lt;br /&gt;#define POLIGONO_H&lt;br /&gt;#include &amp;lt;string&amp;gt;&lt;br /&gt;using namespace std;&lt;br /&gt;class Poligono{&lt;br /&gt;    //Defini&amp;#231;&amp;#227;o Matem&amp;#225;tica&lt;br /&gt;    /*&lt;br /&gt;     Figura plana limitada por segmentos de recta, chamados lados dos pol&amp;#237;gonos&lt;br /&gt;     onde cada segmento de recta, intersecta exactamente dois outros extremos.&lt;br /&gt;     Exemplos de pol&amp;#237;gonos: http://pt.wikipedia.org/wiki/Pol&amp;#237;gono&lt;br /&gt;     */&lt;br /&gt;public:&lt;br /&gt;    Poligono();&lt;br /&gt;    void setNome(string novo_nome);&lt;br /&gt;    string getNome();&lt;br /&gt;private:&lt;br /&gt;    string nome;&lt;br /&gt;};&lt;br /&gt;#endif    //POLIGONO_H&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;Poligono.cpp&lt;/b&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;#include &amp;quot;Poligono.h&amp;quot;&lt;br /&gt;&lt;br /&gt;Poligono::Poligono(){nome=&amp;quot;N&amp;#227;o definido!&amp;quot;;}&lt;br /&gt;&lt;br /&gt;void Poligono::setNome(string novo_nome){nome = novo_nome;}&lt;br /&gt;&lt;br /&gt;string Poligono::getNome(){return nome;}&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;main.cpp&lt;/b&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;&lt;br /&gt;#include &amp;quot;Poligono.h&amp;quot;&lt;br /&gt;using namespace std;&lt;br /&gt;int main(){&lt;br /&gt;    Poligono figura1;&lt;br /&gt;    figura1.setNome(&amp;quot;Quadril&amp;#225;tero&amp;quot;);&lt;br /&gt;    cout &amp;lt;&amp;lt; figura1.getNome() &amp;lt;&amp;lt; endl;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;No programa&lt;/b&gt;&lt;br /&gt;- É composto por 3 ficheiros&lt;br /&gt;- o primeiro é onde a classe é criada.&lt;br /&gt;- No segundo define-se o nome.&lt;br /&gt;- No main ele chama as funçoes criadas em Poligono.cpp neste caso o nome (getNome) &lt;br /&gt;&lt;b&gt;Para compilar:&lt;/b&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;g++ -Wall main.cpp Poligono.cpp -o p&lt;br /&gt;./p&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;marquee&gt;Classe-derivada&lt;/marquee&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;Nota:A esta vers&amp;#227;o ser&amp;#227;o juntos os ficheiros criados atr&amp;#225;s Poligono.cpp e Poligono.h&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;Triangulo.h&lt;/b&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;#ifndef TRIANGULO_H&lt;br /&gt;#define TRIANGULO_H&lt;br /&gt;#include &amp;quot;Poligono.h&amp;quot;&lt;br /&gt;class Triangulo : public Poligono {&lt;br /&gt;    &lt;br /&gt;public:&lt;br /&gt;    Triangulo();&lt;br /&gt;    void setLados(float new_lado, float new_altura);&lt;br /&gt;    float getLado();&lt;br /&gt;    float getAltura();&lt;br /&gt;    float area();    &lt;br /&gt;    float Perimetro();&lt;br /&gt;private:&lt;br /&gt;    float lado;&lt;br /&gt;    float altura;    &lt;br /&gt;};&lt;br /&gt;#endif    &lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;Triangulo.cpp&lt;/b&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;#include &amp;quot;Triangulo.h&amp;quot;&lt;br /&gt;&lt;br /&gt;Triangulo::Triangulo(){&lt;br /&gt;    lado = 3;&lt;br /&gt;    altura = 3;&lt;br /&gt;    &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void Triangulo::setLados(float new_lado, float new_altura){&lt;br /&gt;    lado = new_lado;&lt;br /&gt;    altura= new_altura;&lt;br /&gt;    &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;float Triangulo::getLado(){return lado;}&lt;br /&gt;&lt;br /&gt;float Triangulo::getAltura(){return altura;}&lt;br /&gt;&lt;br /&gt;float Triangulo::area(){return lado*altura/2;}&lt;br /&gt;&lt;br /&gt;float Triangulo::Perimetro(){return lado+lado+lado;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;Rectangulo.h&lt;/b&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;#ifndef RECTANGULO_H&lt;br /&gt;#define RECTANGULO_H&lt;br /&gt;#include &amp;quot;Poligono.h&amp;quot;&lt;br /&gt;class Rectangulo : public Poligono {&lt;br /&gt;    &lt;br /&gt;public:&lt;br /&gt;    Rectangulo();&lt;br /&gt;    void setLados(float new_lado1, float new_lado2, float new_comprimento, float new_largura);&lt;br /&gt;    float getLado1();&lt;br /&gt;    float getLado2();&lt;br /&gt;    float getComprimento();&lt;br /&gt;    float getLargura();&lt;br /&gt;    float area();    &lt;br /&gt;    float Perimetro();&lt;br /&gt;private:&lt;br /&gt;    float lado1;&lt;br /&gt;    float lado2;&lt;br /&gt;    float comprimento;&lt;br /&gt;    float largura;    &lt;br /&gt;};&lt;br /&gt;#endif    &lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;Rectangulo.cpp&lt;/b&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;#include &amp;quot;Rectangulo.h&amp;quot;&lt;br /&gt;&lt;br /&gt;Rectangulo::Rectangulo(){&lt;br /&gt;    lado1 = 3;&lt;br /&gt;    lado2 = 3;&lt;br /&gt;    comprimento = 3;&lt;br /&gt;    largura = 3;&lt;br /&gt;    &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void Rectangulo::setLados(float new_lado1, float new_lado2, float new_comprimento, float new_largura){&lt;br /&gt;    lado1 = new_lado1;&lt;br /&gt;    lado2 = new_lado2;&lt;br /&gt;    comprimento = new_comprimento;&lt;br /&gt;    largura = new_largura;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;float Rectangulo::getLado1(){return lado1;}&lt;br /&gt;&lt;br /&gt;float Rectangulo::getLado2(){return lado2;}&lt;br /&gt;&lt;br /&gt;float Rectangulo::getComprimento(){return comprimento;}&lt;br /&gt;&lt;br /&gt;float Rectangulo::getLargura(){return largura;}&lt;br /&gt;&lt;br /&gt;float Rectangulo::area(){return comprimento*largura;}&lt;br /&gt;&lt;br /&gt;float Rectangulo::Perimetro(){return lado1 + lado2 + comprimento + largura;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;Quadrado.h&lt;/b&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;#ifndef QUADRADO_H&lt;br /&gt;#define QUADRADO_H&lt;br /&gt;#include &amp;quot;Poligono.h&amp;quot;&lt;br /&gt;class Quadrado : public Poligono {&lt;br /&gt;    &lt;br /&gt;public:&lt;br /&gt;    Quadrado();&lt;br /&gt;    void setLados(float new_lado);&lt;br /&gt;    float getLado();&lt;br /&gt;    float area();    &lt;br /&gt;    float Perimetro();&lt;br /&gt;private:&lt;br /&gt;    float lado;&lt;br /&gt;        &lt;br /&gt;};&lt;br /&gt;#endif    &lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;Quadrado.cpp&lt;/b&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;#include &amp;quot;Quadrado.h&amp;quot;&lt;br /&gt;&lt;br /&gt;Quadrado::Quadrado(){&lt;br /&gt;    lado = 3;&lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void Quadrado::setLados(float new_lado){&lt;br /&gt;    lado = new_lado;&lt;br /&gt;    &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;float Quadrado::getLado(){return lado;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;float Quadrado::area(){return lado*lado;}&lt;br /&gt;&lt;br /&gt;float Quadrado::Perimetro(){return lado + lado + lado + lado;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Depois de isto criado iremos agora pôr o menu. Este Menu será substituido pelo main:&lt;br /&gt;&lt;b&gt;menu.cpp&lt;/b&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;&lt;br /&gt;#include &amp;quot;Triangulo.h&amp;quot;&lt;br /&gt;#include &amp;quot;Quadrado.h&amp;quot;&lt;br /&gt;#include &amp;quot;Rectangulo.h&amp;quot;&lt;br /&gt;#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;&lt;br /&gt;using namespace std;&lt;br /&gt;int main(void){&lt;br /&gt;    Triangulo figura1; &lt;br /&gt;    Quadrado figura2;&lt;br /&gt;    Rectangulo figura3;&lt;br /&gt;    &lt;br /&gt;    char opcao;&lt;br /&gt;    cout&amp;lt;&amp;lt;&amp;quot;Escolha uma de 3 op&amp;#231;oes: (t)=Triangulo, (x)=Quadrado, (r)=Rectangulo&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;    cin&amp;gt;&amp;gt;opcao;&lt;br /&gt;&lt;br /&gt;    do{&lt;br /&gt;        &lt;br /&gt;            if(opcao == 't'){&lt;br /&gt;            figura1.setNome(&amp;quot;Tri&amp;#226;ngulo&amp;quot;);&lt;br /&gt;            figura1.setLados(10,9);&lt;br /&gt;            cout &amp;lt;&amp;lt; &amp;quot;Nome : &amp;quot; &amp;lt;&amp;lt; figura1.getNome() &amp;lt;&amp;lt; endl;&lt;br /&gt;            cout &amp;lt;&amp;lt; &amp;quot;Comprimento de cada 1 dos 3 lados : &amp;quot; &amp;lt;&amp;lt; figura1.getLado() &amp;lt;&amp;lt; endl;&lt;br /&gt;            cout &amp;lt;&amp;lt; &amp;quot;altura: &amp;quot; &amp;lt;&amp;lt;figura1.getAltura() &amp;lt;&amp;lt; endl;&lt;br /&gt;            cout &amp;lt;&amp;lt; &amp;quot;Soma dos comprimentos dos lados: &amp;quot; &amp;lt;&amp;lt; figura1.Perimetro() &amp;lt;&amp;lt; endl;&lt;br /&gt;            cout &amp;lt;&amp;lt; &amp;quot;a area e: &amp;quot;&amp;lt;&amp;lt;figura1.area() &amp;lt;&amp;lt;endl;&lt;br /&gt;            cout&amp;lt;&amp;lt;&amp;quot;(q) para sair&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;            cin&amp;gt;&amp;gt;opcao;&lt;br /&gt;        }&lt;br /&gt;        &lt;br /&gt;        if(opcao == 'x'){&lt;br /&gt;            figura2.setNome(&amp;quot;Quadrado&amp;quot;);&lt;br /&gt;            figura2.setLados(4);&lt;br /&gt;            cout &amp;lt;&amp;lt; &amp;quot;Nome : &amp;quot; &amp;lt;&amp;lt; figura2.getNome() &amp;lt;&amp;lt; endl;&lt;br /&gt;            cout &amp;lt;&amp;lt; &amp;quot;Comprimento dos lados : &amp;quot; &amp;lt;&amp;lt; figura2.getLado() &amp;lt;&amp;lt; endl;&lt;br /&gt;            cout &amp;lt;&amp;lt; &amp;quot;Soma dos comprimentos dos lados: &amp;quot; &amp;lt;&amp;lt; figura2.Perimetro() &amp;lt;&amp;lt; endl;&lt;br /&gt;            cout &amp;lt;&amp;lt; &amp;quot;a area e: &amp;quot;&amp;lt;&amp;lt;figura2.area() &amp;lt;&amp;lt;endl;&lt;br /&gt;            cout&amp;lt;&amp;lt;&amp;quot;(q) para sair&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;            cin&amp;gt;&amp;gt;opcao;&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;        if(opcao == 'r'){&lt;br /&gt;            figura3.setNome(&amp;quot;Rectangulo&amp;quot;);&lt;br /&gt;            figura3.setLados(6,3,6,3);&lt;br /&gt;            cout &amp;lt;&amp;lt; &amp;quot;Nome : &amp;quot; &amp;lt;&amp;lt; figura3.getNome() &amp;lt;&amp;lt; endl;&lt;br /&gt;            cout &amp;lt;&amp;lt; &amp;quot;Comprimento do lado 1: &amp;quot; &amp;lt;&amp;lt; figura3.getLado1() &amp;lt;&amp;lt; endl;&lt;br /&gt;            cout &amp;lt;&amp;lt; &amp;quot;Largura do lado 2: &amp;quot; &amp;lt;&amp;lt; figura3.getLado2() &amp;lt;&amp;lt; endl;&lt;br /&gt;            cout &amp;lt;&amp;lt; &amp;quot;Comprimento da lado 3: &amp;quot; &amp;lt;&amp;lt; figura3.getComprimento() &amp;lt;&amp;lt; endl;&lt;br /&gt;            cout &amp;lt;&amp;lt; &amp;quot;Largura do lado 4: &amp;quot; &amp;lt;&amp;lt; figura3.getLargura() &amp;lt;&amp;lt; endl;&lt;br /&gt;            cout &amp;lt;&amp;lt; &amp;quot;Soma dos comprimentos dos lados: &amp;quot; &amp;lt;&amp;lt; figura3.Perimetro() &amp;lt;&amp;lt; endl;&lt;br /&gt;            cout &amp;lt;&amp;lt; &amp;quot;a area e: &amp;quot;&amp;lt;&amp;lt; figura3.area() &amp;lt;&amp;lt;endl;&lt;br /&gt;            cout&amp;lt;&amp;lt;&amp;quot;(q) para sair&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;            cin&amp;gt;&amp;gt;opcao;&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    }while(opcao != 'q');&lt;br /&gt;    return 0;&lt;br /&gt;}&lt;br /&gt;    &lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;Para compilar:&lt;/b&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;g++ -Wall menu.cpp Poligono.cpp Quadrado.cpp Triangulo.cpp Rectangulo.cpp -o p&lt;br /&gt;./p&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;No programa&lt;/b&gt;&lt;br /&gt;- Sao criados 7 novos programas e substituidos 1 (main.cpp por menu.cpp)&lt;br /&gt;- Nos programas criados sao feitas novas classes-derivadas do Poligono entre elas Triangulo.h/Triangulo.cpp&lt;br /&gt;- Sao mostrados nos programas os lados e criadas areas e perimetros&lt;br /&gt;- Depois no menu é criado um &lt;b&gt;char opcao;&lt;/b&gt; essa opcao serve para mostrar na consola uma escolha a ser feita pelo utilizador (r)/(x)/(t) e um para fechar(q).&lt;br /&gt;&lt;br /&gt;Para finalizar criamos um diagrama de classes deste programa feito no Umbrello UML Modeller:&lt;br /&gt;&lt;a href="http://img78.imageshack.us/my.php?image=poligonosll6.png" target="_blank"&gt;&lt;img src="http://img78.imageshack.us/img78/8952/poligonosll6.th.png" border="0" alt="Free Image Hosting at www.ImageShack.us" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://img604.imageshack.us/content.php?page=blogpost&amp;files=img78/8952/poligonosll6.png" title="QuickPost"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4954264097640739889-2240375975138386738?l=tgraxa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tgraxa.blogspot.com/feeds/2240375975138386738/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4954264097640739889&amp;postID=2240375975138386738' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4954264097640739889/posts/default/2240375975138386738'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4954264097640739889/posts/default/2240375975138386738'/><link rel='alternate' type='text/html' href='http://tgraxa.blogspot.com/2009/01/modulo-10-classes-derivadas-herana.html' title='&lt;marquee direction=&quot;left&quot;&gt;MODULO 10 - classes derivadas - Herança&lt;/marquee&gt;'/><author><name>Tiago Graça</name><uri>http://www.blogger.com/profile/09435736787234197248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4954264097640739889.post-600071040273975853</id><published>2008-12-16T01:39:00.000-08:00</published><updated>2008-12-18T01:31:34.299-08:00</updated><title type='text'>MODULO 9 - PARADIGMA ADT</title><content type='html'>Vou começar por dizer o que é ADT:&lt;br /&gt;Tipo Abstracto de Dados (A.D.T.) é um conjunto de operações sobre uma&lt;br /&gt;colecção de dados armazenados.&lt;br /&gt;Por exemplo, no caso de uma lista ligada podemos sempre definir as operações de&lt;br /&gt;inserção, remoção, comprimento, etc. sem que para isso tenhamos que definir qual a&lt;br /&gt;estrutura de dados escolhida para a sua representação.&lt;br /&gt;Bem será mais facilde explicar com um pequeno exemplo feito por mim na aula.&lt;br /&gt;&lt;br /&gt;Neste programa, estou a criar uma casa muito simples com um comando á distancia onde ao clicar abre ou a porta ou a janela;&lt;br /&gt;primeiro vou mostra-lo todo junto sem separar as funçoes:&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;&lt;br /&gt;#include &amp;lt;string&amp;gt;&lt;br /&gt;using namespace std;&lt;br /&gt;class Casa{&lt;br /&gt;public:&lt;br /&gt;    Casa(){&lt;br /&gt;        Porta=false;&lt;br /&gt;        Luz=false;&lt;br /&gt;    }&lt;br /&gt;    void CarregouBotaoPorta();&lt;br /&gt;    void CarregouBotaoLuz();&lt;br /&gt;    void EstadoDaLuz();&lt;br /&gt;    void EstadoDaPorta();&lt;br /&gt;    void MostrarLuz();&lt;br /&gt;    void MostrarPorta();&lt;br /&gt;&lt;br /&gt;private:&lt;br /&gt;    bool Porta;&lt;br /&gt;    bool Luz; &lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;void Casa::CarregouBotaoPorta(){&lt;br /&gt;    if(Porta == true)&lt;br /&gt;        Porta = false;&lt;br /&gt;    else&lt;br /&gt;        Porta = true;&lt;br /&gt;}&lt;br /&gt;void Casa::CarregouBotaoLuz(){&lt;br /&gt;    if(Luz == true)&lt;br /&gt;        Luz = false;&lt;br /&gt;    else&lt;br /&gt;        Luz = true;&lt;br /&gt;}&lt;br /&gt;void Casa::EstadoDaLuz(){&lt;br /&gt;    if(Luz == true)&lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot;a luz esta ligada&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;    else &lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot;a luz esta desligada&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;}&lt;br /&gt;void Casa::EstadoDaPorta(){&lt;br /&gt;    if(Porta == true)&lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot;a porta esta aberta&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;    else &lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot;a porta esta fechada&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;}&lt;br /&gt;void Casa::MostrarPorta(){&lt;br /&gt;    if(Porta == false){&lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot;porta fechada&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot; ______________________&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot; &amp;#124;                      &amp;#124;&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot; &amp;#124;                      &amp;#124;&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot; &amp;#124;                      &amp;#124;&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot; &amp;#124;    +------------+    &amp;#124;&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot; &amp;#124;    &amp;#124;            &amp;#124;    &amp;#124;&amp;quot;&amp;lt;&amp;lt;endl;         &lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot; &amp;#124;    &amp;#124;            &amp;#124;    &amp;#124;&amp;quot;&amp;lt;&amp;lt;endl;          &lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot; &amp;#124;    &amp;#124;            &amp;#124;    &amp;#124;&amp;quot;&amp;lt;&amp;lt;endl;         &lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot; &amp;#124;    &amp;#124;            &amp;#124;    &amp;#124;&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot; &amp;#124;    &amp;#124;          o &amp;#124;    &amp;#124;&amp;quot;&amp;lt;&amp;lt;endl;        &lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot; &amp;#124;    &amp;#124;            &amp;#124;    &amp;#124;&amp;quot;&amp;lt;&amp;lt;endl;        &lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot; &amp;#124;    &amp;#124;            &amp;#124;    &amp;#124;&amp;quot;&amp;lt;&amp;lt;endl;                &lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot; &amp;#124;    &amp;#124;            &amp;#124;    &amp;#124;&amp;quot;&amp;lt;&amp;lt;endl;             &lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot; &amp;#124;    &amp;#124;            &amp;#124;    &amp;#124;&amp;quot;&amp;lt;&amp;lt;endl;            &lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot; &amp;#124;    &amp;#124;            &amp;#124;    &amp;#124;&amp;quot;&amp;lt;&amp;lt;endl;            &lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot; &amp;#124;    +------------+    &amp;#124;&amp;quot;&amp;lt;&amp;lt;endl;           &lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot; ------------------------&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;    }&lt;br /&gt;    else{ &lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot;porta aberta&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot; ______________________&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot; &amp;#124;                      &amp;#124;&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot; &amp;#124;                      &amp;#124;&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot; &amp;#124;                      &amp;#124;&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot; &amp;#124;    +------------+    &amp;#124;&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot; &amp;#124;    &amp;#124;////////////&amp;#124;    &amp;#124;&amp;quot;&amp;lt;&amp;lt;endl;         &lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot; &amp;#124;    &amp;#124;////////////&amp;#124;    &amp;#124;&amp;quot;&amp;lt;&amp;lt;endl;          &lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot; &amp;#124;    &amp;#124;////////////&amp;#124;    &amp;#124;&amp;quot;&amp;lt;&amp;lt;endl;         &lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot; &amp;#124;    &amp;#124;////////////&amp;#124;    &amp;#124;&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot; &amp;#124;    &amp;#124;////////////&amp;#124;    &amp;#124;&amp;quot;&amp;lt;&amp;lt;endl;        &lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot; &amp;#124;    &amp;#124;////////////&amp;#124;    &amp;#124;&amp;quot;&amp;lt;&amp;lt;endl;        &lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot; &amp;#124;    &amp;#124;////////////&amp;#124;    &amp;#124;&amp;quot;&amp;lt;&amp;lt;endl;                &lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot; &amp;#124;    &amp;#124;////////////&amp;#124;    &amp;#124;&amp;quot;&amp;lt;&amp;lt;endl;             &lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot; &amp;#124;    &amp;#124;////////////&amp;#124;    &amp;#124;&amp;quot;&amp;lt;&amp;lt;endl;            &lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot; &amp;#124;    &amp;#124;////////////&amp;#124;    &amp;#124;&amp;quot;&amp;lt;&amp;lt;endl;            &lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot; &amp;#124;    +------------+    &amp;#124;&amp;quot;&amp;lt;&amp;lt;endl;           &lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot; ------------------------&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;void Casa::MostrarLuz(){&lt;br /&gt;    if(Luz==false){&lt;br /&gt;    cout&amp;lt;&amp;lt;&amp;quot;a luz esta fechada&amp;quot;&amp;lt;&amp;lt;endl;    &lt;br /&gt;   cout&amp;lt;&amp;lt;&amp;quot; _______&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;   cout&amp;lt;&amp;lt;&amp;quot;+       +&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;  cout&amp;lt;&amp;lt;&amp;quot;+         +&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt; cout&amp;lt;&amp;lt;&amp;quot;+           +&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt; cout&amp;lt;&amp;lt;&amp;quot;+           +&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;  cout&amp;lt;&amp;lt;&amp;quot;+    _     +&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;   cout&amp;lt;&amp;lt;&amp;quot;+  &amp;#124; &amp;#124;   +&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;    cout&amp;lt;&amp;lt;&amp;quot;+ &amp;#124; &amp;#124; +&amp;quot;&amp;lt;&amp;lt;endl; &lt;br /&gt;     cout&amp;lt;&amp;lt;&amp;quot;+&amp;#124; &amp;#124;+&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;     cout&amp;lt;&amp;lt;&amp;quot;/////&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;     cout&amp;lt;&amp;lt;&amp;quot;/////&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;     cout&amp;lt;&amp;lt;&amp;quot;/////&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;    }&lt;br /&gt;    else{&lt;br /&gt;    cout&amp;lt;&amp;lt;&amp;quot;a luz esta acesa&amp;quot;&amp;lt;&amp;lt;endl;    &lt;br /&gt;   cout&amp;lt;&amp;lt;&amp;quot; _______&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;   cout&amp;lt;&amp;lt;&amp;quot;+ + + + +&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;  cout&amp;lt;&amp;lt;&amp;quot;+  + + +  +&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt; cout&amp;lt;&amp;lt;&amp;quot;+ + + + + + +&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt; cout&amp;lt;&amp;lt;&amp;quot;+ + + + + + +&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;  cout&amp;lt;&amp;lt;&amp;quot;++ + _ +  +&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;   cout&amp;lt;&amp;lt;&amp;quot;+ +&amp;#124;+&amp;#124;+ +&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;    cout&amp;lt;&amp;lt;&amp;quot;++&amp;#124;+&amp;#124;++&amp;quot;&amp;lt;&amp;lt;endl; &lt;br /&gt;     cout&amp;lt;&amp;lt;&amp;quot;+&amp;#124;+&amp;#124;+&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;     cout&amp;lt;&amp;lt;&amp;quot;/////&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;     cout&amp;lt;&amp;lt;&amp;quot;/////&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;     cout&amp;lt;&amp;lt;&amp;quot;/////&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;int main(){&lt;br /&gt;    Casa tiago, porta, luz;&lt;br /&gt;    tiago.EstadoDaLuz();&lt;br /&gt;    tiago.EstadoDaPorta();&lt;br /&gt;    &lt;br /&gt;    tiago.MostrarLuz();&lt;br /&gt;    tiago.MostrarPorta();&lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;    return 0;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Em primeiro começo por dizer que este programa é gravado como nome.cpp por exemplo.&lt;br /&gt;&lt;br /&gt;agora um pequeno desenho basico do que faz este programa&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;a href="http://img67.imageshack.us/my.php?image=newjpggt3.png" target="_blank"&gt;&lt;img src="http://img67.imageshack.us/img67/5484/newjpggt3.th.png" border="0" alt="Free Image Hosting at www.ImageShack.us" /&gt;&lt;/a&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Agora o que ele faz; Ele cria uma casa com uma porta, uma luz e um comando; a partir desse comando podemos abrir a luz, fechar a luz, abrir a porta ou fechar a porta.&lt;br /&gt;Em ADT os programas podem ser separados em 3 passos mas isso vou explicar mais a frente.&lt;br /&gt;&lt;br /&gt;Agora vou explicar alguns passos aqui feitos:&lt;br /&gt;-Criar uma funçao public e private; Na public criamos as funçoes void criados no programa á frente como esta:&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;void Casa::CarregouBotaoPorta(){&lt;br /&gt;    if(Porta == true)&lt;br /&gt;        Porta = false;&lt;br /&gt;    else&lt;br /&gt;        Porta = true;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;-Na private criamos 2 bools um para a porta outra outro para a luz. Estas variaveis por estarem no private estao protegidas. &lt;br /&gt;&lt;br /&gt;- A seguir criamos as funçoes void. as 2 primeiras para carregar na porta e na luz e criamos um if e um else que diz que caso a porta seja true significa que está aberta; false significa que está fechada e para a luz igual.&lt;br /&gt;&lt;br /&gt;- Depois criamos um estado da luz e da porta.&lt;br /&gt;&lt;br /&gt;- Por fim um mostrar luz e porta com um pequeno desenho em &lt;b&gt;couts&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;-Depois para acabar é aberto um &lt;b&gt;int main&lt;/b&gt; onde o programa mostra na consola o que fizemos nas funçoes void.&lt;br /&gt;&lt;br /&gt;Depois deste programa todo junto vamos agora separa-lo em 3 ficheiros;&lt;br /&gt;&lt;br /&gt;o primeiro é o &lt;b&gt;Casa.h&lt;/b&gt;:&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;#ifndef CASA_H&lt;br /&gt;#define CASA_H&lt;br /&gt;#include &amp;lt;string&amp;gt;&lt;br /&gt;using namespace std;&lt;br /&gt;class Casa{&lt;br /&gt;public:&lt;br /&gt;    Casa(){&lt;br /&gt;        Porta=false;&lt;br /&gt;        Luz=false;&lt;br /&gt;    }&lt;br /&gt;    void CarregouBotaoPorta();&lt;br /&gt;    void CarregouBotaoLuz();&lt;br /&gt;    void EstadoDaLuz();&lt;br /&gt;    void EstadoDaPorta();&lt;br /&gt;    void MostrarLuz();&lt;br /&gt;    void MostrarPorta();&lt;br /&gt;&lt;br /&gt;private:&lt;br /&gt;    bool Porta;&lt;br /&gt;    bool Luz; &lt;br /&gt;};&lt;br /&gt;#endif&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Agora um &lt;b&gt;casa.cpp&lt;/b&gt;:&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;&lt;br /&gt;#include &amp;quot;Casa.h&amp;quot;&lt;br /&gt;using namespace std;&lt;br /&gt;void Casa::CarregouBotaoPorta(){&lt;br /&gt;    if(Porta == true)&lt;br /&gt;        Porta = false;&lt;br /&gt;    else&lt;br /&gt;        Porta = true;&lt;br /&gt;}&lt;br /&gt;void Casa::CarregouBotaoLuz(){&lt;br /&gt;    if(Luz == true)&lt;br /&gt;        Luz = false;&lt;br /&gt;    else&lt;br /&gt;        Luz = true;&lt;br /&gt;}&lt;br /&gt;void Casa::EstadoDaLuz(){&lt;br /&gt;    if(Luz == true)&lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot;a luz esta ligada&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;    else &lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot;a luz esta desligada&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;}&lt;br /&gt;void Casa::EstadoDaPorta(){&lt;br /&gt;    if(Porta == true)&lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot;a porta esta aberta&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;    else &lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot;a porta esta fechada&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;}&lt;br /&gt;void Casa::MostrarPorta(){&lt;br /&gt;    if(Porta == false){&lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot;porta fechada&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot; ______________________&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot; &amp;#124;                      &amp;#124;&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot; &amp;#124;                      &amp;#124;&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot; &amp;#124;                      &amp;#124;&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot; &amp;#124;    +------------+    &amp;#124;&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot; &amp;#124;    &amp;#124;            &amp;#124;    &amp;#124;&amp;quot;&amp;lt;&amp;lt;endl;         &lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot; &amp;#124;    &amp;#124;            &amp;#124;    &amp;#124;&amp;quot;&amp;lt;&amp;lt;endl;          &lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot; &amp;#124;    &amp;#124;            &amp;#124;    &amp;#124;&amp;quot;&amp;lt;&amp;lt;endl;         &lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot; &amp;#124;    &amp;#124;            &amp;#124;    &amp;#124;&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot; &amp;#124;    &amp;#124;          o &amp;#124;    &amp;#124;&amp;quot;&amp;lt;&amp;lt;endl;        &lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot; &amp;#124;    &amp;#124;            &amp;#124;    &amp;#124;&amp;quot;&amp;lt;&amp;lt;endl;        &lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot; &amp;#124;    &amp;#124;            &amp;#124;    &amp;#124;&amp;quot;&amp;lt;&amp;lt;endl;                &lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot; &amp;#124;    &amp;#124;            &amp;#124;    &amp;#124;&amp;quot;&amp;lt;&amp;lt;endl;             &lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot; &amp;#124;    &amp;#124;            &amp;#124;    &amp;#124;&amp;quot;&amp;lt;&amp;lt;endl;            &lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot; &amp;#124;    &amp;#124;            &amp;#124;    &amp;#124;&amp;quot;&amp;lt;&amp;lt;endl;            &lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot; &amp;#124;    +------------+    &amp;#124;&amp;quot;&amp;lt;&amp;lt;endl;           &lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot; ------------------------&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;    }&lt;br /&gt;    else{ &lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot;porta aberta&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot; ______________________&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot; &amp;#124;                      &amp;#124;&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot; &amp;#124;                      &amp;#124;&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot; &amp;#124;                      &amp;#124;&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot; &amp;#124;    +------------+    &amp;#124;&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot; &amp;#124;    &amp;#124;////////////&amp;#124;    &amp;#124;&amp;quot;&amp;lt;&amp;lt;endl;         &lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot; &amp;#124;    &amp;#124;////////////&amp;#124;    &amp;#124;&amp;quot;&amp;lt;&amp;lt;endl;          &lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot; &amp;#124;    &amp;#124;////////////&amp;#124;    &amp;#124;&amp;quot;&amp;lt;&amp;lt;endl;         &lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot; &amp;#124;    &amp;#124;////////////&amp;#124;    &amp;#124;&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot; &amp;#124;    &amp;#124;////////////&amp;#124;    &amp;#124;&amp;quot;&amp;lt;&amp;lt;endl;        &lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot; &amp;#124;    &amp;#124;////////////&amp;#124;    &amp;#124;&amp;quot;&amp;lt;&amp;lt;endl;        &lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot; &amp;#124;    &amp;#124;////////////&amp;#124;    &amp;#124;&amp;quot;&amp;lt;&amp;lt;endl;                &lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot; &amp;#124;    &amp;#124;////////////&amp;#124;    &amp;#124;&amp;quot;&amp;lt;&amp;lt;endl;             &lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot; &amp;#124;    &amp;#124;////////////&amp;#124;    &amp;#124;&amp;quot;&amp;lt;&amp;lt;endl;            &lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot; &amp;#124;    &amp;#124;////////////&amp;#124;    &amp;#124;&amp;quot;&amp;lt;&amp;lt;endl;            &lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot; &amp;#124;    +------------+    &amp;#124;&amp;quot;&amp;lt;&amp;lt;endl;           &lt;br /&gt;        cout&amp;lt;&amp;lt;&amp;quot; ------------------------&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;void Casa::MostrarLuz(){&lt;br /&gt;    if(Luz==false){&lt;br /&gt;    cout&amp;lt;&amp;lt;&amp;quot;a luz esta fechada&amp;quot;&amp;lt;&amp;lt;endl;    &lt;br /&gt;   cout&amp;lt;&amp;lt;&amp;quot; _______&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;   cout&amp;lt;&amp;lt;&amp;quot;+       +&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;  cout&amp;lt;&amp;lt;&amp;quot;+         +&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt; cout&amp;lt;&amp;lt;&amp;quot;+           +&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt; cout&amp;lt;&amp;lt;&amp;quot;+           +&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;  cout&amp;lt;&amp;lt;&amp;quot;+    _     +&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;   cout&amp;lt;&amp;lt;&amp;quot;+  &amp;#124; &amp;#124;   +&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;    cout&amp;lt;&amp;lt;&amp;quot;+ &amp;#124; &amp;#124; +&amp;quot;&amp;lt;&amp;lt;endl; &lt;br /&gt;     cout&amp;lt;&amp;lt;&amp;quot;+&amp;#124; &amp;#124;+&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;     cout&amp;lt;&amp;lt;&amp;quot;/////&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;     cout&amp;lt;&amp;lt;&amp;quot;/////&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;     cout&amp;lt;&amp;lt;&amp;quot;/////&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;    }&lt;br /&gt;    else{&lt;br /&gt;    cout&amp;lt;&amp;lt;&amp;quot;a luz esta acesa&amp;quot;&amp;lt;&amp;lt;endl;    &lt;br /&gt;   cout&amp;lt;&amp;lt;&amp;quot; _______&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;   cout&amp;lt;&amp;lt;&amp;quot;+ + + + +&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;  cout&amp;lt;&amp;lt;&amp;quot;+  + + +  +&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt; cout&amp;lt;&amp;lt;&amp;quot;+ + + + + + +&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt; cout&amp;lt;&amp;lt;&amp;quot;+ + + + + + +&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;  cout&amp;lt;&amp;lt;&amp;quot;++ + _ +  +&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;   cout&amp;lt;&amp;lt;&amp;quot;+ +&amp;#124;+&amp;#124;+ +&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;    cout&amp;lt;&amp;lt;&amp;quot;++&amp;#124;+&amp;#124;++&amp;quot;&amp;lt;&amp;lt;endl; &lt;br /&gt;     cout&amp;lt;&amp;lt;&amp;quot;+&amp;#124;+&amp;#124;+&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;     cout&amp;lt;&amp;lt;&amp;quot;/////&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;     cout&amp;lt;&amp;lt;&amp;quot;/////&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;     cout&amp;lt;&amp;lt;&amp;quot;/////&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;E por fim um &lt;b&gt;main.cpp&lt;/b&gt;:&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;#include &amp;quot;Casa.h&amp;quot;&lt;br /&gt;int main(){&lt;br /&gt;    Casa tiago, porta, luz;&lt;br /&gt;    tiago.EstadoDaLuz();&lt;br /&gt;    tiago.EstadoDaPorta();&lt;br /&gt;    &lt;br /&gt;    tiago.MostrarLuz();&lt;br /&gt;    tiago.MostrarPorta();&lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;    return 0;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Para compilar nao e igual á forma normal;&lt;br /&gt;Basta abrir a consola, entrar na pasta onde está o programa e digitar o seguinte:&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;g++ -Wall main.cpp Casa.cpp -o casa&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4954264097640739889-600071040273975853?l=tgraxa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tgraxa.blogspot.com/feeds/600071040273975853/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4954264097640739889&amp;postID=600071040273975853' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4954264097640739889/posts/default/600071040273975853'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4954264097640739889/posts/default/600071040273975853'/><link rel='alternate' type='text/html' href='http://tgraxa.blogspot.com/2008/12/modulo-9-paradigma-adt.html' title='&lt;marquee&gt;MODULO 9 - PARADIGMA ADT&lt;/marquee&gt;'/><author><name>Tiago Graça</name><uri>http://www.blogger.com/profile/09435736787234197248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4954264097640739889.post-8045615145795534461</id><published>2008-11-10T01:36:00.000-08:00</published><updated>2008-12-11T01:38:49.634-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='qt4'/><category scheme='http://www.blogger.com/atom/ns#' term='introduçao ao qt'/><category scheme='http://www.blogger.com/atom/ns#' term='iniciaçao'/><category scheme='http://www.blogger.com/atom/ns#' term='qt'/><title type='text'>INTRODUÇAO AO QT</title><content type='html'>Começamos a pouco tempo o modulo 8 e a matéria introduzida foi QT.&lt;br /&gt;&lt;i&gt;Qt&lt;/i&gt; através da definição da &lt;span style="font-style: italic;"&gt;wikipedia&lt;/span&gt; é um sistema multi-plataforma para o desenvolvimento de programas de interface gráfica.&lt;br /&gt;Pode ser usado em 2 linguagens &lt;span style="font-style: italic;"&gt;java &lt;/span&gt;ou &lt;span style="font-style: italic;"&gt;c++&lt;/span&gt; o que usamos foi o c++ pois ja tínhamos as bases logo é mais fácil.&lt;br /&gt;a primeira coisa a saber é a forma como compilar o programa pois e completamente diferente de "C".&lt;br /&gt;compilando:&lt;br /&gt;&lt;br /&gt;1- criar pasta com nome á escolha que vai ser o nome do programa&lt;br /&gt;2- abrir a consola;&lt;br /&gt;3- digitar os comandos para localizar o ficheiro (ex.: cd/Desktop/pasta)&lt;br /&gt;4- qmake -project&lt;br /&gt;5 - qmake -pasta.pro (neste caso e pasta pois foi o nome dado)&lt;br /&gt;6- make&lt;br /&gt;depois e verificado se o programa tem erros se nao tiver:&lt;br /&gt;7- ./pasta     (neste caso e pasta porque foi o nome dado)&lt;br /&gt;&lt;br /&gt;Agora que ja sabemos compilar vamos passar á pratica;&lt;br /&gt;Este é um programa feito por mim mesmo na aula; á primeira vista pode parecer muito grande mas até é simples pois baseia-se em copy+paste.&lt;br /&gt;Ele apenas diz os dias da semana e classifica-os de 1 a 5;&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;#include &amp;lt;QApplication&amp;gt;&lt;br /&gt;#include &amp;lt;QLabel&amp;gt;&lt;br /&gt;#include &amp;lt;QVBoxLayout&amp;gt;&lt;br /&gt;#include &amp;lt;QSpacerItem&amp;gt;&lt;br /&gt;#include &amp;lt;QSpinBox&amp;gt;&lt;br /&gt;#include &amp;lt;QSlider&amp;gt;&lt;br /&gt;#include &amp;lt;QPushButton&amp;gt;&lt;br /&gt;int main(int argc, char *argv[]){&lt;br /&gt;  QApplication app(argc, argv);&lt;br /&gt;  QWidget *janela = new QWidget;&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  QLabel *texto1 = new QLabel(&amp;quot;SEGUNDA\n&amp;quot;);&lt;br /&gt;  QLabel *texto2 = new QLabel(&amp;quot;TERCA\n&amp;quot;);&lt;br /&gt;  QLabel *texto3 = new QLabel(&amp;quot;QUARTA\n&amp;quot;);&lt;br /&gt;  QLabel *texto4 = new QLabel(&amp;quot;QUINTA\n&amp;quot;);&lt;br /&gt;  QLabel *texto5 = new QLabel(&amp;quot;SEXTA\n&amp;quot;);&lt;br /&gt;  QLabel *texto6 = new QLabel(&amp;quot;SABADO\n&amp;quot;);&lt;br /&gt;  QLabel *texto7 = new QLabel(&amp;quot;DOMINGO\n&amp;quot;);&lt;br /&gt;  &lt;br /&gt;  QSpinBox *spinbox1 = new QSpinBox; &lt;br /&gt;  QSpinBox *spinbox2 = new QSpinBox;&lt;br /&gt;  QSpinBox *spinbox3 = new QSpinBox;&lt;br /&gt;  QSpinBox *spinbox4 = new QSpinBox;&lt;br /&gt;  QSpinBox *spinbox5 = new QSpinBox;&lt;br /&gt;  QSpinBox *spinbox6 = new QSpinBox;&lt;br /&gt;  QSpinBox *spinbox7 = new QSpinBox;&lt;br /&gt;  spinbox1-&amp;gt;setRange(1,5);&lt;br /&gt;  spinbox2-&amp;gt;setRange(1,5);&lt;br /&gt;  spinbox3-&amp;gt;setRange(1,5);&lt;br /&gt;  spinbox4-&amp;gt;setRange(1,5);&lt;br /&gt;  spinbox5-&amp;gt;setRange(1,5);&lt;br /&gt;  spinbox6-&amp;gt;setRange(1,5);&lt;br /&gt;  spinbox7-&amp;gt;setRange(1,5);&lt;br /&gt;  QSpacerItem *spacer1 = new QSpacerItem(400,0);&lt;br /&gt;  &lt;br /&gt;  QSlider *sliderhorizontal1 = new QSlider(Qt::Horizontal);&lt;br /&gt;  QSlider *sliderhorizontal2 = new QSlider(Qt::Horizontal);&lt;br /&gt;  QSlider *sliderhorizontal3 = new QSlider(Qt::Horizontal);&lt;br /&gt;  QSlider *sliderhorizontal4 = new QSlider(Qt::Horizontal);&lt;br /&gt;  QSlider *sliderhorizontal5 = new QSlider(Qt::Horizontal);&lt;br /&gt;  QSlider *sliderhorizontal6 = new QSlider(Qt::Horizontal);&lt;br /&gt;  QSlider *sliderhorizontal7 = new QSlider(Qt::Horizontal);&lt;br /&gt;  sliderhorizontal1-&amp;gt;setRange(1,5);&lt;br /&gt;  sliderhorizontal2-&amp;gt;setRange(1,5);&lt;br /&gt;  sliderhorizontal3-&amp;gt;setRange(1,5);&lt;br /&gt;  sliderhorizontal4-&amp;gt;setRange(1,5);&lt;br /&gt;  sliderhorizontal5-&amp;gt;setRange(1,5);&lt;br /&gt;  sliderhorizontal6-&amp;gt;setRange(1,5);&lt;br /&gt;  sliderhorizontal7-&amp;gt;setRange(1,5);&lt;br /&gt;        QPushButton *sair = new QPushButton(&amp;quot;SAIR&amp;quot;); &lt;br /&gt;        QObject::connect ( sair, SIGNAL(clicked()), &amp;amp;app, SLOT(quit()));&lt;br /&gt;        &lt;br /&gt;      QObject::connect ( spinbox1, SIGNAL(valueChanged( int)), sliderhorizontal1, SLOT(setValue (int)));  &lt;br /&gt;    QObject::connect ( sliderhorizontal1, SIGNAL(valueChanged( int)), spinbox1, SLOT(setValue (int)));  &lt;br /&gt;    QObject::connect ( spinbox2, SIGNAL(valueChanged(int )), sliderhorizontal2, SLOT(setValue (int)));  &lt;br /&gt;      QObject::connect ( sliderhorizontal2, SIGNAL(valueChanged(int)), spinbox2, SLOT(setValue (int)));  &lt;br /&gt;      QObject::connect ( spinbox3, SIGNAL(valueChanged( int)), sliderhorizontal3, SLOT(setValue (int)));  &lt;br /&gt;    QObject::connect ( sliderhorizontal3, SIGNAL(valueChanged( int)), spinbox3, SLOT(setValue (int)));  &lt;br /&gt;    QObject::connect ( spinbox4, SIGNAL(valueChanged(int )), sliderhorizontal4, SLOT(setValue (int)));  &lt;br /&gt;      QObject::connect ( sliderhorizontal4, SIGNAL(valueChanged(int)), spinbox4, SLOT(setValue (int)));  &lt;br /&gt;      QObject::connect ( spinbox5, SIGNAL(valueChanged( int)), sliderhorizontal5, SLOT(setValue (int)));  &lt;br /&gt;    QObject::connect ( sliderhorizontal5, SIGNAL(valueChanged( int)), spinbox5, SLOT(setValue (int)));  &lt;br /&gt;    QObject::connect ( spinbox6, SIGNAL(valueChanged(int )), sliderhorizontal6, SLOT(setValue (int)));  &lt;br /&gt;      QObject::connect ( sliderhorizontal6, SIGNAL(valueChanged(int)), spinbox6, SLOT(setValue (int)));    &lt;br /&gt;    QObject::connect ( spinbox7, SIGNAL(valueChanged(int )), sliderhorizontal7, SLOT(setValue (int)));  &lt;br /&gt;      QObject::connect ( sliderhorizontal7, SIGNAL(valueChanged(int)), spinbox7, SLOT(setValue (int)));    &lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;        //criar layouts&lt;br /&gt;  QVBoxLayout *coluna1 = new QVBoxLayout;&lt;br /&gt;  QVBoxLayout *coluna2 = new QVBoxLayout;&lt;br /&gt;  QVBoxLayout *coluna3 = new QVBoxLayout;&lt;br /&gt;  QVBoxLayout *coluna4 = new QVBoxLayout;&lt;br /&gt;  QHBoxLayout *corpo = new QHBoxLayout;&lt;br /&gt;  QHBoxLayout *base1 = new QHBoxLayout;&lt;br /&gt;  QHBoxLayout *base2 = new QHBoxLayout;&lt;br /&gt;        QVBoxLayout *principal = new QVBoxLayout;&lt;br /&gt;  &lt;br /&gt;  coluna1-&amp;gt;addWidget(texto1);&lt;br /&gt;  coluna1-&amp;gt;addWidget(texto2);&lt;br /&gt;  coluna1-&amp;gt;addWidget(texto3);&lt;br /&gt;  coluna1-&amp;gt;addWidget(texto4);  &lt;br /&gt;  coluna1-&amp;gt;addWidget(texto5);  &lt;br /&gt;  coluna1-&amp;gt;addWidget(texto6);&lt;br /&gt;  coluna1-&amp;gt;addWidget(texto7);  &lt;br /&gt;  &lt;br /&gt;  coluna2-&amp;gt;addWidget(spinbox1);&lt;br /&gt;  coluna2-&amp;gt;addWidget(spinbox2);&lt;br /&gt;  coluna2-&amp;gt;addWidget(spinbox3);&lt;br /&gt;  coluna2-&amp;gt;addWidget(spinbox4);&lt;br /&gt;  coluna2-&amp;gt;addWidget(spinbox5);&lt;br /&gt;  coluna2-&amp;gt;addWidget(spinbox6);&lt;br /&gt;  coluna2-&amp;gt;addWidget(spinbox7);&lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;  coluna3-&amp;gt;addWidget(sliderhorizontal1);&lt;br /&gt;  coluna3-&amp;gt;addWidget(sliderhorizontal2);&lt;br /&gt;  coluna3-&amp;gt;addWidget(sliderhorizontal3);&lt;br /&gt;  coluna3-&amp;gt;addWidget(sliderhorizontal4);&lt;br /&gt;  coluna3-&amp;gt;addWidget(sliderhorizontal5);&lt;br /&gt;  coluna3-&amp;gt;addWidget(sliderhorizontal6);&lt;br /&gt;  coluna3-&amp;gt;addWidget(sliderhorizontal7);  &lt;br /&gt;&lt;br /&gt;  corpo-&amp;gt;addLayout(coluna1);&lt;br /&gt;  corpo-&amp;gt;addLayout(coluna2);&lt;br /&gt;  corpo-&amp;gt;addLayout(coluna3);&lt;br /&gt;  corpo-&amp;gt;addLayout(coluna4);&lt;br /&gt;  &lt;br /&gt;    base1-&amp;gt;addItem(spacer1);&lt;br /&gt;  base2-&amp;gt;addWidget(sair);&lt;br /&gt;    principal-&amp;gt;addLayout(corpo);&lt;br /&gt;  principal-&amp;gt;addLayout(base1);&lt;br /&gt;  principal-&amp;gt;addLayout(base2);&lt;br /&gt;  &lt;br /&gt;  janela-&amp;gt;setLayout(principal);&lt;br /&gt;  janela-&amp;gt;show();&lt;br /&gt;  return app.exec();&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Programa linha-a-linha:&lt;br /&gt;1-7 -&gt; nestas linhas são usados varios #include que servem para criar aplicaçoes, items ou wigets;&lt;br /&gt;8-9 -&gt; inicia aplicaçao a partir da consola;&lt;br /&gt;14-20 -&gt; começamos a fazer labels que sao basicamente texto; neste caso com      os dias da semana.&lt;br /&gt;22-35 -&gt; da 22 á 28 sao criadas spinboxs que sao as caixas com numeros existentes no programa da 29 á 35 sao criadas ranges que fazem com que a spinbox apenas possa irdo numero 1 ao 5;&lt;br /&gt;36 -&gt; aqui e criado um spacer que faz com que a janela nao seja minimizada menos que 400 pixels neste caso;&lt;br /&gt;38-51 -&gt; da 38 á 44 sao criados sliders horizontais da 45 á 51 criamos outra vez ranges que fazem com que o slider apenas va de 1 a 5;&lt;br /&gt;52-53 -&gt; é criado um pushbutton com o nome sair; isto cria um botao no nosso que quando clicado o programa fecha.&lt;br /&gt;55-68 -&gt; começamos a fazer connects; aqui fazemos uma ligaçao dos nossos sliders as spinboxs que faz com que sempre que aumentarmos o numero num deles no outro tambem aumente.&lt;br /&gt;73-80 -&gt; criamos aqui layouts verticais (QVBoxLayout) e horizontais (QHBoxLayout); os layouts criados foram coluna1, coluna2, coluna3, coluna4, base1, base2 e principal;&lt;br /&gt;82-160 -&gt; aqui colocamos dentro dos nossos layouts os items e widgets criados em cima como os sliders etc.&lt;br /&gt;118-119 -&gt; colocamos todos os layouts dentro da janela criada no inicio do programa; depois na janela-&gt;show(); mostra finalmente os programas pois sem isto nao da;&lt;br /&gt;120-121 -&gt; fim do programa&lt;br /&gt;&lt;br /&gt;no fim teremos este resultado:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_-hCvjndA8Xk/SRsCG_we8kI/AAAAAAAAAB0/w_8U4eksH9c/s1600-h/hvboxlayout.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 279px;" src="http://3.bp.blogspot.com/_-hCvjndA8Xk/SRsCG_we8kI/AAAAAAAAAB0/w_8U4eksH9c/s400/hvboxlayout.png" alt="" id="BLOGGER_PHOTO_ID_5267806508357186114" border="0" /&gt;&lt;/a&gt;Para fazer o Download do QT:&lt;br /&gt;&lt;a href="http://linux.softpedia.com/get/Programming/Widgets/Qt-179.shtml"&gt;http://linux.softpedia.com/get/Programming/Widgets/Qt-179.shtml&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Para instalar:&lt;br /&gt;abrir consola e:&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;apt-get install libqt4-assistant libqt4-core libqt4-dbg libqt4-dbus libqt4-designer libqt4-dev libqt4-gui libqt4-help libqt4-network libqt4-opengl libqt4-opengl-dev libqt4-qt3support libqt4-script libqt4-sql libqt4-sql-ibase libqt4-sql-mysql libqt4-sql-odbc libqt4-sql-psql libqt4-sql-sqlite libqt4-sql-sqlite2 libqt4-svg libqt4-test libqt4-webkit libqt4-webkit-dbg libqt4-xml libqt4-xmlpatterns libqt4-xmlpatterns-dbg libqtcore4 libqtgui4 qt4-demos qt4-designer qt4-dev-tools qt4-doc qt4-doc-html qt4-qtconfig&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4954264097640739889-8045615145795534461?l=tgraxa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tgraxa.blogspot.com/feeds/8045615145795534461/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4954264097640739889&amp;postID=8045615145795534461' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4954264097640739889/posts/default/8045615145795534461'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4954264097640739889/posts/default/8045615145795534461'/><link rel='alternate' type='text/html' href='http://tgraxa.blogspot.com/2008/11/introduao-ao-qt.html' title='&lt;marquee&gt;INTRODUÇAO AO QT&lt;/marquee&gt;'/><author><name>Tiago Graça</name><uri>http://www.blogger.com/profile/09435736787234197248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_-hCvjndA8Xk/SRsCG_we8kI/AAAAAAAAAB0/w_8U4eksH9c/s72-c/hvboxlayout.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4954264097640739889.post-604891876718476098</id><published>2008-10-21T01:12:00.000-07:00</published><updated>2008-11-25T01:48:03.148-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='manipulaçao'/><category scheme='http://www.blogger.com/atom/ns#' term='manipulaçao ficheiros'/><category scheme='http://www.blogger.com/atom/ns#' term='fwrite'/><category scheme='http://www.blogger.com/atom/ns#' term='fread'/><category scheme='http://www.blogger.com/atom/ns#' term='ficheiro binario'/><category scheme='http://www.blogger.com/atom/ns#' term='binarios'/><title type='text'>MANIPULAÇÃO DE FICHEIROS BINÁRIOS</title><content type='html'>Estamos no fim do modulo 7 e a ultima matéria dada foi a manipulação não em ficheiros de texto mas binários que é mais ao menos igual em termos de formas de abertura;&lt;br /&gt;&lt;br /&gt;A sua forma de abertura é simples usamos o "r" ou "w" para ler ou escrever no ficheiro mas adicionamos a letra "b" por exemplo: &lt;span style="font-weight: bold;"&gt;&lt;span&gt;(fp=fopen(argv[1], &lt;/span&gt;&lt;span class="string"&gt;"wb"&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span&gt;.&lt;br /&gt;&lt;br /&gt;Por exemplo:&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;int main(int argc, char *argv[]){&lt;br /&gt;    int valores[5]={7, 3, 8, 1, 2};&lt;br /&gt;    FILE *fp;&lt;br /&gt;    if ((fp=fopen(argv[1], &amp;quot;wb&amp;quot;))==NULL &amp;#124;&amp;#124; argc != 2){&lt;br /&gt;        printf(&amp;quot;ERRO!\nModo de utiliza&amp;#231;&amp;#227;o: %s nome_ficheiro_dados\n&amp;quot;, argv[0]);&lt;br /&gt;        return 1;&lt;br /&gt;    }&lt;br /&gt;    fwrite(valores, sizeof(int), 5, fp);&lt;br /&gt;    fclose(fp);&lt;br /&gt;    return 0;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Neste programa:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;strong&gt;&lt;span style="font-weight: bold;"&gt;- este programa escreve dados binarios num ficheiro&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span&gt;&lt;br /&gt;- o nome do ficheiro e escrito através da linha de comandos&lt;br /&gt;&lt;br /&gt;- e usado o operados &lt;span style="font-weight: bold;"&gt;sizeof( tipo de dados (int, float, etc.) ) &lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;para &lt;/span&gt;determinar o número de bytes ocupado por um &lt;strong&gt;int.&lt;br /&gt;&lt;span style="font-weight: normal;"&gt;&lt;br /&gt;- e usada a funçao &lt;span style="font-weight: bold;"&gt;fwrite&lt;/span&gt;&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;que representa o número de elementos (dos n) que conseguiu escrever com sucesso.&lt;strong&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: normal;"&gt;&lt;br /&gt;&lt;br /&gt;Em cima foi usado o fwrite agora usaremos o fread para ler o ficheiro que como sabem foram usados caracteres binarios&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/strong&gt;Aqui, a função &lt;strong&gt;fread&lt;/strong&gt; lê um bloco de dados com um determinado tamanho em bytes do ficheiro para a memória primária.&lt;br /&gt;&lt;strong&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.4shared.com/file/67765542/7b00e695/binarios_escrever.html"&gt;http://www.4shared.com/file/67765542/7b00e695/binarios_escrever.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: normal;"&gt;Neste programa:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: normal;"&gt;- é usada a funçao fread para ler os caracteres do ficheiro anterior por exemplo&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: normal;"&gt;- o nome do ficheiro é escrito através da linha de comandos&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;- &lt;/strong&gt;O valor de retorno da função&lt;span style="font-weight: bold;"&gt; fread&lt;/span&gt; representa o número de elementos (dos n) que conseguiu ler com sucesso&lt;span style="font-weight: bold;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;E agora sim acabou o modulo 7 e a manipulaçao de ficheiros espero ajudar&lt;br /&gt;&lt;br /&gt;Obrigado&lt;br /&gt;TG&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;span&gt; &lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="string"&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4954264097640739889-604891876718476098?l=tgraxa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tgraxa.blogspot.com/feeds/604891876718476098/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4954264097640739889&amp;postID=604891876718476098' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4954264097640739889/posts/default/604891876718476098'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4954264097640739889/posts/default/604891876718476098'/><link rel='alternate' type='text/html' href='http://tgraxa.blogspot.com/2008/10/manipulao-de-ficheiros-binrios.html' title='MANIPULAÇÃO DE FICHEIROS BINÁRIOS'/><author><name>Tiago Graça</name><uri>http://www.blogger.com/profile/09435736787234197248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4954264097640739889.post-4519392423320486654</id><published>2008-10-20T01:09:00.000-07:00</published><updated>2008-11-25T01:52:23.150-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='escrita'/><category scheme='http://www.blogger.com/atom/ns#' term='fprintf'/><category scheme='http://www.blogger.com/atom/ns#' term='fscanf'/><category scheme='http://www.blogger.com/atom/ns#' term='ficheiros'/><category scheme='http://www.blogger.com/atom/ns#' term='leitura'/><category scheme='http://www.blogger.com/atom/ns#' term='manipulacao ficheiros'/><category scheme='http://www.blogger.com/atom/ns#' term='manipulacao'/><title type='text'></title><content type='html'>&lt;span style="font-size:100%;"&gt;Bem no ultimo post fiquei-me pela leitura de ficheiros caracter-a-caracter e como disse aqui estou com um post de continuação.&lt;br /&gt;Agora vou falar de leitura de &lt;/span&gt;&lt;span style="font-size:100%;"&gt;Ficheiros de texto com a leitura/escrita formatada, onde usaremos as variáveis &lt;span style="font-size:100%;"&gt;fprintf&lt;/span&gt; e &lt;/span&gt;&lt;span style="font-size:100%;"&gt;fscanf.&lt;br /&gt;&lt;br /&gt;fprintf - esta variavel escreve dados num ficheiro num formato indicado e só devem ser utilizadas em ficheiros de texto.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;Como exemplo de fprintf têm agora um programa básico sobre isto:&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;int main(int argc, char *argv[]){&lt;br /&gt;&lt;br /&gt;  FILE *fp;&lt;br /&gt;&lt;br /&gt;  int a=1;&lt;br /&gt;  char b[30]=&amp;quot;maria&amp;quot;;&lt;br /&gt;  float c=2.3;&lt;br /&gt;&lt;br /&gt;  if(argc == 2){&lt;br /&gt;    fp = fopen(argv[1], &amp;quot;w&amp;quot;);&lt;br /&gt;    fprintf(fp, &amp;quot;%d %s %.1f&amp;quot;, a, b, c);&lt;br /&gt;    fclose(fp);&lt;br /&gt;  }&lt;br /&gt;  else&lt;br /&gt;    printf(&amp;quot;&amp;#201; necess&amp;#225;rio especificar um nome de ficheiro.\n&amp;quot;);&lt;br /&gt;  return 0;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;Neste programa:&lt;br /&gt;- o nome do ficheiro e digitado através da linha de comandos ao compilar por exemplo: "./fprintf dados.txt"&lt;br /&gt;- o programa grava no ficheiro "dados.txt" as palavras: "1 maria 2.3"&lt;br /&gt;- e aberto no modo de escrita ("w")&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Agora o fscanf; Com esta variavel, entramos no ficheiro e lê-mos os dados que existem lá.&lt;br /&gt;Por exemplo:&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;int main(int argc, char *argv[]){&lt;br /&gt;&lt;br /&gt;  FILE *fp;&lt;br /&gt;&lt;br /&gt;  int a;&lt;br /&gt;  char b[30];&lt;br /&gt;  float c;&lt;br /&gt;&lt;br /&gt;  if((fp = fopen(argv[1], &amp;quot;r&amp;quot;))!=NULL){&lt;br /&gt;    fscanf(fp, &amp;quot;%d %s %f&amp;quot;, &amp;amp;a, b, &amp;amp;c);&lt;br /&gt;    printf(&amp;quot;a = %d\n&amp;quot;, a);&lt;br /&gt;    printf(&amp;quot;b = %s\n&amp;quot;, b);&lt;br /&gt;    printf(&amp;quot;c = %.1f\n&amp;quot;, c);&lt;br /&gt;    fclose(fp);&lt;br /&gt;  }&lt;br /&gt;  else&lt;br /&gt;    printf(&amp;quot;O ficheiro especificado n&amp;#227;o existe!\n&amp;quot;);&lt;br /&gt;  return 0;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Neste programa:&lt;br /&gt;- o ficheiro e aberto através da linha de comandos como o exemplo acima.&lt;br /&gt;- é aberto no modo de leitura ("r").&lt;br /&gt;- Devolve o número de parâmetros que conseguiu ler com sucesso&lt;br /&gt;- Se o ficheiro não existir ou não se encontrar na mesma pasta/localização o programa avisa que o ficheiro e inexistente.&lt;br /&gt;&lt;br /&gt;E acaba aqui a minha introdução a manipulação de ficheiros de texto;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4954264097640739889-4519392423320486654?l=tgraxa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tgraxa.blogspot.com/feeds/4519392423320486654/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4954264097640739889&amp;postID=4519392423320486654' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4954264097640739889/posts/default/4519392423320486654'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4954264097640739889/posts/default/4519392423320486654'/><link rel='alternate' type='text/html' href='http://tgraxa.blogspot.com/2008/10/bem-no-ultimo-post-fiquei-me-pela.html' title=''/><author><name>Tiago Graça</name><uri>http://www.blogger.com/profile/09435736787234197248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4954264097640739889.post-7754755560375973774</id><published>2008-10-07T00:43:00.000-07:00</published><updated>2008-11-10T01:36:12.593-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='texto'/><category scheme='http://www.blogger.com/atom/ns#' term='fopen'/><category scheme='http://www.blogger.com/atom/ns#' term='fclose'/><category scheme='http://www.blogger.com/atom/ns#' term='manipulacao ficheiros'/><category scheme='http://www.blogger.com/atom/ns#' term='manipulacao'/><title type='text'>Manipulaçao de ficheiro em linguagem C</title><content type='html'>Ano novo matéria nova e modulo 7 ;)&lt;br /&gt;Hoje o meu post vai falar sobre Manipulação de ficheiros. Apesar do assunto se dividir entre duas matérias (manipulação de ficheiros de texto e manipulaçao de ficheiros binarios) apenas vou falar do que aprendi que foi manipulaçao de ficheiros de texto.&lt;br /&gt;&lt;strong&gt;&lt;em&gt;&lt;br /&gt;&lt;/em&gt;&lt;/strong&gt;Ficheiros de texto são aqueles que contêm caracteres perceptíveis para o ser humano (que conseguimos entender). São caracteres da tabela ASCII como algarismos, letras do alfabeto, caracteres de acentuação, pontução entre muitos outros.&lt;br /&gt;Começamos por aprender a abrir e fechar ficheiros atraves de "fopen" e "fclose"&lt;br /&gt;&lt;br /&gt;fopen é uma operação que consiste em mandar o programa aceder ao ficheiro, associando-o a uma variável (ficheiro p.ex.);&lt;br /&gt;Para poder abri-lo também é necessário indicar o nome do ficheiro existente na mesma pasta onde esta gravado o programa (“dados.txt&lt;strong&gt;&lt;/strong&gt;” p.ex.) e o modo de abertura que pode ser:&lt;br /&gt;"r" - leitura do ficheiro (permite ler mas nao escrever)&lt;br /&gt;"w" - escrita (permite escrever mas nao ler)&lt;br /&gt;estes foram os mais usados apesar de existirem mais foi os unicos que usamos para ja.&lt;br /&gt;&lt;br /&gt;fclose vai eliminar a ligação criada entre o programa e a variável associada ao ficheiro (antes de o fazer verifica que os dados foram gravados).&lt;br /&gt;&lt;br /&gt;Para ajudar a perceber &lt;a href="http://www.4shared.com/file/65977506/22fd76ea/1_1.html"&gt;clique aqui&lt;/a&gt; para fazer o download de um programa basico sobre isto&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Depois disto começamos a fazer a leitura de texto no ficheiro atraves da abordagem byte-a-byte ou caracter a caracter. Isto basea-se nas funçoes &lt;span style="font-weight: bold;"&gt;fgetc &lt;/span&gt;e &lt;span style="font-weight: bold;"&gt;fputc&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-size:130%;"&gt;fgetc:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.4shared.com/file/65977933/70a028c2/manipulaao_ficheiros.html"&gt;http://www.4shared.com/file/65977933/70a028c2/manipulaao_ficheiros.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Neste programa:&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;O ficheiro é aberto no modo de leitura mas como nao e perguntado nada parte-se do princípio que o ficheiro existe e ja esta criado com o nome "texto.txt".&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;Cada caracter lido não é armazenado numa variável, sendo utilizado apenas na condição do ciclo “while”.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;Foi utilizado um ciclo “while” para percorrer o ficheiro byte-a-byte, utilizando a constante simbólica EOF para controlar o fim do ficheiro (EOF=End Of File, cujo valor é -1).&lt;br /&gt;&lt;br /&gt;No final este programa conta os caracteres escritos no ficheiro "texto.c".&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-size:130%;"&gt;fputc:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;A variavel fputc armazena um caracter ou uma cadeia de caracteres num ficheiro.&lt;br /&gt;&lt;a href="http://www.4shared.com/file/65978703/970465d/manipulaao_ficheiros2.html"&gt;&lt;br /&gt;http://www.4shared.com/file/65978703/970465d/manipulaao_ficheiros2.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Neste programa:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;O ficheiro é aberto no modo de escrita “w”, assim, caso não exista será criado, e caso exista será substituído.&lt;br /&gt;&lt;br /&gt;A string é percorrida caracter-a-caracter até ser detectado o seu terminador, ou seja, o caracter ”.&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;A instrução &lt;strong&gt;fputc(texto[i++], fp);&lt;/strong&gt; primeiro escreve o caracter no ficheiro, e de seguida incrementa o valor de &lt;strong&gt;i&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;Basicamente foi isto que aprendemos nas ultimas aulas e que foi testado na prova pratica da ultima semana pode e nao ter corrido muito bem :P&lt;br /&gt;&lt;br /&gt;Mais a frente irei publicar outro post com outras noções mas para ja fico.me por aqui&lt;br /&gt;&lt;br /&gt;(07-10-08)&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4954264097640739889-7754755560375973774?l=tgraxa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tgraxa.blogspot.com/feeds/7754755560375973774/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4954264097640739889&amp;postID=7754755560375973774' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4954264097640739889/posts/default/7754755560375973774'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4954264097640739889/posts/default/7754755560375973774'/><link rel='alternate' type='text/html' href='http://tgraxa.blogspot.com/2008/10/manipulaao-de-ficheiro-em-linguagem-c.html' title='Manipulaçao de ficheiro em linguagem C'/><author><name>Tiago Graça</name><uri>http://www.blogger.com/profile/09435736787234197248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4954264097640739889.post-6974901811141732143</id><published>2008-06-02T01:22:00.000-07:00</published><updated>2008-11-25T01:36:22.502-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='estruturas'/><category scheme='http://www.blogger.com/atom/ns#' term='manipulaçao dados'/><category scheme='http://www.blogger.com/atom/ns#' term='int'/><category scheme='http://www.blogger.com/atom/ns#' term='ficheiros'/><category scheme='http://www.blogger.com/atom/ns#' term='estrocturas'/><title type='text'>Estruturas</title><content type='html'>Devido à minha má nota  na disciplina de programação, o meu professor mandou-me criar um pequeno post sobre estruturas.&lt;br /&gt;&lt;br /&gt;Sabe-se que algoritmos manipulam dados. Quando estes dados estão organizados de forma coerente, sao chamados de estrutura de dados. São a organização e os métodos que manipulam esta determinada estrutura que lhes conferem singularidade. As estruturas de dados são chamadas tipos de dados compostos que se dividem em dois: homogéneos (vectores e matrizes) e heterogéneos (registos). As estruturas homogéneas são conjuntos de dados formados pelo mesmo tipo de dado primitivo. As estruturas heterogéneas são conjuntos de dados formados por tipos de dados primitivos diferentes (campos do registo) numa mesma estrutura.&lt;br /&gt;Basicamente, uma estrutura de dados consiste num grupo de elementos de dados agrupados sob uma designação ou nome. Estes elementos de dados, cuja designação técnica é membros, têm vários tipos e tamanhos distintos. As estruturas de dados são declaradas em C++ utilizando a seguinte sintaxe:&lt;br /&gt;struct nome_da_estrutura{.&lt;br /&gt;o que significa que depois de declararmos o código acima, estamos a criar um novo tipo de dados que podia por exemplo ser struct agenda{int idade; float morada} onde criamos a estrutura agenda que contem os membros idade e morada .&lt;br /&gt;Aqui está um programa que exemplifica isto:&lt;br /&gt;&lt;a href="http://www.4shared.com/file/49816311/d82a82d3/novo_struct.html"&gt;http://www.4shared.com/file/49816311/d82a82d3/novo_struct.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 255); font-weight: bold;"&gt;linha a linha&lt;/span&gt;&lt;br /&gt;linha 6: cria uma estrutura chamada NomeCompleto&lt;br /&gt;linha 7, 8, 9: declara uma variavel char de tamanho 15 em todas as linhas&lt;br /&gt;linha 12: cria uma estrutura chamada Pessoa&lt;br /&gt;linha 13: dentro da estrutura NomeCompleto, é criada mais uma chamada Nome&lt;br /&gt;linha 14: é declarada a variavel inteira "idade"&lt;br /&gt;linha 17: dentro da estrutura Pessoa e criada outra chamada total&lt;br /&gt;linha 28: é mostrado o nome completo&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;se quiserem saber mais um pouco sobre isto, têm aqui alguns sítios:&lt;br /&gt;&lt;a href="http://gracianotorrao.wordpress.com/2008/04/01/estruturas-de-dados-struct-c/"&gt;http://gracianotorrao.wordpress.com/2008/04/01/estruturas-de-dados-struct-c/ &lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.vivaolinux.com.br/scripts/verScript.php?codigo=1955"&gt;http://www.vivaolinux.com.br/scripts/verScript.php?codigo=1955 &lt;/a&gt;&lt;br /&gt;&lt;a href="http://pt.wikibooks.org/wiki/Programar_em_C/Tipos_de_dados_definidos_pelo_usu%C3%A1rio"&gt;http://pt.wikibooks.org/wiki/Programar_em_C/Tipos_de_dados_definidos_pelo_usu%C3%A1rio&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.linuxdicas.com.br/section-viewarticle-219.html"&gt;http://www.linuxdicas.com.br/section-viewarticle-219.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Exercício:&lt;br /&gt;Depois desta explicação, vou agora propor  um pequeno exercício, cujo resultado já foi postado no   meu blog. consiste em  criar uma pequena agenda onde é criada a estrutura "registo" contendo as variáveis estado, numero de telemóvel, nome, e-mail e data de nascimento. esta agenda deve conter as funções de  inserir, eliminar, listar e procurar.&lt;br /&gt;para quem achar difícil, está aqui a resolução:&lt;br /&gt;&lt;a href="http://www.4shared.com/file/49091731/ace1b998/_2__agendaTiagoGraa.html"&gt;http://www.4shared.com/file/49091731/ace1b998/_2__agendaTiagoGraa.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4954264097640739889-6974901811141732143?l=tgraxa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tgraxa.blogspot.com/feeds/6974901811141732143/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4954264097640739889&amp;postID=6974901811141732143' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4954264097640739889/posts/default/6974901811141732143'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4954264097640739889/posts/default/6974901811141732143'/><link rel='alternate' type='text/html' href='http://tgraxa.blogspot.com/2008/06/estruturas.html' title='Estruturas'/><author><name>Tiago Graça</name><uri>http://www.blogger.com/profile/09435736787234197248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4954264097640739889.post-5459592554515747956</id><published>2008-05-29T01:02:00.000-07:00</published><updated>2008-11-25T01:36:48.838-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='apontadores'/><category scheme='http://www.blogger.com/atom/ns#' term='variavel'/><title type='text'>Apontadores</title><content type='html'>Nas últimas aulas de programação, foi muito abordado o termo "apontadores" que vou agora muito resumidamente explicá-los.&lt;br /&gt;&lt;strong style="font-weight: normal;"&gt;Um apontador é uma variável  que é utilizada para armazenar o endereço de memória de outra variável. Por exemplo, quando escrevemos "int x=1" o número 1 pode ficar guardado no endereço 101 da memória.&lt;br /&gt;Com apontadores, quando escrevemos "*ptr_x=&amp;amp;x" &lt;/strong&gt;criámos um apontador "ptr", cujo conteúdo foi automaticamente iniciaado com o valor correspondente ao endereço de memória da variável x, que era 101.&lt;br /&gt;&lt;strong style="font-weight: normal;"&gt;Basicamente é isto, mas para uma explicação mais aprofundada entre neste link:&lt;br /&gt;&lt;a href="http://gracianotorrao.wordpress.com/2008/05/17/apontadores-em-linguagem-c-%e2%80%93-nocoes-elementares/"&gt;Graciano torrao's deblog.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4954264097640739889-5459592554515747956?l=tgraxa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tgraxa.blogspot.com/feeds/5459592554515747956/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4954264097640739889&amp;postID=5459592554515747956' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4954264097640739889/posts/default/5459592554515747956'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4954264097640739889/posts/default/5459592554515747956'/><link rel='alternate' type='text/html' href='http://tgraxa.blogspot.com/2008/05/apontadores.html' title='Apontadores'/><author><name>Tiago Graça</name><uri>http://www.blogger.com/profile/09435736787234197248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
