Для чего нужна переменная sline
Для чего нужна переменная sline
Стандартная библиотека языка С++ предоставляет программистам строковый тип данных (избавляет от использования массивов символов char[ ]).
Мы будем использовать тип данных string наряду со стандартными встроенными типами данных. И вы на первый взгляд не будете замечать никаких различий, хотя на самом деле это абстрактный тип данных, созданный на основе объектно-ориентированных возможностей языка С++. Надеюсь со временем вы тоже сможете создавать АТД, которыми можно будет пользоваться так же удобно и свободно, как и классом string.
Строковый тип данных позволяет хранить строки переменной длины, причем длину можно менять в процессе выполнения программы. Строковый тип представляет операторы, выполняющие такие операции над строками, как контеканация, присваивание, замещение и др.
Для того, чтобы можно было создавать строковую переменную, необходимо подключить описание этого типа данных из стандартной библиотеки.
void main()
<
string name=»Vitaly»; // объявление, определение, инициализация
string lastname=»Domnenko»;
name+=»M.»+lastname; // конкатенация с присваиванием (накапливающее присваивание)
cout
Используя [ ] можно получить символ из любой позиции
char ch=name[5]; // символы нумеруются с нуля
В нашем случае (при программировании для DOS или Windows) используются кодировки CP866 и СP1251 лексикографическое сравнение справедливо и дает нужный результат.
ПРИМЕР ПЕРЕВОДА ПРОГРАММЫ ИЗ DELPHI В PYTHON
Ввод переменных из файла. Вывод данных в файл. Использование внешних подпрограмм
Рассмотрим перевод программы расчета доли отгона в нефтепереработке
Фрагмент программы на Делфи:
uses rewob,pechob,rewlib,rewl,SysUtils, Windows, Messages,
Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
VAR a:string [44];c:string[11];disk:string[5];
tn,rk1,d15,tb,toct,b:real;
i:integer;
procedure r;
var n:integer;
begin
i:=i+1; n:=length(c);
writeln(outfl);write(outfl,’I’,i:3,’I’,a,’ ‘:44-length(a),’I’,b:11:4,’I’,c,’ ‘:11-n,’I’);
end;
begin // начало программы
disk:=’c:\d\’; // Путь к диску, где нах-ся папка с файлом с исходными данными
assign (inpfl,disk+’otgond\otgon.dan’);reset(inpfl); //inpfl-имя файла с исходными данными
read(inpfl,if1,iy,n2,n5); //вводим переменные if1,iy,n2,n5
Теперь будем делать эту программу на Python: Выберем в пункте меню FILE/NEWFILE:
Пишем соответствующий код проседуры r на PYTON:
#r()-функция для вывода строки в таблице для одиночных переменных
def r(): #должны быть скобки
global i #Если внутри операция с внешним параметром, то надо GLOBAL
i+=1
fw.write(‘I’+str(i).rjust(3)+’I’+a.ljust(44)+’I’+str(b).rjust(11)+’I’+c.ljust(11)+’I’+’\n’)
#функция ljust слева пробелы r-справа
Далее надо ввести переменные if1,iy,n2,n5
sline=’ ‘ #переменная для суммирования строк
disk=’d:\PYTHON\otgon’ #определение диска и папки, где находятся исходные данные
f = open(disk+’\otgon.dan’) #открытие файла с исходными данными
for line in f.readlines():
sline=sline+line #чтение каждой строки и суммирование строк в переменную sline
f.close() #закрытие файла
line=’,’.join(sline.split())# вставка запятой в строку и соединение без пробелов
print(line)
ms=eval(‘[‘+line+’]’)#превращение строки в список (функция split() не сработала), или массив ms
print(ms)
#далее определяем переменные из списка (массива) исходных данных
i=0
if1=int(ms[i]) #0-ой элемент списка if1-количество компонентов смеси
На следующих страницах см. более полный рагмент программы с переводом на Pyton.3.8
Для чего нужна переменная sline
Данные в компьютере можно рассматривать как ячейки памяти, имеющие свои имена (идентификаторы). Все данные в программе на языке Delphi должны быть описаны до их первого использования. И компилятор следит, чтобы в программе они использовались в соответствии с этим описанием, что позволяет избежать ошибок.
Любая величина в Delphi может быть постоянной или переменной. Её имя (идентификатор) может состоять из комбинации латинских букв, цифр и знака подчёркивания, и начинаться не с цифры. При этом регистр символов значения не имеет.
Именно здесь, начиная со следующей строки, удобно объявлять глобальные переменные и константы. Как видим, одна (Form1) уже есть!
Команда объявления переменных в языке Delphi:
var имя_переменной : тип_переменной ;
Если несколько описаний следуют друг за другом, то ключевое слово var повторно можно не указывать:
const pi= 3.1415 ;
ZnakPi : String = ‘Это значение числа пи’ ;
К слову, константа Pi встроенная в Delphi, то есть для того чтобы использовать в Delphi число 3,1415. в расчётах, нужно просто присвоить встроенную константу Pi переменной типа Real или просто использовать непосредственно в выражениях.
Теперь пришло время узнать о типах данных, используемых в Delphi. Прежде всего это строки и числа.
Числа бывают целые и дробные.
В следующей таблице перечислены стандартные типы целых чисел и соответствующие им дипазоны допустимых значений.
Следующим типом данных является логический Boolean, состоящий всего из двух значений: True (Истина) и False (Ложь). При этом True > False.
Теперь, используя компоненты, их свойства и события, вводя собственные переменные, можно конструировать программы, содержащие вычисления. Осталось узнать, как вычисленное значение вывести на экран.
Про консольные программы я здесь не говорю! А в нормальных оконных Windows-приложениях это значение нужно поместить в какой-нибудь компонент, имеющий свойства Text или Caption. Это, например, такие компоненты как Label и Edit, да и сама Форма имеет свойство Caption, куда тоже можно выводить информацию. Однако, в Delphi информацию перед выводом, как правило, необходимо преобразовывать. Так как присвоение возможно только между переменными одного типа, то такая программа (не пытайтесь её исполнять):
var A, B, C: Integer ;
begin
A := 5 ;
B := 10 ;
C := A+B ;
Label1.Caption := C ;
end ;
Такая программа, кроме показа числа 15, ни на что не способна. Мы должны научиться вводить в программу другие числа. Используем компоненты Edit. Введённые числа будут содержаться в свойстве Text этих компонентов. Расположим на форме два компонента Edit, один компонент Label и кнопку Button, по нажатию на которую и будем проводить вычисления. В компоненты Edit1 и Edit2 будем вводить числа для суммирования. Чтобы переместиться в редактор кода, щёлкнем дважды по нашей кнопке Button1. Мы попадём прямо в сформированную для нас средой Delphi заготовку обработчика нажатия на кнопку, непосредственно между операторами begin и end. Напишем такой простой код:
procedure TForm1.Button1Click(Sender: TObject);
var A, B, C: Integer; //Не забудьте описание переменных
begin
//Начало кода:
A := Edit1.Text;
B := Edit2.Text;
C := A+B;
Label1.Caption := IntToStr(C);
//Конец кода
end ;
A := StrToInt(Edit1.Text);
B := StrToInt(Edit2.Text);
В данном случае переменные A, B, C использовались для наглядности. Можно обойтись одной строчкой:
mIRC32 в примерах #1
Окна. Не только Windows 9x.
1) mIRC32 а-ля Photoshop 6.0
Как то раз, часа в 2 ночи, на IRC залетает какой-то чел и начинает судорожно у всех спрашивать, как в мирке. РИСОВАТЬ? Ну все,
естественно, его посылают или дают нелепые советы, типа, набери «/quit» или «/run con/con» и прочую лабуду.
Но несмотря на глупость, к моему удивлению, mIRC32 позволяет рисовать различные фигуры, сохранять или загружать их в bmp-файлах и многое другое.
Рассмотрим банальный пример. Нарисуем обычный домик %) в отдельном окне, которое назовем @domik.
Для этого добавим небольшой скрипт в раздел Aliases (Alt+A):
Вот, собственно, и все, что нужно для начинающего художника. А теперь
сохраним свой эскиз в bmp файле, набрав «/drawsave @domik
c:\dom.bmp», и рисунок успешно сохранится у тебя на винте.
Еще немного об окнах. Окна бывают не только графические, но и текстовые, с возможностью выбрать что-либо из списка (как окна, вызываемые при «/list» или «/links») и другие.
Для примера сделаем небольшую программу-калькулятор, которая будет выполнять элементарные действия над числами 😉
Перейдем в меню «Remote» (Alt+R) и напишем туда следующее:
menu @calculator <
dclick: cproc
>
Этим скриптом мы создали сценарий на дабл-клик в окне @calculator.
Далее пишем снова в «Aliases»:
Этим алиасом создаем окошко-список @calculator (-l) и добавляем в него строчки (названия операций) командой «/aline [цвет] «. Особо любопытные могут сохранить скрипт и запустить команду «/calc», но mIRC будет ругаться при попытке выбрать что-либо, что нет такой команды «cproc». Вот ее-то мы сейчас и создадим (также в «Aliases»):
Вот, собственно, и все. Конечно, про окна можно писать мегабайты информации, т.к. существует туча опций и переменных для работы с ними + куча сценариев и выпадающих меню.
Об этом и многом другом я напишу в следующих частях этой интересной рубрики.
Типы данных в Java: какие бывают, чем различаются и что такое ссылки и примитивы
Рассказываем, как джависту не запутаться во всех этих byte, short, boolean, char и String.
Основа любого языка программирования — данные и операции с ними. Java не исключение. Это строго типизированный язык, поэтому типы данных значат в нём очень многое.
Java следит за тем, чтобы все переменные, выражения и значения соответствовали своему типу данных. Поэтому операции, которые допустимы для одного типа, нельзя провести с другим — тип переменной определяет, какие операции с ней можно выполнить.
Когда код на Java компилируется, машина проверяет соответствие типов операндов во всех методах, конструкторах и других операторах. Если в программе есть хотя бы одна недопустимая операция, компилятор не превратит её в байт-код. Поэтому контроль типов данных помогает уменьшить количество ошибок при написании программы.
В этой статье мы рассмотрим:
Программист, преподаватель Skillbox. Пишет про Java.
Какие типы данных есть в Java
В Java типы данных делят на две большие группы: примитивные и ссылочные. В состав примитивных типов (или просто примитивов) входят четыре подвида и восемь типов данных:
1) целые числа ( byte, short, int, long);
2) числа с плавающей точкой ( float, double);
3) логический ( boolean);
4) символьный ( char).
Ссылочные типы данных ещё называют ссылками. К ним относятся все классы, интерфейсы, массивы, а также тип данных String.
Хотя у примитивов и ссылок много общего, между ними есть существенные различия. И главное различие — в том, что именно в них хранится.
Примитивные переменные | Ссылочные переменные |
---|---|
Хранят значение | Хранят адрес объекта в памяти, на который ссылаются (отсюда и название). Используются для доступа к объектам (его нельзя получить, если на объект нет ссылки) |
Создаются присваиванием значения | Создаются через конструкторы классов (присваивание только создаёт вторую ссылку на существующий объект) |
Имеют строго заданный диапазон допустимых значений | По умолчанию их значение — null |
В аргументы методов попадают копии значения переменной (это передача по значению) | В методы передаётся значение ссылки — операция выполняется над оригинальным объектом, на который ссылается переменная |
Могут использоваться для ссылки на любой объект объявленного или совместимого типа |
Вот пример использования примитивных и ссылочных типов данных:
Значения переменных по умолчанию
Как мы уже отмечали, в зависимости от типа данных у каждой переменной есть значение по умолчанию. Оно присваивается при её создании.
В этом примере значения по умолчанию получат все переменные:
А в этом примере значения получают только переменные класса: когда мы создадим класс Cat, по умолчанию weight будет равен 0.0.
У примитивов есть строгие рамки допустимых значений по умолчанию и диапазоны значений — для удобства мы собрали их в таблицу.
Как используют целочисленные переменные
Целочисленные типы данных различаются только диапазонами значений. Их основная задача — хранить информацию для вычислений.
Тип byte. Эти переменные используют, чтобы работать с потоком данных, который получили из файла или по сети.
Тип short. По сравнению с byte у него увеличенный, но всё же ограниченный диапазон значений. Применяют short редко — например, когда нужно экономить память.
Тип int. В языке Java int — самый популярный тип целочисленных данных. При вычислениях в виртуальной машине остальные целочисленные типы ( byte, short) занимают столько же памяти, сколько int.
Множество классов в Java обладают значениями типа int — например, длина массива внутри класса String выражается целочисленным значением int:
Если переменная хранит количество элементов в коллекциях List, Set и Map, она тоже относится к типу int:
Тип возвращаемого значения подсказывает, сколько элементов можно хранить в списке или множестве. Максимум для int — 2 147 483 647.
Тип long применяют, когда нужно работать с большими целочисленными значениями.
По умолчанию компилятор воспринимает целое число как int, а 9 223 372 036 854 намного больше его максимального значения, поэтому в коде программы нужно явно указать тип long.
Зачем нужны числа с плавающей точкой
Тип данных double используют для работы с десятичными числами.
Тип float используют как экономичный вариант хранения больших массивов данных с плавающей точкой.
Когда переменной присваивают тип float, язык Java воспринимает её как тип данных double. Чтобы этого не происходило, нужно добавлять в конце переменной символ f или F.
Даже если у переменных float и double будут одинаковые значения, язык Java обработает их по-разному, поэтому они будут занимать разный объём памяти.
Не стоит использовать float, когда в вычислениях нужна точность больше пяти знаков после запятой. Oracle пишет об этом в статье «Primitive Data Types».
Логический и символьный типы данных
Чтобы работать с логическими значениями, используют тип данных boolean — это его единственное применение. У такой переменной может быть только два значения: false (ложь) и true (истина).
В Java boolean — отдельная переменная. Это не аналог 1 или 0, как, например, в JavaScript и PHP.
Тип данных char используют, чтобы хранить в переменных любые 16-разрядные символы Unicode. Но их нужно записывать строго в одинарные кавычки ‘ ‘, и только по одному.
Не стоит путать символьные и строковые переменные — ‘ж’ не равно «ж», потому что в двойных кавычках хранится тип данных String. А это уже не примитив.
Значения по умолчанию для ссылочных типов данных
В плане дефолтных значений ссылочные переменные проще примитивов. По умолчанию их значение — null: это означает отсутствие ссылки или то, что ссылка ни на что не указывает.
Но если вызвать метод объекта от переменной со значением null, это приведёт к ошибке NullPointerException:
В ссылочные типы данных входит и String — это класс из стандартной библиотеки Java. Он не относится к примитивам, но его повсеместно используют, чтобы хранить текстовые данные.
Пример использования String:
Строчные переменные можно склеивать оператором +, который используют для конкатенации.
Boxing и unboxing — как превратить примитив в объект
Иногда с примитивами приходится работать как с объектами — например, передавать им значение по ссылке или создавать список из чисел (а списки работают только с объектами).
Поэтому у каждого примитива есть соответствующий ему ссылочный тип — его называют классом-обёрткой. В таких классах хранятся методы для преобразования типов данных, а также другие константы и методы, которые применяются при работе с примитивами.
Тип данных | Класс-обёртка |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
char | Character |
float | Float |
double | Double |
boolean | Boolean |
Ссылочные типы данных (обёртки) пишут с прописной буквы, потому что это полноценные классы. А в Java названия всех классов должны начинаться с большой буквы — язык чувствителен к регистру.
Чтобы создать ссылку на примитивный тип данных, нужно использовать соответствующую обёртку:
Если использовать valueOf, процесс упаковывания становится проще и быстрее, потому что он проводит кэширование и потребляет меньше памяти, а конструктор всегда создаёт новый объект.
Классы-обёртки полезны, когда нужно одновременно работать и с числами, и с объектами — например, в коллекциях.
В этой статье мы рассмотрели примитивные типы данных ( byte, short, int, long, float, double, char и boolean), ссылочные типы данных ( String и остальные). Вы узнали, чем они отличаются друг от друга и какие значения принимают по умолчанию.
В следующей статье мы расскажем, что можно делать с этими переменными с помощью арифметических и логических операторов языка Java.