Модераторы: volvo877, Snowy, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите разобраться в Паскале, Помогите разобраться в Паскале 
V
    Опции темы
okaton
Дата 13.9.2007, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 213
Регистрация: 24.11.2006

Репутация: нет
Всего: нет



Доброго времени суток. Прошу о помощи. Пишу программу на c# (точнее переписываю, была написана когда-то на Паскале) и столкнулся срядом трудностей, я не очень понимаю этот язык (в смысле ТР). Помогите мне разобрать кусок кода:

Код

For m:=1 To 9 Do
        Begin
        e:=Word(Abs(Trunc(O_Data.Test[m,1])));
        O_Data.Test[m,4]:= I_Tab3[I_Data.Age].D_Zad[e,m];
        End;


где

Код

TYPE
     Ins_Data = Record
              Age     : Word;
              key     : word;
              Data_I  : Array[1..9,1..20] of Word;
     end;
     Ins_Tab3 = record
              D_Zad   : Array[0..20,1..10] of Single;
              end;
CONST
     Test     : Array[1..9] of tt = ('ДП','ИС','АН','ОБ','МЗ','ЧР','ПВ','ПО','ЗА');
     
VAR
     UserDat  :UserPar;
     tabl     : String[3];
     I_Data   : Ins_Data;
     O_Data   : Out_Data;
     I_Tab3   : Array[1..3] of Ins_Tab3;     
     F_Data   : File of Ins_Data;


Кстати что означает точка например между O_Data и Test
PM MAIL   Вверх
Rodman
Дата 13.9.2007, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: нет
Всего: 122



Код

For m:=1 To 9 Do {цикл}
Begin
        e:=Word(Abs(Trunc(O_Data.Test[m,1])));
{переменной e присваивается значение. O_Data.Test[m,1] означает что мы обращаемся к элементу массива Test (структуры O_Data) под индексами m и 1. потом при помощи Trunc - округляется это значение и при помощи Abs берется модуль от полученного числа. и полученное значение приводится к типу Word (для верочки)}
        O_Data.Test[m,4]:= I_Tab3[I_Data.Age].D_Zad[e,m];{O_Data.Test[m,4] надеюсь теперь понял кто такой.  I_Tab3[I_Data.Age].D_Zad[e,m] обращение  к значению массива  D_Zad[e,m] из таблицы значений I_Tab3 с индексом который хранится в структуре I_Data.Age}
End;

теперь переспрашивай
PM MAIL WWW Skype GTalk YIM MSN   Вверх
okaton
Дата 13.9.2007, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 213
Регистрация: 24.11.2006

Репутация: нет
Всего: нет



Rodman большое спасибо за ответ

Правильно ли я понял, что O_Data это класс в котором находится двумерный массив Test[m,1] ?

word это беззнаковая 16 Битная переменная (типа  ushort или int16).  Зачем это здесь используется?

