Please enable JavaScript.
Coggle requires JavaScript to display documents.
MM2 - Coggle Diagram
MM2
Macros e Constantes Simbólicas
Código é transformado antes da compilação
Macros
Substituição textual
Definidas com #define
Não seguem regras normais de escopo
Tipos de uso
Constantes simbólicas
Macros com parâmetros
Benefícios
Legibilidade
Fácil manutenção
Problemas
Sem verificação de tipo
Pode gerar erros difíceis
Comparação com funções
Macros:
mais rápidas
menos seguras
Funções:
mais seguras
mais organizadas
Alternativa: inline
Bibliotecas auxiliares
<cctype>:
classificação de caracteres
transformação (toupper, etc.)
Entrada e Saída
Ideia central
Streams representam fluxos de dados
Permitem comunicação entre:
programa <-> usuário / sistema
Estrutura dos streams
cin -> entrada (istream)
cout -> saída (ostream)
Base comum:
ios -> gerencia formatação e estado
I/O em C++ é orientado a objetos (streams são classes)
Fluxo de dados
">>" extrai dados
"<<" insere dados
Controle de formatação
Manipulators alteram comportamento do stream:
Base numérica: dec, hex, oct
Formato: fixed, scientific
Precisão: setprecision, precision
Aparência: showpoint, uppercase
O mesmo dado pode ser representado de formas diferentes
Tipos de leitura
Formatada:
cin >>
Não formatada:
getline(), cin.get()
Manipulação de caracteres
Entrada e saída podem operar em nível de:
caractere
string
Operadores
Papel dos operadores
Transformar valores
Construir expressões
Operações aritméticas
Básicas:
+, -, *, /, %
Regra importante:
Inteiros: divisão inteira
Float presente: resultado float
Incremento e efeitos colaterais
Prefixo (++i): altera antes
Pós-fixo (i++): altera depois
Ordem de avaliação muda o resultado
Atribuição como expressão
= retorna valor
Permite encadeamento:
i = j = 9
Comparação e lógica
Relacionais:
retornam bool
Lógicos:
&&, ||, !
Avaliação curta (short-circuit)
Expressão para quando já dá pra decidir o resultado
Ex: (cond1 && cond2) -> se cond1 for falso, nem avalia cond2
Controle de Fluxo
Controla ordem de execução
Repetição (loops)
while -> condição antes
do-while -> condição depois
for -> controle estruturado
Processamento iterativo (ex: leitura até erro)
Decisão (condicionais)
if, else, else if
switch
Operador ternário
Interrupção de fluxo
break -> sai do loop
continue -> pula iteração
goto -> salto direto (evitar)
Programa = sequência + decisões + repetições
Fluxo de execução
Entrada (I/O): recebe dados
Operadores: transformam dados
Controle de fluxo: decide execução
Macros: ajustam código antes de compilar
Conversões: garantem compatibilidade de tipos
Conversão de Tipos
Ideia central
Diferentes tipos interagem entre si
Conversão implícita
Automática pelo compilador
Regra geral:
menor -> maior (promoção)
Mistura de tipos
Permitida em expressões
Pode mudar o resultado
Conversão em atribuições: pode ocorrer demotion
Conversão explícita
Cast manual
Controle total sobre o tipo