Информатика, Цикл вопросов при подготовке к экзамену |
1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!
Информатика, Цикл вопросов при подготовке к экзамену |
Айра |
6.01.2008 1:17
Сообщение
#1
|
Профи Группа: Пользователи Сообщений: 731 Пол: Женский Репутация: 25 |
Привет! Очень надеюсь на вашу помощь в разжевывании некоторых понятий
Итак приступим-с: 1. Банально.. Свойства алгоритма. Массовость - це значит, что любой алгоритм должен решать какую-то конкретную задачу из определенного класса задач, причем такой класс либо бесконечен, либо конечен, но очень "баальшой".. Так вот.. А можно это сказать как-то по-человечески и с примером? 2. Тут мне б тоже пример хотелось: а) перечислимый тип (а сюда пойдет, например, тип месяцы(-а))) с элементами январь, февраль и т.д.?) б) ссылочный тип - знаю, что значение любого ссылочного типа - это адрес памяти, но в живую не встречала.. познакомите?)) Пока все, но думаю еще вопросы появятся.. Я только начала подготовку.. Заранее пасибо)) Сообщение отредактировано: Айра - 6.01.2008 1:19 |
мисс_граффити |
6.01.2008 1:30
Сообщение
#2
|
просто человек Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: 55 |
1. По-человечески...
Алгоритм совершения покупок в супермаркете должен позволять тебе купить как хлеб, так и мыло. 2. а) Перечислимый... ну, обычно под этим понимают не только перечисляемый (месяцы; товары в конкретном магазине; книжки на полке), но и стандартные типы языка, элементы которых могут быть перечислены в определенном порядке (например, char - может... integer - побольше, но все же мы можем записать 1,2,3...MaxInt. а со строками так не получится... хотя, конечно, в условиях ограниченности длины строки/разрядной сетки для чисел это условность). Это понятие обычно используется при выборе типа переменной в таких операторах, как for <переменная>, case <переменная> б) какого рода пример тебе бы хотелось? код? или жЫзненный? -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
Айра |
6.01.2008 1:36
Сообщение
#3
|
Профи Группа: Пользователи Сообщений: 731 Пол: Женский Репутация: 25 |
2а) так месяцы подходят? ура)) алгоритм построения типа понятен.. я забыла уточнить, что речь идет о конструируемых типах, т.е. стандартные сейчас не пойдут, но все равно спасибо))
2б) а я хочу все и сразу ) Добавлено через 17 мин. Да по-поводу 1-го: теперь на более близком к теме языке - если я пишу программку для сортировки массива, то она должна сортировать не только один какой-то понравившийся мне массив)) Сообщение отредактировано: Айра - 6.01.2008 1:38 |
мисс_граффити |
6.01.2008 1:54
Сообщение
#4
|
просто человек Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: 55 |
2а) А почему нет?
Вот так например: type 2б) жЫзненно: Представь, что ты белка. Ты нашла орех, но сейчас есть его не хочешь. Таскать за собой - тоже как-то глупо. Ты его прячешь. И тут понимаешь, что можешь забыть, куда спрятала! Пишешь записочку: "Орех лежит под дубом". Носить с собой маленькую записочку удобнее, чем большой орех. Теперь ты находишь еще один орех. Можно поступить так же, но тогда придется носить с собой 2 записочки. Ты - умная белка, поэтому прячешь второй орех вместе с первой записочкой, а новую носишь с собой. В итоге у тебя с собой 1 записка: "Орех под березой". Если ты раскопаешь его, найдешь информацию об орехе, который под дубом. Так же можно поступить с 10 орехами - а носить придется по-прежнему всего одну записку. (это у нас получился линейный список, а записки здесь играют роль ссылочного типа) Если нам понадобится описать эти типы, получится что-то вроде: type -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
Айра |
6.01.2008 2:25
Сообщение
#5
|
Профи Группа: Пользователи Сообщений: 731 Пол: Женский Репутация: 25 |
Спасибо!! Теперь я умная белка)))
Добавлено через 7 мин. ..хотя надо проверить: Цитата а записки здесь играют роль ссылочного типа получается за последнюю ссылку я могу вытащить цепочку из всех остальных. Перенесем на программирование: может получиться так, что у меня есть ссылка на какую-то ячейку в памяти, в нужный момент я ее использую и достаю от туда, скажем, какое-то большое число (у меня их много и нерационально постоянно все "помнить"), а может получиться так, что я достану от туда еще одну ссылку, перейду по ней - еще одну, потом еще, еще, и только потом число (хотя тут что-то не мне не нравится (зачем мне куча ссылок, если можно сразу одну))) |
мисс_граффити |
6.01.2008 2:43
Сообщение
#6
|
просто человек Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: 55 |
Цитата получается за последнюю ссылку я могу вытащить цепочку из всех остальных. да. но попутно будешь получать и что-то еще (находить вместе с записками орехи)! то есть, перенося на программирование... обычно в списках используются элементы, состоящие из нескольких полей (будем считать для простоты, что из 2 - информационного и ссылки на следующий элемент). если тебе не нужно значение информационного поля какого-то элемента, ты можешь им не пользоваться, и построить длиииинную цепочку: el:=((el^.next)^.next)^.next; а можешь воспользоваться... например, посчитать сумму. Цитата а может получиться так, что я достану от туда еще одну ссылку, перейду по ней - еще одну, потом еще, еще, и только потом число может... возвращаясь к белкам - если ты будешь класть в тайники одни записочки. то есть 10 тайников - и всего один орех. смысл? -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
Айра |
6.01.2008 2:57
Сообщение
#7
|
Профи Группа: Пользователи Сообщений: 731 Пол: Женский Репутация: 25 |
Цитата смысл? Вот и я о том же.. Когда про поля сказала, все окончательно встало на свои места))))) Пойду учить следующие вопросы: Целочисленные типы. способ хранения целочис.. |
andriano |
6.01.2008 11:01
Сообщение
#8
|
Гуру Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: 28 |
У списка есть недостаток перед массивом - нельзя сразу перейти к элементу с нужным номером: приходится перебирать все элементы с начала. Тут ничего не поделаешь - зато у списка есть другие преимущества перед массивом. Поэтому длиная цепочка ссылок - всего лишь способ добраться до нужного элемента (как знать, вдруг белке захотелось полакомиться именно орехом урожая 1894 года?).
Еще один пример на ссылку на ссылку (мне привычнее употреблять термин "адрес"). В Паскале не очень вразумительно сделаны указатели, поэтому лучше на примере Си. Хочется иметь строки неограниченной длины. Но хочется также иметь тип данных фиксированной длины, например для того, чтобы можно было сделать из них массив. Как совместить эти требования? Например, использовав в качестве типа адрес первого символа строки, а конец строки пометить каким-либо ограничителем, скажем, символом с кодом 0. То есть строка у нас на самом деле имеет тип указателя. Теперь нам нужно, чтобы некая процедура возвращала строку. Чтобы передать строку внутрь процедуры достаточно переда ее значение (в нашем случае это адрес), а чтобы получить обратно - нужен адрес: для того, чтобы записать по этому адресу значенние переменной. Вот мы и передаем в процедуру адрес указателя на первый символ строки. А процедура записывает по этому адресу адрес тела уже существующей строки. Если бы перед нами стояла задача обойтись единственным адресом, пришлось бы дополнительно резервировать память и создавать копию строки вместо того, чтобы использовать адрес уже существующей. Сообщение отредактировано: andriano - 6.01.2008 11:03 |
volvo |
6.01.2008 11:49
Сообщение
#9
|
Гость |
Цитата В Паскале не очень вразумительно сделаны указатели, поэтому лучше на примере Си. "Плохому танцору..." (С) Народная мудрость...Си не надо приплетать... Тут вообще-то разговор о Паскале (хотя тебе, похоже, что-либо говорить вообще бесполезно...) Пример, приближенный к Паскалю: Есть некий список... "Голова" (head) этого списка - естественно указатель на первый элемент... И мне надо написать процедуру, добавляющую в список еще один элемент, в начало (перед первым)... Что делаем? Ну, добавить-то в общем не проблема, однако head изменится, ибо он теперь должен указывать на другой элемент... Но ведь если я просто сменю значение head-а в процедуре: type, в вызывающей программе оно не изменится (вариант с использованием Var не предлагать, ибо пример - только для учебных целей. Оля спросила про указатель на указатель, я привел пример, показывающий такую ситуацию). Что делать? Один из вариантов - передать в процедуру не сам head, а указатель на него...
Теперь работа с "головой списка" осуществляется через указатель на него, следовательно, имеем уже "указатель на указатель на первый элемент". Сообщение отредактировано: volvo - 7.01.2008 0:12 |
Айра |
6.01.2008 18:39
Сообщение
#10
|
Профи Группа: Пользователи Сообщений: 731 Пол: Женский Репутация: 25 |
А можно я попробую прокомментировать код (попытаемся проверить, насколько я поняла ):
Вот такие мысли сумасшедшего))) Сообщение отредактировано: Айра - 6.01.2008 18:41 |
volvo |
7.01.2008 0:13
Сообщение
#11
|
Гость |
Оля, я добавил комментарии постом выше...
|
Айра |
8.01.2008 3:16
Сообщение
#12
|
Профи Группа: Пользователи Сообщений: 731 Пол: Женский Репутация: 25 |
Еще пара вопросов:
1. Регулярный тип - то бишь массивы.. прочитала что в качестве элементов массива можно использовать элементы любого типа кроме файлового.. не поверила)) на всякие извращения вида:
компилятор не ругается.. Конечно дальше я еще не придумала, что делать с такими массивами, но, внимание, вопрос: почему не льзя)), потому что не имеет смысла (дальнейшая работа не возможна) или что? 2. Опять указатели.. или ссылки.. В общем дожили.. Есть ссылочный тип (он конструируемый), а есть указательный (он предопределенный), получается разница между ними только (или нет) в предопределенности и конструируемости? А как выглядит предопределенный указатель (^integer )? Сообщение отредактировано: Айра - 8.01.2008 3:18 |
volvo |
8.01.2008 9:50
Сообщение
#13
|
Гость |
1. Смотрим здесь: массив файлов
2. Цитата получается разница между ними только (или нет) в предопределенности и конструируемости? Вообще-то ссылками называют переменные, которые указывают на какой-то конкретный тип, а указателем (вернее, обобщенным указателем) - переменные типа Pointer. Так что ^integer - строго говоря - это тоже ссылка... А разница между ними (между указателем и ссылками по этой классификации) - в том, что ссылка совместима по присваиванию только с указателем или со ссылкой на тот же самый (или производный, при работе с объектами) тип, а указатель - совместим с любым адресным типом. То есть,type Ну, и здесь посмотри еще: Все о динамических структурах данных. |
Айра |
8.01.2008 16:36
Сообщение
#14
|
Профи Группа: Пользователи Сообщений: 731 Пол: Женский Репутация: 25 |
[offtop] 1. оказывается не одну меня это заинтересовало)) это один из этапов обучения программированию? [/offtop]
2. теперь все ясно Спасибо! |
Текстовая версия | 10.06.2024 14:46 |