Вот это я совсем не понял I_Tab3[I_Data.Age].D_Zad[e,m] :( что здесь происходит

Это сообщение отредактировал(а) okaton - 13.9.2007, 15:50
PM MAIL   Вверх
Rodman
Дата 13.9.2007, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: нет
Всего: 122



Цитата(okaton @  13.9.2007,  15:17 Найти цитируемый пост)
Правильно ли я понял, что O_Data это класс в котором находится двумерный массив Test[m,1] ?

это структура!!!
Код

O_Data   : Out_Data;
я не вижу где объявлена Out_Data, но учитывая специфику кода, то предполагаю что это структура...
Цитата(okaton @  13.9.2007,  15:17 Найти цитируемый пост)
Что такое word, 2 байтовая переменная (int16 или short)? Зачем это здесь используется?

это такой тип переменной в Pascal - вот... а используется чтобы привести к этому типу, если вдруг не помогли предыдущие операции...
Цитата(okaton @  13.9.2007,  15:17 Найти цитируемый пост)
Вот это я совсем не понял I_Tab3[I_Data.Age].D_Zad[e,m] :(

не мудренно...
I_Tab3 - переменная типа "массив структур" по коду видно что состоит из 3 записей. грубо говоря одна запись это строка в которой хранятся еще массивы, т.к. 
Код

     Ins_Tab3 = record
              D_Zad   : Array[0..20,1..10] of Single;
              end;
 то что после точки...
ну а I_Data - тоже структура у которой есть поле Age в котором хранится целое число...

блин не легко на пальцах (т.е. на буквах) такое рассказать!
PM MAIL WWW Skype GTalk YIM MSN   Вверх
okaton
Дата 13.9.2007, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 213
Регистрация: 24.11.2006

Репутация: нет
Всего: нет



Код

TYPE
Out_Data = record
              Test    : Array[1..9,1..7] of Single;
              B5_Shk  : Array[1..9] of Single;
              Zad     : Array[1..10] of Single;
              ko      : Single;
              kpo     : Single;
              ssz     : Single;
              x       : Single;
              ki      : Single;
              pg      : Single;
              ob_sz   : Single;
              i       : Integer;
              end;


А что такое структура?

По поводу O_Data.Test[m,4]:= I_Tab3[I_Data.Age].D_Zad[e,m]; я даже не знаю как сформулировать вопрос
В элементу массива Test[m,4] (которые перечислят цикл) структуры O_Data присваивается... что-то 
А почему для е (D_Zad[e,m]) нет цикла? каким образом может менятся е?
PM MAIL   Вверх
Rodman
Дата 13.9.2007, 16:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: нет
Всего: 122



Цитата(okaton @  13.9.2007,  16:08 Найти цитируемый пост)
А почему для е (D_Zad[e,m]) нет цикла? каким образом может менятся е? 

ну наверно не надо менять.. я же не знаю что должно происходить!
Цитата(okaton @  13.9.2007,  16:08 Найти цитируемый пост)
А что такое структура?

ну это типа объект. в качестве элементов этого объекта являются переменные разного типа (схоже с классом но тут нету методов... просто нужная структура переменных связанные одни словом - имененем структуры, и чтобы добраться до значения переменной в структуре нало использовать разделитель - точка)

смори
Код

TYPE {объявление какого то своего типа}
Out_Data = record {даем имя типа}
              Test    : Array[1..9,1..7] of Single; {массив в этом типе}
              B5_Shk  : Array[1..9] of Single; {еще один массив в этом типе} 
              Zad     : Array[1..10] of Single;{ ну понял} 
              ko      : Single; {ну и какие то переменные для чего то}
              kpo     : Single;
              ssz     : Single;
              x       : Single;
              ki      : Single;
              pg      : Single;
              ob_sz   : Single;
              i       : Integer;
              end;
это нужно для того чтобы ты для себя знал что группа переменных относятся к структуре, т.е. предназначены для одной цели...

Добавлено через 26 секунд
 smile  - валяй еще вопрос
PM MAIL WWW Skype GTalk YIM MSN   Вверх
okaton
Дата 13.9.2007, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 213
Регистрация: 24.11.2006

Репутация: нет
Всего: нет



И все-таки что же сдесь происходит O_Data.Test[m,4]:= I_Tab3[I_Data.Age].D_Zad[e,m];
что в конечном счете записывается в Test[m,4] ?

может какие-то еще данные нужны чтобы отследить D_Zad[e,m]

кстати e:=Word(Abs(Trunc(O_Data.Test[m,1]))); случаем не относится ли к D_Zad[e,m]

Это сообщение отредактировал(а) okaton - 13.9.2007, 16:44
PM MAIL   Вверх
Rodman
Дата 13.9.2007, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: нет
Всего: 122



Цитата(okaton @  13.9.2007,  16:37 Найти цитируемый пост)
кстати e:=Word(Abs(Trunc(O_Data.Test[m,1]))); случаем не относится ли к D_Zad[e,m]

ну получается ты вычисляешь индекс строки матрицы
Цитата(okaton @  13.9.2007,  16:37 Найти цитируемый пост)
И все-таки что же сдесь происходит O_Data.Test[m,4]:= I_Tab3[I_Data.Age].D_Zad[e,m];

из массива D_Zad выбирается одно значение, а этот массив хранится в I_Tab3 под номером I_Data.Age....


ааааааааааааааааааааааааа... 
PM MAIL WWW Skype GTalk YIM MSN   Вверх
okaton
Дата 13.9.2007, 20:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 213
Регистрация: 24.11.2006

Репутация: нет
Всего: нет



Спасибо большое. Начал вроде понимать. Пока что вопросов нет... 

Это сообщение отредактировал(а) okaton - 14.9.2007, 16:31
PM MAIL   Вверх
volvo877
Дата 14.9.2007, 09:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 2
Всего: 116



Модератор: Название темы должно отражать ее суть!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

Запрещается!

1. Обсуждать и делится взломанными компонентами или программным обеспечением

2. Публиковать ссылки на варез

3. Оффтопить

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0928 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.