Planet.DebianPT.org

Graciano TorrãoConstrução de algoritmos em Pseudocódigo – Estrutura genérica de um algoritmo

Os nossos algoritmos iniciais vão obedecer à seguinte estrutura:

  1. Título: Nome
  2. Descrição: Descrição
  3. Lista de variáveis: Variáveis
  4. Indicação do início da execução do algoritmo: Início
  5. Corpo do algoritmo:
  6. Inficação do fim da execução do algoritmo: Fim

Nome

Deve ser um nome curto e que, na medida do possível, indique o que faz o programa.

Por exemplo, para um algoritmo que calcula a soma de dois números teríamos.

Bom exemplo: soma2, soma_ab, a_mais_b

Menos bom: calcular_a_soma_de_dois-números

Mau exemplo: programa

Descrição

Pretende-se obter aqui uma descrição sucinta a respeito do que faz este algoritmo.

Por exemplo:

Dados dois valores inteiros, este algoritmo calcula a respetiva soma.

Variáveis

Nesta secção vamos indicar os nomes, e respetivos tipos, das variáveis que pretendemos utilizar no algoritmo.

Esta deve ser pensada antes de se iniciar a criação do corpo do algoritmo propriamente dito mas, diz a experiência, é sempre bom reservar algum espaço para acrescentar variáveis de última hora!

Início

Serve apena para indicar que se vai iniciar a execução do algoritmo. Assim sendo, a linha seguinte contém a primeira instrução.

 … “Corpo do algoritmo”

Contém várias linhas, cada uma contendo uma ou mais instruções a executar.

Fim

Assinala o fim da execução do algoritmo.

Segue-se um exemplo de um algoritmo, escrito de acordo com esta convenção.

Nome soma2
Descrição
    Dados dois valores inteiros, calcula e apresenta a sua soma.
Variáveis
    valor1, valor2, soma:Inteiros
Início
    Ler(valor1)
    Ler(valor2)
    soma ← valor1 + valor2
    Escrever(soma)
Fim

Naturalmente que, de forma a compreender na íntegra o exemplo apresentado, falta adquirir algumas competências, nomeadamente:

  • noção de variável (valor1 e valor2)
  • tipos de dados associados a uma variável (Inteiros)
  • operação de leitura de dados ou input ( Ler() )
  • operação de atribuição ( ← )
  • operação de escrita de dados ou output ( Escrever() )
Anterior Índice Seguinte

Graciano TorrãoConstrução de algoritmos em Pseudocódigo

A respeito da definição de algoritmo, como eu já tinha referido anteriormente aqui, temos:

“Um algoritmo é uma sequência ordenada de passos precisos que descrevem a solução de um determinado problema.”

(Treamblay & Bunt, p.19)

Partindo do pressuposto de que existem inúmeras formas de descrever um algoritmo, vou tentar sistematizar uma delas, a que passaremos a designar de pseudolinguagem ou pseudocódigo.

# 1 – Estrutura genérica de um algoritmo

Observações:

Este é um trabalho em progresso.

Serão acrescentados novos elementos à medida que forem sendo abordados.


Graciano TorrãoTabuada do Dino – Jogos Educativos

Depois de esgotada a abordagem clássica.

- Vai para o teu quarto estudar a tabuada e, quando a souberes, volta aqui para eu te colocar questões.

Assim foi, mas os resultados estavam a ser muito modestos.

Passei à abordagem com suporte a um recurso pedagógico, neste caso um jogo online.

link: http://www.escolagames.com.br/jogos/tabuadaDino/

Gostei do resultado :)

 


Graciano TorrãoMão Morta – Horas de Matar

Não resisti a partilhar pois, no atual panorama, são horas de muita coisa.

Fica a metáfora!

<iframe class="youtube-player" frameborder="0" height="385" src="http://www.youtube.com/embed/FFfQuaVXcUo?version=3&amp;rel=1&amp;fs=1&amp;showsearch=0&amp;showinfo=1&amp;iv_load_policy=1&amp;wmode=transparent" type="text/html" width="630"></iframe>

<iframe class="youtube-player" frameborder="0" height="385" src="http://www.youtube.com/embed/mdFKmDn2bhs?version=3&amp;rel=1&amp;fs=1&amp;showsearch=0&amp;showinfo=1&amp;iv_load_policy=1&amp;wmode=transparent" type="text/html" width="630"></iframe>

http://www.mao-morta.org/


Graciano TorrãoWhat Does Sound Look Like?

Muito bom!

