Estruturas Básicas da Linguagem C Flashcards
Linguagem de alto Nível
A linguagem interna do computador é
- conhecida como “linguagem de máquina”, e
- muito complicada de usar na implementação de programas
Uma linguagem de alto nível
- está mais próxima da linguagem natural, e
- é muito fácil de utilizar na implementação de programas
Tradutores
Um programa numa linguagem de alto nível para poder ser “executado” (para
funcionar) precisa de ser traduzido para linguagem de máquina
Existem dois tipos de programas tradutores:
- interpretadores
- compiladores
Interpretador
As instruções de um programa escrito em linguagem de alto nível (código-fonte)
são traduzidas e executadas uma e uma,
- cada vez que o programa é executado é necessário fazer a tradução,
pois não é criada uma versão executável (ficheiro em linguagem de máquina)
Exemplos de linguagens que usam interpretadores:
- LISP
- MatLab
- PHP
- JavaScript
Compilador
Todas as instruções de um programa escrito em linguagem de alto nível são
traduzidas de uma só vez
- ou seja, o compilador cria uma versão executável do programa, bastando compilar o
código-fonte uma única vez
Exemplos de linguagens que usam compiladores:
- C
- Pascal
- Java
- C++
- C#
Os compiladores analisam o código-fonte em três fases:
- análise léxica
- análise sintática
- análise semântica
Análise léxica
Separação do código-fonte (texto) em palavras (os elementos/tokens léxicos)
- lê o texto caráter a caráter, formando palavras (tokens) e identificando cada uma
delas segundo as suas regras de construção (sintaxe)
- se as regras de alguns tokens são violadas, são identificados erros léxicos
Despreza os espaços em branco, as formatações e os comentários
Análise sintática
Verificação sintática/gramatical de construção das frases (cadeias de tokens) que
compõem um texto, em que as frases são as instruções e o texto é o programa
- verifica se a estrutura das frases seguem as regras da gramática formal da
linguagem de programação (cada frase tem as suas regras de construção)
- ou seja, verifica se existem erros sintáticos na sintaxe do programa
Análise semântica
Verificação de outras regras, associadas ao significado de cada instrução e do programa
Nomes ou identificadores
As regras de formação de nomes/identificadores são as seguintes
- diferenciação gráfica (maiúsculas e minúsculas)
- tamanho variável (ANSI C limitado a 31 caracteres)
- validade (caráter inicial é: a…z, A…Z)
- nomes válidos: j, j5, mat3
- nomes inválidos: 5j, j5%, const
- O nome de uma variável,
- deve começar sempre com uma letra,
- pode ser seguida por letras, digitos e alguns outros carateres (underscore: _)
Diretivas para o compilador
Permite que o programador modifique a compilação
- O pré-processador é um programa que examina e modifica o código-fonte antes
da compilação
- As diretivas são os comandos utilizados pelo pré-processador
- Estes comandos estão disponíveis no código-fonte, mas não no código compilado
- As diretivas iniciam-se com #
include
Principal diretiva, pois é usado em praticamente todos os programas em C
- Permite inserir um arquivo (biblioteca de funções) qualquer no código-fonte
- A diretiva include é substituída pelo conteúdo do arquivo
- Usa-se <> para indicar que o arquivo é procurado apenas na pasta include
(pasta criada automaticamente aquando da instalação do compilador)
- Usa-se “” para indicar que o arquivo é procurado na pasta atual, e se não for
encontrado é procurado na pasta include
- As bibliotecas mais usadas são:
#include <stdio.h>
- usada em praticamente todos os programas
- inclui as funções de entrada e saída (input e output) de dados: scanf, printf, ...
#include <math.h>
- inclui as funções matemáticas: sqrt, pow, sin, cos, tan, log, ...</math.h></stdio.h>
define
Permite definir constantes sem consumir memória durante a execução
main
A função principal (programa propriamente dito)
-Formado por:
- Declarações
- Instruções
- As Declarações devem aparecer antes das Instruções
- As declarações mais comuns são das variáveis que o programa pode utilizar
(indicadas nas Instruções)
- Na declaração de uma variável, o nome desta segue a sintaxe de nomes ou
identificadores (ver antes)
- As declarações e as instruções terminam sempre com ponto e vírgula (;)
- A execução do programa começa na primeira instrução e segue até à última,
sequencialmente
Tipos de dados simples
*Inteiros
*Reais
*Caracteres
Inteiros
A representação de um número inteiro, em formato decimal, é composta por
duas partes (pela ordem apresentada):
- um sinal (+, -), sendo que o sinal + (positivo) pode ser omitido,
- uma sequência de dígitos
- Exemplos: 2563, -753, +35
Inteiros - declaração de variáveis
Sintaxe para declarar variáveis do tipo inteiro (todas as variáveis devem estar
identificadas)
- Sintaxe para declarar apenas uma variável do tipo inteiro
int variável; (; obrigatório no fim da declaração)
- Sintaxe para declarar duas variáveis do tipo inteiro
int variável1, variável2; (; obrigatório no fim da declaração)
Reais
Um número real pode ser representado usando dois formatos:
- com ponto fixo (ex: 12.34)
- com ponto flutuante (ex: 0.4273x10-8)
- Na representação com ponto fixo, um número é composta por 2 partes:
- uma parte inteira (número inteiro com ou sem sinal)
- uma parte fracionária (ponto decimal seguido por inteiro sem sinal)
- Na representação em formato com ponto flutuante, a notação é semelhante à
notação científica, que é composta por 3 partes:
- um número real em formato de ponto fixo ou um inteiro, com ou sem sinal,
- o caráter ‘e’ ou ‘E’
- um número inteiro com ou sem sinal
- Exemplos:
- formato com ponto fixo: 12.764 (12 e 0.764), -542.78 (-542 e 0.78)
- com expoente: 12.78E-6, -34E10
Reais - declaração de variáveis
- Sintaxe para declarar variáveis do tipo real (todas as variáveis devem estar
identificadas) - Sintaxe para declarar apenas uma variável do tipo real
float variável; (; obrigatório no fim da declaração) - Sintaxe para declarar duas variáveis do tipo real
float variável1, variável2; (; obrigatório no fim da declaração) - …
- Exemplos:
float x;
float X, xyz, ponto, soma; - Uma variável do tipo real ocupa 4 bytes (32 bits) na memória; assim,
- maior número real (valor absoluto): 3.40 x 10^38
- menor número real (valor absoluto): 1.18 x 10^-38
Caracteres
- Um caráter é representado entre plicas (‘)
- Exemplos:
- ‘a’
- ‘A’
- ‘x’
- ‘n’
- Note-se que existe diferença entre letras maiúsculas e minúsculas:
‘a’ e ‘A’ são diferentes (carateres diferentes) - Alguns carateres especiais:
- \a (sinal sonoro - bell)
- \b (recua uma posição – backspace)
- \n (nova linha – new line)
- \t (tabulação - tab)
Carateres - declaração de variáveis
- Sintaxe para declarar variáveis do tipo caráter (todas as variáveis devem estar
identificadas) - Sintaxe para declarar apenas uma variável do tipo caráter
char variável1; (; obrigatório no fim da declaração) - Sintaxe para declarar duas variáveis do tipo caráter
char variável1, variável2; (; obrigatório no fim da declaração) - …
- Exemplos:
char c;
char a, ch;
char resposta, opcao, marca, p; - Um caráter ocupa 1 byte (8 bits) na memória
Expressões aritméticas
Uma expressão aritmética contém
- operadores aritméticos (+, -, , /, %)
- valores numéricos (inteiros e reais)
- variáveis do tipo numérico com valores
- funções matemáticas predefinidas
O computador calcula o valor de uma expressão segundo as seguintes regras:
- se contiver apenas valores inteiros o resultado é um valor inteiro
- se contiver pelo menos um valor real, o resultado é um valor real
- os operadores (, / e %) tem maior prioridade do que (+, -)
- os cálculos são efetuados da esquerda para à direita, quando os operadores têm a
mesma prioridade
- as operações que estão entre parênteses são efetuadas em primeiro
Operadores relacionais
Os operadores relacionais permitam
- comparar valores (ou expressões) dos tipos:
- inteiro,
- real, ou
- caráter
- devolvendo como resultado:
- verdadeiro (true)
- falso (false)
Os operadores relacionais têm menos prioridade do que os aritméticos
- Os valores verdadeiro e falso são chamados valores lógicos, que não existem na
linguagem C:
- o valor 1 equivale ao verdadeiro
- o valor 0 equivale ao falso
Operadores relacionais - símbolos
== igual
> maior
>= maior ou igual
< menor
<= menor ou igual
!= diferente
Operadores lógicos
Os operadores lógicos
- permitem comparar expressões que tenham valores lógicos,
- devolvendo também um valor lógico: verdadeiro (true) ou falso (false)
Os operadores lógicos são os operadores com menos prioridade entre todos os
operadores
Operadores lógicos - símbolos
&& e (and)
|| ou (or)
! não (not)