>> [Música tocando]
COLUNA: Tudo bem.
Então, vamos falar de outro coisa que é meio único para C,
que é tipos de dados e variáveis.
Quando eu digo exclusivo para C, eu realmente significa apenas no contexto de,
se você foi um programador por muito tempo,
você provavelmente não tenho trabalhou com os tipos de dados
se você já usou moderno linguagens de programação.
Linguagens modernas como PHP e JavaScript,
que nós também vamos ver um pouco mais tarde no curso,
na verdade você não tem que especificar o tipo de uma variável de dados
quando você usá-lo.
>> Você só declará-lo e começar a usá-lo.
Se for um número inteiro, sei que é um inteiro.
Se ele é um personagem, é sabe que é um personagem.
Se é uma palavra, ele sabe é uma string, assim chamada.
>> Mas em C, que é uma linguagem mais antiga, precisamos
para especificar os dados tipo de cada variável
que criamos pela primeira vez que usamos essa variável.
Então C vem com alguns built-in tipos de dados.
E vamos começar familiar com algumas delas.
E então depois vamos também falar um pouco sobre alguns dos tipos de dados
que nós escrevemos para você, para que você possa usá-los em CS50.
>> O primeiro é int.
O tipo de dados int é usada para variáveis que irá armazenar valores inteiros.
Assim, 1, 2, 3, negativo 1, 2, 3, e assim por diante.
Inteiros, o que é algo que você deve ter em mente para o teste,
sempre levar até quatro bytes da memória, que é de 32 bits.
Há oito bits em um byte.
>> Assim, isto significa que o intervalo de Valores que pode armazenar um número inteiro
é limitado pelo que pode se encaixar dentro 32 bits no valor de informação.
Agora, como se vê, foi há muito tempo decidiu
que iríamos dividir que gama de 32 bits
em inteiros negativos e inteiros positivos,
ficando cada metade do intervalo.
Assim, a gama de valores que representam com um intervalo inteiro de negativo 2
à potência 31 para 2 a o poder 31 menos 1,
fazer com que você também precisa de um local para 0.
>> Então, basicamente a metade dos valores possíveis você pode caber em um int são negativos,
e metade são positivos.
E mais ou menos aqui, trata-se negativa 2 bilhões para cerca de 2 bilhões positivo.
Dar ou tomar algumas centenas de milhões.
Então é isso que você pode caber em uma variável inteiro.
Agora nós também temos algo chamado um inteiro sem sinal.
Agora ints não assinados não são um tipo separado de variável.
Pelo contrário, sem sinal é o que é chamado um qualificador.
Ele modifica os dados tipo de inteiro ligeiramente.
>> E, neste caso, o que não assinado means-- e você também pode
usar não assinados outros tipos de dados, integer não é o único.
O que ele efetivamente faz é duplos a gama de valores positivos
um inteiro que pode assumir a à custa de não permitindo
você para assumir valores negativos.
Então se você tem números que você conhece vai ficar maior do que 2 bilhões, mas menos
de 4 bilhões, para example-- que é de 2 a 32 power--
você pode querer usar um unsigned int se
conhecer o seu valor nunca será negativo.
>> Ocasionalmente você vai ter usado para variáveis ​​não assinados
em CS50, que é por isso que eu mencioná-lo aqui.
Mas, novamente, a gama de valores que você pode representar com um inteiro sem sinal
como a t inteiro regulares, são 0 a 2 à potência de menos de 1 32,
ou aproximadamente 0 a 4 bilhões.
Então você efetivamente dobrou o faixa positiva que você pode caber,
mas você desistiu tudo os valores negativos.
>> Agora, como um aparte, sem assinatura Não é o único qualificador
para que possamos ver para tipos de dados variáveis.
Há também coisas chamadas curto e longo e const.
Const vamos ver um pouco pouco mais tarde no curso.
Curto e longo, nós provavelmente não irá.
>> Mas só sei que há são outros qualificadores.
Sem sinal não é o único.
Mas é o único que está vai falar sobre agora.
Então tudo bem.
Então, nós cobrimos inteiros.
Qual é o próximo?
>> Chars.
Assim caracteres são usados ​​para variáveis que irá armazenar caracteres simples.
Char é curto para o personagem.
E às vezes você pode ouvir pessoas pronunciá-lo como carro.
>> Então personagens sempre ocupam um byte de memória, que fica a apenas 8 bits.
Então isso significa que eles só podem caber valores na gama de 2 negativo
para a sétima potência, ou negativo 128, a 2 para o 7 de potência menos 1, ou 127.
>> Graças a ASCII, foi há muito tempo decidiu de forma
para mapear os números de positivos 0 a 127 para vários personagens
que existem em todo o nosso teclado.
Então, como veremos mais tarde, em o curso, e você, provavelmente,
vir a memorizar em algum ponto, o capital A, para example--
a capital caráter A-- mapeia para o número 65.
E a razão para isso é porque é o que é que é
sido atribuído pela norma ASCII.
>> Minúsculas A é 97.
O caractere 0 para quando você realmente digitar o caractere, não
representa o número zero, é 48.
Você vai aprender um casal desses que você vá.
E você vai certamente vir a precisar -los um pouco mais tarde na CS50.
>> O próximo grande tipo de dados É números de ponto flutuante.
Então, números de ponto flutuante são também conhecido como números reais.
Eles são basicamente números que ter um ponto decimal neles.
Valores de ponto flutuante como inteiros são também
contidos 4 bytes de memória.
Agora não há nenhuma carta aqui.
Não há nenhuma linha de número, porque que descreve a gama de um flutuador
não é exatamente clara ou intuitiva.
>> Basta dizer que você ter 32 bits para trabalhar.
E se você tem um número como pi, que tem
uma parte inteira 3, e uma flutuante parte ponto, ou parte decimal 0,14159,
e assim por diante, você precisa ser capaz de representar todos ele--
a parte inteira ea parte decimal.
>> Então, o que você acha que isso pode significar?
Uma coisa é que, se o decimal parte fica mais e mais,
se eu tenho um muito grande parte inteira, eu não poderia
ser capaz de ser tão precisa com a parte decimal.
E isso é realmente o limitação de um float.
>> Flutuadores têm um problema de precisão.
Nós temos somente 32 bits para trabalhar, por isso só podemos
ser tão precisos com a nossa parte decimal.
Nós não podemos ter necessariamente um decimal parte preciso para 100 ou 200 dígitos,
porque só temos 32 bits para trabalhar.
Então essa é uma limitação de um float.
>> Agora, felizmente, há outro tipo de dados chamado
duplo, que pouco lida com este problema.
Doubles, como carros alegóricos, também são usados ​​para armazenar números reais ou ponto flutuante
valores.
A diferença é que duplos são precisão dupla.
Eles podem caber 64 bits de dados ou oito bytes.
O que isso significa?
Bem, isso significa que podemos ser muito mais preciso com o ponto decimal.
Em vez de ter pi a sete lugares talvez, com um flutuador,
talvez possamos tê-lo para 30 lugares.
Se isso é importante, você pode querer a utilização de um casal em vez de uma bóia.
Basicamente, se você estiver trabalhando em qualquer coisa onde
ter um tempo muito longo casa decimal e muita precisão é importante,
você provavelmente vai querer usar um Overfloat dupla.
Agora, para a maior parte de seu trabalho em CS50, um flutuador deve ser suficiente.
Mas sei que existem duplas como um maneira de lidar com um pouco a precisão
problema, dando-lhe um extra de 32 bits para trabalhar com para os seus números.
>> Agora, isso não é um tipo de dados.
Este é um tipo.
E é chamado de vazio.
E eu estou falando sobre isso aqui, porque nós temos provavelmente
visto que algumas vezes já em CS50.
E você pode estar se perguntando o que é toda sobre.
>> Então vazio é um tipo.
Ele existe.
Mas isso não é um tipo de dados.
>> Não podemos criar uma variável do tipo anular e atribuir um valor a ela.
Mas as funções, por exemplo, pode ter um tipo de retorno void.
Basicamente, se você vê uma função que tem um tipo de retorno void,
isso significa que ele não retorna um valor.
Você pode pensar em um comum função que usei até agora
em CS50 que não retorna um valor?
>> Printf é um deles.
Printf na verdade não retornar nada para você.
Ela imprime algo para o tela, e é, basicamente,
um efeito colateral do que printf.
Mas não dar-lhe um valor de volta.
Você não capturar o resultado e armazenar -lo de alguma variável para usá-lo mais tarde.
Ele só imprime algo para a tela e você está feito.
>> Assim, dizemos que printf é uma função nula.
Ele retorna nada.
>> A lista perímetro de um função também pode ser nulo.
E você também vi que um pouco em CS50 também.
Void main Int.
Será que isso soa um sino?
Basicamente o que isto significa é que O principal não tomar quaisquer parâmetros.
Não há nenhum argumento que se passou para principal.
Agora, mais tarde, vamos ver que há uma maneira de passar argumentos em principal,
mas até agora o que nós temos vi é void main int.
Principal apenas não toma nenhum argumento.
E por isso, especificar que dizendo vazio.
Nós apenas estamos sendo muito explícita sobre o fato
que ele não leva quaisquer argumentos.
>> Então, por enquanto, é suficiente dizer que basicamente vazio
deve apenas servir como um espaço reservado para você como pensar em como nada.
Não está fazendo nada.
Não há nenhum valor de retorno aqui.
Não há parâmetros aqui.
É nula.
É um pouco mais complexo do que isso.
Mas isso deve ser suficiente para a melhor parte do curso.
E espero que agora você tem um pouco pouco mais de um conceito do que é vazio.
>> Então esses são os cinco tipos você vai encontro que são internos ao C.
Mas em CS50 temos também uma biblioteca.
CS50.h, que você pode incluir.
E que irá fornecer-lhe com dois tipos adicionais
que você provavelmente vai ser capaz para usar em suas atribuições,
ou apenas trabalhando geral de programação.
>> O primeiro destes é booleano.
Assim, o tipo de dados booleano, bool, é utilizado para variáveis
que irá armazenar um valor booleano.
Se você nunca ouviu falar este termo antes, você
pode saber que um booleano valor é capaz de apenas
segurando dois valores distintos diferentes.
Verdadeiro e falso.
Agora, isso parece bastante fundamentais, certo?
É uma espécie de uma surpresa que esta não existe no C como é built-in.
E em muitas línguas modernas, é claro, Booleans
são um tipo de dados padrão standard.
Mas em C, eles realmente não são.
Mas nós criamos isso para você.
Então, se você precisar criar uma variável cujo tipo é bool,
apenas a certeza de #include CS50.h no início de seu programa,
e você vai ser capaz de criar variáveis ​​do tipo bool.
>> Se você esquecer de #include CS50.h, e você começar a usar variáveis ​​do tipo Boolean,
você pode encontrar alguns problemas quando você está compilando seu programa.
Então, ser apenas à procura de que.
E talvez você pode apenas corrigir o problemas por libra incluindo CS50.h.
>> O outro grande tipo de dados que nós fornecer para você na biblioteca CS50
é string.
Então, o que é uma cadeia?
Strings são realmente apenas palavras.
Eles são coleções de caracteres.
Eles são palavras.
Eles são frases.
Eles são parágrafos.
Pode ser livros inteiros, mesmo.
>> Muito curto para muito longo série de caracteres.
Se você precisa usar cordas, por exemplo, para armazenar uma palavra,
só não se esqueça de incluir CS50.h no início de seu programa
assim você pode usar o tipo string.
E então você pode criar variáveis cujo tipo de dados é string.
Agora mais tarde no curso, nós também vamos ver que isso é
não toda a história, qualquer um.
Nós vamos encontrar coisas estruturas, chamadas
que permitem que você agrupe o que pode ser um inteiro e uma corda em uma unidade.
E podemos usar isso para algum propósito, o que pode
vir a calhar mais tarde no curso.
>> E nós também vai aprender sobre tipos definidos,
que permitem que você crie seus próprios tipos de dados.
Nós não precisa se preocupar sobre isso por enquanto.
Mas só sei que isso é algo sobre o horizonte,
que há muito mais a este conjunto Tipo de coisa do que eu estou dizendo a você apenas
agora.
Portanto, agora que aprendemos pouco sobre os dados básicos
tipos e os tipos de dados CS50, vamos falar sobre como trabalhar com variáveis
e criá-las usando estes tipos de dados em nossos programas.
Se você quiser criar uma variável, tudo que você precisa fazer é duas coisas.
>> Primeiro, você precisa dar-lhe um tipo.
A segunda coisa que você precisa a fazer é dar-lhe um nome.
Uma vez que você tenha feito isso e bateu um ponto e vírgula no final da linha,
você criou uma variável.
>> Então aqui está dois exemplos.
Número Int; Char carta ;.
O que eu fiz aqui?
Eu criei duas variáveis.
>> A primeira, a variável de nome é número.
E o número é capaz de manter inteiro digite valores, porque seu tipo é int.
Carta é outra variável que pode conter caracteres
porque seu tipo de dados é char.
>> Bastante simples, certo?
Se você se encontra em uma situação onde
você precisa criar múltiplos variáveis ​​do mesmo tipo,
você só precisa especificar o nome do tipo uma vez.
Em seguida, basta listar tantas variáveis daquele tipo que você precisar.
>> Então, eu poderia, por exemplo, aqui nesta terceira linha de código,
dizer altura int ;, nova linha.
Int largura ;.
E que iria trabalhar muito.
Eu ainda sou chamado duas variáveis altura e largura, cada uma das quais
é um número inteiro.
Mas eu estou autorizado a, coisas para C sintaxe, consolidá-lo em uma única linha.
Int altura, largura; É a mesma coisa.
Eu criei duas variáveis, uma chamada altura largura de um chamado, sendo que ambos
são capazes de exploração digite valores inteiros.
>> Da mesma forma aqui, posso criar três valores de ponto flutuante de uma vez.
Talvez eu possa criar uma variável chamado raiz quadrada de 2--
que presumivelmente acabará segure o ponto-- flutuante
que a representação da praça raiz de 2-- raiz quadrada de 3, e pi.
Eu poderia ter feito isso em três linhas separadas.
Float, raiz quadrada 2; Float raiz quadrada 3; flutuar pi; e que iria trabalhar muito.
>> Mas, novamente, eu posso apenas consolidar isso em uma única linha de código.
Torna as coisas um pouco mais curto, não como desajeitado.
>> Agora, em geral, é bom projeto apenas declarar uma variável quando você precisar dele.
E vamos falar um pouco pouco mais sobre isso
mais tarde no curso quando discutimos escopo.
Portanto, não precisa necessariamente criar todas as suas variáveis
no início do programa, o que algumas pessoas podem ter feito no passado,
ou foi, certamente, um muito comum prática de codificação muitos anos atrás
quando se trabalha com C. Você pôde apenas quer criar um direito variável quando
você precisa disso.
Tudo certo.
Então nós criamos variáveis.
Como é que podemos usá-los?
Depois de se declarar um variável, não precisamos
para especificar o tipo de dados dessa variável mais.
De fato, se você fizer isso, você pode acabar com algumas consequências estranhas
que vamos tipo de encobrir por enquanto.
Mas basta dizer, coisas estranhas vão
começar a acontecer se você inadvertidamente re-declarar variáveis ​​com o mesmo nome
de novo e de novo.
>> Então aqui eu tenho quatro linhas de código.
E eu tenho um par de Comentários Não apenas indicando
o que está acontecendo em cada linha apenas para ajudar
você se situado em o que está acontecendo.
Assim número int ;.
Você viu que anteriormente.
Essa é uma declaração de variável.
>> Eu criei agora uma variável isso é chamado de número
capaz de manter valores de tipo inteiro.
Eu já declarou ele.
>> A próxima linha Eu estou atribuindo um valor de número.
Número é igual a 17.
O que está acontecendo lá?
Eu estou colocando o número 17 dentro dessa variável.
>> Então, se eu nunca, em seguida, imprimir o que o conteúdo do número são, mais tarde,
eles vão me dizer que é 17.
Então, eu tenho declarado uma variável, e então eu tenho que lhe é atribuído.
>> Podemos repetir o processo novamente com o caractere carta ;.
Essa é uma declaração.
Carta de capital é igual a H. Isso é uma atribuição.
Bastante simples, também.
>> Agora, este processo pode Parece meio bobo.
Por que estamos fazendo isso em duas linhas de código?
Existe uma maneira melhor de fazer isso?
Na verdade, não existe.
Às vezes você pode ver esta chamada de inicialização.
É quando você declarar uma variável e atribuir um valor ao mesmo tempo.
Esta é realmente uma bonita coisa comum de se fazer.
Quando você cria uma variável, você normalmente deseja que ele tem algum valor básico.
Mesmo que seja 0 ou algo assim.
Você só você dar-lhe um valor.
>> Você pode inicializar uma variável.
Int número é igual a 17 é o mesmo que as duas primeiras linhas de código em cima.
Char carta é igual a h é o mesmo que o terceira e quarta linhas de código acima.
O takeaway mais importante aqui quando estamos declarando e atribuindo
variáveis ​​é depois que tivermos declarou ele, aviso
Eu não estou usando o tipo de dados novamente.
Eu não estou dizendo número int igual a 17 na a segunda linha de código, por exemplo.
Só estou dizendo que é igual a número 17.
>> Mais uma vez, re-declarar uma variável depois você já declarou que pode levar
para alguma conseqüência estranho.
Então, basta ter cuidado com isso.
>> Eu sou Doug Lloyd.
E este é CS50.