<iframe allowfullscreen="true" class="youtube-player" frameborder="0" height="385" src="http://www.youtube.com/embed/px3oVGXr4mo?version=3&amp;rel=1&amp;fs=1&amp;showsearch=0&amp;showinfo=1&amp;iv_load_policy=1&amp;wmode=transparent" type="text/html" width="630"></iframe>


Marcos MaradoEuropean Elections: get out and vote!

The European Elections are happening this weekend. In Portugal, they're on Sunday, but my first message goes to all Europeans: go out and vote. You think we're heading in the right direction? Go out and say it. You think we're heading in the wrong direction? Go out and say it. You're not planning to go out and vote because you're fed up with politics and politicians? Well, if you're fed up with the ones you have, go out and vote for others - if you don't, others will choose for yourself, and you'll still be fed up. In summary: there's no reason not to vote.

Vote!

My second message goes towards the Portuguese people. I am not going to tell you how to vote: that's really up to you. You have a life, and your life is deeply impacted by European politics. The countries finances, the money you have on your pocket, even the currency you use, the taxes you pay, the choices you're able to make, the laws you have, the things you do. So, even if you think you're not, you're fully capable of choosing for yourself, and to choose who will better defend your interests. So, with that in mind, I urge you pay attention to the choices that are laid out in front of you. You have sixteen (16!) parties to choose from. Pick one, go out, vote.

These are your options next Sunday:


Aliança Portugal (AP: PSD + CDS-PP)
Bloco de Esquerda (BE)
Coligação Democrática Unitária (CDU: PCP + PEV)
Livre
Movimento Alternativa Socialista (MAS)
Nova Democracia (PND)
Partido Comunista dos Trabalhadores Portugueses (PCTP/MRPP)
Partido da Terra (MPT)
Partido Democrático do Atlântico (PDA)
Partido Nacional Renovador (PNR)
Partido Operário de Unidade Socialista (POUS)
Partido pelos Animais e pela Natureza (PAN)
Partido Popular Monárquico (PPM)
Partido Socialista (PS)
Partido Trabalhista Português (PTP)
Portugal pro Vida (PPV)

I've also made a small summary and comparison text about the position of these parties, if you're interested. I'm sorry it isn't as complete as I wished it to be, but it might be helpful all the same. If you're interested, read it here.

Sunday is a great day: one of those days you can make a difference, where you can speak up and say what do you want in your life, your future. Don't let others decide for you. Vote!

Graciano TorrãoÓ Carlos, Ó Carlos

Esta música vai dedicada a um homem da rádio …

<iframe allowfullscreen="true" class="youtube-player" frameborder="0" height="385" src="http://www.youtube.com/embed/RafH4PLjOw4?version=3&amp;rel=1&amp;fs=1&amp;showsearch=0&amp;showinfo=1&amp;iv_load_policy=1&amp;wmode=transparent" type="text/html" width="630"></iframe>


Graciano TorrãoReimplementar o “keyPressEvent” de forma a realizar algum tipo de tratamento às teclas pressionadas (C++\Qt)

Como o Sr. Aurélio está a ficar sem pilhas, deixo aqui o exemplo.

A pergunta era:

“Como posso associar combinações de teclas a certas operações realizadas sobre uma interface construída em C++\Qt?”

O IDE já oferece algumas funções que facilitam esta tarefa, mas um forma muito de abordagem consiste em reimplementar a função:

void QDialog::keyPressEvent(QKeyEvent * e) [virtual protected]

Exemplo:

aurelio

Neste exemplo, pressionar a tecla “A” equivale a pressionar o “botão 01″ da interface.

Da mesma forma, pressionar “ALT+1″ equivale a pressionar o “botão 02″ da interface.

Fazer o download do exemplo


Graciano TorrãoConfigurar o phpMyAdmin no XAMPP

Ao realizar uma instalação do XAMPP, e dependendo dos componentes selecionados, podemos encontrar uma série de obstáculos iniciais, quando apenas pretendemos uma utilização rápida e sem complicações.

Independentemente disso, o XAMPP continua a se uma alternativa rápida e muito mais simples do que instalar tudo manualmente.

No meu caso, apenas selecionei o servidor Apache durante a instalação.

Vou tentar tentar resumir a sequência “ERRO”, “SOLUÇÃO”.

#1 – ERRO: #1045 – Access denied for user ‘root’@’localhost’ (using password: YES

erro01#1 – SOLUÇÃO: fornecer a palavra passe de root do servidor MySql.

Como eu já tinha o servidor MySql instalado, vai ser necessário fornecer a palavra passe de root ao phpMyAdmin.

