Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.03.2009, 15:06   #1
Вадим Буренков
Участник клуба
 
Аватар для Вадим Буренков
 
Регистрация: 06.03.2009
Сообщений: 1,346
Вопрос Для чего нужны типы данных?

Зачем их использовать? К примеру cделаем тип данных 'Car', состоящий из
названия, номера и года выпуска.
Код:
Type
 Tcar = Record
   Name: String;
   Number: integer;
   Year: integer;
end;
Var
Car: TCar;
В самой программе я смогу обратиться к переменным так:
Код:
Car.Name:='Volga';
Так зачем использовать тип данных если вместо него можно использовать
обыкновенные переменные?
Код:
Var
   CarName: String;
   CarNumber: integer;
   CarYear: integer;
Вадим Буренков вне форума Ответить с цитированием
Старый 09.03.2009, 15:14   #2
AlenkaM
 
Регистрация: 08.03.2009
Сообщений: 9
По умолчанию

В данном примере разницы никакой. Используй тот метод, который тебе нравится больше. А вот если тебе дана не одна машина, а несколько, и для каждой надо сохранить название, номер и год выпуска, тогда легче сделать один массив типа TCar (Car: Array [1..nmax] of TCar), чем создавать 3 массива CarName, CarNumber и CarYear.
Ну, это моё мнение
AlenkaM вне форума Ответить с цитированием
Старый 09.03.2009, 15:25   #3
Вадим Буренков
Участник клуба
 
Аватар для Вадим Буренков
 
Регистрация: 06.03.2009
Сообщений: 1,346
По умолчанию

Но тогда можно использовать какой код: (дано 3 машины)
Код:
Var
   CarName: array[1..3] of String;
   CarNumber: array[1..3] of integer;
   CarYear: array[1..3] of integer;
Может кто приведет пример, где без типов никак не обойтись?

Последний раз редактировалось Вадим Буренков; 09.03.2009 в 15:29.
Вадим Буренков вне форума Ответить с цитированием
Старый 09.03.2009, 15:48   #4
capta1n
Форумчанин
 
Аватар для capta1n
 
Регистрация: 06.12.2008
Сообщений: 613
По умолчанию

неужели Вы не считаете, что записи использовать и удобнее и легче: зачем? так чтобы облегчить себе работу и понимание и читаемость, запись - это несколько логически связанных между собой компонент, объединенных в одно целое, к которому можно обращаться и выполнять некие операции - так же массив записей очень удобен, намного удобнее, чем вариант с кодом машины. Потом, если вы знаете, что такое динамическая структура, то такая структура, как линейный список может описываться только записью и ничем другим, ведь в запись можно затолкнуть элементы разного типа, что и отличает их от массивов, и работать можно сразу с несколькими полями когда нужно, так же есть записи с вариантами выбора case of - тоже оригинальная вещь, которую невозможно организовать нормально с массивами и многое другое - все эти положительные стороны типа RECORD должны использоваться в программе, где они этот тип удобнее
capta1n вне форума Ответить с цитированием
Старый 09.03.2009, 15:48   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Вадим Буренков, да Вы поймите, что типы данных были придуманы в ЯП только для того, чтобы облегчить работу, модификацию и отсеивание ошибок ещё на этапе компиляции..
По большому счёту вместо любого типа данных можете работать с областью памяти (точнее с данными, которые там находятся)....

вот, например, для чего УДОБНО использовать свои типы (например, записи.
1) типизированные файлы
fCar : file of Car;
записать данные об одной машинке:
Write(fCar, Car1);
прочитать:
Read(fCar, Car1);
попробуйте обойтись без типов - у Вас проще получится? :-)

2) есть массив автомобилей
var
AutoPark : array[1..N] of Car;
TempCar : Car;
поменять местами два элемента массива (например i-й и j-й) - это нужно, например, для сортировки!
Код:
TempCar := AutoPark[i];
AutoPark[i] := AutoPark[j];
AutoPark[j] := TempCar;
просто. Наглядно. И если изменится тип - то код не поменяется! А теперь напишите то же самое без использования типов?! А то, что в записи может быть не три поля, а 20, 30 полей Вы не допускаете?!


