Buscar

Entrada e Saída de Dados em C e C++

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 7 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 7 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

4ºAula
Entrada e saída de dados
Objetivos de aprendizagem
Ao término desta aula, vocês serão capazes de: 
• ler e escrever na linguagem C;
• ler e escrever na linguagem C++;
• manipular dados de entrada;
• manipular dados de saída.
Prezados(as) alunos(as):
Como foi visto na primeira aula o c e c++ são muitos similares 
sendo que o c++ foi uma evolução da linguagem tradicional C, 
mas isso não significa que na programação c++ possam conter 
elementos de sua antecessora. No capítulo anterior foram 
apresentadas duas funções criadas pela linguagem C, sendo uma 
para escrita e outra para leitura. Nesta aula vamos ver duas funções 
do C++ para escrita e leitura.
Boa aula!
Bons estudos!
24Linguagem da Programação I
Seções de estudo
1 - Comando de saída de dados em 
C – printf()
1 - Comando de saída de dados em C – printf() 
2 - Comentários 
3 - Comando de entrada de dados scanf()
4 - Leitura e escrita em c++ comandos cout e cin
Como vimos anteriormente o printf é utilizado para 
imprimir um resultado visual na tela, funciona em C. Como 
a função escreva em Portugol, ou seja, é através dessa função 
que imprimimos mensagens na tela, no entanto até agora 
imprimimos mensagens digitadas, mas se quisermos imprimir 
o valor de uma variável. Observe o código abaixo:
O Código apresenta na linha 6 uma declaração de uma 
variável do tipo inteiro “int numero1;”. Em c/c++ uma 
variável sempre seguirá esse padrão de declaração, primeiro o 
tipo e em seguida o nome da variável, sempre seguido de um 
ponto e vírgula. Na próxima linha foi realizada uma atribuição 
a variável e a partir deste momento o valor dela passa a ser o 
21.
O nosso printf mudou um pouco do exemplo anterior, 
pois agora ele contém um texto entre aspas que contém um 
carácter % que não foi imprimido, e uma variável dentro, 
separado por uma vírgula. Para imprimir uma variável com 
o printf é preciso informar o tipo de variável que queremos 
imprimir. No nosso exemplo temos a função printf( ) 
utilizando o caractere de percentual (%), seguido de uma letra 
para identificar o formato de impressão o %d, pois estávamos 
imprimindo um número inteiro. Portanto, o %d foi colocado 
propositalmente para imprimir nossa variável inteira. Na 
tabela abaixo é apresentado os caracteres utilizado para cada 
tipo de variável tipo. 
Carácter Tipo de variável
%d Usado quando a função for exibir um número 
inteiro (tipo int).
%c Usado quando a função for exibir apenas um 
caractere (tipo char)
s Usado quando a função for exibir uma cadeia 
de caracteres, ou seja, uma ou várias palavras.
f Usado quando a função for exibir número 
com ponto fl utuante (tipo fl oat). Exemplo: 1.80
e, E Usado quando a função for exibir número 
com ponto fl utuante (tipo fl oat). 
g,G Usado quando a função for exibir número 
com ponto fl utuante (tipo fl oat).
Exemplo: No exemplo apresentado foi declarado uma 
variável float e atribuído o valor 21 a ela. No entanto, o código 
imprimiu está variável com o carácter %d e logo após com %f. 
Podemos visualizar que algo estranho aconteceu no resultado, 
o primeiro valor saiu -1630283120 e o segundo o valor correto. 
Isso acontece porque o compilador está aguardando um tipo 
para imprimir e foi informado outro, no caso um float no lugar 
de um inteiro.
Figura 22: impressão de números em C.
Vale a pena tentar: modifique a declaração da variável 
pelos outros tipos apresentado nesta aula, para verificar o que 
acontece no código, logo após modifique a tag de impressão 
para o tipo de variável modicado.
1.1 - Indicando o Tamanho
Quando é feita a saída do valor de uma variável, além de 
se especificar o tipo (formato) que deve ser mostrado, pode-
se indicar o tamanho da saída. Para os números inteiros (int, 
short int, long int, unsigned int, unsigned short int e unsigned 
long int) a especificação do tamanho tem a seguinte sintaxe: % 
[tam].[qtd_dig]d
Onde: o tam – Indica o tamanho mínimo que deve ser 
colocado na saída caso o número possua quantidade menor de 
dígitos. Se o número possuir quantidade de dígitos maior que 
o valor, o número não será truncado o qtd_dig – Quantidade 
de dígitos que deve ser mostrada. Caso o número possua 
quantidade menor que o indicado, serão colocados zeros à 
esquerda até se completar o tamanho indicado (JAMSA, 1999).
Para os números reais (float e double), tem-se o seguinte 
formato: % [tam].[casa_dec]f
Onde: o tam – É o mesmo que o descrito antes para os 
números inteiros. Vale completar que, neste tamanho, estão 
consideradas as casas decimais inclusive.
o casa_dec – Número de casas decimais que devem ser 
mostradas. Caso o número possua número menor de decimais, 
o número será completado com zeros até o tamanho indicado. 
Se o número possuir um número de casas decimais maiores 
que o indicado, a saída será truncada para o tamanho indicado. 
Para as variáveis do tipo string, pode-se indicar o tamanho 
mínimo e máximo a ser mostrado através da seguinte sintaxe: 
%[tam].[tam_max]s
Nesse caso, se a string possuir tamanho menor que o 
indicado a saída será completada com brancos à esquerda.
Veja o exemplo: Espaço reservado de 8 caracteres 
(mínimo), preenchendo com zeros à esquerda até o máximo 
de 6 caracteres.
25
Preenche com zeros à esquerda até o máximo de 8 
caracteres.
Espaço reservado de 2 caracteres (mínimo), com 2 casas 
decimais (o número é arredondado).
Espaço reservado de 10 caracteres (mínimo), com 2 casas 
decimais (o número é arredondado).
Espaço reservado de 20 caracteres (mínimo), a quantidade 
de casas decimais é especificada pelo número a ser impresso. 
A quantidade de caracteres utilizados é especificada pelo 
número a ser impresso, com 2 casas decimais (o número é 
arredondado).
Mínimo de 10 caracteres. 
Mínimo e máximo de 10 caracteres. Ocorre um 
truncamento do campo a ser impresso se este for maior que 
10 caracteres.
Resultado impresso pelos exemplos.
| 000820|
|
820|
|00000820|
|00000820|
|1223.44|
|
1223.44|
|
1223.443200|
|1223.44|
|abcdefghijklmnopqrstuvxywz|
|abcdefghij|
|
abcde|
2 - Comentários
3 - Comando de entrada de dados 
scanf()
Quando desenvolvemos programas, devemos colocar 
textos que expliquem o raciocínio seguido durante seu 
desenvolvimento para que outras pessoas, ou nós mesmos, 
ao ler o programa mais tarde, não tenhamos dificuldades 
em entender sua lógica. Esses textos são chamados de 
comentários. Os comentários podem aparecer em qualquer 
lugar do programa. Em C/C++, há duas maneiras de realizar 
comentários: os comentários de linha e os comentários de 
bloco (CARVALHO, 2008).
Os comentários de linha são identificados pelo uso de //. 
Assim, quando usamos // em uma linha, tudo o que estiver 
nessa linha depois do // são considerados comentários. Os 
comentários de bloco são iniciados por /* e finalizados por */. 
Tudo o que estiver entre esses dois símbolos são considerados 
comentários. Os comentários de bloco podem ocupar várias 
linhas. No código abaixo é representado um exemplo de 
código que foi comentado
Dica
No código podemos verificar as duas formas de inserir 
comentários. Os comentários são de extrema importância, 
pois no futuro você pode não lembrar o que havia codificado. 
Eles ajudarão a lembrar a funcionalidade de seu código, como 
também pode facilitar o entendimento a outra pessoa.
Agora que sabemos escrever, vamos aprender a ler. Em 
C utilizamos o scanf para ler. O scanf( ) funciona em C como 
a função leia em Portugol, ou seja, é através dessa função 
que conseguimos interação com algo digitado pelo teclado, 
ou seja, sua função é receber as entradas de dados através do 
teclado.
A exemplo do printf(), o scanf() também utiliza os 
códigos de formatação. Enquanto no printf() esses códigos 
eram utilizados para indicar o formato dos dados a serem 
escritos, no scanf() esses mesmos códigos indicam o formato 
dos dados a serem lidos. O quadro abaixo exibe os códigos de 
formatação utilizados no scanf(). Note a semelhança com os 
códigos do printf() (CARVALHO, 2008).
Códigos de formato deleitura da função scanf() 
%c utilizado quando a função for armazenar 
um caractere (tipo char).
%f utilizado quando a função for armazenar 
um número com ponto fl utuante, aquele 
valor com vírgula (tipo fl oat).
 %s utilizado quando a função for armazenar 