No painel de controlo do XAMPP, relativamene ao serviço Apache, selecionar o botão “CONFIG” e a opção “phpMyAdmin (config.inc.php)”.

Procurar a linha:

$cfg['Servers'][$i]['password'] = ”;

Inserir a vossa password:

$cfg['Servers'][$i]['password'] = ‘esdas‘;

Agora basta reiniciar o Apache e passar à fase seguinte.

 

#2 – ERRO: Connection for control user as defined in your configuration failed.

pma

#2 – SOLUÇÃO: Crir a base de dados phpmyadmin e o utilizador pma.

Uma vez que já temos acesso aos phpMyAdmin, vamos utilizar esta ferramenta para o resto das configurações.

Colar o conteúdo do ficheiro create_tables.sql ( C:\xampp\phpMyAdmin\examples ) na caixa de comandos SQL.

erro02_scr01

De seguida pressionar “Executar”.

Se repararem, já temos a base de dados phpmyadmin.

Agora é necessário criar o utilizador pma, com privilégios de acesso a esta base de dados:

 

No painel de controlo do XAMPP, relativamene ao serviço Apache, selecionar o botão “CONFIG” e a opção “phpMyAdmin (config.inc.php)”.

Procurar a linha:

$cfg['Servers'][$i]['controlpass'] = ‘123’;

Inserir a vossa password:

$cfg['Servers'][$i]['controlpass'] = ‘123‘;

Agora basta reiniciar o Apache e passar à fase seguinte.

 

#3 – ERRO: #1146 – Table ‘phpmyadmin.pma_table_uiprefs’ doesn’t exist

erro02

#3 – SOLUÇÃO: Usei esta dica ( http://yuvrajingale.wordpress.com… )

Seguindo o mesmo processo, no painel de controlo do XAMPP, relativamene ao serviço Apache, selecionar o botão “CONFIG” e a opção “phpMyAdmin (config.inc.php)”.

Procurar a linha:

$cfg['Servers'][$i]['table_uiprefs'] = ‘pma_table_uiprefs';

Inserir a vossa password:

$cfg['Servers'][$i]['pma__table_uiprefs'] = ‘pma_table_uiprefs';

Agora basta reiniciar o Apache e, em princípio, tudo a funcionar.

 

 


Marcos MaradoBooks and Music in 2013

Another year gone. Just like in years before, here's a recommendation of music and books, from what has been released during the year (in the case of music), and what I've read in 2013 (for books). Note that there are other, great 2013 music releases, that I only got my hands on in 2014, and those aren't on this list. Without further ado:

Books:


* Neal Stephenson - The Mongoliad (Books 2 and 3)
* Iain M. Banks - The Hydrogen Sonata
* Cory Doctorow's fiction - The Rapture of Nerds and Pirate Cinema
* Music - Looking For Europe
* Tech - Videojogos em Portugal

Music:


* Kokori - Release Candid Hate (Vinyl)
* Gvar - Vraii (Cass)
* Charanga - Borda Tu! (CD)
* Dismal - Giostra Di Vapori (CD)
* Mindless Self Indulgence - How I Learned To Stop Giving A Shit And Love Mindless Self Indulgence (CD)

Graciano TorrãoCarregar uma imagem a partir do disco(png) para uma base de dadosMySql utilizando Qt

Título em Inglês: Load image from disk (png) to a MySql database using Qt

Este exemplo surgiu da necessidade de exemplificar uma forma de gravar uma imagem numa base de dados.

Uma aplicação muito simples seria 0 armazenamento das fotografias dos sócios de um determinado clube!

O processo que descrevo é no entanto bem mais versátil, pois com pequenas alterações, podemos armazenar praticamente qualque tipo de ficheiro binário na base de dados. Para o efeito vamos utilizar um campo do tipo BLOB.

Disponibilizo um exemplo de aplicação: https://app.box.com/s/l8d3xdbzafuie8e56f1y

Vejam o vídeo que contém a demonstração.

<iframe allowfullscreen="true" class="youtube-player" frameborder="0" height="385" src="http://www.youtube.com/embed/JmVfkW9PSKw?version=3&amp;rel=1&amp;fs=1&amp;showsearch=0&amp;showinfo=1&amp;iv_load_policy=1&amp;wmode=transparent" type="text/html" width="630"></iframe>

 


Graciano TorrãoComo criar um splash screen em Qt

Este exemplo que publiquei em 2009 está completamente desatualizado ( ver aqui )

Deixo o link para a nova versão: https://app.box.com/s/y07maecs6sh6qg4wco36


Graciano TorrãoDB03 – Exemplos de escrita de uma aplicação para Acesso a Base de Dados

