Перейти к содержимому

Фото
- - - - -

Паскаль


  • Вы не можете создать новую тему
  • Please log in to reply
33 ответов в этой теме

#1 Тортилла

Тортилла

    добрый зайчег

  • Постоялец
  • 897 сообщений

Отправлено 02 января 2005 - 16:01

1) Способы обмена информацией между головной программой и подпрограммой.
2) Составить фрагмент алгоритма для нахождения N; N>0.
3) Что происходит в компьютере в результате декларации переменных?
4) Составить фрагмент алгоритма, проверяющий, является ли целое число A простым.
5) Схемы Джексона: элемент и структура.
6) Составить фрагмент программы, проверяющий, является ли треугольник с вершинами (x1y1)(x2y2)(x3y3) прямоугольным.
7) Общие отличительные черты процедур и функций.
8) Составить фрагмент программы, находящий все повторяющиеся элементы в стринге.
9) Порядок действий в выражении смешанного типа и тип результата.
10) Составить фрагмент программы для исключения из массива всех повторно встречающихся элементов. Было 131532 стало 1352.
11) Массив: декларация и индексация.
12) Составить фрагмент алгоритма, выделяющий из массива A (длиною N) и массива B (длиною M) общие элементы в массив С.

Если кто-то может помочь ответить на некоторые из них, то буду очень признателен.


NB! Речь идет о ПАСКАЛЕ.

Сообщение изменено: Milord (02 января 2005 - 23:04 )

  • 0

#2 Setor

Setor
  • Постоялец
  • 1 890 сообщений
  • Откуда:Эстония, Таллин

Отправлено 02 января 2005 - 16:42

Сегодня за тебя решить контрольную, а завтра может сдать экзамен?

Предложи свои варианты ответов, а мы уже поправим и дополним.
  • 0

#3 Тортилла

Тортилла

    добрый зайчег

  • Постоялец
  • 897 сообщений

Отправлено 02 января 2005 - 20:26

1) Поссылке и по адрусу + бла-бла. Ответ знаю.
2) Не имею ни малейшего понятия.
3) Для переменных выделяется место в памяти. Что еще сказать по этому поводу не знаю.
4) Не имею понятия.
5) Разберусь.
6) Сам никак не разберусь.
7) Пока не знаю, но информацию найду.
8) Не разберусь, ибо паскаля не знаю.
9) Выдается при действии в результат тот тип который включает в себя точное значение. Например: real + integer = real. На большее меня пока не хватает.
10) Хрен я это сам сделаю.
11) А вот это сделаю.
12) И это тоже не сделаю.
  • 0

#4 archi

archi
  • Пользователь
  • 84 сообщений
  • Откуда:Таллин

Отправлено 02 января 2005 - 20:56

3) можно уточнить, что, при определении статических переменных или глобальных - они создаются на хипе (heap), при объявлении локальных переменных в теле функции - на стеке (stack). Также можно сказать, что, в зависимости от типа переменной (а также от языка, компилятора и т.д.), переменная может либо быть проинициализированна нулем или дефолтовым значением, в может и не быть.
4) простое число делится только на единицу или на само себя. Самое простейшее - прокрутить цикл от 2 до (A - 1), и проверять с помощью MOD остаток от деления. Если есть время и желание - алгоритм можно бесконечно оптимизировать... например, выкинуть из проверки четные числа больше 2 и т.д.
6) прямоугольным является треугольник, у готорого сумма квадратов длин катетов будет равна квадрату гипотенузы. Можешь проверять для каждой стороны действительность этого условия. Длина сторон будет вычисляться по той же теореме. Я после пива больше ничего поумнее не придумаю, но жопой чую, тут можно тоже оптимизировать до умопомрачения, главное - на бумажке разрисовать ситуацию.
7) на эту тему можно сочинения писать и переливать из пустого в порожнее. Главное - знать разницу между процедурой и функцией. А именно, процедура не возвращает значение, подставляемое в место вызова, функция - возвращает. Все остальное - общие отличительные черты. Ключевые слова: модульность кода, локальные переменные, параметры, параметры на стеке, параметры по значению, ссылке. и т.д.
8) под элементами имеются ввиду символы или подстроки? В любом случае, знание паскаля не обязательно, нужен ведь просто алгоритм. Разрисуй строку на бумажке, мой тебе совет. И думай как искать. Я могу помочь попозже... сейчас просто телевизор зовет 8)
10) элементарнейшее занятие... копируешь из одного массива в другой, проверяя при этом, а нет ли в том массиве куда копируешь уже такого значения...
12) еще одно занятие - проще не бывает. Идешь в цикле по одному массиву, ищешь в другом элементы из первого... нашел - копируешь в трений, не нашел - выкидываешь...
  • 0

