Programação
Cheatsheet
Variáveis
Operadores
Operador | Descrição | Exemplo | Operador | Descrição | Exemplo |
---|---|---|---|---|---|
+ | Soma | a + b | == | Igual | a == b |
- | Subtração | a - b | != | Diferente | a != b |
* | Multiplicação | a * b | > | Maior | a > b |
/ | Divisão | a / b | < | Menor | a < b |
% | Resto da divisão | a % b | >= | Maior ou igual | a >= b |
++ | Incremento | a++ | && | E | a && b |
– | Decremento | a– | || | OU | a || b |
= | Atribuição | a = b | ! | NÃO | !a |
+= | Atribuição com soma | a += b | |||
-= | Atribuição com subtração | a -= b | |||
*= | Atribuição com multiplicação | a *= b | |||
/= | Atribuição com divisão | a /= b |
I/O Formatado
scanf("%descritor", &variavel); // lê um dado do tipo tipo_dado e armazena em variavel
printf("%descritor", variavel); // escreve um dado do tipo tipo_dado e armazena em variavel
Descritor | Tipo de dado |
---|---|
%d | int |
%f | float |
%c | char |
%s | string |
%lf | double |
%u | unsigned int |
%ld | long int |
%lu | unsigned long int |
I/O Não Formatado
Estruturas de controlo
if
switch
Ciclos
while (condição) { // enquanto condição for verdadeira // bloco de código } do { // executa o bloco de código pelo menos uma vez // bloco de código } while (condição); // enquanto condição for verdadeira for (inicialização; condição; incremento) { // bloco de código } // inicialização é executada uma vez // condição é testada antes de cada iteração // pós-instrução é executada no final de cada iteração
Funções
Declaração de função
Chamada de função
Vetores
Declaração de vetor
Acesso a posição do vetor
Vetores e funções
Vetores multidimensionais
int matriz[10][10]; // declara matriz de inteiros com 10 linhas e 10 colunas
matriz[0][0] = 1; // acessa a primeira linha e primeira coluna da matriz e atribui 1
int b = matriz[0][0]; // acessa a primeira linha e primeira coluna da matriz e atribui a b
void funcao(int matriz[][10][10]) { // recebe a matriz como parâmetro
// obrigatório indicar o tamanho de todas as dimensões menos a primeira
// alterações à matriz são persistentes
}
// VLAs (Variable Length Arrays)
void funcao(int x, int y, int z, int matriz[x][y][z]) {
// alterações à matriz são persistentes
}
Strings
Declaração de string
string.h
Função | Descrição |
---|---|
strlen(string) | retorna o tamanho da string |
strcpy(string1, string2) | copia string2 para string1 |
strcat(string1, string2) | concatena string2 a string1 |
strcmp(string1, string2) | compara string1 com string2, devolve 0 se forem iguais, < 0 se string1 < string2 e > 0 se string1 > string2 |
Apontadores
Alocação dinâmica de memória
Estruturas
Declaração de estrutura
Acesso a campo da estrutura
Estruturas e apontadores
typedef
Ficheiros
Abertura e fecho de ficheiro
Modos de abertura de ficheiro
- Para ficheiros binários, acrescentar b ao modo de abertura, e.g. “rb”, “wb”, “ab”, “rb+”, “wb+”, “ab+”.
Modo | Leitura | Escrita | Criação | Posicionamento |
---|---|---|---|---|
r | Sim | Não | Não | Início |
w | Não | Sim | Sim | Início |
a | Não | Sim | Sim | Fim |
r+ | Sim | Sim | Não | Início |
w+ | Sim | Sim | Sim | Início |
a+ | Sim | Sim | Sim | Fim |
Leitura e escrita formatada ```c int a = 10; float b = 3.14; char c = ‘a’; // escreve no ficheiro os valores de a, b e c fprintf(ficheiro, “%d %f %c”, a, b, c); // lê do ficheiro os valores de a, b e c // devolve EOF se apanhar o fim do ficheiro fscanf(ficheiro, “%d %f %c”, &a, &b, &c);
char linha[100]; // lê uma linha do ficheiro (ou um máximo de 100 char) e guarda em linha // devolve NULL se apanhar o fim do ficheiro fgets(linha, 100, ficheiro);
fgetc(ficheiro); // lê um char do ficheiro fputc(‘a’, ficheiro); // escreve um char no ficheiro fputs(“ola”, ficheiro); // escreve uma string no ficheiro ```
Leitura e escrita ficheiros binários
int a = 10; int n_lidos, n_escritos; FILE *ficheiro = fopen("nome_ficheiro", "wb"); n_escritos=fwrite(&a, sizeof(int), 1, ficheiro); // escreve no ficheiro o valor de a fclose(ficheiro); ficheiro = fopen("nome_ficheiro", "rb"); n_lidos=fread(&a, sizeof(int), 1, ficheiro); // lê do ficheiro o valor de a fclose(ficheiro);
Posicionamento no ficheiro
// posiciona o cursor no ficheiro na posição 10 fseek(ficheiro, 10, SEEK_SET); // posiciona o cursor no ficheiro 10 posições à frente da posição atual fseek(ficheiro, 10, SEEK_CUR); // posiciona o cursor no ficheiro 10 posições antes do fim do ficheiro fseek(ficheiro, -10, SEEK_END); ftell(ficheiro); // devolve a posição atual do cursor no ficheiro rewind(ficheiro); // posiciona o cursor no início do ficheiro