Язык Паскаль и среда PascalABC
Паскаль обычно применяют для обучения школьников, в реальной промышленности он на момент 2017 года мало где применяется и является несерьёзным. Хотя раньше, м.б. в 90-х, этот язык был гораздо более популярен наряду с Бейсиком. Тем не менее полезно изучить хотя бы основы. Т.к. мы уже знакомы с одним языком, изучение второго не представляет особой трудности- основные принципы программирования тебе уже и так понятны, поэтому не нужно долго размусоливать то, что ты уже и так знаешь.
Для программирования на паскаль мы можем использовать среду разработки PascalABC, она абсолютно бесплатна и общедоступна, скачать её можно на официальном сайте: pascalabc.net.
К слову сказать, это и среда разработки, и версия языка одновременно. Сделано нашими российскими разработчиками- вся инфа есть на их сайте. Сам язык Паскаль придуман человеком с интересной фамилией Вирт (есть же слово- виртуальный- вряд ли это связано, просто интересно) в конце 60-х, опубликован 1970-м году. К слову, с++ придуман тоже товарищем с интересной фамилией- Страуструп.
Изначально в паскале не было ООП (объектно-ориентированного программирования), но позже его добавили и язык уже стал называться Delfi (дельфи) или Delfi Object Pascal. Чем-то похоже на эволюцию с++ из языка си. В среде PascalABC немного изменённая и доработанная версия уже дельфи паскаля с ООП. Кроме того, тут есть упрощающие модуля для графики и виндовс окон. Виндовс приложения тут создавать гораздо легче чем в с++, потому что тут можно видеть сразу и явно дизайн, предлагаются варианты что можно прописывать и прочее. Также тут есть задачник для тренировки, справка по языку- в общем, можно самостоятельно освоить Паскаль на базовом уровне лишь по тем материалам, которые уже есть в самой программе PascalABC. В общем, тут всё создано для того чтобы какому-нибудь школьнику или студенту освоить с нуля разные части программирования (основы, ООП, виндовс окна, графика и прочее) было как можно легче и доступнее.
|
|
Итак, скачиваешь программу PascalABC c официального сайта:
http://pascalabc.net/downloads/PascalABCNETWithDotNetSetup.exe
Устанавливаешь, запускаешь- проект создаётся при запуске автоматически. Вместо int main() у нас используется начало и конец:
begin
// тут будет вся программа (комментарии делаются так же двумя слэшами)
end.
Кстати, есть у всей системы веб-версия, которая позволяет проверять код без использования самой среды на компьютере, своеобразный онлайн-компилятор:
http://wde.pascalabc.net
Здесь мы рассмотрим только основы, потому что можно написать целую аналогичную книгу, рассмотрев чуть ли не все типы, команды и прочее. Впрочем, ты сам это можешь посмотреть в справке (F1). Также тут есть примеры программ для самообучения: помощь -> изучаем pascalabc.net. И ещё есть задачник для самотренировки: модули -> посмотреть задания.
|
|
Никаких include, using namespace- этой всей фигни тут нет. Регистр букв тоже не важен, т.е. ты можешь писать Begin c большой буквы и разницы для компилятора никакой не будет. То же самое касается всех остальных команд.
Переменные объявляются после поля var. Например ниже примеры объявления целых чисел, вещественных и строк. Для строк ничего подключать не надо.
var
x,y : integer;
r : real;
s,s1,s2 : string;
Можно писать и так:
var x,y : integer;
var r : real; и т.п.
Переменные можно объявлять как до главного бегина, так и внутри.
Для ввода из консоли используются функции read или readln. В pascalABC разницы никакой не замечено. Для вывода- write и writeln. Если мы пишем writeln, то после вывода происходит переход на новую строку.
Ниже пример всей программы: создаём 2 переменные целого цисла, складываем и выводим:
begin
var a,b : integer;
write('a= '); read(a);
write('b= '); read(b);
writeln('a+b= ', a+b);
end.
Для запуска жмём зелёную кнопочку наверху или F5. Вывод будет внизу в самой среде, без консольных окон. Если нам нужно консольное окно, то программу нужно скомпилировать: верхнее меню -> программа -> компилировать (CTRL + F9). Далее в корневой папке диска С находим папку PABCWork.NET, в ней будет уже готовый exe файл с программой.
|
|
Для того чтобы не вылетало, тут нет system("pause"), поэтому запросим ввести какую-нибудь переменную, например тут в конце программы напишем просто read(a). И как только мы введём любое число и нажмём enter, консольное окно закроется. Можно предварительно также выводить что-то вроде "Программа завершена. Для выхода введите любое число и нажмите enter"
Можно вводить несколько переменных сразу: read(a,b,c,d);
Чтобы сделать просто лишний переход на новую строку, пишем: writeln(); это аналог cout << endl;
Присваивание идёт через двоеточие и равно. Например:
var pi : real; pi:= 3.141592653;
Также есть отличия в плане целых и дробных: если мы поделим 2 целых, которые нацело не делятся, то получится дробное и так выведется. Пусть мы делим 2 целых числа: a/b. Если нам нужна целая часть, пишем a div b. Остаток находится так: a mod b. Округлить до целого можно так: trunc(x);
Также работают операции изменения: a+=2 всё равно что a:= a+2;
Математические функции во многом аналогичны: sqrt(), abs(), sin() и т.д. Для них подключать ничего не надо. Точный список функций можно найти в справке.
Условие реализуется так:
if (условие) then делать;
|
|
Или так: if(условие) then делать одно else делать другое ;
Если действие больше чем одно, то вместо фигурных скобок у нас begin и end; Главный end с точкой, все остальные- с точкой с запятой.
Ниже пример упрощённой программы, которая считает корни квадратного уравнения:
begin
var a,b,c,d : real;
read(a,b,c);
if(a<>0) then begin
d:= b*b - 4*a*c;
if (d<0) then writeln('Корней нет');
if (d=0) then writeln('x= ', -b/(2*a));
if (d>0) then begin
writeln('x1= ', (-b + sqrt(d) ) / (2*a));
writeln('x2= ', (-b - sqrt(d) ) / (2*a));
end;
end;
end.
Ах да, знаки тут немного отличаются: присваивание (:=), равенство (=). В отличие от с++, где у нас присваивание(=), равенство(==). Ну а "не равно" на паскале пишется как меньше или больше, т.е. <>
Для объединения условий: or (или), and (и), not (не). При этом тут не нужно заключать в скобки всё условие, если мы например что-то перечисляем:
if (x mod 2 = 0) and (x>=100) and (x<=999) then writeln(x);
Теперь циклы. Тут в основном 2 типа:
var i: integer;
for i:=1 to 100 do что-то делаем 100 раз
или
while (условие соблюдается) do делаем
Также есть третий редкий тип, аналог do while в c++, но с одним отличием: в с++ мы делаем пока условие какое-то соблюдается, а в паскале делаем пока какое-то условие не станет таким как надо:
repeat
делаем что-то
until (нужное нам условие чтобы выйти из цикла) ;
Например:
var a: real;
Repeat
read(a);
if(a<10) then writeln('Ошибка');
until (a>=10);
Прям так копируется как в паскаль абс- это даже круто ))) масштаб мы можем менять колёсиком, как и в visual studio.
Для цикла for в паскале у нас по умолчанию i++, в этом плане функционал меньше. Если мы хотим наоборот уменьшать итератор, то можно писать например так:
for var i:=8 downto 2 do write(i,' ');
Теперь посмотрим как делать массивы и функции. Массив из 10 целых чисел объявится к примеру так:
var mass : array[1..10] of integer;
и у нас есть элементы mass[1], mass[2] и т.д. до mass[10]. Нумерация здесь может идти не только с 0, но и с любого числа, например var a:array[4..14] of real; в этом плане функционал больше.
Можно сделать двумерный массив: var m:array[1..7, 1..5] of integer; И обращаться к элементу так: m[3,2];
Функции создаются так. Ниже на примере факториала:
function fact (n:integer) : integer;
begin
var res, i: integer;
res:=1;
for i:=1 to n do res:= res*i;
fact:= res;
end;
Заметим разницу: return тут нет, вместо этого присвоение значения имени функции, в нашем случае fact. Также всегда пишется кодовое слово function, а тип возвращаемого значения указывается после аргументов. И ещё точка запятой после этого.
Аргументов может быть несколько и разного типа, например так:
function mrrow (a,b : real; c:string) : integer;
Используется функция как обычно, например write(fact(6)); или a:= fact(5);
Функции, которые ничего не возвращают, называются процедурами, а типа void тут нет, пишется так: procedure имя (аргументы) ;
Например, процедура перехода на новую строку n раз:
procedure nl (n:integer);
begin
for var i:=1 to n do writeln();
end;
Также можно использовать перегрузку функций.
Случайное число от 1 до n можно вызвать так: random(n)- это будет целое значение, которое можно использовать как мы хотим.
Вместо класса тут может использоваться структура (запись), т.е. без ООП (объектно-ориентированного программирования). Например, точка:
type point = record
x,y : integer;
end;
Обращение как к обычному элементу класса, например var a:point; a.x:= 100; a.y:= random(100); и т.п.
...
Теперь посмотрим как тут можно делать графику. Это гораздо проще чем в си плюс плюс. В начале программы пишем uses GraphABC; и можно сделать далее begin и end основные. Запустим- вылезет окошечко.
Система координат начинается с левого верхнего угла. Окно по умолчанию: 640 по ширине вправо и 480 по высоте вниз. Вместо 640 и 480 можно писать WindowWidth и WindowHeight. Также можно задать размеры окна самому, например 500 на 400:
SetWindowSize(500,400);
Теперь напишем, начиная с точки с координатой 100 вправо и 200 вниз, слово "привет". Для этого пишем такую программу, покажу всю:
uses GraphABC;
Begin
textout(100,200,'Привет');
end.
Можно выводить и числа- надо вместо 'Привет' написать какое-нибудь число.
Далее мы можем рисовать круги, прямоугольники и линии. Для этого используются свои функции:
circle(x,y,r); нарисовать круг с центром в (x,y) и радиусом r.
rectangle(x1,y1,x2,y2); нарисует прямоугольник между 2 диагональными точками: (х1,у1) и (х2,у2).
line(x1,y1,x2,y2); рисует линию по 2 точкам.
Можно в цикле рисовать несколько таких фигур. А ещё можно задавать цвет. Для этого перед рисованием фигуры пишем: SetBrushColor(цвет); Чтобы закрасить обводку, пишем SetPenColor(цвет). По умолчанию обводка чёрная, а цвет фигуры белый. Цвет начинается с cl и далее название на английском. Ниже пример рисования 5 красных линий:
uses GraphABC;
Begin
for var i:=1 to 5 do begin
SetPenColor(clRed);
line(0,0+i*50, 640, i*50);
end;
end.
Можно использовать случайный цвет: clRandom. Ниже мы нарисуем картину из 100 красных кругов со случайным радиусом и в случайных местах:
uses GraphABC;
Begin
for var i:=1 to 100 do begin
SetPenColor(clRed);
SetBrushColor(clRed);
circle(random(300), random(300), random(100));
end;
end.
Можно даже сделать простую анимацию, для этого делается задержка: sleep(миллисекунды); Например, будем рисовать круги вправо с задержкой:
uses GraphABC;
Begin
for var i:=1 to 10 do begin
sleep(300);
SetBrushColor(clRandom);
circle(i*50,100,50-i*4);
end;
end.
Посмотрим как загружать картинки. Нужно создать переменную типа picture:
var p : picture;
Естественно, у нас подключено graphabc. Далее я сделал в пэинте тестовую картинку, сохранил как jpg и переместил в папку PABCWork.NET на диске C.
Загрузка картинки: p:= picture.Create('example.jpg');
Помещение этой картинки в нужную координату: p.Draw(300,200);
Ниже я приведу код игры сапёр, на примере которого ты можешь со всеми этими технологиями ознакомиться:
uses graphABC;
Var
mass: array [0..11,0..11] of integer;
pic: array [0..15] of Picture;
x,y,i,j,n:integer;
size:integer;
procedure GameOver();
var i,j:integer;
Begin
for i:=1 to 10 do
for j:=1 to 10 do
pic[mass[i][j]].Draw(i*size, j*size);
end;
procedure MouseDown(x,y,mb:integer);
Begin
i:=x div size;
j:=y div size;
if mb=1 then pic[mass[i,j]].Draw(i*size,j*size);
if mb=2 then pic[11].Draw(i*size,j*size);
if (mb=1) and (mass[i,j]=9) then GameOver();
end;
Begin
size:=32;
SetWindowSize(400,400);
OnMouseDown:=MouseDown;
for i:=0 to 11 do pic[i]:=Picture.Create('images/'+i.ToString()+'.jpg');
for i:=1 to 10 do for j:=1 to 10 do begin
mass[i,j]:=10;
if (random(5)=0) then mass[i,j]:=9;
end;
for i:=1 to 10 do for j:=1 to 10 do begin
n:=0;
if mass[i,j]=9 then continue;
if mass[i+1,j]=9 then n:=n+1;
if mass[i,j+1]=9 then n:=n+1;
if mass[i-1,j]=9 then n:=n+1;
if mass[i,j-1]=9 then n:=n+1;
if mass[i+1,j+1]=9 then n:=n+1;
if mass[i-1,j-1]=9 then n:=n+1;
if mass[i-1,j+1]=9 then n:=n+1;
if mass[i+1,j-1]=9 then n:=n+1;
mass[i,j]:=n;
end;
for i:=1 to 10 do for j:=1 to 10 do pic[10].Draw(i*size, j*size);
end.
Картинки от этого сапёра ты можешь скачать и использовать здесь:
https://yadi.sk/d/72lR8VFy3KZT9Z
Про рисование игр на паскале можно было написать отдельную книгу, возможно я даже когда-нибудь её напишу, поэтому здесь мы на этом закончим. Всё-таки тут предполагался просто ознакомительный режим.
57. Язык Си и отличия от С++
Как известно, язык с++ произошёл от си. В си нет объектно-ориентированного программирования. Сначала появился язык "си с классами", а позже уже и сам си плюс плюс. Название исходит из инкрементации си- как бы на единицу больше, т.е. чуточку получше. Язык си разработан в 1969-73 годах, примерно когда появился и язык паскаль.
Полезно посмотреть, как писать хотя бы простые вещи на языке си, тут во многом всё похоже на си плюс плюс. Кроме того, сам язык си входит в с++ (если упрощённо рассматривать, хотя всё чуточку сложнее), т.е. ты можешь в программе на с++ спокойно писать участки кода с конструкциями языка си и компилятор будет это переваривать. Хотя в общем случае это не так, но для начала для простоты мы можем принять и так. Язык си также называют "чистый си", в отличие от c++, c# и прочих. С++ был разработан в начале 80-х как усовершенствование языка си, опубликован в 1985 году.
Но мы можем создать и проект чисто на языке си. Для этого не нужна какая-то отдельная среда. В devcpp ты так же создаёшь проект, только выбираешь при этом не с++, а просто с. Создастся файл main.c. В visual studio ты тоже просто можешь создать файл main.c
В си заметно больше заморочек, чем в с++, и он кажется сложнее- поэтому поняв с++, изучение языка си уже не кажется таким страшным. Просто нужно больше кода писать и больше нюансов помнить и учитывать. Потому что си- это более низкоуровневый язык чем с++, т.е. он ближе к машинному языку, а поэтому быстрее- но при этом сложнее для программиста (для человека). На си часто программируют микроконтроллеры, например калькуляторы какие-то и прочие устройства.
Итак, приступим. В языке си тоже нужно подключать библиотеки, только они называются немного по-другому. Например, вместо iostream у нас stdio.h. Для подключения библиотек используется та же команда #include.
Для вывода информации используется функция printf(); Как в паскале примерно. Например, чтобы вывести привет, мы пишем: printf("Privet"); Для поддержки русского языка можно использовать такие же приёмы. Для перехода на новую строку можно использовать только последовательность "\n"; Типы переменных такие же: int, char, double и прочие.
Программа, которая выводит Privet:
#include <stdio.h>
int main() {
printf("Privet\n");
system("pause");
}
Теперь попробуем создать 2 переменные целого числа и сложить. В си есть заморочка с вводом и выводом переменных и ты сейчас офигеешь насколько в с++ в этом плане сделали всё проще.
Чтобы создать переменную a, мы пишем как привыкли: int a;
Можно через запятую создать две: int a,b;
А вот вводить переменную, например a, нужно так: scanf("%d",&a);
Т.е. мы не просто вводим переменную, а указываем через "%d" что мы вводим именно целое число. Для каждого типа переменной нужно указывать свои буквы после процента. А далее мы вводим не просто переменную, а ещё и с амперсентом, чем обозначается адрес.
На этом заморочки не заканчиваются. Выводить тоже надо с процентными последовательностями до переменных, но адрес ставить уже не надо. Вот вся программа, которая складывает 2 целых числа:
#include <stdio.h> // библиотека ввода-вывода
int main() {
int a,b; // освобождение 2 ячеек памяти под целые числа с именами a,b
scanf("%d",&a); // ввод переменной a
scanf("%d",&b); // ввод b
printf("%d",a+b); // вывод суммы
printf("\n"); // переход на новую строку
system("pause"); // пауза чтобы консольное окно не вылетало
}
А как же с типами float, double и прочими? Ниже список с процентными символами, которые нужно указывать:
%d — целое число типа int со знаком в десятичной системе счисления;
%u — целое число типа unsigned int;
%x — целое число типа int со знаком в шестнадцатеричной системе счисления;
%o — целое число типа int со знаком в восьмеричной системе счисления;
%hd — целое число типа short со знаком в десятичной системе счисления;
%hu — целое число типа unsigned short;
%hx — целое число типа short со знаком в шестнадцатеричной системе счисления;
%ld — целое число типа long int со знаком в десятичной системе счисления;
%lu — целое число типа unsigned long int;
%lx — целое число типа long int со знаком в шестнадцатеричной системе счисления;
%f — вещественный формат (числа с плавающей точкой типа float);
%lf — вещественный формат двойной точности (числа с плавающей точкой типа double);
%e — вещественный формат в экспоненциальной форме (числа с плавающей точкой типа float в экспоненциальной форме);
%c — символьный формат;
%s — строковый формат.
Поехали дальше. Арифметика в языке си такая же как в с++, т.е. знаки плюс, минус и прочее всё то же самое. Условия и циклы имеют такой же синтаксис.
Тогда теперь сосчитаем сумму чисел от 1 до 100 с помощью цикла на языке си. Это выглядит так:
#include <stdio.h>
int main() {
int sum= 0, i;
for (i=1; i<=100; i++) sum+= i;
printf("%d",sum);
system("pause");
}
Важно: в printf мы указываем только 2 аргумента: процентный символ и выводимое число. Все дальнейшие аргументы через запятую игнорируются. Приходится prinf писать несколько раз.
Если мы хотим вывести "Сумма: 5050" то тогда это выглядит так:
printf("Сумма: %d",sum);
Для русского языка как обычно прописываем setlocale(0,"");
...
Для корня, модуля и т.п. всё то же самое, но библиотека уже <math.h>
Ниже программа, которая считает арифметический корень из семи:
#include <stdio.h>
#include <math.h>
int main() {
setlocale(0,"");
printf("%lf",sqrt(7));
printf("\n");
system("pause");
}
Помним про процентные символы для ввода-вывода.
...
Статические массивы создаются и используются так же. Пример:
int a[5]= {2,4,7,5,1}; printf("%d", a[2]);
А вот динамические создаются по-другому. Нужно подключить библиотеку:
#include <malloc.h>
Массив целых чисел под именем mass и с числом элементов n создаётся так:
int *mass; mass = (int*)malloc(n * sizeof(int));
Ниже будет программа, где мы создаём массив, вводим элементы и затем выводим:
#include <stdio.h> // для ввода-вывода
#include <malloc.h> // для динамических массивов
int main() {
setlocale(0,""); // для вывода русских символов
int i,n;
printf("Размер массива: "); scanf("%d", &n); // сколько элементов
int *a; a = (int*)malloc(n * sizeof(int)); // создали массив
// вводим элементы
for (i = 0; i<n; i++) {
printf("a[%d] = ", i); // выводится будет a[0]=, a[1]= и т.д. в цикле
scanf("%d", &a[i]);
}
for (i = 0; i<n; i++) printf("%d ", a[i]); // выводим
printf("\n"); system("pause");
}
Случайные числа создаются такими же функциями, только библиотеки <stdlib.h>, <time.h>
Ну и помнить про процентные символы, они тут как воздух в языке си.
Функции делаются так же как в си плюс плюс. Ниже пример генерация случайного двузначного числа через функцию:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int getrand() { return rand()%90 + 10; }
int main() {
setlocale(0,"");
srand(time(NULL));
printf("%d ", getrand());
printf("\n");
system("pause");
}
Напоследок посмотрим работу с файлами поверхностно. Тут не нужно подключать библиотеки кроме stdio.h.
1. Для работы с файлами создаём переменную-указатель типа FILE:
FILE *f;
2. Для открытия файла с записью туда пишем:
f= fopen("test.txt", "w");
Если файла с таким именем в папке с exe нет, то он создатся.
Запишем туда число 134: fprintf(f,"%d", 134);
3. Закрытие файла: fclose(f);
4. Открытие файла для чтения: f= fopen("test.txt", "r");
Извлечём число: int a; fscanf(f,"%d", &a);
5. Закроем файл и выведем в консоль:
fclose(f); printf("%d",a);
Ну вот и всё. На этом, думаю, общее знакомство с языком С мы закончим.
Основы языка Java
Язык java является также одним из самых распространённых языков программирования. Он появился позже чем с++ (в 1995 году) и является более высокоуровневым, поэтому и более медленным, но в каких-то случаях более удобным для разработки на нём. Тем не менее java является си-подобным языком и поэтому похож на си плюс плюс. Но всё же тут очень много отличий и сложностей, это мы и посмотрим- как написать самые простые вещи на языке джава или ява.
Джава используется для программирования приложений на операционной системе для смартфонов Android, в этом может быть весомый интерес. К слову сказать, на iOS приложения пишутся на другом языке- Objective C. Изначально джава создавался как кроссплатформенный язык, чтобы можно было его использовать хоть на мобильниках, хоть в кофемолках (отсюда и название с логотипом), хоть и на компьютерах- в этом его особенность. Программы, написанные на java, переводятся в т.н. байт-код (машинно-независимый код низкого уровня), благодаря чему они могут работать на любой компьютерной архитектуре. Даже на старейших кнопочных телефонах обычно игры написаны на джава. А ещё на java написана легендарная игра майнкрафт. Ну вот, теперь после такого экскурса можно и приступать.
Для работы с java нам нужна виртуальная машина- скачать её можно на официальном сайте, называется java virtual machine. Или можно просто ввести "скачать джава на компьютер". Если ты когда-то играл в игры или пользовался приложениями, написанными на джаве, ты уже наверняка это скачивал и знаешь про это.
https://java.com/ru/download
Далее нам нужно скачать пакет разработчика- java development kit (JDK). Так же вбиваем в поисковик, заходим на официальный сайт и скачиваем. Эта вещь нужна чтобы писать программы на джава, т.е. уже для разработчика, а не просто для пользователя. Если у тебя 64-битная система, то выбираешь именно эту версию.
Ну и далее мы скачаем среду для программирования, хотя можно обойтись и без неё- но это для любителя будет слишком сложно и он бросит затею попробовать писать на джава ещё на старте. Поэтому мы скачаем IDE. Их несколько самых используемых: Eclipse, Netbeans, Intellij idea, а также android studio. Я пользовался eclipse, она у меня прижилась и работает, поэтому на её примере я и буду всё показывать. Скачать её можно бесплатно с официального сайта.
Также я подготовил jdk и eclipse на яндекс диске (jdk, ide и прочее), можешь просто скачать тут:
https://yadi.sk/d/1clDTWOy3KZSRn
Но т.к. у всех этих вещей часто появляются новые версии, то мои версии будут старыми, а последние версии ты можешь найти в интернете как я выше написал.
JDK: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
Eclipse: https://www.eclipse.org/downloads/
Теперь как создать новый проект в eclipse. Естественно, сначала мы её скачиваем и устанавливаем. Всё, теперь можно использовать. Запускаем.
Основы языка C#
Ссылочные
Основы языка Python
Ссылочные
________________________________________________
КОНЕЦ
Васька Мырт, 2017
Дата добавления: 2018-09-22; просмотров: 322; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!