Professor: Gabriel Soares Baptista
Embora de alto nível, permite acesso direto à memória e ao microprocessador, unindo abstração e controle de hardware.
Base para C++, Java, C#, PHP, entre outras.
A lógica de estruturas de controle (como o for) é herdada por linguagens modernas.
\\ c
for (int i = 0; i <= 10; i++)
{
printf("%d\n", i);
}
\\ java
for (int i = 0; i <= 10; i++)
{
System.out.println(i);
}
\\ perl
for (my $i = 0; $i <= 10; $i++)
{
print "$i\n";
}
\\ php
for ($i = 0; $i <= 10; $i++)
{
echo $i . PHP_EOL;
}
A maioria das linguagens modernas utiliza chaves { } para delimitar blocos e ponto e vírgula ; para encerrar instruções.
1. A linguagem C é classificada como uma linguagem de alto nível, mas possui características singulares. Assinale a alternativa correta:
Utilizaremos o Code::Blocks.
Prefira versões com "mingw-setup" para garantir que as ferramentas de compilação sejam instaladas automaticamente.




O Code::Blocks gera um esqueleto básico (main.c).

Ferramentas de Build:
Ctrl+Shift+F9): Traduz para arquivo objeto.Ctrl+F9): Compila e Linka (gera executável).F9): Gera executável e roda.Ferramenta para examinar o código em busca de erros lógicos (bugs).

Controles de Depuração:
F8): Inicia até o primeiro breakpoint.F7): Executa linha a linha.Shift+F7): Entra no código de uma função.Shift+Ctrl+F7): Sai da função atual.

#include <stdio.h>
#include <stdlib.h>
int main(){
printf("Hello World \n");
system("pause");
return 0;
}

#include): Importa funções prontas (stdio.h para I/O, stdlib.h para sistema).main(): Ponto de início da execução. Obrigatório.{ }: Delimitam início e fim de instruções.printf(): Exibe texto na tela.system("pause"): Pausa a execução para visualização (Windows).return 0;: Sinaliza ao SO que o programa terminou com sucesso.;: Finaliza instruções.Espaçamento (tabulação) para indicar hierarquia visual. Fundamental para legibilidade.
Legível (Indentado)
int main(){
printf("Ola");
return 0;
}
Difícil Leitura (Não Indentado)
int main(){printf("Ola"); return 0;}
O compilador ignora espaços, mas a indentação previne erros lógicos.
Processo de tradução de código-fonte para código de máquina.
#), remoção de comentários.Trechos ignorados pelo compilador, usados para documentação interna.
// (até o fim da linha)./* ... */ (múltiplas linhas)./* Bloco de comentario
Explicacao complexa
*/
int main() {
printf("Oi"); // Comentario de linha
}
Comente o "porquê" da decisão lógica, não apenas o "o que" o comando faz.
2. Explique detalhadamente o que ocorre nas etapas de Pré-processamento e Link-edição.
3. No esqueleto abaixo, qual a função da linha return 0; e a quem esse valor é retornado?
int main(){ return 0; }
4. Julgue (V/F):
( ) Comentários de bloco iniciam com //.
( ) Erros de sintaxe dentro de comentários /* */ interrompem a compilação.
( ) A indentação não altera o desempenho do executável.
Uma "caixa" com etiqueta (nome) na memória. O tipo define o tamanho da caixa.
| Endereço | Variável | Conteúdo |
|---|---|---|
| 121 | int x | 10 |
Sintaxe obrigatória: tipo_da_variável nome_da_variável;
int x; // Declaração (reserva espaço)
x = 5; // Atribuição (define valor)
int a, b, c; // Múltiplas declarações
A memória nunca está "vazia". Se você usar uma variável sem inicializar, ela conterá bits aleatórios de processos anteriores.
O computador vincula o nome ao endereço de memória.
Regras Rígidas:
_)._. Nunca número.Soma $\neq$ soma.int, return, if, etc.).Válidos
nota_final_valorx1Inválidos
1nota (começa com número)valor-total (hífen proibido)float (reservada)1. Qual a definição correta de variável em C?
2. Identifique os identificadores INVÁLIDOS:
( ) 1contador
( ) valor_total
( ) return
( ) nota-final
3. O que será impresso se tentarmos exibir uma variável declarada mas não inicializada? Explique o conceito de "lixo de memória".
O tipo define o conjunto de valores e operações permitidas.
| Tipo | Bits | Intervalo Típico |
|---|---|---|
char | 8 | -128 a 127 (ou caractere ASCII) |
int | 32 | -2.147.483.648 a 2.147.483.647 |
float | 32 | Precisão Simples ($10^{-38}$ a $10^{+38}$) |
double | 64 | Precisão Dupla ($10^{-308}$ a $10^{+308}$) |
void | - | Ausência de valor (funções/ponteiros) |
Para tipos inteiros (int, char), a linguagem aceita três bases na inicialização:
Decimal: Padrão.
int a = 125;Octal: Precedido por 0.
int b = 044; (36 decimal)Hexadecimal: Precedido por 0x.
int c = 0x1FA;printf("%d", 0x10); // Imprime 16
Alteram capacidade e sinal.
unsigned: Apenas positivos. Dobra a capacidade positiva (ex: unsigned char vai até 255).signed: Padrão (positivo e negativo).short: Força "inteiro pequeno" (16 bits).long: Garante "inteiro grande" (32 bits) ou aumenta precisão (long double).unsigned long int m; (Inteiro grande sem sinal).printf()Exibe dados formatados na tela. Não exige &.
Sintaxe: printf("texto e máscaras", variáveis);
| Formato | Tipo |
|---|---|
%d / %i | Inteiro |
%f | Real (float/double) |
%c | Caractere |
%s | String |
int x = 10;
float y = 5.5;
printf("Total: %d e Media: %f\n", x, y);
scanf()Captura dados do teclado.
Sintaxe: scanf("máscaras", &variáveis);
Obrigatório usar & (operador de endereço) antes da variável. O scanf precisa saber onde gravar o dado na memória.
int idade;
scanf("%d", &idade); // Lê um inteiro
4. Julgue (V/F):
( ) unsigned dobra a capacidade positiva do int.
( ) char armazena inteiros pequenos e códigos ASCII.
( ) O tipo void pode declarar variáveis comuns (void x = 10;).
5. Qual o valor decimal de int b = 010;?
6. Diferencie printf e scanf quanto ao uso do operador &. O que acontece se esquecer o & no scanf?
Dados que não mudam durante a execução.
#defineDiretiva de pré-processamento. Substituição textual antes da compilação. Sem tipo de memória associado.
#define PI 3.1415
constVariável de "apenas leitura". Possui tipo e endereço de memória.
const float PI = 3.1415;
Comandos de controle visual dentro de strings.
| Código | Efeito |
|---|---|
\n | Nova linha |
\t | Tabulação |
\" | Imprime aspas duplas |
\\ | Imprime barra invertida |
printf("Linha 1\nLinha 2");
printf("Item:\tPreco:");
7. Corrija o código:
int main(){
int idade;
float altura;
scanf("%f %d", &idade, &altura);
printf("Idade: %d - Altura: %d", idade, altura);
return 0;
}
8. Qual a saída visual?
printf("A\\B\t%d", 100);
9. Diferencie #define (pré-processador) de const (memória alocada).
No próximo capítulo:
Operações com Variáveis:
Controle Condicional:
if-else e switch-case.