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

> Прочтите прежде чем задавать вопрос!

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

> Помогите с программкой, Отсортировать Интернет ссылки
777
сообщение 27.01.2010 0:19
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 19
Пол: Мужской
Реальное имя: Сергей

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


Нужно составить программу во FREE Паскале, которая из текстового файла забирает все имеющиеся в нём Интернет ссылки, и выводит их на экран + сохраняет их в другой текстовый файл! Чесно скажу, я учусь на заочном, второй семестр на занятиях полностью отсутствовал из за работы, и сейчас на работе такой завал, сто вникать в Паскаль просто нет возможности! Пожалуйста, помогите! Что такое программа Паскаль я узнал четыре дня назад, на лабораторной работе по информатике...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 1.02.2010 22:23
Сообщение #2


Гость






"Ну-с, приступим..." (С)

Итак, когда я пишу программу, мне совсем не обязательно реализовывать какие-то вещи, которые кто-то (возможно - разработчик компилятора, а возможно - и я сам) уже реализовал. Я могу просто взять готовый модуль, подключить его к своей программе, и пользоваться всем тем, что для меня предоставили разработчики этого модуля. Вот для того, чтобы подключить и использовать сторонние модули, и присутсивует в программе раздел Uses:
uses // описывается блок Uses, в котором перечисляются все используемые модули
classes, // здесь описаны классы, в частности, TStringList, который я использовал
regexpr, // Это - библиотека для работы с регулярными выражениями
sysutils, // Здесь реализованы многие системные функции, в частности функция, StringReplace
strutils; // Это - библиотека работы со строками, но ее можно не подключать, без нее тоже будет работать.

Теперь о {$mode objfpc}... Когда я работаю в FPC, у меня есть возможность создавать приложения, совместимые со старым досовским Турбо-Паскалем, с Дельфи, или написанные собственно на Object Pascal-е, что позволяет мне пользоваться всеми средствами этого языка. Можно, конечно, задавать режим совместимости в самой IDE, но я предпочитаю всегда делать это явно, чтобы любой, кто берет программу, не сталкивался с тем, что у него программа не компилируется, потому что у него (по умолчанию, или по забывчивости) стоит другой режим. Вот таким образом я уведомляю компилятор, что программа написана на Объектном Паскале.

Ну, а дальше - описания переменных, которые где-то ниже по тексту программы используются. В Паскале (в отличие от других языков) так принято - переменные описываются перед блоком инструкций (или как это перевести на русский, statements) в виде имя_переменной: тип_переменной
var
re: TRegExprEngine; // переменная re типа TRegExprEngine (предназначена для работы с регулярными выражениями);
s, subs, sLink, f_n: AnsiString; // Все перечисленные переменные - строковые;
// Ok - логическая (булева) переменная, используется ниже
// для хранения признака успеха определенной операции, я написал в комментариях
ok: boolean;

// Еще 2 целочисленных переменных
index, len: longint;

// А это - 2 переменные для хранения списков строк (в комментариях, опять же, расписано,
// как именно они ИСПОЛЬЗУЮТСЯ. А вот тут они ОПИСЫВАЮТСЯ)
sL_In, sL_Out: TStringList ;
Понимаешь, в чем дело? До двоеточия - вообще не обращай внимания... Я когда-то давным-давно спросил у своего преподавателя, "А почему я называю переменную именно Len? То, что она типа LongInt - понятно, но почему Len???" На что он мне ответил: "А как ты думаешь, почему я назвал своего сына Алексеем? Откуда я знаю, что он должен быть именно Алексеем, а не Иваном и не Сергеем? Так вот это мой сын, и я даю ему имя. Точно так же, как это твоя переменная, и ты ее называешь как хочешь."

До сих пор помню это объяснение... smile.gif

Ну что, хоть что-то их того, что я тут написал, стало понятнее?

Цитата
я ооочень постараюсь продержаться до AND.а!!!
До чего? smile.gif Там End вообще-то smile.gif And - кое что другое, не путай...
 К началу страницы 
