-Музыка

 -Подписка по e-mail

 

 -Поиск по дневнику

Поиск сообщений в xpackpackax

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 09.01.2009
Записей:
Комментариев:
Написано: 1835





мобильные телефоны

Среда, 30 Сентября 2009 г. 22:47 + в цитатник
Огромный каталог мобильных телефонов!
Здесь вы можете выбрать аппарат с любыми, угодными вашему вкусу, характеристиками. Удобная система поиска поможет вам с этим.
Заказ можно осуществить по телефону, переговорив с продавцом, либо прямо на сайте.
Ознакомьтесь с каталогом прямо сейчас, не упустите специальные предложения :)
купиить хороший мобильный телефон в Минске

Банк курсовых

Среда, 30 Сентября 2009 г. 22:42 + в цитатник
Огромный ресурс по предоставлению научных работ (рефератов, курсовых, дипломов).
Вы можете выбрать уже готовую работу, а можете заказать проект специально для себя. В любом случае её разработчиком будет высококлассный специалист. Каждая работа выполняется с учетом указаний и пожеланий клиента. Опыт работы - 12 лет. Не теряйте времени, уделите свое внимание сложному вопросу образования прямо сейчас.
продажа дипломных работ

САМЫЙ большой в Рунете банк

Среда, 30 Сентября 2009 г. 22:34 + в цитатник
САМЫЙ большой в Рунете банк готовых курсовых, дипломных, контрольных работ, рефератов, эссе.
Учение, разумеется, свет. Но бывают в жизни студента ситуации, в которых это самое учение никак не попадает в реку деятельности. Такие ситуации весьма неприятны, но и их можно решить, обратившись за нужным материалом сюда. Поищите уже готовую работу на ваше тему, либо закажите новую, специально для себя. Не теряйте время, начните действовать уже сейчас и всё получится :)
банк рефератов и курсовых работ

Сладкий cеопультенок

Среда, 30 Сентября 2009 г. 22:24 + в цитатник
Cладкий Cеопультенок - конкурс со странным названием. Этим и интригует.
В действительности это соревнование оптимизаторов. Участвовать может каждый, надо только правильно себя оценить. Призовой фонд - $10 000. Заманчиво, не правда ли? Продлится этот марафон шесть месяцев, но, что самое интересное, он уже стартовал!
А теперь сопоставьте два вышеуказанных факта - участником может быть каждый, а призовой фонд не малый. Надо действовать! и не просто действовать, а действовать незамедлительно!
Cеопультенок Cладкий

Ортопедические подушки

Среда, 30 Сентября 2009 г. 21:44 + в цитатник
Получите всю важную информацию об ортопедических подушках прямо сейчас. Благодаря удобному интерфейсу сайта вы сможете быстро узнать ответы на вопросы по поводу беспокоящих вас и ваших близких болей в шее, спине и т.п.
Ознакомьтесь с некоторыми видами подушек здесь и здесь, чтобы получить достаточно общую информацию о подобных товарах. Выбрав нужный, сделайте заказ прямо сейчас!
магазин ортопедических подушек

Эмиграция и гражданство

Среда, 30 Сентября 2009 г. 21:34 + в цитатник
Ответы на все свои вопросы по поводу эмиграции и гражданства в других странах вы можете получить на emigration.cc.
На сайте хранится вся полезная информация на этот счёт. Например, можете узнать преимущества ПМЖ в интересующей вас стране, требования и процедуры для получения этого самого ПМЖ и все возможные нюансы. Для обзора предложу вам ознакомится с информацией о ПМЖ на Мальте.
Также вы можете связаться с автором сайта прямо сейчас, чтобы оставить свой запрос.

Спайс

Среда, 30 Сентября 2009 г. 16:33 + в цитатник
Шаманы, жрецы, ведуны с древнейших времен использовали различные травяные смеси для вхождения в "мистические состояния".
Сегодня появился спайс. Миксы можно приобрести во многих городах России, в том числе, в Москве.
Ароматические смеси Spice - это сочетание различных экзотических трав. Производители обещают, что в миксах нет никакой химии.
А вы что думаете на этот счет?

новый год 2010

Среда, 30 Сентября 2009 г. 16:15 + в цитатник
Готовь сани летом!
Это я к тому, что самое время обдумать новый год 2010. Итак, наступает новый год тигра, стало быть и встретить его надо как-то соответсвующе, чтобы угодить строптивому зверю. Чтобы составить новогоднее меню заходите на prazdnik-land.ru/celebrations/ny. Тут же вы найдете новогодние костюмы, оригинальные поздравления с новым годом и много другое.
Счастливых праздников :)

Наручные швейцарские часы

Среда, 30 Сентября 2009 г. 16:00 + в цитатник
Теперь "выглядеть на миллион" под силу каждому!
Символ успешного человека с хорошим вкусом это, конечно же, стильные наручные часы. К сожалению, далеко не каждый мог себе это позволить - дорогая всё-таки вещь.
С недавних пор всё гораздо проще: теперь можно получить стильный аксессуар за деньги, на порядок меньшие - в продаже появились полные копии часов именитых марок. Мало того, что дизайн абсолютно идентичен, так ещё и добрая половина деталей оригинальная. В итоге вы получаете качественное изделие дорогой марки по доступной цене :)
часики

