Урок №1 Hello World!, Типы данных
| |
Sharom | Дата: Четверг, 14 Января 2010, 00:16 | Сообщение # 1 |
участник
Сейчас нет на сайте
| HELLO WORLD! Hello World! самая популярная программа. Да, да не смотрите так на экран. Это программа, которая пишется 90% программистов. По сути это программа, которая выводит на экран лишь одну строчку текста. Сразу начнем с текста программы Code Program HelloWorld;
begin writeLn ('Hello World!'); end. Быстренько запускаем Turbo Pascal, набираем эти четыре строчки, нажимаем Ctrl+F9(либо заходим в меню "Run" и нажимаем Run). Ничего не вывелось? Досадно наверное?? Все проще чем вы думаете, после строчки writeLn ('Hello World!'); наберите строчку Readln; Если вы используете Delphi, то для создания нового проекта зайдите File-New-Other-Console Application. Для запуска программы нажимаем F9 УРА!!! теперь можно радостно подпрыгнуть!!!!! Что же мы видим на экране - это же Hello World! Я вас поздравляю, с данной секунды вы вступили в ряды начинающих программистов. Когда вы отойдете от состояния эйфории, давайте рассмотрим всю программу более серьезно (по строкам) Слово Program - служебное слово языка Pascal. Служебные слова - это такие слова, которые программист использует в строго определённых целях. После слова Program идёт имя программы. Это служебные данные и на программе они не отражаются. Можете со спокойной душой удалить строчку Program HelloWorld; и запустить программу, как видите ничего не изменилось. Эта строчка нужна лишь для вас, для понимая в какой программе вы сейчас находитесь. Слово begin - отсюда начинается сама программа (begin - англ. начало). Если у вас сильно хромает английский язык, нужно будет обзавестись переводчиком. writeLn ('Hello World!'); - обратите внимание, что здесь нет служебных слов! (Hello World! - выделена что бы понять, что это текст). writeLn - это функция вывода текста на экран, а текст в кавычках ('...') - это, как можно догадаться, то, что надо вывести на экран. Т.е. что бы вызвать функцию нужно написать её имя и в скобках указать параметр. Если вы заметили то при запуске программы курсор помещается на одну строчку вниз (под словом HelloWord маленький прямоугольничек).например можете написать такое: Write ('Hello World!') - курсор не будет переводится и каждый раз запуская программу слова Hello World! будут помещаться на одной строке, а не на новых! Т.е. можно сделать глубокомысленное заключение: функция write выводит текст на экран. ReadLn - это функция ввода данных в программу, в данном случае она лишь нужна нам для того чтобы программа сразу не закрылась, а приостановилась для ввода (чего нибудь) после нажатия Enter программа закроется. ReadLn мы полностью рассмотрим немного позже. Последняя строка: end. - если begin указывал на начало программы, то end указывает на её конец. Обратите внимание на точку: end. - этим мы указываем, что текст программы закончился и дальше читать его не надо. Давайте немного разберемся с правилами: 1. ЗАГЛАВНЫЕ и строчные буквы не различаются. Т.е. мы могли спокойно написать всё это так: Code PROGRAM HELLOWORD;
BEGIN WRITELN ('Hello World!') READLN; END. 2. В написании программ можно использовать только: все буквы английского алфавита, символ подчёркивание "_", цифры 0-9 и спец. символы: @ # $ > < = - * [ ] { } + / ' , . : ; ^ 3. Каждая строка должна заканчиваться точкой с запятой! Однако есть исключения: Если после данной строки (обозначим 1) стоит строка состоящая из одного слова end, то после строки 1 точку с запятой ставить не обязательно. Code Program HelloWord1;
begin write ('Microsoft OUT! '); // Есть точка с запятой writeLn ('Hello World!') // Можно не ставить, так как следующая строка end end. Типы данных Все программы работают с данными. Например, целые числа, вещественные числа, строки - это данные. Данные могут быть постоянными, например дата рождения, а могут быть и переменными, например возраст. Теперь у нас есть задание посчитать три числа (a+b+c)/2=e Нам нужно ввести три числа a,b,c и узнать чему равно e. Тут нам понадобятся переменные. В программе написанной на языке паскаль для переменных отводится специальная "секция" VAR (англ. VARiable - переменная) и каркас программы выглядит так: Code ИмяПрограммы; var Здесь идёт объявление переменных. begin Здесь идёт текст программы. Переменные - это и есть наши данные. Так как Паскаль является строго типизированным языком, то каждой переменной ставится в соответствие свой тип. И для этой переменной разрещены операции допустимые типом. Но мы не всегда можем делать операции между типами: например нельзя сложить число 5 и строку 'Hello world!'! Объявляются переменные таким образом: Code ИмяПеременной : ИмяТипа; В языке Паскаль существует очень разветвлённая система типов и сегодня мы поговорим только 2 из них: Целые и Вещественные. Теперь если у нас числа a,b,c целого типа(тоесть это могут быть числа 1,2,3,4).То а,b,c мы должны объявить следующим образом: Code Program Schet; var a : integer; b : integer; c : integer; begin Здесь идёт текст программы. end. Так же переменные одного типа можно записывать в строчку: a, b, c : integer; Итак, теперь мы умеем выбирать нужный нам тип переменной, объявлять её.... теперь нам нужно научится что-то с ней делать. Так как данные целого типа являются по существу математическими переменными, то для них определены операции: := присваивание ( двоеточие и равно всегда пишутся слитно!) Например присвоить переменной a значение 123: a := 123; Присвоить а значение b: a := b; Очень частая ошибка: забывают ставить двоеточие перед знаком равно! А что такое просто знак равно, мы поговорим позже и подробнее! Главное привыкнуть к такой записи := Сложение + Идём от простого к сложному: присвоить переменной а значение 120 + 3: а := 120 + 3; Присвоить b значение а + 123: b := a + 123; Присвоить с значение a + b + 123: c := a + b + 123; Аналогично сложению делаем вычитание (самостоятельно). Умножение Оно тоже идёт по анологии со сложением но надо помнить приоритет операций! Помните загадку: сколько будет два плюс два умножить на два? Правильный ответ: 6 (т.к. сначала нужно умножать, а потом складывать 2 + 2 * 2) Вот и в паскале нужно строго соблюдать приоритет операций! В этом вам поможет оператор ( )! Тут как в математике: операции в скобках имеют высший приоритет: т.е. (2 + 2) * 2 = 8 Т.к. сначала мы складываем 2 и 2. Деление Здесь все немного сложнее как мы уже с вами знаем Integer это только целые числа, а результат деления всегда вещественный! Т.е. не целый! Возьмём тип Real Напишите программу: Code Program Test; begin writeLn (1.54321); Readln end. и вы увидите вот что: 1.54321000000E+00! Нам с вами, как программистам всё понятно, но вот как быть с пользователями? Что нужно сделать, для того чтобы привести все в надлежащий вид? После числа 1.54321 напишем :2:2 Code writeLn (1.54321:2:2) первая :2 - общее поле выводимой части вторая :2 - дробная часть (точность) Ну а теперь наверное самое интересное! Посчитаем наше уравнение (a+b+c)\2=e Code Program Schet;
var a, b, c : integer; e : real; begin writeLn ('Poschitaem (a+b+c)\2=e');
//Устанавливаем каждой переменной значение a := 3; b := 8; c := 5; e:=(a+b+c)/2; // Вычисляем уравнение writeLn (e); //Вывод результата
readln; end. А что же делать, если мы хотим ввести наши числа с клавиатуры? Тут нам на помощь приходит функция ReadLn Наша программа Code Program Schet;
var a, b, c : integer; e : real; begin writeLn ('Poschitaem (a+b+c)\2=e'); ReadLn(a,b,c); //Вводим значение с клавиатуры
e:=(a+b+c)/2; // Вычисляем уравнение writeLn (e); //Вывод результата
readln; end. На этом наш первый урок закончен. Если у вас что-то не получатся, либо вы не понимаете пишите, будем разбираться
Сообщение отредактировал Sharom - Суббота, 06 Февраля 2010, 20:52 |
|
| |
skorpi | Дата: Четверг, 14 Января 2010, 15:17 | Сообщение # 2 |
постоянный участник
Сейчас нет на сайте
| Хочу добавить для мего чайников и что ты забыл написать включить прогу в паскале и делфи можно через Run>run либо нажать на Ctrl+F9
Сообщение отредактировал skorpi - Четверг, 14 Января 2010, 15:18 |
|
| |
Sharom | Дата: Четверг, 14 Января 2010, 16:02 | Сообщение # 3 |
участник
Сейчас нет на сайте
| skorpi, Спасибо огромное, уже исправил, машинально запускаю прогу и совсем забыл написать в уроке.
|
|
| |
Vinchensoo | Дата: Четверг, 14 Января 2010, 17:12 | Сообщение # 4 |
Злобный социопат с комплексом Бога
Сейчас нет на сайте
| Неплохо, но нужно кое-что править и набивать руку в объяснении материала. Quote (Sharom) Слово program писать обязательно, потом ставим пробел, а Project2 это название вашего проекта. Внимание название проекта должно быть составлено только из букв английской раскладки(например program Rupor;) и если вы хотите использовать цифры в названии проекта то пишите их после названия (например program Rupor4455;) а не (program 4455Rupor;) это будет считаться ошибкой и программа не запуститься. Слово program задает имя программы, почему эт его обязательно писать? Quote (Sharom) Теперь у нас будет переменная x типа integer. А где же объяснение, что такое интежер? То, что это целочисленная переменная- мало, имхо. Объясните, какие значения может принимать, как храниться и прочее. Quote (Sharom) Writeln(x); Опять-таки, объясните, что делают операторы read и write и чем отличаются. Дайте базовое понятие функции
|
|
| |
Sharom | Дата: Суббота, 06 Февраля 2010, 20:59 | Сообщение # 5 |
участник
Сейчас нет на сайте
| Спасибо Vinchensoo, приму к сведенью. Очень сложно объяснить человеку, который не знает даже основ, но все равно буду продолжать. Завтра же перепишу весь первый урок с подробными комментариями, добавлением нового текста и исправлением своих ошибок. Добавлено (06.02.2010, 20:59) --------------------------------------------- Изменил урок. Читаем первый пост
|
|
| |
Diablokiller | Дата: Вторник, 11 Мая 2010, 21:51 | Сообщение # 6 |
участник
Сейчас нет на сайте
| Мне вот интересно, почему в школах до сих пор учат паскалю? Сейчас я учусь в колледже и все же учат паскалю... В 2040 тоже будет паскаль?
Игры - это творчество. ----------------------------------- Meteoron Breakout - Аркада в ретро стиле.
|
|
| |
Angevengelist | Дата: Вторник, 11 Мая 2010, 22:01 | Сообщение # 7 |
постоянный участник
Сейчас нет на сайте
| Diablokiller, а чем плох паскаль?
|
|
| |
Diablokiller | Дата: Вторник, 11 Мая 2010, 22:07 | Сообщение # 8 |
участник
Сейчас нет на сайте
| Паскаль... Он стар, когда я находясь на пике своего изучения Паскаля (массивы, режимы, модули) взялся за Делфи!!! Мне чет стало не по себе, было такое ощущение что это уже другой язык. Так вот, почему Паскаль, а не Делфи?
Игры - это творчество. ----------------------------------- Meteoron Breakout - Аркада в ретро стиле.
|
|
| |
Angevengelist | Дата: Вторник, 11 Мая 2010, 22:10 | Сообщение # 9 |
постоянный участник
Сейчас нет на сайте
| Паскаль основополагающая Делфи. Чесно мне совершенно не составило труда перейти после Паскаля на Делфи. Не смотря на то что первый ЯП который я изучал была JAVA
|
|
| |
froex | Дата: Пятница, 18 Июня 2010, 12:49 | Сообщение # 10 |
Руководитель Froexilize team
Сейчас нет на сайте
| Delphi - это не язык программирования, а среда разработки. Язык там используется Object Pascal. Насчёт старости - можно много спорить, но разве кто-то спорит, что Си - стар? Хотя Си и Паскаль можно считать близкими родственниками. Си до сих пор используется, например, для программирования ядра Linux. В чём отличие между Pascal и Object Pascal? Всё просто - отличается объектная модель. В паскале нет ООП. А изучать ООП, не зная основ - это, мягко говоря, не прилично.
Не превращайте форум в чат. Пишите более развернуто и понятно - всё равно вас попросят объяснить подробнее. Алгоритмы, программирование, оптимизация, тестирование, ведение проектов. Ищу художника, дизайнера, тестера, программистов С и С++ Обучаю процессам разработки и программированию.
|
|
| |
wernher | Дата: Понедельник, 28 Июня 2010, 13:57 | Сообщение # 11 |
Only God is Perfect
Сейчас нет на сайте
| froex, Borland уже начиная с 7-й версии Delphi называет ее именно языком программирования, а не IDE.
|
|
| |
Unofob | Дата: Воскресенье, 28 Ноября 2010, 18:15 | Сообщение # 12 |
уже был
Сейчас нет на сайте
| Не знаю насчет старости или нерентабельности, но выражу свою точку зрения: Pascal был создан специально для того чтобы учить ЯП (если разобраться то Pascal очень понятен, если знаешь англицкий). Так почему не использовать для обучение язык программирования, который был сделан специально для обучения ?
|
|
| |
wernher | Дата: Воскресенье, 28 Ноября 2010, 18:20 | Сообщение # 13 |
Only God is Perfect
Сейчас нет на сайте
| Unofob, для обучения был сделан Basic. Pascal для программирования. Никто не мешает тебе использовать язык который тебе больше нравится.
Сообщение отредактировал wernher - Воскресенье, 28 Ноября 2010, 18:21 |
|
| |
Lord_F | Дата: Воскресенье, 28 Ноября 2010, 18:34 | Сообщение # 14 |
Любопытный Игродел
Сейчас нет на сайте
| Quote (wernher) Unofob, для обучения был сделан Basic. Pascal для программирования. Basic был сделан для обучения. Но из-за его нелинейности (оператора goto) один умный учитель программирования придумал линейный Паскаль. Тоже для обучения!
[quote]Ничто не истина, всё дозволено[/quote]
|
|
| |
wernher | Дата: Понедельник, 29 Ноября 2010, 05:49 | Сообщение # 15 |
Only God is Perfect
Сейчас нет на сайте
| Lord_F, Паскаль (англ. Pascal) — высокоуровневый язык программирования общего назначения. Один из наиболее известных языков программирования, широко применяется в промышленном программировании, обучении программированию в высшей школе, является базой для большого числа других языков. (пруф) Широко применяется в промышленном программировании. Никто не мешает использовать С++ или Java для обучения.
|
|
| |
Me11eR | Дата: Понедельник, 29 Ноября 2010, 06:23 | Сообщение # 16 |
частый гость
Сейчас нет на сайте
| Хм, непонятно зачем делать то что уже давно сделано, грубо легче взять фаронова почитать
|
|
| |
voltermag | Дата: Пятница, 13 Июля 2012, 15:54 | Сообщение # 17 |
постоянный участник
Сейчас нет на сайте
| Простите за нубство, новичок. Но как открыть турбо паскаль? Я скачал и у меня ничего из папки bin не открывается.
Подсказки в ААА играх: Чтобы убить - стреляйте Чтобы не убить - не стреляйте Подсказки в Инди играх: ыаа ыбб беб ыб
|
|
| |
TimKruz | Дата: Пятница, 13 Июля 2012, 16:30 | Сообщение # 18 |
старожил
Сейчас нет на сайте
| Quote (voltermag) Простите за нубство, новичок. Но как открыть турбо паскаль? Я скачал и у меня ничего из папки bin не открывается. Запускать TPX.EXE (вот сейчас скачал TP 7.1, там именно этот файл запускается) или TP.EXE (в старых версиях по-моему этот файл). У меня в Windows 7 работает. При запуске TP может сообщить, что работа в режиме на весь экран невозможна (семёрка почему-то не поддерживает работу MS-DOS'ских программ на весь экран, на счёт Vista не знаю, в XP всё отлично) - просто нажми "пропустить" (а не "закрыть") и программа запустится в окошке. Можно сделать lnk- или pif-ярлык на рабочий стол. Сейчас вот в поисковике искал, там первыми ссылками на "turbo pascal 7.1" выдаёт самораспаковывающийся архив, он сам ставит ярлык на рабочий стол (вроде бы там всякие примеры и ещё что-то есть, не знаю). А вообще, для удобства, попробуй PascalABC.NET (он бесплатный, в отличие от TP), у него интерфейс Windows-ский, в школах теперь его ставят. И возможностей у него больше, чем у старых MS-DOS'ских версий Pascal'я.
Сообщение отредактировал TimKruz - Пятница, 13 Июля 2012, 16:31 |
|
| |
AGENTX001 | Дата: Понедельник, 16 Июля 2012, 12:44 | Сообщение # 19 |
почётный гцупер
Сейчас нет на сайте
| Quote (froex) Язык там используется Object Pascal. Там используется фиговый диалект Object Pascal, под названием Delphi Object Pascal хотя бы позволяет использовать символы инкриминации и дискриминации в стиле С (+=, -=, *=, /=).
Добавлено (16.07.2012, 12:44) --------------------------------------------- Quote (TimKruz) А вообще, для удобства, попробуй PascalABC.NET Если учить, то чему нибудь хорошему, например FreePascal + Lazarus. Кросс платформенный, удобный.
Сообщение отредактировал AGENTX001 - Понедельник, 16 Июля 2012, 12:50 |
|
| |
TimKruz | Дата: Понедельник, 16 Июля 2012, 17:30 | Сообщение # 20 |
старожил
Сейчас нет на сайте
| AGENTX001, да какая разница, там у всех этих разновидностей много общего, выучил Pascal - с лёгкостью разберёшься в особенностях остальных... Я же не предлагаю всю жизнь программировать на PascalABC.NET - этот язык (и среда разработки) всего лишь обучающая программированию вообще и программированию на Pascal в частности. По сравнению с древним TurboPascal она лучше. Quote (AGENTX001) Там используется фиговый диалект Object Pascal, под названием Delphi Delphi - это не диалект, а самостоятельный язык программирования, развившийся из ObjectPascal, который из TurboPascal, который из Pascal. Quote (AGENTX001) в стиле С (+=, -=, *=, /=). Ты что-то путаешь. Наверняка эта версия ObjectPascal появилась позже, чем начал развиваться Delphi... Да и вообще... i:=i+n выглядит нагляднее, чем i+=n, и любой поймёт, что делается i+n и результат - сохраняется в i, а не что-то другое. Впрочем, какая разница, каждый использует то, что ему нравится. Quote (AGENTX001) Кроссплатформенный Кроссплатформенность не очень-то важна, когда абсолютное большинство людей сидит на Windows и не собирается никуда переходить... А на Linux нормальные Windows-программы хорошо работают через эмулятор (или что там)... Например, если собираешься сделать большую игру (особенно - коммерческую), сразу целься в Windows, потому что на ней сидит большинство геймеров, потому что на ней практически все качественные игры... Ну не знаю... Пустой проект на Lazarus весит аж несколько мегабайт (по сравнению с тем же C, это ужасно; даже после всех операций по сжатию пустой проект будет весить где-то 500 КБ) и при этом собирается довольно-таки медленно, в отличие от проектов на Delphi. Единственный плюс (на мой взгляд) Lazarus'а - его абсолютная бесплатность... Но ради прибыльного проекта можно купить что-нибудь мощное... И вообще, сразу же видно, что voltermag только начинает учиться программированию, так что ему лучше выбрать именно обучающий язык программирования, а не хвататься сразу за то, у чего больше функций (кроссплатформенность ему сейчас вообще не нужна).
Короче, хватит спорить о том, какой язык лучше - каждый язык в чём-то лучше остальных, и каждый программист выбирает себе тот, который ему нужен. А информацию о преимуществах того или иного языка нужно читать на официальном сайте...
|
|
| |
|