#5 V^v

V^v
  • Пользователь
  • 316 сообщений

Отправлено 02 января 2005 - 22:15

3) помимо стэка и хипа, переменная, к которой часто обращаются (например счетчик цикла), может находится в одном из общих регистров процессора, в языке C даже есть зарезервированное слово register, сейчас уже, однако, устаревшее в связи с и так хорошей оптимизацией компилятором.
6) если скалярное произведение равно нулю, то векторы перпендикулярны:
(x1-x2)*(x3-x2) + (y1-y2)*(y3-y2) == 0 // треугольник прямоугольный
12) удалить если есть повторы из А и Б, для каждого елемента А провести поиск (лучше бинарный) в Б, если такой елемент в Б найден, копировать в C
  • 0
int main(void)

#6 Setor

Setor
  • Постоялец
  • 1 890 сообщений
  • Откуда:Эстония, Таллин

Отправлено 03 января 2005 - 04:34

я уже решал часть подобных заданий (помогал знакомому из ТТУ - Вирумаа колледж)

кстати, о 10 и 12-м задании. если мне память не изменяет, то размер массива изменить нельзя после его объявления?
и по 8му заданию - Повторяющиеся элементы могут быть любой длины? т.е. исходная строка - "мамаелакашу", искомая строка - "ела" или искомой строкой может быть только 1 буква? Ф-ции вхождения подстроки в строку кажется в паскале нету. Но можно без проблем написать свою.

Milord, если есть проблемы с написанием кода, пиши, помогу или другие помогут.

ровно год назад устраивался я на работу и мне было назначено на определённое время, но к сожалению, в это время у меня был экзамен по паскалю. На экзамен было отведено 2 пары. Было около 14 заданий. Я всё решил за одну пару ~ на 98%. Моя же соседка и больше половины класса решили отсилу 3 задания, да и те неправильно... Мораль тут такова, что надо посещать уроки, думать своей головой и не надеяться на других. Мне понравился один твой ответ - "8) Не разберусь, ибо паскаля не знаю.".
  • 0

#7 slacker

slacker
  • Пользователь
  • 81 сообщений

Отправлено 03 января 2005 - 09:13

кстати, о 10 и 12-м задании. если мне память не изменяет, то размер массива изменить нельзя после его объявления?


там сразу обявляется максимальный размер массива, и он по-моему больше не меняется. а вот сколько конкретно будет элементов - зависит от тебя
  • 0

#8 Setor

Setor
  • Постоялец
  • 1 890 сообщений
  • Откуда:Эстония, Таллин

Отправлено 03 января 2005 - 10:40

slacker, ты повторил мои слова :)

Зато, кажется, можно менять размер записей, а это почти то же самое, что и массив... нужно почитать книжку.
  • 0

#9 slacker

slacker
  • Пользователь
  • 81 сообщений

Отправлено 03 января 2005 - 10:46

slacker, ты повторил мои слова :)

Зато, кажется, можно менять размер записей, а это почти то же самое, что и массив... нужно почитать книжку.

Просмотреть сообщение


масло масленное, меняя размер записеи массива - есть почти тоже самое что и массив. поясни ;)
  • 0

#10 Setor

Setor
  • Постоялец
  • 1 890 сообщений
  • Откуда:Эстония, Таллин

Отправлено 03 января 2005 - 10:55

slacker, из книжки:

Запись - это структура данных, состоящая из фиксированного числа компонентов, называемых полями записи. В отличие от массива, компоненты (поля) записи могут быть различного типа.

Добавлено в [mergetime]1104742552[/mergetime]

возможно, это тоже немножко не в тему...

Сообщение изменено: Setor (03 января 2005 - 10:55 )

  • 0

#11 PLUR