Компания, специализирующаяся на аренде офисов и помещений

Среда, 30 Сентября 2009 г. 15:48 + в цитатник
Отличная возможность снять офис непосредственно у владельца. Только честная и юридически чистая деятельность. Корпорация «АС» практикует индивидуальный подход к каждому арендатору, таким образом довольным останется даже самый требовательный клиент.
Для наиболее удобного и продуктивного поиска объекта разработана система классификации: помещения условно разделены на классы «А», «B», «С», «D». Чтобы узнать подробнее об этом, перейдите по ссылке, представленной ниже и начните свое сотрудничество с «АС» прямо сейчас.
снять офис без посредника

Мини отель Санкт Петербурга "Невский клуб"

Среда, 30 Сентября 2009 г. 15:36 + в цитатник
Мини отели Санкт Петербурга "Невский клуб"
Мини отель, расположенный в самом центре города. В отеле 22 номера 4-х категорий: люкс, полулюкс, стандарт, эконом-класс. Есть возможность выхода в интернет. Телефон и телевизор в каждом номере.
Гостям будет предложен полный спектр туристических услуг. Приветливые администраторы общаются с иностранными постояльцами на английском языке, что немаловажно для комфортного отдыха.
отели Петербурга

Интернет-магазин "Бумажно-беловая продукция АЛЬТ"

Вторник, 29 Сентября 2009 г. 20:58 + в цитатник
Интернет-магазин "Бумажно-беловая продукция АЛЬТ"
Тетради, ежедневники, блокноты, товары для художников, папки из высококачественных практичных материалов.
Огромный ассортимент товаров, превосходных по своим техническим характеристикам.
Компания "АЛЬТ" также заостряет своё внимание на индивидуализации канцелярских товаров: теперь каждый человек, независимо от сферы деятельности, выберет продукцию по своему собственному вкусу. Особенно понравится возможность выбора школьникам, чьи канцтовары не только инструмент, но и аксессуар.
тетради дисней
школьные дневники



Шины

Вторник, 29 Сентября 2009 г. 20:27 + в цитатник
Интернет магазин шин.
Лучшие модели от именитых производителей по разумным ценам! "Обувь" для любых типов автомобилей и дорог. Специальные предложения на сезонные товары - зимние шины. Не забывайте о своей безопасности и безопасности близких людей: комплект резины для автомобиля, соответствующий сезону - залог уверенной безаварийной езды.
Для поиска подходящего комплекта шин воспользуйтесь удобным сервисом поиска. Задайте интересующие вас параметры и выберите подходящий вариант!
шины Yokohama
шины Michelin

Определение позиций сайта

Вторник, 29 Сентября 2009 г. 19:29 + в цитатник
Определение позиций сайта в популярных поисковых системах.
Подробный и широкий анализ вашего сайта за считанные секунды.
Для знакомства с системой воспользуйтесь демо-режимом просмотра сервиса, однако куда продуктивнее пройти регистрацию прямо сейчас и начать работу по анализу позиций и продвижению вашего сайта. Для расчета ресурсов, необходимых для продуктивного продвижения сайта создан специальный калькулятор!
определение позиций сайта в поисковых системах

Самоучитель рисования Меха (Mecha)

Вторник, 29 Сентября 2009 г. 16:25 + в цитатник
Меха (ударение на первый слог) - это японский робот. Честно признаться, я не мастер рисовать японских роботов. Давайте просто рассмотрим некоторые базовые аспекты, которые могут навеять вам какие-либо ценные мысли.

Шаг 1 : Структура
Как и всегда, я начинаю с «болванчика». У роботов можно не церемониться с пропорциями. Не надо делать их слишком похожими на человеческие.
Я убедился, что плечи широкие и ноги достаточно широко расставлены, чтобы выдержать вес тела.


Шаг 2: Заполняем плотью
Этот шаг отличается от аналогичного, когда мы рисуем человека. Здесь нам не понадобятся традиционные конусы и цилиндры. Если их использовать, получается меха, похожий на трансформера.

Этот будет громоздким и неуклюжим. Мощная броня, сенсоры…и т.д.

Убедитесь, чтобы суставы могли свободно двигаться, хоть они и бронированные. Плох тот меха, который не может и рукой пошевелить..

Какую функцию будет исполнять меха? Работать в космосе или на земле? Поднимать тяжести или быстро бегать? Будет приспособлен к неблагоприятным условиям?


Шаг 3: Детализация
Теперь, когда мы наконец покончили с формой, начнем стирать ненужные линии. Я добавил различные панельки с кнопками и дырочками везде, кроме грудной клетки - там находится мотор.
Этот робот почти три метра высотой и не управляется человеком.



Шаг 4: Обводим

Добавляем еще деталей и обводим ручкой. Детали обводите тоньше. Машины выглядят лучше, когда имеют жирную линию в качестве контура.

Самоучитель рисования (манга)

