Конкатенация (сложение строк)

Тема: Программирование линейных алгоритмов.

Цель: научиться работать в интегрированной среде программирования и приобрести навыки составления линейных алгоритмов.

Теоретическая часть:

Основные этапы процесса решения задач на ЭВМ:

1. Математическая формулировка задачи – определение состава и характера исходных данных, результатов, записи условия задачи с помощью математических обозначений.

2. Разработка методики решения задачи – установление зависимости всех искомых результатов от исходных данных, указание методов получения результатов, которые могут быть реализованы на ЭВМ.

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

4. Программирование: запись решающего алгоритма на языке программирования, и последующая трансляция на машинный язык.

5. Отладка программы: устранение в программе синтаксических, семантических и алгоритмических ошибок.

6.Решение задачи на ЭВМ и анализ полученных результатов.

6.

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

Линейный алгоритм - алгоритм, в котором к результату решения задачи приводит последовательное выполнение действий.

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

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

Встраивание в HTML-код.

Первое, что нужно знать относительно синтаксиса PHP, – это то, как он встраивается в HTML-код, как интерпретатор узнает, что это код на языке PHP. В предыдущей лекции мы уже говорили об этом. Повторяться не будем, отметим только, что в примерах мы чаще всего будем использовать вариант <?php ?>, и иногда сокращенный вариант <? ?>.

Программа на PHP (да и на любом другом языке программирования) – это набор команд (инструкций). Обработчику программы (парсеру) необходимо как-то отличать одну команду от другой. Для этого используются специальные символы – разделители. В PHP инструкции разделяются так же, как и в Cи или Perl, – каждое выражение заканчивается точкой с запятой.

Закрывающий тег «?>» также подразумевает конец инструкции, поэтому перед ним точку с запятой не ставят. Например, два следующих фрагмента кода эквивалентны:

Пример 1

<?php

echo "Hello, world!"; // точка с запятой

// в конце команды

// обязательна

?>

Пример 2

<?php

echo "Hello, world!" ?>

<!-- точка с запятой

опускается из-за "?>" -->

Комментарии.

Символы // и # обозначают начало однострочных комментариев, /* и */ – соответственно начало и конец многострочных комментариев.

Переменные

Переменная в PHP обозначается знаком доллара, за которым следует ее имя. Например:

$my_var

Имя переменной чувствительно к регистру, т.е. переменные $my_var и $My_var различны.

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

Пример 1. Присваивание по значению

<?php

$first = ' Text '; // Присваиваем $first

// значение

// ' Text '

$second = $first; // Присваиваем $second

// значение

// переменной $first

$first = ' New text '; // Изменяем

// значение

// $first

// на ' New text '

echo "Переменая с именем first " .

"равна $first <br>";

// выводим значение $first

echo "Переменая с именем second " .

"равна $second";

// выводим значение $second

?>

Результат работы этого скрипта будет следующим:

Переменная с именем first равна New text

Переменная с именем second равна Text

Пример 2. Присваивание по ссылке

<?php

$first = ' Text '; // Присваиваем $first

// значение ' Text '

$second = &$first;

/* Делаем ссылку на $first через $second.

Теперь значения этих переменных

будут всегда совпадать */

// Изменим значение $first

// на ' New text '

$first = ' New text ';

echo "Переменная с именем first " .

"равна $first <br>";

// выведем значения обеих переменных

echo "Переменная с именем second " .

"равна $second";

?>

Этот скрипт выведет следующее:

Переменная с именем first равна New text.

Переменная с именем second равна New text.

То есть вместе с переменной $first изменилась и переменная $second.

Константы

Для хранения постоянных величин, т.е. таких величин, значение которых не меняется в ходе выполнения скрипта, используются константы. Такими величинами могут быть математические константы, пароли, пути к файлам и т.п. Основное отличие константы от переменной состоит в том, что ей нельзя присвоить значение больше одного раза и ее значение нельзя аннулировать после ее объявления. Кроме того, у константы нет приставки в виде знака доллара и ее нельзя определить простым присваиванием значения. Как же тогда можно определить константу? Для этого существует специальная функция define(). Ее синтаксис таков:

define("Имя_константы",

"Значение_константы",

[Нечувствительность_к_регистру])

По умолчанию имена констант чувствительны к регистру. Для каждой константы это можно изменить, указав в качестве значения аргумента Нечувствительность_к_регистру значение True. Существует соглашение, по которому имена констант всегда пишутся в верхнем регистре.

Получить значение константы можно, указав ее имя. В отличие от переменных, не нужно предварять имя константы символом $. Кроме того, для получения значения константы можно использовать функцию constant() с именем константы в качестве параметра.

<?php

// определяем константу

// PASSWORD

define("PASSWORD","qwerty");

// определяем регистронезависимую

// константу PI со значением 3.14

define("PI","3.14", True);

// выведет значение константы PASSWORD,

// т.е. qwerty

echo (PASSWORD);

// тоже выведет qwerty

echo constant("PASSWORD");

echo (password);