Mais um exemplo, que surge na sequência dos dois anteriormente publicados:

  1. DB01
  2. DB02

Neste caso, acescento uma nova funcionalidade, que consiste na sincronização de uma QTableView com um QDataWidgetMapper, ambos ligados ao mesmo modelo (QSqlRelationalTableModel).

db03_1

db03_2

Ainda falta corrigir alguns bugs, mas aceitam-se reclamações!

Fazer o download do exemplo: db03_v1


ZACHARiASUbuntu 14.04 Alpha | Post Install – part I

buntu1404

First things first: you’ll need to update you’re software sources. Feel free to copy mine, for the time being. Don’t forget to update the mirrors as close to your location as you can.

Now, let’s begin…

Flash, java & git

$ sudo apt-get install openjdk-7-jre icedtea-7-jre-jamvm \
gsfonts gsfonts-x11 flashplugin-installer git git-core

TrueType Fonts

eula

$ sudo apt-get install ttf-mscorefonts-installer

Extra suppport for compressing and decompressing files

archive

$ sudo apt-get install unace rar unrar zip unzip p7zip p7zip-full \
p7zip-rar sharutils uudeview arj cabextract

Multimedia

$ sudo apt-get install libbluray-bdj libmad0 mpeg2dec mpegdemux \
libmpeg3-1 libmpeg2-4 liba52-0.7.4 libquicktime2 libmp4v2-2 faad \
lame flac mpeg3-utils icedax vlc

Now note, that w64codecs and libdvdcss2 where only present on medibuntu repository, which has ceased to exist. So I suggest using debian’s multimedia repo for installing these packages.

Add this line to your souce.list file…

deb http://www.deb-multimedia.org jessie main non-free

…and install the packages

$ sudo apt-get update && sudo apt-get install w64codecs libdvdcss2

You’ll get a warning if you want to install it from untrusted sources, just say yes. after that just remove the above mentioned line from your repos, or jus add a # to the beggining of it.

BTW: DEBIAN <3

Internet stuff
Some p2p goodness and Chrome

chrome
Firstly, the p2p goodies and ftp support

$ sudo apt-get install transmission amule filezilla

Then some Google Chrome

32bit

wget https://dl.google.com/linux/direct/google-chrome-stable_current_i386.deb

64bit

wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb

Go to your download location and simply install it by running

sudo dpkg -i google-chrome-stable_current_i386.deb

or

$ sudo dpkg -i google-chrome-stable_current_amd64.deb


IM Stuff

$ sudo apt-get install pidgin pidgin-data pidgin-themes xchat


Firewall

firewall

A very nimble firewall is gufw, frontend for ufw. Simply install it by:

$ sudo apt-get install gufw

Now, check your state/settings…

$ sudo ufw status verbose

…and add some rules

$ sudo ufw deny 5353/udp && sudo ufw deny 5900/tcp && \
sudo ufw deny 22 && sudo ufw deny 25/tcp \
&& sudo ufw deny 135,139,445/tcp \
&& sudo ufw deny 137,138/udp && sudo ufw deny 110 && sudo ufw deny 2049 \
&& sudo ufw deny 143 && sudo ufw deny 21/tcp && sudo ufw deny ssh

If not enable at this point, please run

$ sudo ufw enable

More info & rules at: www.frozentux.net/documents/iptables-tutorial

Image Stuff (optional in my case)

GIMP + extras

$ sudo apt-get install gimp \
&& sudo apt-get install gimp-plugin-registry gimp-data-extras

Filed under: Linux, Tutorials

ZACHARiASHow to Install darktable | elementaryOS Luna and Ubuntu 12.04 without PPA’s

darktable-logo

darktable is an open source photography workflow application and RAW developer. A virtual lighttable and darkroom for photographers. It manages your digital negatives in a database, lets you view them through a zoomable lighttable and enables you to develop raw images and enhance them.

I don’t really like to install ppa’s to my system. It confuses me by not knowing exactly what my software sources are. So let’s install a kick-ass free software. And opnesource to ^^

1. Add the following lines to the repo list

$ deb http://ppa.launchpad.net/pmjdebruijn/darktable-release/ubuntu precise main

2. Add the repo keys and update them

$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 40C18E9EC07EE05F && sudo apt-get update

3. And install it!

$ sudo apt-get install darktable -y

4. ‘NJOY OPENSOURCE PHOTO EDITING!

darktable

NOTE: If you have any improvements, suggestions or observations to this tutorial, just let me know.

kudos!


Filed under: Linux, Tutorials

Footnotes