PLUR

    Techno, Sex and nothing more!

  • Постоялец
  • 1 682 сообщений
  • Откуда:[kopli.tln.ee]

Отправлено 03 января 2005 - 10:56

вот нах ваще этот паскаль в жизни нужен?

причем это же турбо паскаль! я прав? :)
  • 0
[ ++ :: D-Lab project //.com// :: ++ ]

#12 slacker

slacker
  • Пользователь
  • 81 сообщений

Отправлено 03 января 2005 - 11:06

slacker, из книжки:

slacker, записи - это уже другой тип!

Просмотреть сообщение


проехали, с типом record я плохо знаком, но по-моему либо ты что-то путаеш, либо мы не так друг друга поняли :)

Сообщение изменено: slacker (03 января 2005 - 11:07 )

  • 0

#13 Setor

Setor
  • Постоялец
  • 1 890 сообщений
  • Откуда:Эстония, Таллин

Отправлено 03 января 2005 - 11:07

PLUR, язык был создан в учебных целях, чтобы научить людей (студентов) программировать. Хотя, я считаю, что студентов нужно ещё со школы учить "С/C++/C#", а потом уже по вкусу - delphi, vbasic... больше толку будет ;)
  • 0

#14 slacker

slacker
  • Пользователь
  • 81 сообщений

Отправлено 03 января 2005 - 11:10

PLUR, язык был создан в учебных целях, чтобы научить людей (студентов) программировать. Хотя, я считаю, что студентов нужно ещё со школы учить "С/C++/C#", а потом уже по вкусу - delphi, vbasic... больше толку будет ;)

Просмотреть сообщение


начал с пхп, не так уж все и плохо ;)

Добавлено в [mergetime]1104743428[/mergetime]
походу уже флеим пошел :)
  • 0

#15 archi

archi
  • Пользователь
  • 84 сообщений
  • Откуда:Таллин

Отправлено 03 января 2005 - 11:13

потому и не знаком с записями, что начинал с ПХП 8) шутка...
языки всякие нужны, найдется и для паскаля применение... по крайней мере, лучше начинать с него, чем с бэйсика, как это некоторые делают...
  • 0

#16 PLUR

PLUR

    Techno, Sex and nothing more!

  • Постоялец
  • 1 682 сообщений
  • Откуда:[kopli.tln.ee]

Отправлено 03 января 2005 - 11:59

просто собралась кучка программеров и че то мне пытаются втереть! ну че много программ от вас сделанно?
  • 0
[ ++ :: D-Lab project //.com// :: ++ ]

#17 Тортилла

Тортилла

    добрый зайчег

  • Постоялец
  • 897 сообщений

Отправлено 03 января 2005 - 13:07

надо посещать уроки.. .

Просмотреть сообщение


Не люблю оправдываться, но здесь очень уж хочется это сделать.

1) Я так понимаю, что у тебя не Ксения Григорьева вела. У нее совершенно неважно, посещаешь ты уроки или нет, т.к. на них все равно ничего понять не возможно.
2) Паскаль, на сколько мне известно, мертвый язык, на котором уже давным давно ничего толкового не пишется. По крайней мере, все люди, кто его когда-либо изучали в один голос утверждают, что он им никогда с тех пор не понадобился.
3) Уже поздно что-то учить. Завтра зачет, поэтому в ход идут экстримальные меры.
  • 0

#18 slacker

slacker
  • Пользователь
  • 81 сообщений

Отправлено 03 января 2005 - 13:34

просто собралась кучка программеров и че то мне пытаются втереть! ну че много программ от вас сделанно?

Просмотреть сообщение


ну как сказать, мною написанные проги юзаются каждый день фирмой в которой работаю (поверь на слово, фирма не маленькая ~ 250 работников) и вообще работоспособность всеи системы зависит вчастности от етих программ. но используется не паскаль :)

Добавлено в [mergetime]1104752089[/mergetime]
PS. понять основы программирования можно и на паскале. как минимум ето не помешает!
  • 0

#19 Setor

Setor
  • Постоялец
  • 1 890 сообщений
  • Откуда:Эстония, Таллин

Отправлено 03 января 2005 - 14:29

Milord, коль времени осталось мало, паскаля ты не знаешь, напиши какие задачи тебе решить.