/* выведет password и предупреждение,

поскольку мы ввели регистрозависимую

константу PASSWORD */

echo pi;

// выведет 3.14, поскольку константа PI

// регистронезависима по определению

?>

5. Операторы

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

+ Сложение

$a + $b

- Вычитание

$a - $b

* Умножение

$a * $b

/ Деление

$a / $b

% Остаток от деления

$a % $b

Конкатенация (сложение строк)

$c = $a . $b

(это строка, состоящая из $a и $b)

= Присваивание

Переменной слева от оператора будет присвоено значение, полученное в результате выполнения каких-либо операций или переменной/константы с правой стороны

$a = ($b = 4) +5;

($a будет равна 9, $b будет равна 4)

+= Сокращение. Прибавляет к переменной число и затем присваивает ей полученное значение

$a += 5;

(эквивалентно $a = $a + 5;)

.= Сокращенно обозначает комбинацию операций конкатенации и присваивания (сначала добавляется строка, потом полученная строка записывается в переменную)

$b = "Привет ";

$b .= "всем";

В результате: $b="Привет всем"

And И

$a и $b истинны (True)

$a and $b

&& И

$a && $b

Or Или

Хотя бы одна из переменных $a или $b истинна (возможно, что и обе)

$a or $b

|| Или

$a || $b

Xor Исключающее или

Одна из переменных истинна. Случай, когда они обе истинны, исключается

$a xor $b

! Инверсия (NOT)

Если $a=True, то !$a=False и наоборот

! $a

== Равенство

Значения переменных равны

$a == $b

=== Эквивалентность

Равны значения и типы переменных

$a === $b

!= Неравенство

Значения переменных не равны

$a != $b

<> Неравенство

$a <> $b

!== Неэквивалентность

Переменные не эквивалентны

$a !== $b

< Меньше

$a < $b

> Больше

$a > $b

<= Меньше или равно

$a <= $b

>= Больше или равно

$a >= $b

++$a Пре-инкремент

Увеличивает $a на единицу и возвращает $a

<?

$a=4;

echo "Должно быть 4:" .$a++;

echo "Должно быть 6:" .++$a;

?>

$a++ Пост-инкремент

Возвращает $a, затем увеличивает $a на единицу

--$a Пре-декремент

Уменьшает $a на единицу и возвращает $a

$a-- Пост-декремент

Возвращает $a, затем уменьшает $a на единицу

Типы данных

PHP поддерживает восемь простых типов данных.

Четыре скалярных типа:

- boolean (логический);

- integer (целый);

- float (с плавающей точкой);

- string (строковый).

Два смешанныхтипа:

- array(массив);

- object(объект).

И два специальных типа:

- resource (ресурс);

- NULL.

Тип boolean (булев или логический тип)

Этот простейший тип выражает истинность значения, то есть переменная этого типа может иметь только два значения – истина TRUE или ложь FALSE.

Чтобы определить булев тип, используют ключевое слово TRUE или FALSE. Оба регистронезависимы.

<?php

$test = True;

?>

Логические переменные используются в различных управляющих конструкциях (циклах, условиях и т.п., более подробно речь о них пойдет в одной из следующих лекций). Иметь логический тип, т.е. принимать только два значения, истину или ложь, могут также и некоторые операторы (например, оператор равенства). Они также используются в управляющих конструкциях для проверки каких-либо условий. Например, в условной конструкции проверяется истинность значения оператора или переменной и в зависимости от результата проверки выполняются те или иные действия. Здесь условие может быть истинно или ложно, что как раз и отражает переменная и оператор логического типа.

<?php

// Оператор '==' проверяет равенство

// и возвращает

// булево значение

if ($know == False) { // если $know

// имеет значение

// false

echo "Изучай PHP!";

}

if (!$know) { // то же самое, что

// и выше, т.е. проверка

// имеет ли $know значение

// false

echo "Изучай PHP!";

}

/* оператор == проверяет, совпадает ли

значение переменной $action со строкой

"Изучить PHP". Если совпадает, то

возвращает true, иначе – false.

Если возвращено true, то выполняется

то, что внутри фигурных скобок */

if ($action == "Изучить PHP")

{ echo "Начал изучать"; }

?>

Тип integer (целые)

Этот тип задает число из множества целых чисел Z = {..., -2, -1, 0, 1, 2, ...}. Целые могут быть указаны в десятичной, шестнадцатеричной или восьмеричной системе счисления, по желанию с предшествующим знаком «-» или «+».

Если вы используете восьмеричную систему счисления, вы должны предварить число 0 (нулем), для использования шестнадцатеричной системы нужно поставить перед числом 0x.

<?php

# десятичное число

$a = 1234;

# отрицательное число

$a = -123;

# восьмеричное число (эквивалентно

# 83 в десятичной системе)

$a = 0123;

# шестнадцатеричное число (эквивалентно

# 26 в десятичной системе)

$a = 0x1A;

?>

Размер целого зависит от платформы, хотя, как правило, максимальное значение около двух миллиардов (это 32-битное знаковое). Беззнаковые целые PHP не поддерживает.

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