+ Ответить 
777
сообщение 2.02.2010 12:42
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 19
Пол: Мужской
Реальное имя: Сергей

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


Добрый день всем!!! Это опять я...
Цитата(volvo @ 1.02.2010 23:23) *

uses // описывается блок Uses, в котором перечисляются все используемые модули
classes, // здесь описаны классы, в частности, TStringList, который я использовал
regexpr, // Это - библиотека для работы с регулярными выражениями
sysutils, // Здесь реализованы многие системные функции, в частности функция, StringReplace
strutils; // Это - библиотека работы со строками, но ее можно не подключать, без нее тоже будет работать.


Правильно ли я понял, что вот эти модули - есть, как бы сказать, готовые мини программы, шаблоны, куда вставляются нужные нам переменные??? И почему взяты именно эти модули а не какие то другие??? Как Вы это отределяете???
Цитата(volvo @ 1.02.2010 23:23) *

Теперь о {$mode objfpc}... Когда я работаю в FPC, у меня есть возможность создавать приложения, совместимые со старым досовским Турбо-Паскалем, с Дельфи, или написанные собственно на Object Pascal-е, что позволяет мне пользоваться всеми средствами этого языка. Можно, конечно, задавать режим совместимости в самой IDE, но я предпочитаю всегда делать это явно, чтобы любой, кто берет программу, не сталкивался с тем, что у него программа не компилируется, потому что у него (по умолчанию, или по забывчивости) стоит другой режим. Вот таким образом я уведомляю компилятор, что программа написана на Объектном Паскале.

Об этом потом...
Цитата(volvo @ 1.02.2010 23:23) *

тип_переменной
var
re: TRegExprEngine; // переменная re типа TRegExprEngine (предназначена для работы с регулярными выражениями);
s, subs, sLink, f_n: AnsiString; // Все перечисленные переменные - строковые;
// Ok - логическая (булева) переменная, используется ниже
// для хранения признака успеха определенной операции, я написал в комментариях
ok: boolean;

// Еще 2 целочисленных переменных
index, len: longint;

// А это - 2 переменные для хранения списков строк (в комментариях, опять же, расписано,
// как именно они ИСПОЛЬЗУЮТСЯ. А вот тут они ОПИСЫВАЮТСЯ)
sL_In, sL_Out: TStringList ;


А как узнать что именно подразумевается в каждой из переменных, для чего каждая из них нужна, как они работают, почему именно они, ведь наверняка существуют ещё аналогичные типы???!!!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 2.02.2010 20:52
Сообщение #4


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(777 @ 2.02.2010 12:42) *
Правильно ли я понял, что вот эти модули - есть, как бы сказать, готовые мини программы, шаблоны, куда вставляются нужные нам переменные??? И почему взяты именно эти модули а не какие то другие??? Как Вы это отределяете???
Да, только иногда совсем не "мини". И "шаблон" - тоже не очень хорошее сравнение. Официальное название: unit. Туда вставляются как переменные и константы, так и процедуры и функции, которые тебе часто нужны в разных программах. Например, если многие твои программы используют тангенс, ты создаешь функцию для него и оформляешь в модуль. Дальше достаточно втавить этот модуль в программу, и можешь использовать тангенс. О процедурах и функциях поговорим позже..

Цитата
А как узнать что именно подразумевается в каждой из переменных, для чего каждая из них нужна, как они работают, почему именно они, ведь наверняка существуют ещё аналогичные типы???!!!
Перед использованием модуля ты должен прочитать его описание, там все есть.

Вот именно поэтому я и говорил про маленькие задачи. Все нужно узнавать постепенно. Даже обед ты ешь с салата до десерта последовательно, а не выливаешь чай в гуляш. Иначе каша в голове, понимаешь?

И еще: volvo написал очень хорошую программу, но он писал ее для человека, который уже разбирается (так казалось из твоего задания). Можно написать иначе, с нуля, не используя специальные модули. Программа будет хуже с точки зрения программирования вообще (эффективности, расширяемости..), но лучше будет служить цели обучения.