Вторник, 29 Сентября 2009 г. 16:22 + в цитатник
В этом уроке я обучу вас рисовать типичные аниме-лица под разными углами. Хотя все они типичные женские , пропорции, которые я покажу вам, применимы ко всем персонажам, каких только вы захотите нарисовать. ^_^

Вид спереди
Начните с рисования большого круга. Разделите его на трети по горизонтали, и проведите вертикальную центральную линию. Не беспокойтесь, если трети получились не равными; пропорции могут варьироваться в зависимости от стиля персонажа, в любом случае, все нормально, если трети не одинаковые.

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

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

Теперь, когда у вас есть базовая форма лица, «подложка, вам может захотеться изобразить глаза, рот и нос. Положение глаз немного отличается у разных героев, но в целом они должны быть помещены внутрь нижней трети круга. Нос составляет половину высоты все той же нижней части круга и рисуется прямо до ней, а рот — под носом (странно, да? :) — прим.пер).

Теперь сотрите эти диагональные касательные и детализируйте глаза. Сейчас, когда у вас есть полностью отрисованная базовая форма лица вы можете добавлять в нее все, что вам заблагорассудится: волосы, головные уборы, шрамы, украшения, татуировки и т.д…
*
*

Вид «три четверти»
Начните с большого круга, как и в предыдущем случае, только теперь поверните ве вспомогательные линии влево. Эта часть головы представляет собой трехмерную сферу, так что, поворачивая линии, смотрите, чтобы они шли именно по сфере. Разделите шар на трети по горизонтали и на половинки по вертикали. Конечно, теперь, когда мы повернули голову на три четверти, эти части будут неравными, но надо следить за тем, чтобы они выглядели так же, как и в виде спереди, если мы повернем голову героя обратно.

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

Заполняем лицо плотью: рисуем скругленные треугольники по сторонам от касательных. Левая сторона лица искривлена под шаром, изгиб правой должен быть мягким и пологим. Чтобы нарисовать все правильно, может потребоваться некоторая практика.


Понравилось: 1 пользователю

4. Линейный вычислительный процесс

Вторник, 29 Сентября 2009 г. 16:16 + в цитатник
Линейный вычислительный процесс (ЛВП) представляет собой набор операторов, выполняемых последовательно, один за другим. Основу программы ЛВП составляют операторы присваивания, ввода и вывода данных.


4.1. Оператор присваивания



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

переменная := выражение;

Знак := читается как "присвоить".

Оператор присваивания работает следующим образом: сначала вычисляется выражение, стоящее справа от знака :=, затем результат записывается в переменную, стоящую слева от знака. Например, после выполнения оператора

k:=k+2;

текущее значение переменной k увеличится на 2.

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

Приведем примеры.

1. Записать оператор присваивания, который позволяет вычислить расстояние между двумя точками на плоскости с координатами (x1, y1) и (x2, y2).

Оператор будет иметь вид

d:=sqrt(sqr(x1-x2)+sqr(y1-y2));

2. Записать последовательность операторов присваивания, обеспечивающих обмен значениями переменных x и y в памяти компьютера.

c:=x; x:=y; y:=c;

Здесь с -- дополнительная переменная того же типа, что x и y, через которую осуществляется обмен. Грубой ошибкой было бы, например, попытаться выполнить обмен операторами x:=y; y:=x; -- ведь уже после первого из них мы имеем два значения y, а исходное значение x потеряно.


4.2. Оператор ввода



Базовая форма оператора ввода позволяет пользователю ввести с клавиатуры значения одной или нескольких переменных. Оператор ввода с клавиатуры может быть записан в одной из следующих форм:

read(список_переменных);

readln(список_переменных);

Имена переменных в списке перечисляются через запятую. Здесь и далее список данных, передаваемых любому оператору (а позднее и написанным нами подпрограммам), мы будем называть параметрами. Таким образом, параметрами оператора (точней, стандартной процедуры) read являются имена переменных, описанных ранее в разделе var.

По достижении оператора ввода выполнение программы останавливается и ожидается ввод данных пользователем. Вводимые значения переменных разделяются пробелом или переводом строки (нажатием Enter). После ввода значений всех переменных из списка работа программы продолжается со следующего оператора.

Оператор readln отличается от read только тем, что все переменные должны быть введены в одну строку экрана, клавиша Enter нажимается один раз по окончании ввода. Форма записи readln используется, в основном, для ввода строк текста, для ввода числовых значений лучше использовать read, т. к. в этом случае пользователь может вводить данные более свободно (и в одну, и в несколько строк экрана).

Если пользователь вводит данные недопустимого типа (например, строку текста вместо числа), то выводится системное сообщение об ошибке и работа программы прерывается.

В качестве примера организуем ввод исходных данных для решения квадратного уравнения:

var a,b,c:real;

...

read (a,b,c);

Для задания значений a=1, b=4, c=2.5 на экране вводится:

1_4_2.5¬

Здесь и далее "_" означает пробел, а "¬" -- нажатие Enter. Другой вариант ввода с клавиатуры:





2.5¬

Третий вариант:



4_2.5¬

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

Как правило, перед оператором ввода ставится оператор вывода, служащий приглашением к вводу и поясняющий пользователю, что именно следует сделать (см. п. 4.3).


