Автор Тема: Урок общи: С++ типове данни  (Прочетена 2085 пъти)

0 Потребители и 1 Гост преглежда(т) тази тема.

onewg

  • Jr. Member
  • **
  • Благодарности
  • -Казани: 0
  • -Получени: 1
  • Публикации: 62
Урок общи: С++ типове данни
« -: 25 Февруари 2010, 18:46:17 »
Типове данни


За какво служат те. Както знаете всичко във компютъра е представено от
бинарни (двоични) стойности които стойности се преобразуват в числа,
букви и други специални знаци, буквите примерно за да могат да съществ-
уват в компютъра и да може да се оперира с тях, са представени във вид
на числа като за всяка буква в латинската азбука си има число, примерно
числото 65 е буквата а, за специалните символи също има определени числа.
Такъв вид кодиране се нарича (кодиране на буквените символи) а таблиците
по които се кодират (Таблица на кодировката) но за кодировките ще говор-
им в някой отделна тема.

Точно поради това смесено представяне на данните вътре, се налага да има
указател на типа данни, тоест някакъв механизъм които да укаже какъв тип
данни се съхраняват с цел адекватното буравене на даденият тип данни.
Ролята на такъв разделител на типа данни в С и С++ играят ключовите думи
за указване на типа данни.
Смисълът на самото указване на типа данни е за да не се получават логиче-
ки грешки в програмата, възникнали в процес на неправилно опериране с
данни, примерно две променливи съдържащи стойността на числото 65, число-
то 65 можеше да бъде буква а може и да е численна стойност.
Това налага типизирането в езика понеже ако липсваше можем да се опитаме
да извършим математически операции със букви чиито резултат би бил
неясен.
От друга страна пък могат да се извършват логически операции със две бук-
ви, например можем да сравним дали са еднакви а == ь = fause,
докато ако буравим с числен тип данни, ние можем и да сравняваме, тоест
да извършваме логически операции примерно да сравняваме а == ь, и да
извършваме математически примерно умножение а * ь понеже при численият
тип данни и двете операции са логични, и възможни.  
Указването на типа данни въвежда разделител, по този начин всеки тип
данни си има точното предназначение и операции било то математически или
логически които са коректни за съответният тип данни.
Самото указвазване се нарича типизиране, има силно типизирани езици и
слабо типизирани езици, С и С++ е един от най силно типизираният език,
и доста строг по отношение на типовете си..
При слабо типизираните езици самата машина решава с какъв тип данни рабо-
ти, това разтоварва програмиста от следенето на типовете, но натоварва
машината и гълта значително системен ресурс.
Като цяло С и С++ са едни от най машинно оптимизираните езици от високо
ниво..

onewg

  • Jr. Member
  • **
  • Благодарности
  • -Казани: 0
  • -Получени: 1
  • Публикации: 62
Отг:Урок общи: С++ типове данни
« Отговор #1 -: 25 Февруари 2010, 19:06:38 »
Като цяло типовете данни могат да се представят като два вида, тоест
такива които са вградени, и такива които са външни тоест добавени чрез
инклудване (добавяне) на библиотеки.
Но кой са вградените типове данни, и как да ги разпознаем.
Типовете които не изискват инклудване на някакъв хедър-файл или външна
библиотека се наричат вградени повечето пъти редактора ги оцветява за да
се различават, може да се каже че това са и ключови (важни) думи, думи
със специално предназначение в езика, такива думи не могат да се ползват
за друго освен да инициализират типа на променливите.
Пример за вградени думи са: int, double, char за тези думи не е необходи-
мо да се добавя външен файл, работят си без да инклудваме нищо.

Външните декларации се наричат външни понеже за да работят ние трябва да
инклуднем външен файл или библиотека..
Пример string не е вграден тип данни, и за да работи трябва да извикаме
хедър файла #include .
Без инклудването на този външен файл нашата декларация просто няма да
работи, понеже С++ няма да разпознае тази ключова дума..

Възможно е след време някой от външните типове за декларирането на типа
данни, да се поместят вътре и да са част от езика, за сега не е
част от езика..

Деклариране на тип.
Механизмът по които се декларират типовете в С++ е много прост, просто
пишем желаният тип, тоест заявяваме типа на данни който желаем да съдържа
и пишем името валидно име за нашата променлива.
               Пример:
               int  godini  // Декларира цялочисленна променлива с име godini
               float mypoint //Декларира с променлива плаваща запетая
               с име godini
               Така създаваме и указваме типа на нашата променлива.
        Повече за променливите можете да научите в урока (С++ Променливи)
Тук засягаме само типовете данни който могат да носят.

Дължина на стойността която може да се съдържа в променливите.

Тоест дължината на числата които се съдържат в променливите не е една
константна величина.
Тази величина зависи от много неща пример, от компилатора, колко бита е
машината за която е правен и така нататъка.

Примерно ако компилатора е за 8 битов микропроцесор нормално е
максималната стойност която да може да съдържа една променлива да е 8-сем
бита.
Ако машината е 64 битова нормалната дължина на една клетка оперативна па-
мет(колкото се заделя за една променлива от тип int) да е 64 бита..

Stilgar

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 0
  • -Получени: 42
  • Публикации: 1406
    • The Sietch
Отг:Урок общи: С++ типове данни
« Отговор #2 -: 25 Февруари 2010, 21:36:14 »
Тук вече нещата загрубяха. Размерите на типовете изобщо не са задължителни. Тея типове по какъв принцип реши да ги изброиш? Ако е само за вградените типове що си изброил string. Ако не що не обясняваш разликата и не даваш други примери за съставни типове.

onewg

  • Jr. Member
  • **
  • Благодарности
  • -Казани: 0
  • -Получени: 1
  • Публикации: 62
Отг:Урок общи: С++ типове данни
« Отговор #3 -: 26 Февруари 2010, 06:39:54 »
Да загрубяха, прав си за стринг се вика и ползва библиотека която е добавена после.

В момента обеснявам нещата който не се нуждаят дя се вика библиотека, точно те са вградените работи.

Това че махнаха разширението от .h не означава че са направили нещо кой знае какво ново..

Второ само някой променливи могат да се разширяват char например може докато int си е точно определена дължина..

#include
using namespace std;
Пробвай това да видим дали в инт ще събереш такова число, пробвай да заделиш повече клетки в инт..
int main ()
{
  int long stilgar = 424242342342342344;
  cout << stilgar;
  system( " pause " );

  return 0;
}

Stilgar

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 0
  • -Получени: 42
  • Публикации: 1406
    • The Sietch
Отг:Урок общи: С++ типове данни
« Отговор #4 -: 26 Февруари 2010, 08:36:35 »
дължината на int (че и на другите) e implementation dependent. Всеки дето прави компилатор си решава колко да е. Нищо не пречи да има абсолютно стандартен компилатор, които да поддържа такова число.