Olá e bem-vindo.
Nesta palestra, quero falar sobre lendo a entrada do teclado.
Este é um conceito básico que eu queria
que vocês aprendessem cedo porque é muito valioso e muitos programas aceitam entradas.
Então, eu forneci isso no início.
Alguns dos conceitos não são vai ficar completamente claro.
Mas nós definitivamente aprenderemos estes conceitos em outras seções à medida que
avançamos, mas é importante aprenda isso muito cedo, e é muito
semelhante à função printf.
Então, discutimos a saída.
Nós sabemos como formatar saída usando printf.
Agora temos que aprender um pouco pouco sobre a entrada, obtendo a
entrada do usuário essencialmente.
É muito útil perguntar ao usuário para inserir dados em um programa.
Falamos sobre linha de comando argumentos inserindo dados dessa maneira, essa é
uma maneira de fazer isso.
Outra maneira é pedir ao usuário diretamente para que possam digitar
algo no teclado.
Então você obtém a entrada de o teclado, mas é exibido quando
você digita a entrada através do terminal do console.
É assim que você insere a entrada.
A biblioteca c contém várias funções de entrada.
Vamos usar o scanf.
Essa é a função mais genérica.
É muito útil.
Fornece diferentes formatos que você pode inserir.
Então você pode inserir o texto e então seja convertido para formatos diferentes.
Portanto, scanf lê a entrada do fluxo de entrada padrão, isso é stdin.
Scanf pode realmente ser usado para lendo de arquivos também se o fluxo de
entrada for um arquivo.
Mas não vamos nos preocupar sobre
tudo isso por enquanto, vamos apenas usá-lo para ler a entrada do teclado.
Ok, e então, iniciado por o padrão é o teclado.
Stdin é um riacho.
Streams ec, três's fluxos diferentes.
O fluxo de erro, padrão entrada e saída padrão.
Padrão em por padrão é o teclado.
Então, vamos manter assim.
E usando o scanf, ele vai leia do padrão e, em seguida, com base no
que você inserir ou como você deseja armazenar os
dados, devo dizer, isso converterá o que você inseriu porque o
que você inserir será um texto.
Vai converter esse texto para o formato que você forneceu.
Vai usar especificadores de formato assim como a função printf.
Portanto, o formato pode ser uma sequência de caracteres, que é chamado de string.
Nós não estudamos isso em muitos detalhes ainda.
Mas, novamente, vamos quando falamos sobre tipos de dados.
E então você também pode especificar outros tipos de dados
sobre os quais falaremos, como inteiros, números basicamente.
Então você pode ler números.
Você pode ler strings.
Você pode ler números que contêm decimais, caracteres individuais individuais,
todas essas coisas legais.
Se o padrão de entrada for de o teclado que é o padrão o que
vai acontecer é enquanto você digita o texto através do teclado,
ele vai pegar esse texto, colocá-lo no programa c e vai converter esse texto.
E texto é coisas como letras, dígitos e pontuação.
Mesmo que você esteja digitando um número, ainda é texto porque está
vindo do teclado.
Então, se você inserir o número inteiro 2014, que é um número e essencialmente o que está acontecendo é que você
está digitando caracteres dois zero um e quatro.
E o que está acontecendo e o que acontecerá se adicionar enviar
essa entrada para o programa c.
E se você quiser armazenar esses dados como um número, você terá
que converter esses dados.
E então você tem que especificar o formato especificador como você deseja convertê-lo, assim
como você faz no printf.
Lembre-se como com o printf que você usa por cento d para imprimir um inteiro.
Você converteria o texto para um inteiro usando porcentagem d também para scanf
se você quiser converter a string em um número.
E é isso que vamos fazer para o básico desde o início.
Vamos apenas usar números porque sabemos
os números até agora, e não temos realmente aprendi sobre cordas ainda.
Então, vamos principalmente use números quando inserimos.
Então, scanf.
É muito semelhante ao printf.
Mas em vez disso, é um pouco diferente em certos argumentos que leva.
Ele ainda usa uma string de controle seguido por uma lista de argumentos.
Então, vai haver algo nessas aspas duplas.
As aspas duplas normalmente contém apenas uma coisa e será o
especificador de formato.
Como você vai converter os dados.
Portanto, a string de controle indica os tipos de dados de destino para o fluxo
de entrada de caracteres.
É aquele especificador de formato, por cento d, por cento c, por cento s, por cento
f para fluxo e assim por diante.
A função printf usa variável nomes, constantes e expressões em
seus argumentos porque aprendemos isso.
Você tem algo entre aspas duplas.
E então dentro do duplo aspas, você usa especificadores de formato.
E depois das vírgulas, você pode imprimir variáveis ou você pode
até mesmo imprimir expressões.
Expressões, falaremos sobre mais detalhes também, algo que essencialmente
retorna um valor.
Tipo de expressão mais comum é uma expressão aritmética.
A função scanf é diferente porque em vez de
realmente exibir variáveis, ele vai use variáveis para as quais são apontadas.
Mas, felizmente, dicas é um grande conceito em c.
Você não precisa saber de nada sobre ponteiros para entender e
usar a função scanf.
Portanto, não se preocupe com isso.
Tudo bem, tudo que você tem que fazer é você tem que se lembrar de três
regras sobre a função scanf para poder usá-la.
Vai retornar o número de itens que ele lê com sucesso.
Então, se lê uma variável, duas variáveis, três variáveis, ele retornará
isso.
Se você usar scanf para ler um valor para um
dos tipos básicos de variáveis que vamos discutir, como como o int, o flutuante, o duplo, então tudo que
você precisa fazer é o nome da variável, o argumento deve ser precedido
por um e comercial.
Você nem precisa saber por quê isso é agora, mas
apenas faça, qualquer um dos tipos de dados básicos.
E comercial é o endereço.
E porque o scanf leva um ponteiro tem que des-referenciar, tem que
passar o endereço.
A terceira coisa que você tem que lembrar para scanf.
Se você usar scanf para ler um string que é uma sequência de
caracteres em um caractere, você não precisa usar o E comercial.
Então, basicamente, o scanf leva dois argumentos que vou
mostrar um exemplo.
O primeiro argumento será como para converter os dados que você digita.
E se você armazenar esses dados em int, você usa o percentual de uso
do especificador de formato, percentual d.
Se você deseja armazenar em string sobre o qual não aprendemos
ainda, você usa percent s.
E então o segundo argumento é e podem ser muitos argumentos dependendo
de quantos especificadores de formato você usa porque, assim como printf seria a
variável real, o nome da variável.
E se a variável é tudo menos uma string, basta usar o "e" comercial.
Caso contrário, você não use o E comercial.
A função Scanf também usa espaços em branco para decidir como dividir a
entrada em campos separados.
E o espaço em branco inclui novas linhas, tabulações e espaços.
E, novamente, vou dar um exemplo para mostrar o que
isso significa porque, assim como printf pode exibir muitos, muitas variáveis, dependendo
de quantos especificadores de formato você tem dentro do aspas simples, mesma coisa com scanf.
Se o scanf tiver várias coisas dentro das aspas
duplas, ele lerá várias entradas.
E as entradas estão indo a ser dividido por novas linhas.
Então, novamente, se você quiser tentar para entender o que é scanf,
é o oposto de printf.
Printf vai converter inteiros, números de ponto flutuante, cadeias de caracteres, todos esses
dados diferentes digita e vai convertê-lo em
texto, para que você possa ver a saída.
E vai ser exibido na tela.
Scanf é o oposto.
Vai ter como entrada texto e convertê-lo em qualquer um dos diferentes tipos de
dados como ints, floats e doubles.
Então, vamos ver um exemplo.
Este é um exemplo de nosso um programa simples.
Sabemos qual é a rotina principal.
Nós sabemos o que é a diretiva de inclusão.
Nós não aprendemos sobre caracteres e inteiros ainda.
Mas basicamente no topo disso função principal, estamos criando
duas variáveis porque precisamos armazenar os dados, e vamos falar sobre
variáveis com muito mais detalhes.
Mas, assim como a função printf, novamente, você está apenas fazendo o oposto.
Então, aqui estamos exibindo a saída para a tela dizendo insira um valor.
Scanf dentro do duplo aspas tem especificadores de formato para
ler na entrada.
E então você tem que especificar o dados que serão lidos,
aqui diz por cento s, por cento d.
O que isso significa é que estamos lendo em um string, então estamos lendo em um int.
E você notará que a corda não tem o e comercial e scanf
após a primeira vírgula.
E depois da segunda vírgula, temos um E comercial porque é um número inteiro.
Estamos lendo em um número.
E então o printf está exibindo a saída.
Então está dizendo que você entrou neste string neste inteiro, assim como sabemos
o que printf faz e então a função principal retorna um zero.
Tudo bem, então vamos passar por isso exemplo em um segundo em blocos de código.
Mas vamos apenas reiterar alguns conceitos.
Quando um programa usa scanf para reúna a entrada do teclado, ele
espera você inserir algum texto.
Então, o programa está realmente indo para fazer uma pausa até inserir os dados.
E então, uma vez que você insere algum texto.
E se você inserir algum espaço em branco, se você estiver inserindo várias
coisas, o programa continua e lê a entrada quando você realmente
pressiona o botão Enter.
Você tem que apertar o botão Enter.
Novamente, scanf espera entrada no exatamente o mesmo formato que você forneceu.
Então, se você disser por cento se por cento e, isso significa
que você deve fornecer uma string seguida por um espaço, qualquer número de
espaços seguido por um inteiro, um número e uma palavra.
String é uma palavra inteira é um número.
Então, vamos examinar este exemplo linha por linha em blocos de código.
Ok, então aqui temos nossa função principal.
E, novamente, é importante ser capaz de inserir dados em um programa.
Assim como o printf, ele vai para ser muito semelhante, e não temos que
entender todo esse código.
E nós até nos livramos do parâmetros que estão
sendo passados, função principal simples.
Não temos que entender todo esse código.
Nós nem mesmo temos que entender quais variáveis estão neste ponto.
Mas as variáveis armazenam dados.
No exemplo, estamos criando uma string array de 100 e com um ponto-e-vírgula e então estamos também
vai apenas criar um inteiro,
assim como em printf.
Temos um número inteiro, mas estamos usando uma string.
Eu só quero demonstrar entradas diferentes.
Então, geralmente, sempre que antes de você chame a função scanf para obter dados do
teclado, você está sempre vai dizer algo ao usuário.
Você quer dizer a eles o que inserir.
Então printf, lembre-se, exibe dados na tela.
Vamos apenas dizer insira um valor.
E eles vão realmente insira um par e terminamos com
um ponto-e-vírgula.
Temos que dizer ao usuário para inserir algo.
Agora aqui é onde nós use a função scanf.
Dizemos scanf e, em seguida, dentro do parênteses o primeiro argumento dentro
das aspas duplas vai para ser dados que vamos ler.
Então, neste exemplo, vamos apenas digamos que vamos ler apenas um
percentual d de entrada, que é um int.
E então nós vamos armazene esses dados em uma
variável porque queremos examiná-los.
E vai ser eu.
Agora temos que especificar o e comercial antes disso porque, lembre-se, esse pequeno
truque com ponteiros.
Você não tem que saber porque, é apenas o endereço.
Então esse scanf, na linha 17, vai realmente lê os dados do teclado até que o
usuário pressione o botão Enter.
E então esses dados vão para ser armazenado em uma variável chamada I.
Então agora nós só queremos imprima o que inserimos.
Então aqui vamos apenas dizer, vamos adicionar um feed de linha para que seja
legível, então vamos use nossa sequência de escape, barra
invertida n e vamos dizer você.
Você inseriu percentual d e vamos para exibir o valor da variável.
E também vamos coloque um feed de linha depois.
Portanto, o valor da variável que queremos exibir é i.
Vamos acabar com um ponto e vírgula.
E então esse é o nosso programa.
Então, novamente imprimindo saída, pedindo um valor, lendo uma linha de entrada 17 especificando que os
dados que estamos a leitura é um número inteiro, armazenando-o, usando
um e comercial imprima o que acabamos de inserir.
Então, vamos construir isso e vamos executá-lo.
E você verá que o programa começa e, em seguida, faz uma pausa porque deseja que
você insira um valor.
Diz para inserir um valor.
Então, neste ponto, eu tenho que inserir um número que posso converter em string porque é isso
que está acontecendo.
Então aqui vou dizer apenas 56.
E então, vou apertar enter.
Ele foi executado duas vezes por causa do meu antivírus.
Vou dizer 56 e depois entrar.
E então ele imprime, eu digitei 56.
Pude inserir informações, número e o armazenou em uma variável.
Agora, assim como printf, você pode fazer com que eles insiram
várias coisas e armazenar em várias variáveis.
Então aqui depois que terminam em um inteiro, direi outro percentual, especificador
de formato, percentual s, o que significa que quero que eles insiram uma string, que é apenas
uma busca por uma palavra.
Então aqui, lembre-se, se for uma palavra, eu não precisa fornecer o "e" comercial.
Então eu só vou dizer mexa, eu quero armazenar esses
dados no armazenamento de variável.
E novamente, aprenderemos sobre variáveis.
E então eu vou para apenas imprimi-lo.
E eu adicionei outra variável para você conhece o printf e vou colocar
dois pontos antes de você também para especificar o formato que
você está imprimindo, então eles são percentuais.
Espero que esteja claro.
Agora vou ler em dois entradas separadas por espaços, armazene-as em
duas variáveis, I e mexa e depois exiba-os.
Portanto, agora se construirmos e executarmos.
Então aqui vou inserir o meu número 22, vou apertar a barra de espaço e depois vou digitar meu nome e, em seguida,
clico em retornar.
Quando eu faço isso, o programa vai fazer uma pausa e vai
mostrar o número I entrou e, em seguida, a string.
Portanto, ele exibe 22 e Jason.
Então é assim que você pode obter entrada do usuário, simples quatro ou
cinco linhas de código.
Outra coisa rápida que quero mostrar você é como você pode ler em dobro.
Então, mais tarde nas aulas, você está será mostrado como ler em float e
isso geralmente é usando um formato especificado por cento f.
Mas se você correr e ler em dobro, na verdade
é um pouco diferente, você usa percentual lf, então mantenha isso em sua mente.
Se eu criar um nome de variável duplo x e então eu uso o scanf para ler isso, eu preciso
ler usando o percentual LF.
Esse é o formato especificador que você deseja usar.
E então novamente, assim como o outros, você usaria o e comercial
para o endereço e diria x.
E então é assim que você pode ler especificamente em um duplo.
E isso é diferente do que ler em um fluxo.
Portanto, mantenha isso em mente.
Quando você for executá-lo, notará ele funciona bem direto.
E você pode ler a entrada lendo um duplo.
Então, vá em frente e execute isso.
E então vai pedir por duplo, eu realmente não fiz muito.
E isso dobra como 77. 8 e então vamos lê-lo e armazená-lo,
é bastante simples.
Então o scanf é muito útil como mencionei.
Outras coisas com o scanf você notará à medida que
avança no curso que o scanf às vezes não funciona tão bem.
Você pode usar f get s para outras coisas.
O principal problema com o scanf é quando você lê, você só está
lendo até ver um espaço.
E então, se você tentar usar scanf, você tenta
chamá-lo várias vezes em uma função.
Com outras combinações, pode não funciona muito bem porque
o que está acontecendo é quando você atinge o botão de retorno
no teclado, ele vai, não vai leia aquele botão de retorno porque ele
só lê em uma palavra.
E então não vai para obter o feed de linha.
Então, da próxima vez que você usar o scanf, vai pular essa linha
imediatamente e vai para ler no feed de linha.
Portanto, este é um problema que você verá se você escrever vários
scanfs em um único programa, um após o outro,
você notará que os outros scanfs não estão executando porque eles estão lendo no feed de linha.
Uma maneira muito fácil de contornar isso é logo depois de fazer uma varredura, você
apenas chama git char e depois chama outro scanner, mas isso é mais um
conceito para falar mais tarde.
Isso foi só para te mostrar quando você lê em dobro usando
scanf, certifique-se de usar o percentual LF.
E, novamente, isso é útil porque alguns de nossos desafios o alinharão para obter
a opinião do usuário a fim de fazer coisas úteis
e aprender conceitos diferentes, estamos capaz de obter informações do usuário.
Espero que tenha ajudado.
E, novamente, não se preocupe com alguns
desses conceitos que você não está entendendo totalmente as coisas como variáveis e
strings, vamos discutir tudo isso com muitos detalhes, obrigado.