4.3. Оператор вывода



Базовая форма оператора вывода позволяет отобразить на экране значения переменных, АВ или констант, а также строки текста в апострофах. Оператор записывается в одной из следующих форм:

write(список);

writeln(список);

Элементы списка перечисляются через запятую.

Элементы списка выводятся в пользовательское консольное окно программы. Вещественные значения выводятся в экспоненциальной форме. Строки выводятся "как есть". После вывода работа программы продолжается со следующего оператора.

Оператор writeln отличается от write тем, что после вывода значения последнего элемента списка выполняется перевод курсора на следующую строку экрана.

Приведем примеры.

1. Нужно дать пользователю возможность ввести с клавиатуры число, затем программа возведет это число в квадрат и выведет результат на экран.

var a,a2:integer;

...

writeln ('Введите целое число:');

{это приглашение к вводу}

read (a);

a2:=sqr(a);

writeln ('Квадрат числа=',a2);

Если ввести значение a=2, на экране будет напечатано

Квадрат числа=4

|

Символ |здесь и далее обозначает курсор. Видно, что оператор writeln перевел курсор на следующую строку.

После вывода результата выполнение программы продолжится, а если оператор writeln был в ней последним, то и завершится. Чтобы пользователь успел прочитать результат, следует в конце программы добавить оператор

readln;

который будет ждать нажатия клавиши Enter.

2. Требуется вывести на экран результаты решения квадратного уравнения: значения x1=1.5 и x2=2.5:

write ('x1=',x1,'_x2=',x2);

Пробел в строкой константе '_x2=' нужен, чтобы значение x1 не слилось со строкой 'x2='. На экране будет напечатано:

x1= 1.5000000000E+00 x2= 2.5000000000E+00|

Курсор остался в конце строки, т.к. использована форма оператора write.

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


4.4. Управление выводом данных



В операторе write или writeln вещественное значение (а также целое или строковое) зачастую удобнее записывать в виде:

переменная:ширина:точность

Здесь ширина -- целое положительное число, определяющее, сколько экранных позиций отводится для вывода всего числа. Ширина определена для числовых значений любого типа и строк.

Точность -- целое положительное число, определяющее, сколько цифр из ширины отводится на вывод дробной части числа. Значение точности определено только для вещественных чисел. Оно не учитывает позицию десятичной точки. Разумные значения точности -- от 0 до ширина-2 включительно. Недопустимые значения ширины и точности не будут учтены при выводе.

В качестве примера выведем на экран значения нескольких переменных:

var x1,p:real;

i:integer;

...

x1:=2.5; p:=-3.175; i:=2;

writeln ('x1=',x1:8:2,'_p=',p:9:4);

write ('I=','_':5,i:2);

На экране будет напечатано:

x1=____2.50_p=__-3.1750

I=______2


4.5. Вывод на печать



Иногда требуется, чтобы программа вывела результаты своей работы на принтер. Для этого достаточно выполнения двух условий. Первым оператором раздела описаний программы следует указать оператор uses printer;, подключающий стандартную библиотеку для работы с принтером, а первым параметром оператора write или writeln указать символическое имя принтера lst, описанное в библиотеке printer:

write ('Hello');

- строка 'Hello' выведена на экран,

write (lst,'Hello');

- строка выведена на принтер.

Отличие между write и writeln сохраняется при выводе на принтер -- то есть, при использовании writeln позиция печати на принтере будет переведена на следующую строку.

Здесь не приводится код, позволяющий проверить, готов ли принтер к печати и удалась ли операция вывода данных на него. Подобные проверки мы научимся делать, изучив стандартную функцию IoResult.

3. Арифметические выражения

Вторник, 29 Сентября 2009 г. 16:13 + в цитатник
Арифметические выражения (АВ) строятся из операндов, которыми могут быть константы, переменные и стандартные функции. В АВ также входят арифметические операции и круглые скобки. В языке Паскаль определено 6 арифметических операций, перечислим их в соответствии с приоритетом, то есть, старшинством (табл. 3.1). Операции с одинаковым приоритетом равноправны между собой и выполняются слева направо, как и в математике.



Табл. 3.1. Арифметические операции языка Паскаль
Приоритет
Знак операции
Описание операции

1
*
умножение

/
деление

div
деление 2 целых значений с отбрасыванием остатка

mod
взятие остатка от деления 2 целых значений

2
+
сложение

-
вычитание




Операции div и mod определены только для целочисленных операндов. Приведем пример их использования:

var y,c,n:integer;

. . .

y:=2009;

c:=y div 100;

n:=y mod 100;

Здесь переменная c получит значение 20, а n -- значение 9.

Примеры арифметических выражений мы приведем после рассмотрения стандартных функций языка Паскаль.

Стандартные функции служат для выполнения элементарных математических расчетов, часто требуемых при написании программ. Разработчики Паскаля стремились сделать его программное ядро максимально компактным, поэтому в него не вошел ряд функций, обычно имеющихся в других языках, таких, как вычисление максимума и минимума, возведение числа в произвольную степень и др. Физически коды стандартных функций хранятся в стандартной библиотеке Паскаля -- файле с именем turbo.tpl. Все функции оформляются одинаково: после имени функции следует ее аргумент, заключенный в круглые скобки. Если аргументов несколько, они разделяются запятыми. Информация об основных стандартных функциях представлена в табл. 3.2.



