Помощь - Поиск - Пользователи - Календарь
Полная версия: цикл For
Форум «Всё о Паскале» > Pascal, Object Pascal > Теоретические вопросы
suriv
Не совсем понятен мне цикл for

Код
{For I := 1 to 10 do  
Writeln(S)     -это и ежу понятно}


например:

Код
Begin  
For I := 1 to 10 do  
Begin  
For J := 1 to 10 do  
If I*J < 10 then Write(I*J, ' ')  
else Write(I*J, ' ');  
Writeln;


или

Код
For I := 1 to Length(S) do  
If S[I] = ' ' then Inc(Count);  
Write('Количество пробелов: ', Count);


а это так воще нереально для меня сделать (7 урок);

1 0 0 0 0 0 0 0 0
0 2 0 0 0 0 0 0 0
0 0 3 0 0 0 0 0 0
0 0 0 4 0 0 0 0 0
0 0 0 0 5 0 0 0 0
0 0 0 0 0 6 0 0 0
0 0 0 0 0 0 7 0 0
0 0 0 0 0 0 0 8 0
0 0 0 0 0 0 0 0 9

{В паскале сижу 2ой день поэтому и вопрос тупой}

3. Все исходники должны помещаться в теги...
volvo
Ну и в чем собственно вопрос?

Кстати, пункт 3 правил гласит:
Цитата(Правила форума)
Все исходники должны помещаться в теги  [CОDE] [/CОDE] Т.е. ваша программа, должна быть между [CОDE] и [/CОDE]
Amro
Цитата
Ну и в чем собственно вопрос?
volvo У человека наверное книги нет!!! А можь он её открывать не желает!!

suriv Возьми любую книгу по паскалю, там всё написано ....
А если всё таки что-то не поймёшь, выкладывай сюда более конкретные вопросы, а не то что ты написал!!!
GoodWind
он не понял вложенные циклы, ИМХО
Atos
Цитата(suriv @ 26.10.04 18:19)
Код
Begin  
For I := 1 to 10 do  
Begin  
For J := 1 to 10 do  
If I*J < 10 then Write(I*J, ' ')  
else Write(I*J, ' ');  
Writeln;


Действительно, бессмыслица какая-то... Приведи-ка полный текст, что это такое?

Цитата
Код
For I := 1 to Length(S) do  
If S[I] = ' ' then Inc(Count);  
Write('Количество пробелов: ', Count);

Ну а это просто:
тело цикла:"если некоторый символ строки - пробел, то общее количество пробелов увеличивается на 1"
заголовок цикла:"эту операцию повторить для символов строки с номерами от 1 до равного длине строки - то есть от первого до последнего'"
результат выполнения цикла : значение переменной Count равно количеству всех пробелов строки S

suriv
Мой совет: первое время старайся переводить для себя с Паскаля на "человеческий" и наоборот. Например, насчёт той диагональной матрицы: сядь и подумай, как бы ты поступил на месте машины, то есть как бы ты стал её заполнять, и запиши как можно подробнее последовательность действий на бумаге. После этого станет намного легче придумать подходящий цикл. Не отчаивайся, если сразу не получится. Теоретический факт: у разных людей скрость обучения алгоритмизации и программированию может отличаться на порядок в отличие от других общеобразовательных дисциплин. Но терпение всё превозможет. Главное - сесть и попытаться, и через некоторое время ты поймёшь, насколько это интересно! :p1: Если что-то не получится, обращайся сюда, всегда с радостью поможем.
{Не секрет, что многие просят тут написать за них программки на халяву, так что тем более приятно встретить человека, действительно пытающегося самостоятельно разобраться в программировании}
suriv
1)
Код
Program N1;  
var  
I,J: Byte;  
Begin  
For I := 1 to 10 do  
Begin  
For J := 0 to 9 do  
Write(J, ' ');  
Writeln;  
end;  
Readln;  
end.

(Таблица Умножения).

2)
Цитата
насчёт той диагональной матрицы

Что значит матрицы (В смысле что это такое)?
Книг про паскаль нормальных нет (вернее вообще нету книг про паскаль).
Может кинешь несколько адресов где можно скачать
или почитать книги для НАЧИНАЮЩИХ.
volvo
suriv

Для начинающих - зайди на этот сайт...

Я думаю, он тебе поможет начать ориентироваться. :yes:
Altair
ЧТо значит матрицы..... хм... это сложный вопрос... в принципе, с философской точки зрения 3-х мерная матрица отражает наше пространство, а четырехмерная наше пространство и время!!!
А если математически, то это просто сетка чисел ... rolleyes.gif
suriv
Еще один вопросик:
Шо такое двухмерный массив(кто то сказал что это связано матрицей или матрицами как их там...)
Atos
В общем-то двумерный массив и представляет собой матрицу
suriv
1)Значит практически это одно и то же. huh.gif

