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 bvoid 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