Medidor de Temperaturas – Abordagem em C++ segundo o paradigma ADT
Nesta semana, desde Segunda-Feira, 8 de Dezembro, ate Sexta-Feira, dia 12, realizamos uma ficha de trabalho, que consistia em elaborar um objecto segundo o paradigma de programação ADT.
A minha opção foi realizar um simples Medidor de Temperaturas. Este programa pode ser simples, mas contem todo o que precisamos para perceber o básico deste paradigma, contudo prometo realizar outros objectos, mais complexos, e devidamente publica-los aqui no meu blogue.
O meu Medidor de Temperaturas, permite medir a temperatura numa cidade, estando esta limitada a um intervalo entre um valor mínimo e máximo.

As opções deste Medidor de Temperaturas são:
- botão “+” para subir a temperatura;
- botão “-” para baixar a temperatura.
Deixo aqui todo o código para realizar o programa igual ao meu:
Medidor.h
#ifndef MEDIDOR_H
#define MEDIDOR_H
class Medidor{
public:
Medidor();
void BotaoMais();
void BotaoMenos();
void calibrar(int inicial, int min, int max);
int ObterTemperatura();
private:
int valor;
int tmax, tmin;
};
#endif
Medidor.cpp
#include "Medidor.h"
Medidor::Medidor(){
valor= 0;
tmax = 0;
tmin = 0;
}
void Medidor::BotaoMais(){
if(valor<tmax)
valor++;
}
void Medidor::BotaoMenos(){
if(valor>tmin)
valor--;
}
int Medidor::ObterTemperatura(){
return valor;
}
void Medidor::calibrar(int inicial, int min, int max){
tmin = min;
valor = inicial;
tmax = max;
}
main.cpp
#include <iostream>
#include "Medidor.h"
using namespace std;
int main(){
Medidor porto, lisboa, viladoconde;
porto.calibrar(0, -10, 50);
cout << "Temperatura no porto " << porto.ObterTemperatura() << endl;
porto.BotaoMais();
cout << "Temperatura no Porto " << porto.ObterTemperatura() << endl;
porto.BotaoMenos();
porto.BotaoMenos();
porto.BotaoMenos();
porto.BotaoMenos();
cout << "Temperatura no Porto " << porto.ObterTemperatura() << endl;
lisboa.calibrar(0, -5, 55);
cout << "Temperatura em Lisboa " << lisboa.ObterTemperatura() << endl;
lisboa.BotaoMais();
cout << "Temperatura em Lisboa " << lisboa.ObterTemperatura() << endl;
lisboa.BotaoMenos();
lisboa.BotaoMenos();
lisboa.BotaoMenos();
lisboa.BotaoMenos();
cout << "Temperatura em Lisboa " << lisboa.ObterTemperatura() << endl;
viladoconde.calibrar(0, -4, 35);
cout << "Temperatura em Vila do Conde " << viladoconde.ObterTemperatura() << endl;
viladoconde.BotaoMais();
cout << "Temperatura em Vila do Conde " << viladoconde.ObterTemperatura() << endl;
viladoconde.BotaoMenos();
viladoconde.BotaoMenos();
viladoconde.BotaoMenos();
viladoconde.BotaoMenos();
cout << "Temperatura em Vila do Conde " << viladoconde.ObterTemperatura() << endl;
}
Avaliação ao Módulo 8
No dia 11 deste mês, Novembro, eu e os meus colegas realizamos uma Prova Pratica, ou Teste, onde nos confrontaram com 1 pergunta teórica e 2 praticas. A teórica tinha haver com a Alocação dinâmica de memória em C++. Onde nos aparecia a seguinte imagem , mas para completarmos os nomes das respectivas secções.
Nas perguntas praticas, uma delas tinha-mos que fazer um programa que permitia ler dois números inteiros e indicar qual deles era o maior. As variáveis que armazenam os dois inteiros deviam ser geridas de uma forma dinâmica, mediante a utilização dos operadores New e Delete.
Na ultima era para realizar um programa em QT, que apresenta-se o seguinte esquema.
Modulo 8 – Introdução a Programação em Ambiente Gráfico
Neste modulo, começa-mos por realizar um trabalho sobre Sistemas Operativos gráficos e não gráficos, com o intuito de vermos as diferenças entre a parte gráfica e a parte a base de linha de comandos. Logo após esse nosso trabalho, realizamos uns programas para fazer-mos uma revisão ao C++, porque já estava a ficar esquecido. Depois disso realiza-mos uma ficha de trabalho sobre Gestão estática/dinâmica da memória, onde aprendemos o NEW e o DELETE.
Agora e que começamos a parte gráfica, ou seja, fizemos uma ficha de trabalho para começarmos a fazer uns programas em QT, que e o software em uso.
Módulo 7 – Manipulação de Ficheiros
Este Módulo 7, o objectivo era a Manipulação de Ficheiros. No inicio estudamos os de Texto e agora introduzimos os Ficheiros Binários.
Neste tipo de ficheiros aprendemos a guardar texto em ficheiros para isso recorremos a funções como: no inicio fputc, que escreve um carácter num ficheiro de texto, o fgetc, que lê um carácter de um ficheiro, depois começamos a usar o fprintf e o fscanf, que fazem a função de escrita e leitura, respectivamente, as strings. Não esquecendo ainda as funções mais importantes, que são elas o fopen e o fclose.
Exemplo de programa:
#include
int main(int argc, char *argv[]){ /*esta linha passa na linha de comandos o nome de um ficheiro*/
FILE *fp; /*declarar o apontador*/
char nome[20];
int r;
printf("deseja ler -1 \n");
printf("deseja escrevar -2 \n");
scanf("%d",&r);
if(r==2){
fp=fopen(argv[1],"w");
printf("Escreva o seu nome: ");
scanf("%s",nome);
fprintf(fp,"%s\n",nome); /*Escreve dentro do ficheiro*/
fclose(fp);
}
else{
fp=fopen(argv[1],"r"); /*Função para abrir o ficheiro em modo de leitura*/
while(fscanf(fp,"%s\n",nome)!=EOF) /*lê o ficheiro ate ao final*/
printf("Nome: %s\n",nome);
fclose(fp); /*Função para fechar o ficheiro*/
}
return 0;
}
Os ficheiros binários, em relação aos de texto tem mais vantagens, porque enquanto que nos ficheiros de texto, nos escrevemos apenas texto e esse texto termina no final da linha, ou seja, o “\n”.
Nos binários o a
cesso e feito directamente, o que traz vantagens na sua utilização. As aplicações que utilizam este tipo de ficheiro, o bi
nário, que quase sempre usam os dados do ficheiro na memoria, realizam a tarefa, ou processo, e voltam a transferir esses dados para a mesma posição no ficheiro.
Para mais informação, clique em baixo:
#include
int main(int argc, char *argv[]){
int valores[5]={7, 3, 8, 1, 2};
FILE *fp;
if ((fp=fopen(argv[1], "wb"))==NULL || argc != 2){
printf("ERRO!\nModo de utilização: %s nome_ficheiro_dados\n", argv[0]);
return 1;
}
fwrite(valores, sizeof(int), 5, fp);
fclose(fp);
return 0;
}
Teste Diagonóstico
Este ano mal chegamos a psi, a primeira coisa que fizemos foi um teste diagnostico com 6 programas e disponibilizo online para quem quiser ver os programas, download .
Apontadores o que são??
Apontadores são variáveis que contêm um endereço de variáveis que nós queremos representar. Exemplo: quando temos 2 variáveis declaradas (A e B), num programa, podemos não querer usar essas variáveis e usamos os chamados apontadores, que podem ser *Ptr_a=&A (este apontador está a apontar para a variável A) e *Ptr_a=&B (este apontador está a apontar para a variável B). Assim, em vez de usarmos as variáveis A ou B para ler, usamos *Ptr_a ou *Ptr_b…..
Nota:
-
um apontador tem que ter antes da variável um “*”;
-
para declarar para onde está a apontar devemos usar “&”.
Para fazer download do código-fonte da imagem abaixo, basta clicar AQUI::…
E cá vai mais um screenshot do meu programa:
Jogo do galo
Neste momento, estou a criar o jogo do galo, mas para quem pensa que é fácil, engana-se! O meu jogo tem funções de novo jogo, Chat e pontuação. Posteriormente vou desenvolver mais funções. A criação do jogo foi a maior dificuldade que tive até agora. Não consigo eliminar os cheaters. O chat funciona por IP’s e não consigo perguntar o IP para onde quero enviar as mensagens, tenho que ir ao código e alterar o IP…
O resto ainda não fiz, mas prometo postar no meu blog o desenvolvimento do programa…
Tux
O Tux é a mascote do sistema operativo Linux. Foi criado em 1996 num concurso de logotipos para Linux. O logotipo vencedor foi criado por Larry Ewing usando o GIMP (um pacote de software livre de edição gráfica).
O Tux tornou-se num ícone para a comunidade Linux e Open Source, com um grupo de utilizadores de linux britânico adoptando um pinguim no Jardim Zoológico de Bristol.
Muitos dizem que o nome deveria ser Torvalds Unix, um nome sugerido por James Hughes, em vez da explicação que os pinguins aparentam vestir um smoking.
para quem quer mais informação visitar o site :
O Porque do Blog?
Este blog foi feito exclusivamente para a disciplina de PSI. “Com o intuito de elaborar um portefolio online, ou seja, um e-portefolio.” By DB.