2)Где можно еще прочитать про цикл for?
volvo
я же дал тебе ссылку. был там ?
suriv
да ещё че нить есть?
Atos
Посмотри, например,вот эту тему: http://forum.pascal.net.ru/forum/index.php...wtopic=2758&hl=
Посмотри темы в разделе "Ссылки"

А вообще, на мой личный взгляд, лучше всего купить или достать бумажные учебники Фаронова. Без книг - это плохо. sad.gif
suriv
Код
program k;
var
m:array[1..100]of integer;
i:byte;
begin
for i:=1 to 6 do
m[i]:=12;
write(m[i]);
readln;
end.

Это типа значит: все первые шесть переменных в массиве равны 12 (а остальные от 7 до 100 равны 0). Правильно???

2)А вот если например
Код

program k;
var
m:array[1..100]of integer;
i:byte;
begin
for i:=1 to 6 do
m[i]:=7;
write(m[i]);
readln;
end.

То что ето значит?
1.что всем первым 6 переменным массива присваится одно и то же случайное число?
ИЛИ ЖЕ
2. первая переменная массива равна например 7(случайное число короче)
вторая переменная равна там двум например
третья какому то другому числу
====================================================
Написал свою первую нормальную прогу калькулятор :p2:
программа может складывать , умножать ,вычитать,делить
В конце выбираешь "начать заново(y/n) y-заново т-выход
Знаю вам покажется это смешным,примитивным и простым но все
же моя первая рабочая прога rolleyes.gif
suriv
Ну че прально(1)?
А насчет 2 там которое правильное 1ое или 2ое?
Atos
Так держать :p9:

1) Чтобы элементы массива были равны 0, надо присвоить им 0.
{Вообще-то на самом деле в памяти, выделяемой компилятором под массив как правило, действительно нули, но это не гарантировано smile.gif }

2) А это, по-моему, то же самое, что и 1), только число другое
GoodWind
1) правильнее
Код
program k;
var
m:array[1..100]of integer;
i:byte;
begin
for i:=1 to 6 do
begin {!!!!!!}
m[i]:=12;
write(m[i]);
end;{!!!!!!!!}
{между begin и end размещается то, что должно выполняться в цикле}
readln;
end.


так-то лучше.... у тебя было:
присвоить первым шести элементам массива значение 6
вывести шестой (ведь когла цикл закончится, i будет равно шести) элемент на экран.

2)та же проблема

Цитата
же моя первая рабочая прога


молодец ! моя первая прога -

Код
uses crt;
begin
write('Hello World!');
end.


сравни сложность :D
suriv
Цитата
молодец ! моя первая прога -
Код
    
uses crt;
begin
write('Hello World!');
end.



Вернее мой калькулятор была вторая прога А первая как и у всех начинающих-"hello world"-если это можно назвать нормальной программой
(Самая первая "программа" почти у каждого так это наверно "hello world"
самое элементарное.
Altair
Неее, у меня была первая прога - нахождение НОДа двух чисел smile.gif
Это сложнее чем "привет мир" smile.gif
suriv
Цитата
А это, по-моему, то же самое, что и 1), только число другое

Ой блин ща исправлю!

Код
program k;
var
m:array[1..100]of integer;
i:byte;
begin
randomize;
for i:=1 to 6 do
m[i]:=random(400);
write(m[i]);
readln;
end.


1.ВСЕМ ШЕСТИэлементам массива присваевается одно и то же случайное
число?Например если случайное число равно 8:
1элемент:=8
2элемент:=8
3элемент:=8
4элемент:=8
5элемент:=8
6элемент:=8
ИЛИ
2.Каждому елементу (их 6) присваевается разное случайное число?
Например:
1элемент:=5
2элемент:=3
3элемент:=48
и т.д до шестого элемента

надеюсь вопрос понятен.
volvo
тут у тебя КАЖДОМУ элементу присваивается НОВОЕ случайное число...

А если ты хочешь то же самое число во всех элементах массива -

Код

program k;
var
m:array[1..100]of integer;
i:byte;
elem: integer;
begin
randomize;
elem := random(400);
for i:=1 to 6 do
begin
 m[i]:=elem;
 write(m[i]);
end;
readln;
end.
Altair
Цитата
надеюсь вопрос понятен.

