>> [Jouer de la musique]
CONFÉRENCIER: Très bien.
Donc, nous allons parler d'une autre chose qui est un peu unique de C,
ce qui est des types de données et variables.
Quand je dis unique de C, je vraiment seulement signifier dans le cadre de,
si vous avez été un programmeur pour un temps très long,
Vous avez probablement pas travaillé avec des types de données
si vous avez utilisé moderne langages de programmation.
Langues modernes comme PHP et JavaScript,
que nous verrons également un peu par la suite dans le cadre,
vous ne avez pas réellement besoin de spécifier le type d'une variable de données
lorsque vous l'utilisez.
>> Vous venez de le déclarer et de commencer à l'utiliser.
Si il est un entier, il sais qu'il est un entier.
Si elle est un personnage, il est sait qu'il est un personnage.
Si il est un mot, il sait il est une chaîne, soi-disant.
>> Mais en C, qui est un langue plus ancienne, nous avons besoin
pour spécifier les données type de chaque variable
que nous créons la première fois que nous utilisons cette variable.
Donc C est livré avec une certaine intégré dans les types de données.
Et nous allons nous familiariser avec certains de ceux-ci.
Et puis après, nous parlerons également un peu de certains des types de données
que nous avons écrit pour vous, de sorte que vous pouvez les utiliser dans CS50.
>> Le premier est int.
Le type de données int est utilisé pour les variables qui va stocker des valeurs entières.
Donc, 1, 2, 3, négative 1, 2, 3, et ainsi de suite.
Entiers, ce qui est quelque chose que vous devrait garder à l'esprit pour le quiz,
toujours prendre jusqu'à quatre octets de la mémoire, qui est 32 bits.
Il y a huit bits dans un octet.
>> Cela signifie donc que la gamme de valeurs qui peut stocker un nombre entier
est limitée par ce qui peut tenir dans 32 bits valeur de l'information.
Maintenant, il se trouve que, il a été décidé il ya longtemps
que nous diviser cette gamme de 32 bits
en nombres entiers négatifs et des nombres entiers positifs,
chaque demi obtenir de la gamme.
Ainsi, la gamme de valeurs que nous représentons avec une gamme entière de négative 2
à la puissance 31 à 2 à la puissance 31 moins 1,
causez vous avez aussi besoin d'un endroit pour 0.
>> Donc, fondamentalement, la moitié des valeurs possibles vous pouvez tenir dans un int sont négatifs,
et la moitié sont positifs.
Et à peu près ici, il est question négative 2 milliards à environ 2 milliards de positif.
Donner ou prendre quelques centaines de millions.
Voilà ce que vous pouvez adapter dans une variable entière.
Maintenant, nous avons aussi quelque chose appelé un entier non signé.
Maintenant ints non signés ne sont pas un type de variable distincte.
Plutôt, non signé est ce qu'on appelle un qualificatif.
Il modifie les données Type de légèrement entier.
>> Et dans ce cas, ce unsigned désigne: et vous pouvez également
utiliser d'autres types de données non signés, entier est pas le seul.
Ce qu'il fait est effectivement doubles la gamme de valeurs positives
qu'un entier peut prendre au aux dépens de ne plus permettre
vous de prendre des valeurs négatives.
Donc, si vous avez des chiffres que vous connaissez obtiendra plus de 2 milliards, mais moins
de 4 milliards, pour example-- qui est 2 à la 32e power--
vous pouvez utiliser un unsigned int si vous
connaître votre valeur ne sera jamais négatif.
>> Vous avez de temps en temps utilisé pour les variables non signés
dans CS50, qui est pourquoi je mentionne ici.
Mais encore une fois, la plage de valeurs que vous peut représenter avec un entier non signé
en tant que nombre entier à t régulier, sont égaux à 0 à 2 à la 32e puissance moins 1,
soit environ 0 à 4000000000.
Donc, vous avez effectivement doublé la plage positive que vous pouvez adapter,
mais vous avez abandonné tout les valeurs négatives.
>> Maintenant, en passant, non signé est le seul qualificatif pas
que nous pourrions voir pour types de données variables.
Il ya aussi des choses appelées court et long et const.
Const nous verrons un peu peu plus tard dans le cours.
Court et long, nous ne sera probablement pas.
>> Mais il suffit de savoir qu'il y sont d'autres qualificatifs.
Unsigned est pas le seul.
Mais il est le seul que nous sommes va parler maintenant.
Ainsi, très bien.
Donc, nous avons couvert entiers.
Et après?
>> Chars.
Donc, les caractères sont utilisés pour les variables qui va stocker les caractères simples.
Char est l'abréviation de caractère.
Et parfois, vous pourriez entendre les gens prononcent comme voiture.
>> Donc personnages prennent toujours un octet de mémoire, qui est à seulement 8 bits.
Donc, ce qui signifie qu'ils ne peuvent tenir des valeurs de l'ordre de 2 négative
à la septième puissance, ou négative 128, à 2 à la 7e puissance moins 1, ou 127.
>> Merci à ASCII, il était décidé depuis longtemps un moyen
pour cartographier ces chiffres positifs 0 à 127 à divers personnages
qui existe sur toute notre clavier.
Donc, comme nous le verrons plus tard dans le cours, et vous aurez probablement
venir à mémoriser à un certain point A majuscule, pour example--
la capitale de caractères A- cartes pour le numéro 65.
Et la raison en est que parce que ce qui est il est
été attribué par la norme ASCII.
>> Minuscules A est 97.
Le caractère 0 lorsque vous effectivement taper le caractère, pas
représentant le nombre zéro, est de 48.
Vous apprendrez un couple de ces que vous allez.
Et vous aurez certainement venus à avoir besoin les un peu plus tard dans CS50.
>> Le prochain grand type de données est nombres à virgule flottante.
Donc, nombres à virgule flottante sont également connu comme nombres réels.
Ils sont essentiellement des chiffres qui avoir un point en eux décimal.
Valeurs à virgule flottante comme entiers sont également
contenu à l'intérieur 4 octets de mémoire.
Maintenant, il ya pas de carte ici.
Il n'y a pas de numéro de ligne, parce pour décrire la gamme d'un flotteur
ne sait pas exactement ou intuitive.
>> Qu'il suffise de dire que vous avoir 32 bits pour travailler avec.
Et si vous avez un certain nombre comme pi, qui a
une partie entière 3, et un flottant point de partie, ou partie décimale 0,14159,
et ainsi de suite, vous devez être capable de représenter tous it--
la partie entière et la partie décimale.
>> Alors, que pensez-vous que cela pourrait signifier?
Une chose est que si la décimale partie plus en plus longue,
si je dois un très grand partie entière, je ne pourrais pas
être en mesure d'être aussi précis avec la partie décimale.
Et qui est vraiment le limitation d'un flotteur.
>> Flotteurs ont un problème de précision.
Nous avons seulement 32 bits à travailler avec, donc nous ne pouvons
être si précis avec notre partie décimale.
Nous ne pouvons pas avoir nécessairement une décimale rôle précis à 100 ou 200 chiffres,
parce que nous avons seulement 32 bits pour travailler avec.
Voilà donc une limitation d'un flotteur.
>> Maintenant, heureusement, il ya un autre type de données appelée
double, qui a quelque peu traite de ce problème.
Doubles, comme flotteurs, sont également utilisés pour stocker des nombres réels, ou virgule flottante
des valeurs.
La différence est que doubles sont à double précision.
Ils peuvent tenir 64 bits de données, ou huit octets.
Qu'est-ce que cela veut dire?
Eh bien, cela signifie que nous pouvons être beaucoup plus précise avec le point décimal.
Au lieu d'avoir pi à sept endroits peut-être, avec un flotteur,
nous pouvons peut-être avoir à 30 places.
Si ce qui est important, vous voudrez peut- d'utiliser un double au lieu d'un flotteur.
Fondamentalement, si vous êtes tout travail où
ayant une très longue décimale et beaucoup de précision est importante,
vous voulez probablement utiliser une double overfloat.
Maintenant, pour la plupart de votre travail dans CS50, un flotteur devrait suffire.
Mais ne savent que les doubles existent en tant que façon de traiter avec la précision un peu
problème en vous donnant un supplément de 32 bits à travailler avec vos numéros.
>> Or, ce ne sont pas un type de données.
Ceci est un type.
Et il a appelé vide.
Et je parle à ce sujet ici parce que nous avons probablement
vu à quelques reprises déjà dans CS50.
Et vous demandez peut-être ce qu'il est tout au sujet.
>> Donc vide est un type.
Il existe.
Mais il est un type de données.
>> Nous ne pouvons pas créer une variable de type annuler et d'attribuer une valeur.
Mais les fonctions, par exemple, peut avoir un type de retour void.
Fondamentalement, si vous voyez une fonction qui a un type de retour void,
cela signifie qu'il ne renvoie pas de valeur.
Pouvez-vous penser d'une commune fonction que nous avons utilisé jusqu'à présent
dans CS50 qui ne retourne pas une valeur?
>> Printf est un.
Printf fait pas réellement rien à vous retourner.
Elle imprime quelque chose à la écran, et il est fondamentalement
un effet secondaire de ce fait printf.
Mais il ne vous donne pas une valeur de retour.
Vous ne capturer et stocker le résultat dans une variable pour l'utiliser plus tard.
Elle imprime juste quelque chose à l'écran et vous avez terminé.
>> Donc, nous disons que printf est une fonction de vide.
Il ne renvoie rien.
>> La liste de périmètre d'un fonction peut également être vide.
Et vous avez vu aussi que un peu dans CS50 trop.
Void main Int.
Est-ce que sonner une cloche?
Fondamentalement, ce que cela signifie est que principale ne prend pas de paramètres.
Il n'y a pas que l'argument se passé dans principal.
Maintenant, plus tard, nous voyons qu'il ya un moyen de transmettre des arguments en principal,
mais jusqu'à présent, ce que nous avons vu est nulle principal int.
Principale juste ne prend pas d'arguments.
Et donc nous précisons que en disant vide.
Nous sommes juste en étant très explicite sur le fait
qu'il ne prend pas d'arguments.
>> Donc pour l'instant, il suffit de dire que nulle essentiellement
devrait simplement servir comme un espace réservé pour vous de penser à rien.
Il est pas vraiment faire quelque chose.
Il n'y a pas de valeur de retour ici.
Il n'y a pas les paramètres ici.
Il est vide.
Il est un peu plus complexe que cela.
Mais cela devrait suffire pour la plus grande partie du cours.
Et nous espérons que vous avez maintenant un peu peu plus d'un concept de ce vide est.
>> Donc, ceux qui sont les cinq types que vous aurez rencontre qui sont intégrés à C.
Mais dans CS50 nous avons aussi une bibliothèque.
CS50.h, que vous pouvez inclure.
Et qui vous fournira avec deux types supplémentaires
que vous serez probablement en mesure à utiliser sur vos missions,
ou tout simplement travailler généralement programmation.
>> Le premier d'entre eux est bool.
Ainsi, le type de données booléen, bool, est utilisé pour les variables
qui va stocker une valeur booléenne.
Si vous avez jamais entendu ce terme avant, vous
pourrait savoir qu'un booléenne valeur est capable de seulement
la tenue de deux valeurs distinctes différentes.
Vrai et faux.
Maintenant, ce semble assez fondamentale, non?
Il est un peu une surprise que cette inexistant dans C comme il est intégré.
Et dans de nombreuses langues modernes, bien sûr, les booléens
sont un type de données standard par défaut.
Mais en C, ils sont en fait pas.
Mais nous avons créé pour vous.
Donc, si jamais vous avez besoin pour créer une variable dont le type est bool,
juste être sûr de #inclure CS50.h au début de votre programme,
et vous serez en mesure de créer variables de type BOOL.
>> Si vous oubliez de #inclure CS50.h, et vous commencez à utiliser des variables de type booléen,
vous pourriez rencontrer quelques problèmes quand vous compilez votre programme.
Il suffit donc être à l'affût pour cela.
Et peut-être vous pouvez simplement fixer le problèmes de livres, y compris CS50.h.
>> L'autre grand type de données que nous fournir pour vous dans la bibliothèque CS50
est une chaîne.
Donc ce qui est une chaîne?
Les chaînes sont vraiment juste des mots.
Ils sont des collections de caractères.
Ils sont des mots.
Ils sont des phrases.
Ils sont paragraphes.
Peut-être des livres entiers, même.
>> Très courte à très longue série de caractères.
Si vous avez besoin d'utiliser des chaînes, par exemple, pour stocker un mot,
juste être sûr d'inclure CS50.h au début de votre programme
de sorte que vous pouvez utiliser le type de chaîne.
Et puis, vous pouvez créer des variables dont le type de données est une chaîne.
Maintenant, plus tard dans le cours, Nous verrons également que ce est
pas toute l'histoire, que ce soit.
Nous allons rencontrer des choses structures dites,
qui vous permettra de groupe ce qui peut être un entier et une chaîne en une seule unité.
Et nous pouvons l'utiliser pour un but, qui pourrait
utile plus tard dans le cours.
>> Et nous apprendrons aussi sur les types définis,
qui vous permettent de créer vos propres types de données.
Nous ne devons pas à vous soucier à ce sujet pour l'instant.
Mais il suffit de savoir que ce est quelque chose sur l'horizon,
qu'il ya beaucoup plus à cet ensemble ce genre de chose que je vous dis simplement
maintenant.
Alors, maintenant que nous avons appris peu de données de base
les types et les types de données CS50, nous allons parler de la façon de travailler avec des variables
et créer en utilisant ces types de données dans nos programmes.
Si vous voulez créer une variable, tout ce que vous devez faire est de deux choses.
>> D'abord, vous devez lui donner un type.
La deuxième chose que vous devez à faire est de lui donner un nom.
Une fois que vous avez fait cela et giflé un virgule à la fin de cette ligne,
vous avez créé une variable.
>> Alors, voici deux exemples.
Numéro Int; lettre omble ;.
Qu'ai-je fait ici?
Je ai créé deux variables.
>> La première, la variable de nom est le numéro.
Et le numéro est capable de tenir entier saisir des valeurs, car son type est int.
Lettre est une autre variable qui peut contenir des caractères
car son type de données est char.
>> Assez simple, non?
Si vous vous trouvez dans une situation où
vous devez créer plusieurs les variables de même type,
vous ne devez spécifier le nom du type une fois.
Ensuite, il suffit énumérer autant de variables de ce type que vous avez besoin.
>> Donc, je ne pouvais par exemple, ici dans cette troisième ligne de code,
dire int hauteur ;, nouvelle ligne.
Largeur int ;.
Et ce serait trop de travail.
Je serais encore obtenir deux variables appelées hauteur et en largeur, dont chacune
est un nombre entier.
Mais je suis autorisé à, les choses à la syntaxe C, consolider en une seule ligne.
Int hauteur, la largeur; C'est la même chose.
Je ai créé deux variables, l'un appelé une hauteur appelée largeur, qui tous deux
sont capables de tenir valeurs de type integer.
>> De même ici, je peux créer trois valeurs à virgule flottante à la fois.
Je peux peut-être créer une variable appelé racine carrée de 2--
qui vraisemblablement finira tenir le point-- flottante
que la représentation de la place racine de 2-- racine carrée de 3, et pi.
Je pourrais l'ai fait sur trois lignes distinctes.
Float, racine carrée 2; Float racine carrée 3; flotter pi; et que ce serait trop de travail.
>> Mais encore une fois, je ne peux consolider cela en une seule ligne de code.
Rend les choses un peu court, pas aussi maladroit.
>> Maintenant, en général, il est bon que la conception à la déclarer une variable lorsque vous en avez besoin.
Et nous allons parler un peu peu plus à ce sujet
plus tard au cours lorsque nous discutons de la portée.
Donc, ne pas nécessairement besoin de créer tous vos variables
au début du programme, certaines personnes auraient pu le faire par le passé,
ou était certainement un très commune il ya les pratiques de codage de nombreuses années
lorsque l'on travaille avec C. Vous pourriez juste vouloir créer un droit variable lorsque
vous en avez besoin.
Bien.
Nous avons donc créé des variables.
Comment pouvons-nous les utilisons?
Après, nous déclarons une variables, nous ne devons pas
pour spécifier le type de données de cette variable plus.
En fait, si vous le faites, vous pourriez retrouver avec des conséquences étranges
que nous allons sorte de gommer pour le moment.
Mais il suffit de dire, des choses étranges vont
à commencer à se produire si vous inadvertance re-déclarer des variables avec le même nom
encore et encore.
>> Donc ici, je dois quatre lignes de code.
Et je dois un couple de commentaires là juste indiquant
ce qui se passe sur chaque ligne, juste pour aider
vous êtes situé dans ce qui se passe.
Numéro Donc int ;.
Vous avez vu que précédemment.
Voilà une déclaration de variable.
>> Je avons maintenant créé une variable nombre qui est appelé
capable de maintenir les valeurs de type entier.
Je l'ai déclaré il.
>> La ligne suivante je assigner une valeur de nombre.
Nombre égal à 17.
Ce qui s'y passe?
Je mets le numéro 17 à l'intérieur de cette variable.
>> Donc, si jamais je puis imprimer ce le contenu de nombre sont plus tard,
ils me disent qu'il est 17.
Donc, je l'ai déclaré une variable, et puis je l'ai assigné.
>> Nous pouvons répéter le processus nouveau avec la lettre char ;.
Voilà une déclaration.
Lettre égale le capital H. Ceci est une mission.
Assez simple, aussi.
>> Maintenant, ce processus pourrait semble un peu ridicule.
Pourquoi faisons-nous ça en deux lignes de code?
Y at-il une meilleure façon de le faire?
En fait, il est.
Parfois, vous pourriez voir ce appelée initialisation.
Il est quand vous déclarez une variable et attribuer une valeur à la fois.
Ceci est en fait une jolie chose commune à faire.
Lorsque vous créez une variable, vous avez normalement veux qu'il y ait une certaine valeur de base.
Même si elle est 0 ou quelque chose.
Vous venez de vous donnez une valeur.
>> Vous pouvez initialiser une variable.
Int nombre est égal à 17 est le même que les deux premières lignes de code en haut.
H est égal à Char lettre est la même que la troisième et quatrième lignes de code ci-dessus.
La livraison la plus importante ici lorsque nous déclarer et assigner
variables est après nous avons déclarée, avis
Je ne suis pas en utilisant à nouveau le type de données.
Je ne dis pas int nombre est égal à 17 sur la deuxième ligne de code, par exemple.
Je dis juste que nombre équivaut à 17.
>> Encore une fois, re-déclarer une variable après vous avez déjà déclaré il peut conduire
dans une certaine conséquence bizarre.
Il suffit donc de faire attention à cela.
>> Je suis Doug Lloyd.
Et cela est CS50.