Табл. 3.2. Стандартные функции языка Паскаль
Математическая запись
Запись на Паскале
Пояснение
Тип

аргумента и результата

|x|
abs(x)
Модуль аргумента x
Integer (I) или Real (R)

x2
sqr(x)
Квадрат аргумента x
аргумент - I или R, результат - r

sin x

cos x

arctg x
sin(x)

cos(x)

arctan(x)
Остальные тригонометрические функции выражаются через эти
аргумент - I или R, результат - R

ex

ln x
exp(x)

ln(x)
Экспонента и натуральный логарифм
аргумент - I или R, результат - R


sqrt(x)
Квадратный корень от аргумента x
аргумент - I или R, результат - R

p
pi
Функция без аргументов, вернет число p
R


trunc(x)
Функция отбрасывает дробную часть аргумента, аргумент не округляется
аргумент R, результат I


frac(x)
Функция выделяет

дробную часть своего

аргумента
R


round(x)
Округление вещественного числа до ближайшего целого
аргумент R, результат I




В табл. 3.2 x обозначает любую подходящую по типу переменную, либо результат вычисления выражения соответствующего типа, либо соответствующий по типу результат, вычисленный другой стандартной функцией.

Приведем примеры арифметических выражений.

1. Возвести величину x в пятую степень. Выражение может быть записано как x*x*x*x*x или sqr(x)*sqr(x)*x или sqr(sqr(x))*x, последнее показывает, что результаты одних функций могут быть аргументами других -- это называют вложением функций. Разумеется, тип результата, возвращаемый вложенной функцией, должен быть подходящим для аргумента внешней функции.

2. Возвести величину a в произвольную степень x. Так как в Паскале нет функции возведения в произвольную степень, воспользуемся формулой ax=ex*ln a:

a:=2.5; x:=0.25;

ax:=exp(x*ln(a));

Обратите внимание, что все круглые скобки в выражении должны быть парными. Другой пример применения этого способа: = exp(1/3*ln(x)).

3. Вычислить sin2x . Запись на Паскале: sqr(sin(x)). Сравните с выражением sin x2, которое записывается как sin(sqr(x)).

4. Вычислить k=tg(t). Т. к. функции тангенса в Паскале нет, распишем тангенс в виде k:=sin(t)/cos(t);.

5. При необходимости изменить обычное старшинство операций в записи выражения используются дополнительные круглые скобки. Например, правильная запись выражения выглядит как y:=(a+b)/2;. Запись y:=a+b/2; неверна, т. к. это означает .

6. В записи выражений нельзя пропускать знак *, как часто делается в математике: b2-4ac записывается как sqr(b)-4*a*c. Нельзя писать sin*x или sin x, после имени функции может следовать только ее аргумент в круглых скобках.

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

Например, для переменных

var i,j:integer; f:real;

выражение i+4*j имеет целый тип, и его результат можно записать в целую переменную. Выражение f+i*0.5 дает вещественный, результат, который должен быть записан в вещественную переменную.

Операция деления / в Паскале всегда дает вещественное число. Для деления целых чисел с целым результатом (остаток отбрасывается) используйте div, для взятия остатка от деления двух целых -- mod.

2. Данные в языке Паскаль

Вторник, 29 Сентября 2009 г. 16:12 + в цитатник
Любая программа выполняет над исходными данными некоторые расчеты. При этом, как и переменные или константы в математике, отдельные элементы данных обозначаются даваемыми программистом именами (идентификаторами). Любые идентификаторы в языке Паскаль строятся по следующим правилам:

· имена могут включать латинские буквы, цифры и знак подчеркивания (для простоты опустим некоторые другие символы, разрешенные в именах);

· имя состоит из одного слова; если требуется пробел в имени, он заменяется на подчеркивание: так, My_1 будет правильным идентификатором, а My 1 -- нет;

· имя всегда начинается с буквы: возможен объект с именем A1, но не 1A; прописные и строчные буквы в именах не различаются Паскалем: x1 и X1 -- это одна и та же величина;

· имена не могут совпадать с зарезервированными в языке служебными словами, обозначающими разрешенные в языке операции над данными: например, нельзя назвать Begin или BEGIN ни одну величину в программе, так как begin --зарезервированное служебное слово, а прописные и строчные буквы в служебных словах также не различаются. Познакомиться с большинством служебных слов мы сможем в процессе изучения языка.


2.1. Константы



Константой называют величину, значение которой не меняется в процессе выполнения программы.

Числовые константы служат для записи чисел. Различают следующие их виды:

Целочисленные (целые) константы: записываются со знаком + или -, или без знака, по обычным арифметическим правилам:

-10 +5 5

Вещественные числа могут записываться в одной из двух форм:

обычная запись: 2.5 -3.14 2. -- обратите внимание, что целая часть отделяется от дробной символом точки;

