quinta-feira, 20 de dezembro de 2012

Manipulação de ficheiros binários


Abertura de ficheiros binários

A abertura é feita de forma semelhante aos ficheiros de texto (no post anterior ), bastando acrescentar a letra ‘b’ ao modo de abertura.

fp = fopen("dados.txt""rb");

Operação de escrita num ficheiro binário (fwrite)

A função fwrite transfere um bloco de dados, com um determinado tamanho em bytes, da memória primária para ao ficheiro.

Protótipo: int fwrite(const void *ptr, int tamanho, int n, FILE *fp)

Onde:
ptr é um apontador para qualquer tipo de dados e irá conter o endereço de memória do bloco de dados que pretendemos escrever no ficheiro;
tamanho em bytes de cada um dos elementos que vamos escrever;
n representa o número de elementos a escrever;
fp indica(aponta) o ficheiro de dados onde pretendemos realizar a operação de escrita.

Manipulação de Ficheiros de texto


Abertura do ficheiro

Esta operação consiste em “dizer” ao programa como aceder ao ficheiro, associando-o a uma variável (fp).

Que mais tarde a variavel (fp) torna-se num apontador, que "aponta" para o ficheiro.

Para poder abri-lo também é necessário indicar o nome do ficheiro (“texto.txt”) e o modo de abertura (“r“).

fp = fopen(“texto.txt”,”r”);



Por defeito a abertura do ficheiro é realizada como se de um ficheiro de texto se tratasse ( ver ficheiros binários ).

A tabela seguinte resume as diferentes formas de abertura de ficheiros de texto em Linguagem C:





Fecho do ficheiro

Esta operação vai eliminar a ligação criada entre o programa e a variável associada ao ficheiro, garantindo que todos os dados são gravados antes de realizada esta operação.

fclose(fp);

domingo, 16 de dezembro de 2012

Ficheiros: modo de abertura

Leitura ao escrita

* r - abre o ficheiro de texto para leitura, se não existir, fopen, (..) devolve NULL

* w - Cria o ficheiro de texto para escrita. Caso já exista , esvazia-o previamente

* a - Abre o ficheiro de texto, se já existe, ou cria um novo ficheiro, se não existe, para escrita a partir  do fim do ficheiro (append)

Manipulação de ficheiros


#include <stdio.h>
#include <stdlib.h>
#include <string.h>

main()
{
FILE *fp1, *fp2;
int contador=0;
char linha[200];
fp1 = fopen("ficheiro1.txt","r");
fp2 = fopen("ficheiro2.txt","w");

while(fgets(linha,200,fp1))
{
contador++;
if(contador%2 == 0)
{
fputs(linha,fp2);
}
}
fclose(fp1);
fclose(fp2);
}


Explicação do código


1º- Definir os apontadores para os ficheiros (fp1 e fp2);

2º- Definir a variável "linha" que vai ser usada para conter o buffer de cada linha do primeiro ficheiro.
Definir um contador, inicializando a zero. Serve para testar se as linhas lidas são pares (quando o contador é um número par) ou se são ímpares;


3º- Abrir os dois ficheiros, um para leitura e outro para escrita:

fp1 = fopen("ficheiro1.txt","r"); // ler no ficheiro


fp2 = fopen("ficheiro2.txt","w"); // escrever no ficheiro


4º- Enquanto ouver linhas para ler, é lida uma linha de cada vez do ficheiro 1

while(fgets(linha,200,fp1))

É incrementado o contador porque foi lida mais uma linha do ficheiro 1.

Se o resto da divisão inteira por 2 for zero, que significa que a linha lida é par, escrevemos essa linha no ficheiro 2


fputs(linha,fp2);

5º- Fechar os ficheiros com o fclose.

domingo, 2 de dezembro de 2012

Funções Recursivas


O que é?

É uma função que invoca a si própria.


Isto é uma função pode chamar a si própria.
O número de vezes  que uma função pode ser chamada  recursivamente  é limitado ao tamanho da pilha (stack).




http://www.youtube.com/watch?v=JhpD4pQmtb0

terça-feira, 6 de novembro de 2012

Apontadores


Código

#include <stdio.h>
#include <stdlib.h>