P.S. паскаль я учил так: в 7м классе я сидел на уроке и ничего не понимал, читал книжку и тоже ничего не понимал. Учитель тогда просил составить программу сортировки массива пузырьковым методом, а я толком и не знал что такое массив... одни пузырьки летали в голове :) Через пару лет я открыл ту же книжку Фараонова, прочёл её, и многое мне стало понятно! Я стал по другому мыслить. Вывод - не всем дано стать программистом и начать мыслить в нужном направлении.
  • 0

#20 V^v

V^v
  • Пользователь
  • 316 сообщений

Отправлено 03 января 2005 - 14:59

Setor, та же история...когда-то на уроке нифига паскаль не понимал (вообше ничего), потом захотел и выучил нормально C, а так как суть везде одна, могу теперь читать свободно код на паскале, разумеется тонкостей языка и специфических библиотек не знаю, но это уже далеко не главная проблема, главное захотеть...
  • 0
int main(void)

#21 slacker

slacker
  • Пользователь
  • 81 сообщений

Отправлено 03 января 2005 - 15:08

2 Setor, V^v ну уж если пошла настальгия...

помню на первом курсе в паскаль вообще нифига не врубуался, ну не умеет Ксюша Григорева обяснять. первую информатику сам кое как сдал, вторую за меня сдали, а как сам начал с пхп ковыряться так понял что всe что мне было не понятно в паскале - детский лепет :)
  • 0

#22 Setor

Setor
  • Постоялец
  • 1 890 сообщений
  • Откуда:Эстония, Таллин

Отправлено 03 января 2005 - 15:15

slacker, я считаю, что PHP немного портит программиста тем, что многое делает за него сам. Взять к примеру, пример с объявлением переменных. Мне после PHP очень непривычно было садиться за C или за тот же паскаль. Очень не люблю объявлять переменные для циклов. Да и PHP сам определит тип переменной, а какой у него репертуар функций на всякие случаи жизни...

Milord, ждёмс ответа
  • 0

#23 Тортилла

Тортилла

    добрый зайчег

  • Постоялец
  • 897 сообщений

Отправлено 03 января 2005 - 16:34

Milord, коль времени осталось мало, паскаля ты не знаешь, напиши какие задачи тебе решить.

P.S. паскаль я учил так: в 7м классе я сидел на уроке и ничего не понимал, читал книжку и тоже ничего не понимал. Учитель тогда просил составить программу сортировки массива пузырьковым методом, а я толком и не знал что такое массив... одни пузырьки летали в голове :) Через пару лет я открыл ту же книжку Фараонова, прочёл её, и многое мне стало понятно! Я стал по другому мыслить. Вывод - не всем дано стать программистом и начать мыслить в нужном направлении.

Просмотреть сообщение


Так. Сейчас напишем, решение которых интересует в первую очередь.


11) Массив: декларация и индексация.
12) Составить фрагмент алгоритма, выделяющий из массива A (длиною N) и массива B (длиною M) общие элементы в массив С.
4) Составить фрагмент алгоритма, проверяющий, является ли целое число A простым.
6) Составить фрагмент программы, проверяющий, является ли треугольник с вершинами (x1y1)(x2y2)(x3y3) прямоугольным.

С остальными разберемся.


p.s. 8 и 10 уже не нужны.

Сообщение изменено: Milord (03 января 2005 - 17:25 )

  • 0

#24 Setor

Setor
  • Постоялец
  • 1 890 сообщений
  • Откуда:Эстония, Таллин

Отправлено 03 января 2005 - 18:05

жди ответов. я где-то в 20.00 напишу, если не опередят, а пока что дела.
  • 0

#25 Sergio

Sergio
  • Постоялец
  • 3 051 сообщений

Отправлено 03 января 2005 - 18:44

там сразу обявляется максимальный размер массива, и он по-моему больше не меняется. а вот сколько конкретно будет элементов - зависит от тебя

Просмотреть сообщение

Массивы могут быть статическими, у которых размер не меняется и динамическими.

То, что паскаль -- мертвый язык неправда. Конечно, не так популярен как си++, но все же...
А для начального обучения программированию -- самый лучший вариант (только мое личное мнение:))
  • 0

#26 archi

archi
  • Пользователь
  • 84 сообщений
  • Откуда:Таллин

Отправлено 03 января 2005 - 18:47