В PHP не существует оператора деления целых. Результатом 1/2 будет число с плавающей точкой 0.5. Вы можете привести значение к целому, что всегда округляет его в меньшую сторону, либо использовать функцию round(), округляющую значение по стандартным правилам. Для преобразования переменной к конкретному типу нужно перед переменной указать в скобках нужный тип. Например, для преобразования переменной $a=0.5 к целому типу необходимо написать (integer)(0.5) или (integer) $a или использовать сокращенную запись (int)(0.5). Возможность явного приведения типов по такому принципу существует для всех типов данных (конечно, не всегда значение одного типа можно перевести в другой тип). Мы не будем углубляться во все тонкости приведения типов, поскольку PHP делает это автоматически в зависимости от контекста.

Тип float (числа с плавающей точкой)

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

<?php

$a = 1.234;

$b = 1.2e3;

$c = 7E-10;

?>

Размер числа с плавающей точкой зависит от платформы, хотя максимум, как правило, ~1.8e308 с точностью около 14 десятичных цифр.

Тип string (строки)

Строка – это набор символов. В PHP символ – это то же самое, что байт, это значит, что существует ровно 256 различных символов. Это также означает, что PHP не имеет встроенной поддержки Unicode. В PHP практически не существует ограничений на размер строк, поэтому нет абсолютно никаких причин беспокоиться об их длине.

Строка в PHP может быть определена тремя различными способами:

- с помощью одинарных кавычек;

- с помощью двойных кавычек;

- heredoc-синтаксисом.

Одинарные кавычки

Простейший способ определить строку – это заключить ее в одинарные кавычки «'». Чтобы использовать одинарную кавычку внутри строки, как и во многих других языках, перед ней необходимо поставить символ обратной косой черты «\», т. е. экранировать ее. Если обратная косая черта должна идти перед одинарной кавычкой либо быть в конце строки, необходимо продублировать ее «\\'».

Если внутри строки, заключенной в одинарные кавычки, обратный слэш «\» встречается перед любым другим символом (отличным от «\» и «'» ), то он рассматривается как обычный символ и выводится, как и все остальные. Поэтому обратную косую черту необходимо экранировать, только если она находится в конце строки, перед закрывающей кавычкой.

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

<?php

echo 'Также вы можете вставлять в строки

символ новой строки таким образом,

поскольку это нормально';

// Выведет: Чтобы вывести ' надо

// перед ней поставить \

echo 'Чтобы вывести \' надо перед '

'ней поставить \\';

// Выведет: Вы хотите удалить C:\*.*?

echo 'Вы хотите удалить C:\\*.*?';

// Выведет: Это не вставит: \n

// новую строку

echo 'Это не вставит: \n новую строку';

// Выведет: Переменные $expand также

// $either не подставляются

echo 'Переменные $expand также $either' .

'не подставляются';

?>

Двойные кавычки

Если строка заключена в двойные кавычки «"», PHP распознает большее количество управляющих последовательностей для специальных символов.

\nНовая строка (LF или 0x0A (10) в ASCII)

\rВозврат каретки (CR или 0x0D (13) в ASCII)

\tГоризонтальная табуляция (HT или 0x09 (9) в ASCII)

\\Обратная косая черта

\$Знак доллара

\"Двойная кавычка

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

Самым важным свойством строк в двойных кавычках является обработка переменных.

Heredoc

Другой способ определения строк – это использование heredoc-синтаксиса. В этом случае строка должна начинаться с символа <<<, после которого идет идентификатор. Заканчивается строка этим же идентификатором. Закрывающий идентификатор должен начинаться в первом столбце строки. Кроме того, идентификатор должен соответствовать тем же правилам именования, что и все остальные метки в PHP: содержать только буквенно-цифровые символы и знак подчеркивания и начинаться не с цифры или знака подчеркивания.

Heredoc-текст ведет себя так же, как и строка в двойных кавычках, при этом их не имея. Это означает, что вам нет необходимости экранировать кавычки в heredoc, но вы по-прежнему можете использовать перечисленные выше управляющие последовательности. Переменные внутри heredoc тоже обрабатываются.

<?php

$str = <<<EOD

Пример строки,охватывающей несколько

строчек, с использованием

heredoc-синтаксиса

EOD;

// Здесь идентификатор – EOD. Ниже

// идентификатор EOT

$name = 'Вася';

echo <<<EOT

Меня зовут "$name".

EOT;

// это выведет "Меня зовут "Вася"."

?>

Тип array (массив)

Массив в PHP представляет собой упорядоченную карту – тип, который преобразует значения в ключи. Этот тип оптимизирован в нескольких направлениях, поэтому вы можете использовать его как собственно массив, список (вектор), хеш-таблицу (являющуюся реализацией карты), стэк, очередь и т.д. Поскольку вы можете иметь в качестве значения другой массив PHP, можно также легко эмулировать деревья.

Определить массив можно с помощью конструкции array() или непосредственно задавая значения его элементам.

Наши рекомендации