void suap_ints(int a, int b);
void suap_prints(int *pa, int *pb);
int main()
{
    int x=18, y=97;
    printf("x = %d y=%d \n",x,y);
    //suap_ints(x,y);
    suap_prints(&x,&y);
    printf(" x=%d, y=%d \n",x,y);
    return 0;
}

//passar por valor

void suap_ints(int a, int b)
{
 int k=a;
 a=b;
 b=k;
}





//passar por referencia
 void suap_prints(int *pa, int *pb)
 {
     int k=*pa;
     *pa=*pb;
     *pb=k;
 }






sexta-feira, 12 de outubro de 2012

Projecto: Descobrir Palavras


O Projecto consiste em desenvolver um programa que implemente uma variante do  jogo/passatempo tradicional de descobrir palavras numa matriz aleatória de letras. Dada uma matriz de caracteres fornecida por um utilizador ou gerada de forma aleatória, pretende-se encontrar determinadas palavras formadas por caracteres existentes na
matriz.

segunda-feira, 24 de setembro de 2012

Escalares, Vectores e operações vectoriais ( Física)

Escalares : basta um valor numérico para caracterizar esta grandeza

Vectoriais: é necessário um valor numérico e orientação

Aqui deixo-vos um site que pode-vos ser utíl no estudo desta matéria que diz respeito á caracterização de um vector

http://www.filipe-teixeira.com/vectores-em-fisica.html

Encontrei algures aqui na internet um ficheiro que vos vou deixar em anexo, com exercicios e com a respectiva explicação. Dei uma "vista de olhos" e acho bastante completo.




quarta-feira, 4 de julho de 2012

X10 mini pro






GERAL2G RedeGSM 850/900/1800/1900
Rede 3GHSDPA 900/2100
HSDPA 850/1900/2100
Anunciado2010, Fevereiro
EstadoDisponível. Lançado em 2010, junho
CORPODimensões90 x 52 x 17 mm
Peso120 g
TecladoQWERTY
EXIBIRTipoTFT touchscreen capacitivo, 16M cores (65K eficaz)
Tamanho240 x 320 pixels, 2,55 polegadas (~ 157 ppi densidade de pixels)
ProteçãoResistente a riscos de vidro
- Timescape UI
PARECERTipos de alertaVibração, toques MP3
Alto-falanteSim
3.5mmSim
MEMÓRIASlot para cartãomicroSD de até 16GB, 2GB incluído
Interno128 MB
DADOSGPRSAté 85,6 kbps
BORDAAté 236,8 kbps
AcelerarHSDPA, 7.2 Mbps; HSUPA, 2 Mbps
WLANWi-Fi 802.11 b / g, Wi-Fi hotspot (v2.2 ou superior)
BluetoothSim, v2.1 com A2DP
USBSim, microUSB v2.0
CÂMERAPrimário5 MP, 2592х1944 pixels, autofoco, flash LED, 
CaracterísticasGeo-tagging
VídeoSim, VGA a 30fps, luz de vídeo
SecundárioNão
CARACTERÍSTICASOSAndroid OS, v1.6 (Donut), expansível até v2.1
ChipsetQualcomm MSM7227
CPU600 MHz ARM 11
GPUAdreno 200
SensoresAcelerômetro, compasso de proximidade,
MensagensSMS (ver roscados), MMS, Email, Push e-mail, IM
NavegadorHTML
RádioRádio FM estéreo com RDS
GPSSim, com suporte A-GPS
JavaSim, através do Java MIDP emulador
CoresPreto, vermelho, rosa
- MP4/H.263/H.264/WMV
- MP3/eAAC + / WMA / WAV
- Reconhecimento de música TrackID
- Google Search, Maps, Gmail,
YouTube, Calendar, Google Talk
- Visualizador de documentos
- Memorando de voz
- Entrada de texto preditiva
BATERIAStandard bateria, Li-Po 930 mAh
Stand-byAté 285 h (2G) / Até 360 h (3G)
Tempo de conversaçãoAté 4 h (2G) / Até 3 h 30 min (3G)
VÁRIOSSAR UE1,61 W / kg (cabeça)
Preço grupo
TESTESAlto-falanteVoz 66dB / Ruído 66dB / 75dB Anel
A qualidade do áudioNoise-86.8dB / Crosstalk-83.6dB
CâmeraFoto