Você está na página 1de 35

Programação de Computadores II

Introdução à Programação em C++

José Romildo Malaquias

Departamento de Computação
Universidade Federal de Ouro Preto

2023.1

1/32
1 Introdução à Programação em C++

2/32
Tópicos

1 Introdução à Programação em C++

3/32
Linguagem de Programação

Podem ter diferentes níveis de


Método padronizado para comunicar abstração:
instruções a um computador.
Alto nível
Possui um conjunto de regras para
representar um programa de computador:
léxicas: palavras
sintáticas: frases
semânticas: significado

Baixo nível

4/32
Linguagem de Programação

Podem ter diferentes níveis de


Método padronizado para comunicar abstração:
instruções a um computador.
Alto nível
Possui um conjunto de regras para
representar um programa de computador:
léxicas: palavras
sintáticas: frases
semânticas: significado

Baixo nível

4/32
Linguagem de Programação

Podem ter diferentes níveis de


Método padronizado para comunicar abstração:
instruções a um computador.
Alto nível
Possui um conjunto de regras para
representar um programa de computador:
léxicas: palavras
sintáticas: frases
semânticas: significado

Baixo nível

4/32
Linguagem Interpretada

O código fonte é executado pelo interpretador sem traduzir para a linguagem de baixo nível do
computador.
O próprio interpretador conhece o significado dos comandos, e produz o efeito esperado ao
executá-los.

Python
print('Soma de dois números')
n1 = int(input('Digite o primeiro número: ')) interpretador
n2 = int(input('Digite o segundo número: '))
soma = n1 + n2
print(f'A soma de {n1} e {n2} é {soma}')

5/32
Linguagem Interpretada

O código fonte é executado pelo interpretador sem traduzir para a linguagem de baixo nível do
computador.
O próprio interpretador conhece o significado dos comandos, e produz o efeito esperado ao
executá-los.

Python
print('Soma de dois números')
n1 = int(input('Digite o primeiro número: ')) interpretador
n2 = int(input('Digite o segundo número: '))
soma = n1 + n2
print(f'A soma de {n1} e {n2} é {soma}')

5/32
Linguagem Compilada

O código fonte é convertido para linguagem de máquina antes de ser executado pelo
processador.

C++
#include <iostream>
using namespace std;
int main() {
int n1, n2;
cout << "Soma de dois inteiros" << endl;
cout << "Digite o primeiro número: " << endl; Lingua-
cin >> n1; compilador gem de
cout << "Digite o segundo número: " << endl; máquina
cin >> n2;
int soma = n1 + n2;
cout << "A soma de " << n1 << " e " << n2
<< " é " << soma << endl;
return 0;
}
6/32
Linguagem C++

Desenvolvida por Bjarne Stroustrup na década de 80.


Extensão da linguagem C para suportar programação orientada a objetos.
Suporta os dois paradigmas:
procedimental
orientado a objetos
Linguagem compilada
Tipagem estática: os tipos são verificados pelo compilador

7/32
Algumas empresas que usam C++

8/32
Algoritmos

Algoritmo corresponde a uma descrição de um padrão de comportamento, expresso em termos de


um conjunto finito de ações.
Informalmente, um algoritmo é qualquer procedimento computacional bem definido que toma
algum valor ou conjunto de valores como entrada e os transforma em saída.

Entrada Processamento Saída

Programas são formulações concretas de algoritmos abstratos, baseados em representações e


estruturas específicas de dados.
Todo programa pode ser escrito como uma combinação de comandos primitivos envolvendo três
estruturas básicas de controle:
estrutura sequencial;
estrutura de seleção;
estrutura de repetição.

9/32
Programa em C++

Inclui biblioteca com funções de entrada e saída de dados.


#include <iostream>
Em C++ as bibliotecas são divididas em namespaces.
Usando o namespace std (standard - padrão).
using namespace std;
Comentários não são executados pelo compilador.
// Função principal Início da execução.
int main()
{ indica o início de um bloco de instruções.
{

cout << "Olá mundo"


Comando que escreve na tela.
<< endl;
Retorno da função main.
return 0;
} indica o final de um bloco de instruções.
}

10/32
Variáveis