Нет
Цитата
ВСЕМ ШЕСТИэлементам массива присваевается одно и то же случайное
число?

ну сначала надо определить случайное число (random(X))
затем использовать цикл FOR для присвоения.
Хотя любой цикл можно заменить на другой.
Digitalator
Цитата(Atos @ 27.10.04 18:49)
Вообще-то на самом деле в памяти, выделяемой компилятором под массив  как правило, действительно нули, но это не гарантировано  smile.gif


В паскале (TP, BP, BPW, Delphi) все переменные var обнуляются. Поэтому нет необходимости обнулять что-либо внутри программы перед использованием. В памяти выделяемой под массив, как правило храниться все что угодно кроме нулей. Паскаль разрабатывался как язык для обучения (в отличии от Си), поэтому он наиболее строг в отношении синтаксиса, и максимально структурирован во избежании возможных багов, возникающих у молодых програмистов, казалось бы, на пустом месте.

А вообще можно посоветовать только купить книжку и внимательно ее прочитать. Разговор типа "А тут что делается? а тут? а как это сделать?" заводит в тупик, т.к. имхо не приобретаються конкретные знания и конструкции языка, а некие шаблоны-стереотипы, которые мешают дальнейшему освоению. Программа c циклмаи и условиями сложна для человека, не знающего что такое оператор.
GoodWind
Цитата
Разговор типа "А тут что делается? а тут? а как это сделать?"

в принципе согласен, но тут несколько иная ситуация: человек дает кусок кода и вполне можно объяснить ему где у него не правильно

Suriv, не забывай тело цикла засовывать в Begin/end; !!!!
Altair
Цитата
все переменные var обнуляются

А вот и не все, а вот и не все! smile.gif))
По вашему строки тоже обнуляются?? :D
Виг вам smile.gif ;)
Обнуляется только нулевой элемент - длинна!
Опять же, динамические переменные не обнуляются, необнуляются указатели, и еще некоторые переменные....

Так что неговори гоп, пока не проверил smile.gif
Digitalator
Цитата
Обнуляется только нулевой элемент - длинна!

Ну не надо придираться к словам - нулевой байт обнуляется, т.е. длина строки обнуляется и этого хватает, т.к. корпорация Borland не рекомендует явно изменять(увеличивать) длину строки, во избежание возможных ошибок. При работе со строковыми функциями все получается как надо. Указатели тоже обнуляются - устанавливаются в nil. Насчет дин. переменных - они создаются во время исполнения и обнулять там нечего. ну вы еще приплетите сюда объекты или еще чего похуже smile.gif в псакале переменные обнуляются - это сказано корпорацией borland, это проверено и с этим никто не спорит.

Цитата
можно объяснить ему где у него не правильно

Тут вспомню фразу одного програмиста, на вопрос "Что здесь неправильно?" - "Здесь все правильно, для кода который написан". чел должен сам понимать что, где, а главное почеу надо писать, а не спрашивать по каждой строчке. Мы здесь видим типичного "начинающего програмиста", который неправильно начал - если не наставить его на путь истинный, ничего путного из этого не выйдет (хотя б купить и почитать книжку, не пропуская "неинтересные" первые 50 страниц, и последующие 100 т.к. "а я это уже знаю")
suriv
Цитата
хотя б купить и почитать книжку

Какую посоветуешь.В нете есть нормальные е-книги для начинающих или статейки, как на этом сайте?
suriv
Цитата
видим типичного "начинающего програмиста"

Ну как же:
Вы здесь видите человека который сел за паскаль несколько дней назад. <_<
(и который почти нихрена не понимает.почти нихрена.Единственное по чему я пока занимаюсь так это по "урокам" этого сайта(самое простое))
Digitalator
Лучше купи бумажную, чем с компа читать.
К сожалению не могу подсказать никаких книжек по пасу, т.к. уже давно на нем ничего не пишу - в основном на си. Но одно знаю точно - если на книжке написано что-нить вроде "Для студентов и преподователей высших учебных заведений" и/или "Рекомендовано Министерством образования РФ", то она не может быть плохой. По паскалю в любом магазине можно найти подобную книжку. И ни в коем случае не покупай из серии "Для чайников" или что-то в этом роже :no:

Цитата
и который почти нихрена не понимает.почти нихрена

Это как раз-таки убеждение начинающий програмистов, что я только начал и т.д. и т.п. На самом деле мы либо понимаем, то что пишем, либо нет - "почти" не бывает. Если ты не понимаешь, что пишешь, следовательно нехватает теор. знаний, а это главное в програмировании на любом языке. На самом деле нет принципиальной разници между языками - они все в принципе одинаковы, и поняв, прочувствов это вы сможете осваивать новые языки за пару дней!
suriv
Цитата
И ни в коем случае не покупай из серии "Для чайников" или что-то в этом роже