Последнее: тебе надо написать что-то, пусть самое простое, но САМОМУ. Напиши программу, которая выводит "Hello, world!" Все с этого начинали. Если это слишком просто - напиши программу, которая запрашивает название файла - и все пока. Только САМ напиши (вопросы все же можешь задавать).


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
777   Помогите с программкой   27.01.2010 0:19
volvo   Вот в FPC это делается элементарно, как раз:{...   27.01.2010 11:55
777   Огромное спасибо!!! Мне это поможет ли...   27.01.2010 15:09
777   Записал листинг в программу, всё как Вы написали, ...   27.01.2010 23:39
777   Зачем же Вы так резко, я ведь не в претезии написа...   28.01.2010 0:10
Lapp   Зачем же Вы так резко, я ведь не в претезии написа...   28.01.2010 20:32
777   Я ни в коем случае не хотел никого обвинять, и в м...   29.01.2010 0:22
Lapp   А на данный момент я исправил то что мне было сказ...   29.01.2010 1:12
777   Послушай, [b]777, к сожалению, единственный спосо...   29.01.2010 22:15
volvo   У меня НЕТ такого идентификатора. Есть Copy Такого...   27.01.2010 23:47
volvo   Извини, не получилось ЧТО? Выделить текст программ...   29.01.2010 4:06
777   Извини, не получилось ЧТО? Выделить текст програм...   29.01.2010 22:29
volvo   А ты это условие ПРИВЕЛ раньше? Здесь что, форум т...   29.01.2010 22:28
Lapp   777, пожалуйста, используй тэги при публикации код...   29.01.2010 22:41
777   777, пожалуйста, используй тэги при публикации ко...   29.01.2010 22:52
Lapp   Я сейчас нажал код (#), но честное слово, я не пон...   29.01.2010 23:09
777   777, пожалуйста, используй тэги при публикации ко...   29.01.2010 23:23
Lapp   по поводу <непонимания простых вещей> - поче...   29.01.2010 23:44
777   Поверь мне, иногда нежелание пошевелить лишний ра...   31.01.2010 19:35
Lapp   довести дело до конца, если получится, то попытать...   1.02.2010 1:04
777   Сергей, если нужна помощь в понимании или обучени...   1.02.2010 6:55
volvo   То, что ты говоришь - еще дальше от правды. Чтобы ...   1.02.2010 9:42
777   То, что ты говоришь - еще дальше от правды. Чтобы...   1.02.2010 10:29
volvo   Смотри, я прокомментировал каждую строку своего ко...   1.02.2010 11:25
777   Смотри, я прокомментировал каждую строку своего к...   1.02.2010 12:23
volvo   Если возникают вопросы - уже хорошо... Гораздо хуж...   1.02.2010 13:07
Lapp   Если возникают вопросы - уже хорошо... Гораздо хуж...   1.02.2010 21:12
777   Все вопросы, которые будут - задавай. Начнём с...   1.02.2010 21:43
volvo   "Ну-с, приступим..." (С) Итак, когда я ...   1.02.2010 22:23
777   Ну что, хоть что-то их того, что я тут написал, с...   1.02.2010 22:39
777   Добрый день всем!!! Это опять я... use...   2.02.2010 12:42
Lapp   Правильно ли я понял, что вот эти модули - есть, к...   2.02.2010 20:52
777   Перед использованием модуля ты должен прочитать е...   2.02.2010 21:23
Lapp   Как и где найти описание переменных , модулей и фу...   2.02.2010 23:20
777   У тебя учебник есть? Какой? Да НЕТ конечно...   3.02.2010 8:56
Unconnected   Посмотри здесь: Литература , там по паскалю есть к...   3.02.2010 13:42
Гость   Вот с этого и надо было начинать! (Книжки)   6.02.2010 13:12
Гость - ZetVV   Volvo, Laap! Удивляюсь Вашей выдержке! :g...   6.02.2010 13:27


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

 



- Текстовая версия 22.06.2025 0:57
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"