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

 
 Ответить  Открыть новую тему 
> Сокращение программ
Барс
сообщение 2.03.2012 15:56
Сообщение #1


Новичок
*

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

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


Звиняйте, но сначала спрошу как вставлять текст программы из окна фрипаскаля, а затем задам вопрос по теме.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
IUnknown
сообщение 2.03.2012 18:39
Сообщение #2


a.k.a. volvo877
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской

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


В среде разработки FPC есть в меню Edit пункты Copy to Windows/Paste to windows, по-моему, их назначение предельно понятно. Выделяешь любым способом нужный текст в редакторе FPC (или "стрелка вниз с зажатым Shift-ом", или "установка курсора в начало выделяемого блока, Ctrl+K+B, установка курсора в конец, Ctrl+K+K", или просто "выделение мышью") и в меню выбираешь пункт Copy to Windows. Выделенный текст копируется в clipboard, вставляешь его на форум через Ctrl+V.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Барс
сообщение 2.03.2012 18:49
Сообщение #3


Новичок
*

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

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


А клипборд - это где? Спасибо за разжовывание.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
TarasBer
сообщение 2.03.2012 20:34
Сообщение #4


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

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


> А клипборд - это где?

Это общий буфер обмена в винде, где сидят данные между их копированием и вставкой.
Только странно, что в ФПЦ не сделали просто по CTRL+C или CTRL+INSERT.


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
IUnknown
сообщение 3.03.2012 2:11
Сообщение #5


a.k.a. volvo877
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской

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


Цитата
странно, что в ФПЦ не сделали просто по CTRL+C или CTRL+INSERT.
Привычка.

Еще со времен Турбо-Паскаля комбинации Ctrl+Insert/Shift+Insert были зарезервированы под копирование/вставку. Но работают они с внутренним буфером обмена, внутри IDE, скажем, для переноса текста в другое окно редактора. Обратная совместимость, ага. Привыкли пользователи к этой комбинации. И сочетание Ctrl+C тоже занято: переход ровно на страницу вниз. И к нему тоже привыкли. А сколько раз я в том же Дельфи пытался перевести режим из Overwrite в Insert и наоборот через Ctrl+V (как это было в Турбо-Паскале) - и не сосчитать.

Хорошо хоть вообще сделали такую функцию, как копирование в виндовый ящик. До версии FPC 2.0 это надо было делать так же, как и в других досовских программах, т.е., через... ну, ты знаешь.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
TarasBer
сообщение 3.03.2012 11:37
Сообщение #6


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

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


> Но работают они с внутренним буфером обмена, внутри IDE, скажем, для переноса текста в другое окно редактора.

А в чём проблема сделать с внешним буфером обмена? Переносить текст между окнами редактора это не помешает.


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Барс
сообщение 4.03.2012 17:15
Сообщение #7


Новичок
*

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

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


Наконец-то до компа добрался.
Вопрос такой. Хотелось бы узнать побольше о методах сокращения программ. Наверняка, опытные программисты могут многое посоветовать (напр.: вместо какой-то толпы операторов, можно обойтись одним и т.д.). Хочется изначально научиться коротко писать проги. В принципе, это даже можно оформить как инструкцию для новичков.
Для примера выкладываю своё решение одной задачи. Чую, что можно сократить (кажется, что есть лишние прверки условий). А как сократить-незнаю.

(Условный оператор) 
Из трех данных чисел выбрать наименьшее.

Program u;
uses Crt;
var
a,b,c:real;
begin
ClrScr;
write('Введите 1-е число a='); readln(a);
write('Введите 2-е число b='); readln(b);
write('Введите 3-е число c='); readln©;
if a>b then
begin
if b>c then
writeln('c - наименьшее число')
else writeln('b - наименьшее число');
end;

if b>c then
begin
if c>a then
writeln('a - наименьшее число')
else writeln('c - наименьшее число');
end;

if c>a then
begin
if a>b then
writeln('b - наименьшее число')
else writeln('a - наименьшее число');
end;

end.


 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
sheka
сообщение 5.03.2012 0:11
Сообщение #8


Я.
****

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

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


идеал:
if a < b then 
if a < c then a-мин
else c-мин
else
if b < c then b-мин
else c-мин

Если лень проверки писать так как надо (иногда очень громоздко и визуально неудобно):
Больше либо равно - принципиально. Подумай почему.
if (a<=b)and(a<=c) then a
else if (b<=a)and(b<=c) then b
else if (c<=a)and(c<=b) then c;

Если надо выводить несколько минимальных
if (a<=b)and(a<=c) then a;
if (b<=a)and(b<=c) then b;
if (c<=a)and(c<=b) then c;

Ну а еще можно использовать ф-ию
function min(const a, b: real);
begin
if a < b then min := a else min := b;
end;
begin
min(min(a,b),c);
end;


Не проверял.

Сообщение отредактировано: sheka - 5.03.2012 0:12
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Барс
сообщение 5.03.2012 8:53
Сообщение #9


Новичок
*

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

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


Спасибо. Сокращение в 2 раза, причём всё так просто. Теперь буду долго вдумываться в свои решения прежде чем задавать вопрос.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



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