просто собралась кучка программеров и че то мне пытаются втереть! ну че много программ от вас сделанно?

Просмотреть сообщение

много...
  • 0

#27 Setor

Setor
  • Постоялец
  • 1 890 сообщений
  • Откуда:Эстония, Таллин

Отправлено 03 января 2005 - 20:38

Так. Сейчас напишем, решение которых интересует в первую очередь.
11) Массив: декларация и индексация.
12)  Составить фрагмент алгоритма, выделяющий из массива A (длиною N) и  массива B (длиною M) общие элементы в массив С.
4) Составить фрагмент алгоритма, проверяющий, является ли целое число A простым.
6) Составить фрагмент программы, проверяющий, является ли треугольник с вершинами (x1y1)(x2y2)(x3y3) прямоугольным.

С остальными разберемся.
p.s. 8 и 10 уже не нужны.

Просмотреть сообщение

Декларация и индексация массива - тут думаю, нужна не совсем программа, как чисто описание. Его можно взять из любой книжки по Turbo Pascal. Переписывать книжку мне не очень хочется.

Задание 12:
не знаю что подразумевается под общими элементами. но скажу, что человек составлявший эти задания - не у меет составлять задания. Код сыроват, требует внимания...
Допустим, что массив C будет длиной N+M, а элементы - числа (int)
uses crt;
const
  N = 5;
  M = 6;
var
  A : array[1..N] of integer; {obshie elementy}
  B : array[1..M] of integer;
  C : array[1..N+M] of integer;
  i,j : integer;

function in_array(arr : array of integer; c : integer) : boolean;
var
  i,j : integer;
begin
  in_array := false;

  for i:=1 to N do
    if arr[i] = c then
    begin
      in_array := true;
      break;
    end;
end;

begin
clrscr;
  A[1] := 1;
  A[2] := 1;
  A[3] := 1;
  A[4] := 3;
  A[5] := 4;

  B[1] := 3;
  B[2] := 7;
  B[3] := 4;

  for i:=1 to M do
    if in_array( A, B[i] ) then C[i] := B[i]; {tut ja ne pomnju}

  for i:=1 to N+M do
    WriteLn('C[',i,'] = ',C[i]);

  ReadLn;

end.
Код рабочий 100%, но я мог пропустить строчку при переносе.

Насчёт простого числа - что такое простое число? если честно, я не знаю :unsure: у меня были проблемы с математикой, так что некоторые вещи я сделаю без проблем, но лишь зная формулу или определение.

фрагмент программы, проверяющий, является ли треугольник с вершинами (x1y1)(x2y2)(x3y3) прямоугольным - на это же уже дали ответ (формулу)!?
  • 0

#28 Тортилла

Тортилла

    добрый зайчег

  • Постоялец
  • 897 сообщений

Отправлено 03 января 2005 - 21:25

спасибо )
  • 0

#29 slacker

slacker
  • Пользователь
  • 81 сообщений

Отправлено 04 января 2005 - 09:08

slacker, я считаю, что PHP немного портит программиста тем, что многое делает за него сам. Взять к примеру, пример с объявлением переменных. Мне после PHP очень непривычно было садиться за C или за тот же паскаль. Очень не люблю объявлять переменные для циклов. Да и PHP сам определит тип переменной, а какой у него репертуар функций на всякие случаи жизни...

Просмотреть сообщение


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

#30 forsp

forsp
  • Пользователь
  • 77 сообщений

Отправлено 04 января 2005 - 18:43

Насчёт простого числа - что такое простое число? если честно, я не знаю  у меня были проблемы с математикой, так что некоторые вещи я сделаю без проблем, но лишь зная формулу или определение.

Простое число - число, делящееся без остатка только на себя и на единицу.

Вот код программы на Си. Жутко неоптимизированный, но в качестве примера, думаю, сойдет.

#include <stdio.h>

int main()
{
  int noprime,i,guess;

  printf("Integer value to check: ");
  scanf("%d",&guess);

  for(i = 2; i < guess; i++) {
    if (guess % i == 0) {
      noprime = 1;
      break;
    }
  }

  switch(noprime) {
    case 1: printf("%d is not a prime\n",guess); break;
    default: printf("%d is a prime\n",guess);
  }

  return 0;
}

  • 0