экспоненциальная ("научная") форма: в этой записи вещественное число представляется в виде m*10p, где m -- мантисса или основание числа, 0.1≤|m|≤1, p -- порядок числа, заданный целочисленной константой. Действительно, любое вещественное число можно представить в экспоненциальной форме:

-153.5 -0.1535*103

99.005 0.99005*102

Во всех IBM-совместимых компьютерах вещественные числа хранятся как совокупность мантиссы и порядка, что позволяет упростить операции над ними, используя специальную арифметику, отдельно обрабатывающую мантиссу и порядок. Для программной записи числа в экспоненциальной форме в качестве обозначения "умножить на 10 в степени" используется символ E или e (латинские):

-153.5 -0.1535*103 -0.1535E3 или -1.535E02

99.005 0.99005*102 0.99005E+2 или 9.9005e+01

Без принятия специальных мер, программа на Паскале будет выводить на экран и принтер вещественные числа именно в такой форме. Кроме того, такая форма удобна для записи очень маленьких и очень больших чисел:

1030 1e30

-1020 -1E20

10-30 1E-30

Поскольку размер памяти, отводимой под мантиссу и порядок, ограничен, то вещественные числа всегда представляются в памяти компьютера с некоторой погрешностью. Например, простейшая вещественная дробь 2/3 дает в десятичном представлении 0,666666... и, независимо от размера памяти, выделяемой для хранения числа, невозможно хранить все его знаки в дробной части. Одной из типичных проблем программирования является учет возможных погрешностей при работе с вещественными числами.

Кроме числовых констант существуют и другие их виды:

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

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

'Y' 'я' ' '