3) А если нужна процедура/фукнция в которую передаётся или из которой возращается нужный тип?!
Например, если у вас НЕСКОЛЬКО МАССИВОВ с автопарками.
так будет выглядеть функция
function GetMaxYear( CarArray : TArrayCars) : Car;
а как у Вас?

4) а если завтра добавится тип кузова и объём двигателя - будем перелопачивать полпрограммы?
или только описание и ввод/вывод? :-)

5) А работа с динамическими структурами?!?...

Короче, Вы заблуждаетесь!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 09.03.2009, 15:52   #6
capta1n
Форумчанин
 
Аватар для capta1n
 
Регистрация: 06.12.2008
Сообщений: 613
По умолчанию

вот допустим описание однонаправленного линейного списка:

Код:
link = ^linelink;
linelink = record
               x : integer;
               y : real;
               c : char;
               str : string[60];
               next : link
             end;
link - ссылка на следующий еще неизвестный элемент, которого нет. дштл - это адрес, который может быть получен созданием в динамической памяти нового элемента списка, а элементы списка связаны между собой как раз адресами, то есть указателями на следующий элемент, а полей может быть несколько - вот тут только record
capta1n вне форума Ответить с цитированием
Старый 09.03.2009, 15:55   #7
Вадим Буренков
Участник клуба
 
Аватар для Вадим Буренков
 
Регистрация: 06.03.2009
Сообщений: 1,346
По умолчанию

Цитата:
Короче, Вы заблуждаетесь!
Я не пытался доказать, что типы данных не нужны, а задавал вопрос: ''для чего они нужны?''
Вадим Буренков вне форума Ответить с цитированием
Старый 09.03.2009, 16:20   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

т.е. вышеприведённые доводы не помогли Вам понять, для чего нужны типы данных?!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 09.03.2009, 21:10   #9
Вадим Буренков
Участник клуба
 
Аватар для Вадим Буренков
 
Регистрация: 06.03.2009
Сообщений: 1,346
По умолчанию

Цитата:
т.е. вышеприведённые доводы не помогли Вам понять, для чего нужны типы данных?!
Почему? Что-то понять помогли.
Только одно.....
Код:
записать данные об одной машинке:
Write(fCar, Car1);
прочитать:
Read(fCar, Car1);
Я правильно понял, что в типизированных файлах данные сохраняются не в виде текста,т.к. в данном случае Car1 - тип данных включающий в себя название, номер и год выпуска и.т.д., и прочитать данные можно только из программы?
И еще одно.....
Что такое 'динамическая структура'?

Последний раз редактировалось Вадим Буренков; 09.03.2009 в 21:16.
Вадим Буренков вне форума Ответить с цитированием
Старый 09.03.2009, 21:42   #10
lexus_ilia
Студентик :)
Пользователь
 
Аватар для lexus_ilia
 
Регистрация: 29.09.2008
Сообщений: 84
По умолчанию

Цитата:
Сообщение от Вадим Буренков Посмотреть сообщение
Что такое 'динамическая структура'?
Динамическая структура-это такая структура, память под которую выделяется во время работы программы, а не во время компиляции.
Я не вижу особого смысла много расписывать Вам на форуме, т.к. Вы это можете в любом учебнике почитать, так что сидите и читайте...
lexus_ilia вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Символьные типы данных ...Оленька... Паскаль, Turbo Pascal, PascalABC.NET 5 14.06.2012 13:43
процедурные типы данных Granus Общие вопросы Delphi 2 14.03.2009 19:52
Типы данных nedden Помощь студентам 2 12.11.2008 17:18
Типы данных??? Рустам Общие вопросы Delphi 10 08.11.2007 08:03
Про типы данных Smorodin Общие вопросы .NET 1 02.10.2007 15:40