Escolar Documentos
Profissional Documentos
Cultura Documentos
Código
Código Fonte
executável
Outras
Código bibliotecas
Compilador
assembly
Processo de Compilação
Pré-Processador Compilador
Processo de Compilação
• O Pré-Processador executa as diretivas de compilação
(marcadas com #)
• #include
• #define
• E outros...
• O compilador transforma o código fonte C em instruções
assembly e código objeto
• Assembly são instruções que podem ser entendidas pelo computador, porém
ainda estão em formato humanamente compreensíveis
• Código objeto já está próximo de um código de máquina, mas é apenas parte do
programa, ainda faltam bibliotecas e algumas transformações
• O linker faz a união entre todas as partes do programa
• Ele reúne todos os pedaços, que estão em código objeto, e gera um único
executável (O Programa), que agora possui código de máquina e pode ser
executado
Sistema Operacional e Executável
• O Sistema Operacional executa o programa
• O programa pode retornar um valor numérico
indicando sucesso ou falha.
– O return dentro da função ‘main’ faz esse retorno
– Em geral não utilizamos esse retorno na disciplina
– É utilizado quando um programa A chama outro B
para executar um trabalho
• O programa A precisa saber se B executou com sucesso.
• Nesse caso, A utiliza o retorno de B.
Primeiro Programa
• A estrutura mínima de um programa em C
exige ao menos a função main
– int main(){ return 0; }
– É o inicio do programa
Bibliotecas
Nome da Função
Função
Uma String
Uma chamada de
função
O bloco de comandos
• Em C, agrupamos uma sequência de comandos em blocos
– Nenhum comando pode estar fora de um bloco
– Um bloco é delimitado por ‘{‘ e ‘}’
– No exemplo a seguir, todos os comandos estão dentro do bloco
da função main
– Mais tarde, veremos que muitos comandos possuem blocos
atrelados
Treinaremos aqui
Comando de escrita printf
• “printf()” é a função para escrever
– Colocamos o que escrever entre aspas e dentro dos
parênteses (parâmetros da função)
– O texto entre aspas chamaremos de “string” ou
cadeia de caracteres.
printf(“Um teste”)
• Podemos usar comandos especiais:
printf(“Um teste\n”);
printf(“Outro teste\n”);
\n para pular linha
\t: tab \a: bip
Comando de escrita printf
• O printf é usado para imprimir valores de variáveis
que veremos mais tarde
– Agora vamos ver apenas o tipo int para os slides seguintes.
– Colocamos %d no lugar que queremos substituir pelo valor
Saída do
programa
Comando de escrita printf
• Esses são alguns tipos que podem ser
impressos com printf
– https://cplusplus.com/reference/cstdio/printf/
Exemplo Descrição
printf(“%d”, a) Imprimir inteiros
printf(“%f”,a) Imprimir número real
printf(“%.2f”,a) Imprime com 2 casas decimais
printf(“%s”, tex) Imprime texto (char nome[50])
printf(“%c”, a) Imprime um caracter
Comando de leitura scanf
• A função scanf é usada para ler valores do usuário:
• Utiliza os mesmos formatos do printf
Comando de leitura scanf
Atribuições
Aritmética
• Podemos fazer qualquer operação conhecida da
matemática.
Expressões Relacionais
Expressões Relacionais
• Para tomar decisões, os programas de computador
podem resolver relações através do uso de
operadores relacionais
• A expressões relacionais serão utilizadas em
comandos específicos da linguagem C
posteriormente nestes slides
Operador Descrição
> Maior que
< Menor que
>= Maior ou igual
<= Menor ou igual
== Igual
!= Diferente
Expressões Relacionais
• A resolução de um operador relacional resulta
num valor lógico Verdadeiro (1 ou V) ou Falso
(0 ou F)
• Exemplos:
–5 > 9 = F
– 8 < 15 = V
– 10 == 10 = V
– 10 != 10 = F
Expressões Relacionais
• Podem envolver expressões aritméticas
• Elas são resolvidas primeiro
Símbolo Descrição
&& E (and)
|| OU (or)
! NÃO (not)
Tabela Verdade dos Operadores Lógicos
A B A&&B A B A||B
F F F F F F
F V F F V V
V F F V F V
V V V V V V
A !A
0 1
1 0
Exemplos
5 > 2 && 1 < 20
Exemplos
5 > 2 && 1 < 20
V && V
V
3 == 5 || !(5 > 2)
F || !V
F || F
F
Expressões Lógicas - Exercício
Senão
Bloco Falso
Repetição – While (Enquanto)
• O “while” repete um bloco de comandos
enquanto uma expressão for verdadeira
Expressão lógica
Incrementa a contagem
Repetição – For (Para)
• O “for” repete um bloco enquanto uma
expressão é verdadeira. Ele também inicializa
e incrementa a variável automaticamente.
Imprimindo a posição 0
Vetores
• Mas a real vantagem está no uso com repetições:
Note que mesmo alterando para 100,
1000 ou mais posições, o mesmo
código ainda funciona!
Atribuição de valor
aleatório a cada posição
(apenas para exemplo)
Divisão por 10
Matrizes
• Matrizes em C são vetores de vetores
computador
Atribui o
• Podemos declara um tipo endereço (&) de
“a” para “p”
especial de variável
chamada “ponteiro”. Ela
pode armazenar o endereço Imprime o valor
de memória de outra
que está no local
apontado por p (*)
variável
Ponteiros
Variável ponteiro
120 121 122 310 armazenando o
10 ... 120 endereço de outra
variável
Segmento de memória
p = 120
*p = 10
Ponteiros
• Podemos ainda alterar o valor de ‘a’ apenas
através do ponteiro:
*p = 12;
p = &a;
p recebe o endereço de a
&a significa endereço de a
Funções
Funções
• Funções são como subprogramas
– Elas podem receber entradas e retornar uma
saída
• Entradas são os parâmetros da função
• O retorno da função é a saída.
• As vezes, as funções podem alterar os
parâmetros para usar como saída, para ter
mais flexibilidade com dados de saída
Exemplo de função
Tipo do
Retorno
O retorno é
atribuído para f
Função com mais de um parâmetro
Funções – Passagem de Parâmetros por Referência
• Quando passamos parâmetros para uma função
dessa forma: minhaFuncao(a), estamos passando
uma cópia do valor de ‘a’.
– Como a função lida com uma cópia, não pode alterar
o real valor de a.
• A passagem de parâmetros por referência
significa enviar o endereço de ‘a’
– Assim a função tem a possibilidade de alterar o valor
de ‘a’, o qual foi declarado no escopo de outra função
• Pode ser usado para que a função tenha mais do
que apenas uma variável de retorno
Funções – Passagem de Parâmetros por Referência
Parâmetros por
referência possuem *
Usamos *
para se
referir ao
local
apontado
pelo ponteiro
Usamos &
para pegar o
endereço da
variável, e
não o seu
valor
Passagem de Parâmetros - Vetores
• Para passar um vetor por parâmetro, somente
o endereço do mesmo é enviado
120
11
Envia o
endereço 120
Passagem de Parâmetros - Vetores
• Para enviar um vetor para outra função, basta
usar somente o nome do vetor.
– A linguagem já considera ‘v’ como um ponteiro
Outra declaração
int v[] equivalente
As vezes, precisa
enviar quantas
posições tem ‘v’
Escopo de Variáveis
• Escopo local
– Só existe localmente – Variáveis dentro de uma
função somente podem ser utilizadas dentro dela
• Escopo local
– Variáveis declaradas fora de uma função. Podem
ser acessadas de dentro de qualquer função.
Escopo de Variáveis
CADEIRA
110.90
23
Exemplo