В последнем случае значение символьной константы равно символу пробела. Если требуется записать сам символ апострофа как символьную константу, внутри внешних апострофов он удваивается: ''''.

К символьным также относятся константы вида #X, где X -- числовое значение от 0 до 255 включительно, представляющее собой десятичный ASCII-код символа. Таблицы ASCII-кодов, используемых операционными системами DOS и Windows, приведены в Приложении 1. Например, значение #65 будет соответствовать коду буквы 'A' латинской. Обработка нажатий клавиш и расширенные коды клавиатуры описаны в гл. 24 и Приложении 5.

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

'Введите значение X:'

'Ответ='

Если в строковой константе необходимо записать сам символ апострофа, это делается так же, как для символьных констант.

Именованные константы перечисляются в разделе описаний программы оператором следующего вида:

const Имя1=Значение1;

Имя2=Значение2;

...

ИмяN=ЗначениеN;

Ключевое слово const показывает начало раздела описаний именованных констант. Ясно, что зачастую удобнее обращаться к константе по имени, чем каждый раз переписывать ее числовое или строковое значение. Приведем пример раздела:

const e=2.7182818285;

lang='Turbo Pascal 7.1';

Здесь описана числовая константа e со значением основания натурального логарифма и строковая константа с именем lang, содержащая строку 'Turbo Pascal 7.1'.

Каждое даваемое программистом имя должно быть уникальным в пределах одной программы. Если мы включим этот раздел в свою программу, мы уже не сможем создать в ней других объектов с именами e и lang.


2.2. Переменные и типы переменных



Переменными называют величины, значения которых могут изменяться в процессе выполнения программы. Каждая переменная задается своим уникальным именем, построенным по правилам, указанным в начале главы. Максимально возможная длина имени зависит от реализации Паскаля, теоретически можно давать переменным имена вплоть до 63 символов длиной, что едва ли актуально -- обычно имена не длиннее 5-10 символов.

Поскольку любые данные в памяти компьютера хранятся в числовой форме и двоичной системе счисления, кроме имени, переменной обязательно следует присвоить и тип, определяющий диапазон значений, принимаемых переменной, и способ ее обработки машиной. Поясним сказанное на примере. Как видно из Приложения 1, большая латинская буква 'A' имеет десятичный код 65, или 01000001 в двоичном представлении. Без дополнительной информации о типе данных, хранящихся в некоторой ячейке памяти, компьютеру было бы невозможно решить, что именно представляют из себя эти данные -- число 65, код символа 'A' или что-то еще. В любом языке программирования, в том числе и в Паскале, существует стандартный набор типов, к которым может быть отнесена та или иная совокупность ячеек памяти. Информацию о типах данных Паскаля удобно свести в таблицу. Строки этой таблицы будут упорядочены по старшинству типов, от самого "младшего", требующего наименьшее число байт для представления, и, соответственно, представляющего наименьший диапазон возможных значений, до самого "старшего", представляющего наибольший диапазон значений. В табл. 2.1 представлены не все возможные, а лишь основные типы данных Паскаля.



Табл. 2.1. Основные типы данных Паскаля
Ключевое слово Паскаля
Название и описание типа
Объем памяти, байт
Диапазон возможных значений

boolean
Логический: хранит одну логическую переменную
1
true и false

char
Символьный: хранит код одного символа из набора ASCII-кодов
1
от 0 до 255 включительно (28=256)

integer
Целочисленный
2
+215

word
Целочисленный без знака
2
+216 - диапазон вдвое больше, так как 16-й бит не занят под знак числа

longint
Длинное целое: для представления больших целочисленных значений
4
+231

real
Вещественное число с точностью представления до 11-12 знака в дробной части
6
~ 2.9*10-39 - 1.7*1038

double
Вещественное число с точностью представления до 15-16 знака в дробной части
8
~ 5*10-324 - 1.7*10308

string
Последовательность символов типа char длиной от 1 до 255
2-256 (данные строки + 1 байт для хранения ее длины)
Любые строки текста, состоящие из печатаемых символов




Теоретически для записи переменной типа boolean было бы достаточно 1 бита, но минимальная адресуемая единица памяти -- 1 байт (см. Приложение 1). В этом же Приложении уточните, как именно объем памяти в байтах, выделяемой под переменную, влияет на диапазон представляемых ей значений.

Целочисленные и символьные типы обобщенно называют порядковыми, подчеркивая этим, что данные типы имеют конечный набор значений, которые могут быть упорядочены или перечислены. Напомним, что вещественные значения хранятся в памяти компьютера иначе, чем целые -- а именно, как совокупность мантиссы и порядка.

Задача правильного выбора типов данных целиком ложится на программиста. Например, если некоторый счетчик в вашей программе может принимать целочисленные значения от 1 до 100 000, неправильно было бы описывать его как переменную типа integer - ведь 215=32768 и при достижении счетчиком этой величины произойдет сброс его значения, которое станет равно -32768. Разумным в данном случае было бы описание счетчика как переменной типа longint.

Переменные описываются в программе оператором следующего вида:

var Список1:Тип1;

Список2:Тип2;

...

СписокN:ТипN;

Здесь список -- набор имен переменных, разделенных запятыми (или одна переменная), а тип -- любой из рассмотренных выше типов данных. Например, конструкция

var t,r:real;

i:integer;

описывает 2 вещественных переменных с именами t и r, а также целочисленную переменную с именем i. Ключевое слово var можно продублировать, но обычно такой необходимости нет. Сокращение var образовано от английского "variable" (переменная).

Часть 1. Основы языка Паскаль

Вторник, 29 Сентября 2009 г. 16:11 + в цитатник
Первая часть пособия предназначена для изучения базовых приемов программирования. Она последовательно знакомит читателя с азами программистского искусства, начиная с простейших расчетов, состоящих из нескольких формул, и заканчивая применением циклов и массивов.
1. Алгоритм и программа



Написанию программы всегда предшествует разработка некоторого плана (алгоритма) решения задачи. Кратко опишем основные понятия теоретической информатики, связанные с алгоритмами.


1.1. Алгоритм



Алгоритм -- это однозначно определенная последовательность действий, записанная на понятном исполнителю алгоритмическом языке и определяющая процесс перехода от исходных данных к результату.

В этом определении уже указаны основные свойства алгоритма. Во-первых, алгоритм состоит из конечного набора инструкций или шагов, во-вторых, каждый шаг трактуется исполнителем единственным образом, что позволяет гарантированно получить решение для некоторого набора входных данных, в-третьих, алгоритм всегда сводится к некоторому преобразованию исходных данных в результат или результаты. В этом смысле формулы для решения квадратного уравнения или даже четко составленную инструкцию по варке кофе можно считать алгоритмами, выполнимыми исполнителем-человеком. Для машины, разумеется, требуется более четкая формализация задачи, чем для человека, понимать естественный язык компьютеры пока неспособны, отсюда необходимость учета при составлении алгоритма ограниченного набора инструкций ЭВМ.


1.2. Свойства алгоритма



Перечислим выделенные в п. 1.1 свойства алгоритма.

· Дискретность -- алгоритм состоит из отдельных инструкций (шагов).

· Однозначность -- каждый шаг понимается исполнителем единственным образом.

· Массовость -- алгоритм работает при меняющихся в некоторых пределах входных данных.

· Результативность -- за конечное число шагов достигается некоторый результат.


1.3. Формы записи алгоритма



Принято выделять 2 основных формы записи алгоритма.

Графическая форма записи (блок-схема) характерна тем, что отдельные шаги алгоритма изображаются геометрическими фигурами, а последовательность выполнения шагов -- связями между этими фигурами. На рис. 1.1 указаны основные элементы блок-схем.





Рис. 1.1. Основные элементы блок-схем



Указанные на рис. 1.1 геометрические фигуры интерпретируются так:

Прямоугольник -- любая последовательность действий; внутри прямоугольника записываются формулы или словесное описание выполняемых действий;

Ромб -- блок проверки условия; так как любое условие может быть только истинно или ложно, у блока 1 вход и 2 выхода, соответствующие действиям, выполняемым в случаях, когда условие истинно и когда оно ложно. Выходы подписывают символами "+" и "-", "да" и "нет", "1" и "0" и т. п.

Параллелограмм -- блок ввода исходных данных. Внутри фигуры обычно пишется, какие именно данные должны быть введены;

Лист с разрывом -- блок вывода данных. Внутри блока указывается, какие данные или сообщения программа выводит для представления пользователю;

Закругленные прямоугольники -- необязательные блоки начала и конца программы, внутри блоков обычно указываются ключевые слова "нач" и "кон" соответственно;

Последняя фигура служит для изображения циклов, как правило, у нее 2 входа (первый и повторный вход в цикл) и 1 выход, соответствующий завершению циклического процесса.

На рис. 1.2 приведен пример блок-схемы, иллюстрирующей известный процесс решения квадратного уравнения.

Язык блок-схем довольно громоздок, как правило, он не применяется профессионалами, однако, на начальном этапе обучения программированию планирование несложных программ в виде блок-схем может оказаться весьма полезным.

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

· нач -- начало программы;

· кон -- конец программы;

· если ... то ...иначе -- проверка условия;

· ввод -- ввод данных;

· вывод -- вывод данных;

· для ... от .. до ... нц ... кц -- цикл со счетчиком (нц -- начало цикла, кц -- конец);

· пока ... нц ...кц -- цикл с предусловием;

· нц ... кц ... пока -- цикл с постусловием.





Рис. 1.2. Блок-схема решения квадратного уравнения



Все алгоритмические конструкции, соответствующие ключевым словам псевдокода, будут изучены нами в этом пособии. Как правило, программисты используют элементы псевдокода при планировании частей своей будущей программы.


1.4. Программа и программное обеспечение



Программа -- это реализация алгоритма на конкретном языке программирования. Совокупность существующих программ образует программное обеспечение (ПО). ПО принято делить на 2 вида.

Системное ПО обеспечивает работу компьютера и внешних устройств, а также поддержку прикладных программ. Оно разрабатывается квалифицированными специалистами на машинно-ориентированных языках программирования, дающих доступ к аппаратуре компьютера. Примерами системного ПО могут служить операционная система Windows (или любая другая), драйверы внешних устройств компьютера, утилиты для его технического обслуживания, системы программирования, применяемые для разработки собственных приложений.

Прикладное ПО предназначено для решения конкретных задач пользователя. Оно разрабатывается на языках высокого уровня, облегчающих процесс программирования за счет множества готовых решений. К одному из таких языков относится и Паскаль, который мы будем изучать.


1.5. Этапы разработки программы



Разработка любой программы, от несложной учебной задачи до профессионального приложения, может быть разбита на ряд этапов. Кратко опишем и охарактеризуем их.

1. Определение входных и выходных данных, требований к программе.

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

2. Разработка алгоритма.

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

3. Кодирование (программирование).

Третий этап -- это перевод алгоритма на язык программирования и создание исходного текста программы в одной из систем программирования. Программа на любом языке состоит из операторов -- так называются отдельные действия, разрешенные в языке. Число операторов в любом языке ограничено и правила их написания жестко заданы.

4. Компиляция и отладка.

Исходный текст на Паскале не будет непосредственно исполняться компьютером -- для работы программы ее требуется откомпилировать, т. е., перевести в машинный код. Эту работу выполняет специальная программа-компилятор или оболочка языка. Оболочка Паскаля, с помощью которой мы будем разрабатывать свои программы, называется Turbo Pascal 7.1, она разработана компанией Borland International в 1983-97 гг. В результате преобразования компилятором исходного текста программы в машинный код получается исполняемый файл с расширением exe, который можно запустить (выполнить) в той операционной системе (ОС), для которой разработан компилятор. Наша оболочка Паскаля создавалась для ОС MS-DOS, однако, в современных ОС семейства Windows программа, написанная на Паскале, работать все же будет, правда, без удобных интерфейсных возможностей Windows.

Итак, компиляция -- это процесс преобразования программы в машинный код. Программа, которую удалось откомпилировать, не обязательно работает правильно. Она может содержать ошибки, для выявления которых предназначен этап отладки -- поиска ошибок в программе. Как правило, компиляция и отладка выполняются программистом в тесной взаимосвязи.

Возможны программные ошибки трех видов:

· синтаксические (ошибки в правилах языка);

· алгоритмические (ошибки в логике программы);

· ошибки времени исполнения, возникающие в процессе работы запущенной программы.

Компилятор способен найти только синтаксические ошибки, для выявления же алгоритмических ошибок служит этап тестирования программы. Ошибки времени исполнения возникают как результат некорректных действий пользователя, недопустимых операций над данными (например, попытки извлечь квадратный корень из отрицательного числа, поделить на ноль) или ошибок программного и аппаратного обеспечения ЭВМ. Об их обработке будет рассказано в гл. 8.

5. Тестирование.

Тестированием называют проверку правильности работы программы на наборах "пробных" (тестовых) данных с заранее известным результатом. Конечно же, тестирование всей программы сразу возможно лишь для несложных учебных задач. Реальные программы, как правило, тестируются "по частям" -- отдельными функциями и модулями.

6. Документирование и поддержка.

Этот этап включает в себя создание справочной системы и документации к программе, возможно, расширение ее функциональности, выпуск новых версий, исправление ошибок, которые практически неизбежны в любой сложной программной системе. В наших учебных задачах этап поддержки будет отсутствовать.


Поиск сообщений в xpackpackax
Страницы: 24 ... 19 18 [17] 16 15 ..
.. 1 Календарь