uma cadeia de caracteres, ou seja, uma ou 
várias palavras. 
%d utilizado quando a função for armazenar 
um número inteiro (tipo int).
26Linguagem da Programação I
Abaixo é apresentado um código no qual é realizada a 
leitura de dois números através do scanf e mostrado na tela 
através do printf .
No código podemos observar a declaração de duas 
variáveis uma inteira (int) e uma real (float), depois foi escrito 
um printf com o intuito de informar o usuário para digitar 
um número. Em seguida aparece nosso scanf que contém 
um %f entre aspas e após a vírgula o carácter & seguido da 
nossa variável. Sempre que utilizarmos o scanf para leitura, 
devemos manter esse padrão. Logo abaixo aparecem os 
mesmos passos para ler um valor inteiro. E, por fim, temos 
um printf diferente, pois agora as variáveis serão impressas 
no meio do texto e não no fim como era no exemplo anterior. 
No printf é possível imprimir no meio do texto, já que 
podemos definir o local dos caracteres que representam onde 
vão ser impressos os valores. No exemplo foi utilizado o %d 
e %f que gerou o seguinte resultado:
Figura 23: Execução do código.
Dica: Tente criar um projeto que leia dois números, 
efetue a soma e imprima os três valores.
4 - Leitura e escrita em c++ comandos 
cout e cin
A linguagem C++ possui uma ótima biblioteca de classes 
relacionadas ao controle de entrada e saídas de dados, os 
comandos cout e cin. Como você deve ter percebido, a classe 
cout serve para exibir valores - seja o valor de uma variável 
ou uma frase – enquanto que cin serve para armazenar 
valores recebidos através do teclado em variáveis. Tínhamos 
na linguagem C as funções printf e scanf para executar estas 
mesmas funções. Na verdade, printf e scanf também estão 
presentes em C++ (assim como todas as funções padrões de 
C), e podemos utilizá-las caso desejemos. Porém, os comandos 
– ou, utilizando um termo mais tecnicamente apropriado, 
classes – cin e cout facilitam muito a vida do programador, por 
serem mais “inteligentes” que printf e scanf (DEITEL, 2012).
Utilização de cout
Como já dissemos, cout exibe valores na tela. A sintaxe 
utilizada é:
Utilizamos cout em conjunto com o operador de inserção 
<<. Note que símbolo << também é utilizado pelo operador 
de bitwise shift para a esquerda (move bits de uma variável para 
a direção esquerda), entretanto não precisamos nos preocupar 
com isto: C++ sabe diferenciar quando estamos utilizando um 
operador ou o outro, através do contexto.
O operador << indica ao comando cout que um dado deve 
ser exibido na tela, além de identificar automaticamente qual o 
tipo desse dado e como ele deve ser formatado para exibição 
na tela. Assim, não precisamos informar à cout que estamos 
enviando um inteiro, um real ou uma string, como fazíamos em 
C: o operador << se encarrega dessa identificação, bastando 
para o operador indicar o nome da variável (TREVELIN, 
2007). 
Abaixo temos a lista de todos os tipos básicos de C++ 
reconhecidos pelo operador de inserção:
•unsigned char
•signed char
•char
•short
•unsigned short
•int
•unsigned int
•long
•unsigned long
•float
•double
•long double
O operador de inserção também fornece facilidades para 
a exibição de strings. Além dos tipos básicos mostrados acima, 
o operador de inserção também reconhece os seguintes tipos 
de ponteiros:
•const signed char *
•const unsigned char *
•const char *
•void *
Ponteiros serão explicados com maior propriedade na 
disciplina de Estrutura de dados, mas precisamos saber que C e 
C++ representam strings, utilizando ponteiros para o endereço 
de memória da string. Este ponteiro pode ser o nome de uma 
variável matriz de tipo char, um ponteiro de tipo char ou então 
uma frase entre aspas. O operador de inserção reconhece cada 
um destes casos e exibe na tela a string de texto. Por exemplo:
27
Essas 3 utilizações de cout exibem as strings de texto na 
tela. Veremos mais adiante que toda string possui um caractere 
de término, “\0”, que indica para o compilador que a string 
terminou. Nesses três casos, o operador de inserção orienta-se 
por este “\0” para terminar a exibição das strings.
É importante ressaltar que o operador de inserção não 
reconhece automaticamente matrizes numéricas e não as exibe 
automaticamente na tela. Para fazer isso, precisaremos utilizar 
os métodos tradicionais envolvendo loops para mostrar cada 
membro da matriz de uma vez (TREVELIN, 2007). Esse 
assunto será discutido na aula 7, dedicado para matrizes. 
Overload do operador de inserção
“Overload do operador de inserção” nada mais é do que 
utilizar o operador de inserção várias vezes na mesma chamada 
de cout. Por exemplo:
A linha de comando acima exibe dois valores: a string 
“O valor da variável X é:” e a variável X. Note que utilizamos 
duas vezes o operador de inserção, sempre antes do valor a ser 
exibido. Podemos repetir o operador de inserção quantas vezes 
precisarmos na mesma linha de cout (TREVELIN, 2007).
Agora vamos criar um projeto para verificar o 
comportamento do cin cout. A criação do projeto é idêntica 
da apresentada na aula 1, sendo que a única diferença é que ao 
invés de selecionar o C devemos selecionar o c++, conforme 
podemos visualizar a imagem abaixo.
Observação: todos os comandos utilizados na linguagem 
C funcionam em C++, ou seja, é possível utilizar o printf e o 
scanf normalmente no C++.
Agora vamos ver o código criado em C++, assim como 
no projeto criado anteriormente o codeblocks também cria um 
arquivo com a função main com a mensagem “hello world”. 
No exemplo abaixo foi realizado a declaração de um número 
do tipo float que recebe o valor 21 e logo abaixo é impresso 
ele através da função cout. Observe que não precisamos de 
caracteres para definir o tipo de variável a ser impressa, no final 
da mesma linha encontramos a tag endl que tem a finalidade 
de pular linha, mas nada impede a utilização do \n que vimos 
anteriormente.
Formatação de exibição com cout
Vimos anteriormente que a função printf fornecia 
múltiplas maneiras de formatar a exibição dos dados no 
computador. A classe cout também fornece as mesmas 
facilidades para os usuários de C++. Abaixo descreveremos 
como realizar formatação de dados utilizando cout.
Escolhendo a Base Numérica
Podemos escolher a base numérica que utilizaremos para 
representar números inteiros. Para isto, devemos utilizar os 
comandos:
Após utilizar qualquer um desses comandos, sempre 
que pedirmos para cout exibir um número inteiro na tela, o 
comando automaticamente converterá o número para a base 
definida previamente. Por exemplo:
A função cout não exibirá o número 10 como estamos 
esperando, mas sim a letra a, que representa 10 na base 
hexadecimal. Observe que podemos utilizar o operador de 
inserção duas vezes para deixar o código mais compacto o 
que não interfere no resultado:
int número = 10;
cout << hex << número;
Não se esqueça de retornar para a base decimal com 
“cout << dec;”, após exibir valores na base hexadecimal ou 
octal!
Formatação de números reais
Podemos escolher também a notação utilizada para 
exibição de números reais. Com o comando:
cout << fixed;
Instruímos o programa a exibir valores reais usando 
a notação de ponto fixo (por exemplo, 3.1214). Da mesma 
forma, com o comando:
cout << scientific;
Instruímos o programa a utilizar a notação científica (por 
exemplo, 3.21E-2).
Espaçamento de Texto
O comando cout permite também escolher um número 
mínimo de caracteres para ser exibido na tela. Isso é feito 
utilizando o método:
cout.width ( x );
Onde substituímos x pelo número mínimo de caracteres 
a ser exibido na tela. Após a utilização deste método, 
utilizamos o comando cout para exibir o valor desejado, 
como no exemplo abaixo:int variável = 10;
cout.width ( 5 );
cout << variável;
Nesse exemplo, foi especificado cout.width (5); e o valor 
a ser exibido é 10. Assim, cout precederá o valor 10 com três 
espaços em branco.
Observe que o valor especifica o número mínimo de 
caracteres que a saída consumirá. Se o valor a ser exibido requer 
mais caracteres do que o especificado, será usado o número 
de caracteres necessários para exibir o valor corretamente.
É importante observar também que o método cout.
width só é válido para a próxima utilização de cout: após isso, 
o número mínimo de caracteres volta a ser zero.
Podemos também determinar o caractere a ser utilizado 
para preencher os espaços em branco de um campo de 
exibição. Isso é feito com o seguinte método:
cout.fill ( “caractere”);
28Linguagem da Programação I
Onde substituímos “caractere” pelo caractere que será 
exibido. É necessário utilizar aspas entre o caractere, para 
indicar ao compilador que não se trata de uma variável.
O exemplo abaixo mostra a utilização conjunta desses 
dois métodos:
int variável = 10;
cout.width ( 8 );
cout.fill (“0”);
cout << variável;
Esse exemplo fará a seguinte exibição na tela, 
preenchendo os espaços em branco determinados por cout.
width com o caractere 0, determinado por cout.fill:
00000010
Precisão de Variáveis Reais
O seguinte método é utilizado para fixar a precisão de 
variáveis reais, ou seja, o número mínimo de casas decimais a 
serem exibidas após a vírgula em um valor real:
cout.precision ( valor );
Por default, C++ utiliza 6 casas decimais após a vírgula. 
Quando alteramos o valor da precisão, este novo valor vale 
para todas as utilizações futuras de cout.
Alinhamento de Texto
A escolha da direção de alinhamento de texto é feita da 
seguinte forma, utilizando cout:
Alinhamento à direita: 
cout << right << <valor a ser exibido>;
Alinhamento à esquerda: 
cout << left << <valor a ser exibido>;
Por default, todos os valores exibidos em um programa 
são automaticamente alinhados à direita. Quando mudamos o 
modo do alinhamento de texto, ele permanecerá dessa forma 
até que o alteremos novamente.
Utilização de cin
Utilizamos o comando cin para obter valores do usuário 
através do teclado. A sintaxe utilizada é a seguinte:
cin >> variável_destino;
Assim como cout, cin utiliza um operador (nesse caso, o 
operador de extração >>) para identificar o tipo de variável 
onde o valor será armazenado e encontrar o endereço de 
memória correto. Ao contrário da função scanf, utilizada na 
linguagem C, não é preciso especificar qual o tipo de valor 
será enviado pelo teclado. Pois o operador de extração faz as 
conversões necessárias. Podemos utilizar cin para ler valores 
inteiros, reais e strings de caracteres.
Na maioria dos casos, o comando cin cobre nossas 
necessidades de entrada de dados via teclado. Entretanto, 
quando precisamos ler strings com mais de uma palavra, 
como por exemplo frases ou nomes, cin apresenta certos 
“problemas”. Isso acontece por causa da maneira que C++ 
trata os espaços em branco em uma entrada via teclado.
Espaços em branco são considerados fim de entrada 
pelo comando cin; ao invés de descartar os caracteres que 
vierem após o espaço em branco, C++ os guarda em um 
buffer (uma espécie de “reserva” ou pilha de dados). Quando 
cin for chamado novamente, antes de ler a nova entrada do 
teclado, o programa primeiro utiliza os dados que estão nesse 
buffer. Assim, temos a impressão que a nova entrada de dados 
foi descartada pelo programa, mas na verdade ela foi jogada no 
buffer, esperando uma nova chamada de cin. Para solucionar 
este problema, utilizamos o método de cin cin.getline.
4.6 - Método de cin: cin.getline
O método cin.getline é muito útil para receber strings 
de caracteres com espaços, como frases. Esse método lê uma 
linha inteira, marcando o fim da entrada de dados pelo uso 
da tecla <ENTER> indicando a entrada de uma nova linha. 
Abaixo temos a sintaxe do método:
cin.getline ( <matriz_destino>, <limite de caracteres>);
O primeiro argumento é a matriz de caracteres para onde 
serão enviados os dados recebidos. É necessário declarar uma 
matriz de caracteres previamente ao uso desse método. O 
segundo argumento é o número máximo de caracteres que 
será lido pelo método, menos o caractere \0 indicando o fim 
da string. Assim, se especificarmos um número máximo igual 
a 20, esse comando lerá 19 caracteres e descartará os próximos 
caracteres entrados pelo usuário, até que a tecla <ENTER> 
seja pressionada. Um espaço será sempre utilizado para marcar 
o fim da string através do caractere \0.
Um exemplo da utilização de cin.getline:
char matriz[60];
cin.getline (matriz, 50);
cout >> matriz;
O método cin.getline lerá os próximos 49 caracteres 
(lembre-se: o espaço reservado para o caractere fim_de_string 
\0) que o usuário digitar através do teclado. A leitura continuará 
sendo realizada até que ele aperte a tecla <ENTER>. Caso o 
usuário entre com uma quantidade maior que 50 caracteres, os 
próximos serão descartados pelo programa.
Retomando a aula
Parece que estamos indo bem. Então, para encerrar 
essa aula, vamos recordar:
Na quarta aula, vimos que todo sistema computacional 
necessita interagir com os usuários. Inicialmente apresentamos 
uma maneira de iteração simples para facilitar nosso 
entendimento na programação de computadores. Vimos que 
no C++ existem duas funções para receber dados vindos 
dos usuários através do teclado, o scanf da linguagem C e o 
cin>> do C++. Na primeira vimos que existem configurações 
para cada tipo de dado, enquanto na segunda a leitura é mais 
tranquila e existem ainda métodos como cin.getline, que nos 
possibilita configurar a entrada de caracteres. Também foram 
apresentados modelos de impressão em tela com o printf 
e cout, o printf, assim como o scanf necessita de tags de 
configuração para impressão de tipos específicos. Enquanto o 
cout torna essa tarefa bem mais fácil.
29
Stephen R Davis; Começando A Programar Em C++ Para 
Leigos; Alta Books; Edição: 1; 2012.
MIZRAHI, Viviane Victorine Mizrahi; Treinamento em 
Linguagem C++ - Modulo 2; Pearson; Edição: 2; 2005.
Disponível em: <http://homepages.dcc.ufmg.
br/~rodolfo/aedsi-2-10/printf_scanf/printfscanf.html>. 
Acesso em: 24 de nov. 2017.
Disponível em: <http://www.tiexpert.net/
programacao/c/cin.php>. Acesso em: 24 de nov. 2017.
Vale a pena
Vale a pena ler
Vale a pena acessar
Linguagem C - Como usar o comando printf e 
scanf. Disponível em: <https://www.youtube.com/
watch?v=a70VlhpIdoU>. Acesso em: 24 de nov. 2017.
#1 Tutorial c++ - CIN e COUT. Disponível em: 
<https://www.youtube.com/watch?v=u2FUBdDAX5o>. 
Acesso em: 24 de nov. 2017. 
Vale a pena assistir
Minhas anotações

Outros materiais