Locais de armazenamento da informação gerada Exemplo: notas, soma, media, idade, etc
Os valores variam de acordo com o contexto e ocupam um espaço em memória.
Definição formal de variável: Objeto ou entidade situada na memória que representa um valor ou
uma expressão. Esta representação existe apenas em tempo de execução.
As variáveis são referenciadas por um nome ou identificador.
Um identificador deve iniciar por uma letra ou por um _ (sublinhado).
A partir do segundo caractere, pode ocorrer letras (ç e acentos não são válidos), números e
sublinhados.
Deve-se usar nomes significativos dentro do contexto do programa;
C++ é uma linguagem case-sensitive, ou seja, faz diferença entre nomes com letras maiúsculas e
nomes com letras minúsculas. Idade e idade são diferentes.
Exemplos: Idade, contador, taxaMatricula, aluno_1, valorMaximo

11/32
Declaração de Variável

Declaração de variável: reserva um espaço na memória.


Inicialização da variável: define o conteúdo inicial da variável

inicialização inicializador exemplo a b c d


padrão nenhum int a ? 5 6 7
de cópia depois do igual int b = 5
direta entre parênteses int c(6)
uniforme entre chaves int d{7}
Na maioria dos casos a inicialização padrão deixa a variável com um valor indeterminado.
A inicialização uniforme não permite conversão com perda de informação (a variável não comporta o
valor)

int quantidade = 4.7; // quantidade é inicializada com 4


int idade{4.7}; // erro: nem todos os valores double cabem em uma variável int

Atribuição: altera o conteúdo da variável.

12/32
Declaração de Variável (cont.)

#include <iostream> ano peso altura imc


int main() {
int ano; ? 73.2 1.8 22.5926
double peso = 73.2;
k
double altura(1.80);
double imc{peso / (altura * altura)}; 73
int k = peso;
std::cout << "ano: " << ano << std::endl
<< "peso: " << peso << std::endl ano: 32633
<< "altura: " << altura << std::endl peso: 73.2
<< "imc: " << imc << std::endl; altura: 1.8
<< "k: " << k << std::endl; imc: 22.5926
return 0; k: 73
}

13/32
Tipos de Dados

C++ é uma linguagem tipada estaticamente: os tipos de todas as variáveis são fixados quando
são declaradas em tempo de compilação.
Cada variável tem apenas um tipo de dado associado quando é declarada.
Alguns tipos: número inteiro, texto, caractere, número real, etc
Cada tipo define os valores que a variável pode armazenar e ocupa um tamanho de espaço em
memória.

14/32
Tipos de dados fundamentais

descrição tipo modificadores


de tamanho de sinal
números inteiros int short, long, long long signed, unsigned
números reais (aproximação) float
double long
valores lógicos (booleanos) bool
caracteres char signed, unsigned
cadeias de caracteres string
vazio void
para representar tamanho std::size_t

15/32
Tipos de dados fundamentais (cont.)

signed (default): representação de sinal (números positivos, negativos e zero)


unsigned: representação sem sinal (números positivos e zero)
sizeof: operador que obtém o tamanho (em bytes) de um tipo ou de um valor
1 = sizeof(char) ≤ sizeof(short) ≤ sizeof(int) ≤ sizeof(long) ≤ sizeof(long long)

16/32
Tipos de dados fundamentais (cont.)

#include <iostream> char : 1


using namespace std; short int : 2
int : 4
int main() { long int : 8
cout long long int : 8
<< "char : " << sizeof(char) << endl float : 4
<< "short int : " << sizeof(short int) << endl double : 8
<< "int : " << sizeof(int) << endl long double : 16
<< "long int : " << sizeof(long int) << endl
<< "long long int : " << sizeof(long long int) << endl
<< "float : " << sizeof(float) << endl
<< "double : " << sizeof(double) << endl
<< "long double : " << sizeof(long double) << endl
;
return 0;
}

17/32
Tipos de dados fundamentais (cont.)

int main() { letra idade altura


char letra = 'v'; v 10 1.67
int idade = 65;
double altura = 1.67;
return 0;
}

18/32
Operadores

descrição operador exemplo


atribuição = x = y + 5

adição + y + 5
subtração - g - 2
multiplicação * 3 * imposto
divisão / x / 3
resto da divisção % total % 2

19/32
Operadores (cont.)

O operador / calcula
o quociente da divisão inteira quando os operandos são ambos inteiros: 7/2 → 3
o quaociente da divisão francionária quando pelo menos algum dos operandos é real: 7.0/2 → 3.5
Para fazer a divisão fracionária de operandos inteiros é necessário uma conversão explícita para
real de pelo menos um dos operandos:

#include <iostream> 3
using namespace std; 3.5
3.5
int main() {
int num = 7;
int den = 2;

double a = num / den;


double b = (double) num / den;
double c = num / (double) den;

cout << a << endl << b << endl << c << endl;
}
20/32
Operadores (cont.)

descrição operador exemplo


igual == diferenca == 0
diferente != opcao != 5

menor < x < 8


menor ou igual <= x <= y
maior > x >= 8
maior ou igual >= x >= y

negação (não lógico) ! ! continuar


conjunção (e lógico) && x > 0 && continuar
disjunçao (ou lógico) || opcao == 5 || opcao == 7

21/32
Operadores (cont.)

Os operadores binários podem ser combinados com atribuição.


Exemplos:

x += 5; x = x + 5;
total -= 3 + x; total = toal - (3 + x);
alfa /= total * (2 + x); alfa = alfa / (total * (2 + x));

22/32
Operadores (cont.)

Os operadores unários ++ e -- são usados respectivamente para incrementar ou decrementar o


valor de uma variável. Podem ser:
prefixo: alteram o valor da variável antes de usar a variável no restante da expressão
sufixo: alteram o valor da variável depois de usar a variável no restante da expressão

#include <iostream> x:8


using namespace std; x:9 a:16
x:10 b:20
int main() {
int x = 8;
cout << "x:" << x << endl;

int a = 2 * (x++);
cout << "x:" << x << " a:" << a << endl;

int b = 2 * (++x);
cout << "x:" << x << " b:" << b << endl;
}

23/32
Biblioteca cmath

A biblioteca cmath declara um conjunto de funções para calcular operações e transformações


matemáticas comuns, como por exemplo:
função descrição exemplo resultado
ceil arredondamento para cima ceil(2.4) 3.0
floor arredondamento para baixo floor(2.7) 2.0
round arredondamento para o maix próximo round(2.7) 3.0
pow potenciação pow(2.5, 3.0) 15.625
sqrt raiz quadrada sqrt(0.25) 0.5

24/32
Saída de dados

Biblioteca iostream
Variável cout: representa o fluxo (stream) de saída padrão (tela)
Operador <<: operador de inserção
envia um dado para um fluxo de saída
operador binário infixo
operando da esquerda: fluxo de saída que vai receber o dado
operando da direita: dado a ser inserido no fluxo de saída
o dado pode ser uma constante, variável, texto, etc.
o resultado é o próprio fluxo de saída
Exemplos:
cout << valor;
cout << valor << endl;

25/32
Saída de dados (cont.)

#include <iostream> 120


5
int main() { Oi
int num{5};
std::cout << 120 << std::endl;
std::cout << num << std::endl;
std::cout << "Oi" << std::endl;
return 0;
}

26/32
Saída de dados (cont.)

#include <iostream>
num den res 2.5
5 2 2.5
using namespace std;

int main() {
int num{5};
int den{2};
double res{(double)num / den};
cout << res << endl;
return 0;
}

27/32
Entrada de dados

Biblioteca iostream
Variável cin: representa o fluxo (stream) de entrada padrão (teclado)
Operador >>: operador de extração
extrai um dado para um fluxo de entrada
operador binário infixo
operando da esquerda: fluxo de entrada de onde o dado será extraído
operando da direita: variável que receberá o valor extraído
o resultado é o próprio fluxo de entrada
Exemplo:
cin << variavel;

28/32
Entrada de dados (cont.)

#include <iostream>
num den res
16 3 5
using namespace std;

int main(){
int num, den;
cout << "Digite o numerador: ";
cin >> num;
cout << "Digite o denominador: ";
cin >> den;
int res = num / den;
cout << "Resultado = " << res << endl;
return 0;
}

Digite o numerador: 16
Digite o denominador: 3
Resultado = 5

29/32
Exemplo completo

Escreva um programa em C++ que recebe como entrada a quantidade de dias de um intervalo de
tempo, e o converta em semanas. A conversão deve considerar como resposta o número de
semanas completas, e o número de dias restantes.
Observe o exemplo de execução do programa:

Digite a quantidade de dias: 25


25 dias são 3 semanas completas e 4 dias

30/32
Exemplo completo (cont.)

#include <iostream>

using namespace std;

int main() {
cout << "Digite a quantidade de dias: ";
int dias;
cin >> dias;

int semanas = dias / 7;


int dias_restantes = dias % 7;

cout << dias << " dias são "


<< semanas << " semanas completas e "
<< dias_restantes << " dias"
<< endl;

return 0;
}

31/32
Fim.

32/32

Você também pode gostar