А я бы и не взял-я ж не чайник lol.gif .Тем более там небось про то как открывать или создавать новый файл в паскале, писали бы страниц на 10 lol.gif :D




З.Ы Ну может вспомнишь где в нете есть статьи,книги или уроки :p2:
Digitalator
Цитата
писали бы страниц на 10

Еще одно убеждение начинающих програмистов smile.gif.
На самом деле мне самому было бы интересно почитать об работе с файлами страниц 10 полезной информации. (именно полезной) - а лучше еще больше :P
Digitalator
Я где-то видел книжку по TP7 для ВТУЗов, в твердой обложке и с тоненькими желтенькими страничками... к сожалению не помню ни автора ни издательстава... постараюсь заврта посмотреть... :yes:
suriv
Ну в нете можешь найти то о чем я тебя попросил:
e-books там,статьи или что-то наподобе уроков как на этотм сайте.




ЗЫ(бесплатное)
Digitalator
Я не уверен, но кажись эта:
=%39%38&wares[n_id]=%32%31%31%33%30]http://books.m35.ru/index.php?subpart=2&wa...%32%31%31%33%30
suriv
А бесплатного ничего нет? <_<
Digitalator
Ты хочешь научится програмировать или что? Если певрое, тотебе нужна качественная литература, чтоб была всегда под рукой - бесплатная вещь есть, называется help, если денег жалко читай его, но не факт что поймешь
suriv
Блин в нашем городе практически нет не одного книжного магазина:
Но всё таки вмагазике нашел одну книгу(жалко что не фаронов) Ян Гордон.
Ну пришлось купить.(Всё же лучше чем ничего).

=Вот нашел в нете описание этой книги:Описание этой книги
Флогримм
Цитата
моя первая прога -


Код 
uses crt;
begin
write('Hello World!');
end.


а зачем crt ? huh.gif
Флогримм
б-р-р-рр что-то свосем непойму; по-моему в нете больше чем достаточно литературы по программированию! поищи хотя на родном сайте форума;
попробуй вот это:
http://pascal.dax.ru/files/books/lecpas.zip
или вот это
http://www.programmerz.narod.ru/books/shenn.rar

должно подойти

Цитата
Ты хочешь научится програмировать или что? Если певрое, тотебе нужна качественная литература, чтоб была всегда под рукой - бесплатная вещь есть, называется help, если денег жалко читай его, но не факт что поймешь


стопудово согласен, тык что мой совет, по ссылке http://pascal.dax.ru/files/books/tp7hlp_r.zip качай русский хелп на паскаль, если какая функция непонятна, наводи на нее курсор и жми ctrl+F1
вот так
GoodWind
Цитата
а зачем crt ?

ну тогда неопытный был lol.gif
это из pas`а реального, первого, копировал !!!
suriv
Код

program k;
uses crt;
begin
clrscr;
write('Hello World!');
readln;
end.

забыл вставить ;)
Флогримм
suriv, ну че книжки посмотрел?
а еще советую скачать исходники, посидеть поразбирать, с помощью того же хелпа: что непонятно - посмотрел и разбираешь дальше

качай тут исходники
http://pascal.dax.ru/files/books/samples.zip
и обязательно, слышишь? обязательно!!!!! качай русский хелп - отличная штука
suriv
Да,книжки посмотрел неплохие.
Русский хелп поставил,действительно реальная штука
GoodWind
молодец, suriv - настойчивость и тяга к знаниям - хорошие качества !
suriv
Цитата
Да,книжки посмотрел неплохие.

Посмотрел,а не прочитал!
Digitalator
Самые лучшие книжки по програмированию я видел и уздательства "*****"... Обычно, если в описании сказано что
Цитата
дял тех, кто начинает учиться программировать на языке Паскаль.

то в книжке очень мало материала, а в основном там разжевывют и без того понятные вещи - по такой книге поннять идею кодинга трудно, нужна еще дополнительная литература
suriv
Книга не издательства "*****", но довольно неплохая.
На задней обложке написано несколько слов о авторе:

Цитата
Ян Гордон:
Американский программист,руководитель компании Software Development Inc.
Бывший сотрудник компании Borland Software Corporation, принимал участие
в разработке пакета Borland Delphi.Некоторое время работал в Network Associates(Антивирусное ПО).Постоянный автор нескольких американских журналов компьютерной тематики.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.