IPB
ЛогинПароль:

> Правила раздела!

1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!

> Информатика, Цикл вопросов при подготовке к экзамену
сообщение
Сообщение #1


Профи
****

Группа: Пользователи
Сообщений: 731
Пол: Женский

Репутация: -  25  +


Привет! Очень надеюсь на вашу помощь в разжевывании некоторых понятий smile.gif
Итак приступим-с:

1. Банально.. Свойства алгоритма. Массовость - це значит, что любой алгоритм должен решать какую-то конкретную задачу из определенного класса задач, причем такой класс либо бесконечен, либо конечен, но очень "баальшой".. Так вот.. А можно это сказать как-то по-человечески и с примером?

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


Пока все, но думаю еще вопросы появятся.. Я только начала подготовку..
Заранее пасибо))

Сообщение отредактировано: Айра -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гость






Цитата
В Паскале не очень вразумительно сделаны указатели, поэтому лучше на примере Си.
"Плохому танцору..." (С) Народная мудрость...

Си не надо приплетать... Тут вообще-то разговор о Паскале (хотя тебе, похоже, что-либо говорить вообще бесполезно...)

Пример, приближенный к Паскалю:
Есть некий список... "Голова" (head) этого списка - естественно указатель на первый элемент... И мне надо написать процедуру, добавляющую в список еще один элемент, в начало (перед первым)... Что делаем? Ну, добавить-то в общем не проблема, однако head изменится, ибо он теперь должен указывать на другой элемент... Но ведь если я просто сменю значение head-а в процедуре:

type
plist = ^list;
list = record
data: item_type;
next: plist;
end;
procedure add_first(head: plist; item: item_type);
...
, в вызывающей программе оно не изменится (вариант с использованием Var не предлагать, ибо пример - только для учебных целей. Оля спросила про указатель на указатель, я привел пример, показывающий такую ситуацию).

Что делать? Один из вариантов - передать в процедуру не сам head, а указатель на него...


type
pplist = ^plist; // определяем тип - указатель на "указатель на элемент списка"
...

// передаем указатель на "голову" списка, чтобы изменение передалось в вызывающую программу...
procedure add_first(phead: pplist; item: item_type);
var new_item: plist;
begin
// выделяем память под переменную типа list,
// в new_item вернется указатель на выделенную область памяти
new(new_item);

// заполняем поля структуры:

// в поле data пишем само значение
new_item^.data := item;
// в поле next - то, что раньше было "головой" списка, но поскольку phead у нас не просто
// указатель, а "двойной" указатель - то разыменовываем его, в итоге получается присвоение
// "указателя на элемент списка" такому же "указателю на элемент списка"
new_item^.next := phead^;

// а теперь - изменяем "голову", первым элементом должен быть тот, который создан только что,
// операцией new, т.е. new_item... Обрати внимание - опять разыменование, чтобы "уравнять" типы
// указателей: pplist^ = plist
phead^ := new_item;
end;

...
// @ - берем адрес фактической переменной - "головы" списка, и передаем его
// для обработки в процедуру
add_first(@my_head, 10); { <--- Пример вызова }
...


Теперь работа с "головой списка" осуществляется через указатель на него, следовательно, имеем уже "указатель на указатель на первый элемент".

Сообщение отредактировано: volvo -
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Айра   Информатика   6.01.2008 5:17
мисс_граффити   1. По-человечески... Алгоритм совершения покупок в…   6.01.2008 5:30
Айра   2а) так месяцы подходят? ура)) алгоритм построения…   6.01.2008 5:36
мисс_граффити   2а) А почему нет? Вот так например: type Month= (j…   6.01.2008 5:54
Айра   Спасибо!! Теперь я умная белка))) Добавле…   6.01.2008 6:25
мисс_граффити   да. но попутно будешь получать и что-то еще (нахо…   6.01.2008 6:43
Айра   Вот и я о том же.. Когда про поля сказала, все ок…   6.01.2008 6:57
andriano   У списка есть недостаток перед массивом - нельзя с…   6.01.2008 15:01
volvo   "Плохому танцору..." (С) Народная мудрос…   6.01.2008 15:49
Айра   А можно я попробую прокомментировать код :rolleye…   6.01.2008 22:39
volvo   Оля, я добавил комментарии постом выше...   7.01.2008 4:13
Айра   Еще пара вопросов: 1. Регулярный тип - то бишь мас…   8.01.2008 7:16
volvo   1. Смотрим здесь: массив файлов 2. Вообще-то ссылк…   8.01.2008 13:50
Айра   1. оказывается не одну меня это заинтересовало))…   8.01.2008 20:36


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 17.08.2022 2:25
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name