Как быстро выучить стихотворение наизусть? Запоминание стихов является стандартным заданием во многих школах.
Как научится читать по диагонали? Скорость чтения зависит от скорости восприятия каждого отдельного слова в тексте.
Как быстро и эффективно исправить почерк? Люди часто предполагают, что каллиграфия и почерк являются синонимами, но это не так.
Как научится говорить грамотно и правильно? Общение на хорошем, уверенном и естественном русском языке является достижимой целью.
- Обратная связь
- Правила сайта
Источник: www.soloby.ru
лаба 3.2
Pascal: введение в программирование
Цель работы: получение навыков разработки алгоритмов разветвляющейся и циклической структуры, кодирования полученных алгоритмов, отладки и тестирования программ с разветвлениями и циклами: освоение числовых типов данных и действии над ними.
ЗАДАЧА 1
Постановка задачи: Используя данное представление (см. в таблице с вариантами) вычислить значение, соответствующее значению функции для указанного значения хо (при указанных ограничениях на аргумент функции) с точностью е (например. е=0.001). Точность вычисления считается выполненной, если последний по модулю член в сумме меньше е. Полученное значение сравнить с истинным значением данной функции, найденное при помощи математических встроенных функций, найдя абсолютную погрешность вычисления. Указать количество просуммированных членов такого ряда.
Для данного ряда, записать формулу п-ого члена.
Решение
- Введем значениеxи точность вычисленияe.
- Для вычисление будем использовать следующие обозначения: а – значение текущего элемента,n– номер текущего элемента,S– сумма ряда.
Закономерность прослеживается с первого члена ряда, поэтому присвоим первому элементу присвоим значение 0.
- Далее указываем интервал значенийX.
- Находим элементы с помощью формулыn-го члена:
- Полученные данные используем в цикле для вычисления очередного члена ряда и накопления его суммы.
Запись на языкеPascalABC.Netprogram Zadanye_1; var eps: real; // Точность вычисления x, f, s, a, delta: real; k: word;// Количество просуммированных членов begin Write(‘Введите значение х>1/2: х = ‘); Readln(x); Write(‘Введите точность вычисления: eps = ‘); Readln(eps); writeln(‘************************************’); f := ln(x); Writeln(‘Истинное значение: f(‘, x, ‘)=’, f:1:4); s := 0; k := 1; a := 0; repeat a := (power((x — 1), k)) / ((power(x, k)) * k); // новый член ряда s += a; // накопление суммы ряда k += 1 until abs(a) < eps; delta := abs(f — s); Writeln(‘Значение по формуле: f(‘, x, ‘) = ‘, s:1:4); Writeln(‘Погрешность вычисления = ‘, delta:1:4); Write(‘Количество просуммированных членов = ‘, k); end. Пример работы программы:Проверим программу в табличном процессореMSExcel:
Блок-схема
ЗАДАЧА 2Постановка задачи:Дано целое числоN(N > 2). Последовательность целых чиселAKопределяется следующим образом:A1 = 1, A2 = 2, A3 = 3, AK = AK–1 + AK–2 – 2·AK–3, K = 4, 5,…Вывести элементыA1, A2, …, AN.Решение:
- Для решения задачи введем количествоNчленов последовательности и присвоим трем первым членам значения 1, 2, 3 соответственно.
- В цикле от 4 доNнаходим каждый новый член последовательности, после чего пере присваиваем значения членов ряда.
Текст программы наPascalABC.net:var k, N: word; A1, A2, A3, Ak: Integer; begin writeln(‘Введите целое число N (> 2):’); write(‘ N = ‘); readln(N); A1 := 1; //1-й элемент последовательности A2 := 2; //2-й элемент A3 := 3; //3-й элемент writeln; writeln(‘Выводим последовательность ‘, N, ‘ целых чисел:’); writeln; write(‘ ‘, A1, ‘ ‘, A2, ‘ ‘, A3); //выводим A1, A2, A3 < Для всех остальных элементов: >for k := 4 to N dobegin Ak := A3 + A2 — 2 * A1; //находим k-й элемент write(‘ ‘, Ak); //выводим k-й элемент A1 := A2; //A1 меняем на A2 A2 := A3; //A2 меняем на A3 A3 := Ak //A3 меняем на Ak endend. Блок-Схема:


- Введем количество цифр.
- В цикле от 1 до числа цифр подбираем те числа которые удовлетворяют условию.
- Отбираем нужные цифры и печатаем их в строку.
Структурограмма:KоднаPascalABC.net:var i,j,s, n:integer; begin writeln(‘введите колличество цифр’); readln(n); for i := 1 to n dobegin s:=0; for j := 1 to i — 1 doif i mod j=0 then s:=s+j; if s=i then write(i,’;’); end; readln; end. Окновывода:
Блок схема:
Ответы на контрольные вопросы:Вопрос (№ 12) Для циклаWhile doзапишите полный аналог используя циклическую структуруRepeat.Поскольку алгоритмы с циклической структурой применяются для решения почти любой серьёзной задачи, то в языке Pascal для реализации циклов предусмотрено 3 различных оператора. For, While и Repeat.Конкретно остановимся на операторах While и Repeat.Оператор while имеет следующую структуру: while логическое условие do тело цикла Если расшифровать эту надпись простыми словами, оператор while имеет следующий смысл: Делать (do) что-то — тело цикла, пока (while) будет выполняться логическое условие Например, пока i i := 1; while i dobegin a := a + 5; inc(i);//функция inc увеличивает значение i на 1 (i:=i+1) end; Как видим, мы сами задаём, как будет изменять наш счётчик цикла i. Причём совершенно необязательно, чтобы он изменялся ровно на 1. Например, мы можем задать шаг счётчика цикла (его изменение) равным 0,5 или 4.Также для задания циклической структуры используется и оператор Repeat: Repeat тело цикла until логическое условие Этот оператор можно трактовать следующим образом: повторяем (repeat) что-то (тело цикла), пока (until) логическое условие не перестанет выполняться Давайте посмотрим на фрагмент программы, представленный ниже: k := 4; while k dobegin sum := sum + 3; k := k + 1; end; и запишем его с помощью оператора repeat: k := 4; repeat sum := sum + 3; k := k + 1 until k > 6 Заметим, что операторы while и repeat имеют противоположные задания условий: в случае while наше условие k6 (до тех пор, пока k не станет больше 6).Кроме этого, в операторе repeat нет необходимости ставить операторные скобки begin-end, так как тело цикла чётко ограничивается словами repeat — until и перед until «;» необязательна.Если посмотреть внимательно, то мы увидим, что особенность оператора repeat такова, что тело цикла выполнится хотя бы 1 раз. В случае же с while цикл может не выполнится ни разу. Это подтверждает следующий пример: i := 7; while i > 7 do //тело цикла; i := i — 0.3; В данном случае цикл не выполнится ни разу i := 7; repeat //тело цикла; i := i — 0.3; until i < 7 Во втором случае тело цикла выполнится 1 раз, так проверка (until i <7) производится уже после выполнения тела цикла.Вопрос (№ 22) Дан фрагмент программы: a:=1; while aА) Что будет выведено на экран после выполнения фрагмента программы?Б) Запишите для данного фрагменты полные аналоги, используя циклические структуры«Repeat»и«For».Часть А:После выполнения, программы выведет на экран последовательность значений переменной а, которое будет иметь видa=2 a=3 a=4.Часть Б:Запишем данную программу используя операторRepeat:var a: integer; begin a := 1; repeat a := a + 1; write(‘a=’, a); until a >= 4 end. Запишем данную программу используя операторFor:var a, k: integer; begin a := 1; for k := 1 to 3 dobegin a := a + 1; write(‘a=’, a); end; end. Вывод:были получены навыки разработки алгоритмов разветвляющейся и циклической структуры, кодирование полученных алгоритмов, отладки и тестирование программ с разветвлениями и циклами: освоение числовых типов, данных и действий над ними. На практике было изучено построение блок-схем и структурограмм. — 12 —
Подпрограммы, процедуры и функции
Источник: studfile.net
Что будет выведено на экран после выполнения следующего фрагмента программы? | Skysmart
Что будет выведено на экран после выполнения следующего фрагмента программы?
Информатика
Ответ или решение
Ответ: ##.
Skysmart на схожие темы
Чем занята большая часть людей на стадии информационного общества?
Чем описывается ограниченность ресурсов?
Чем отличается информационный продукт от других продуктов?
Чем отличается информационный продукт от информационного ресурса?
Через какой протокол передаются веб-страницы?
Что будет на экране после выполнения следующей программы?
Что будет на экране после выполнения следующей программы? Какое значение будет записано в переменной A после выполнения программы?
Что здесь лишнее? Twitter
Что лежит в основе законного использования компьютерного ПО:
Что лежит в основе классификации информационных ресурсов?
Источник: www.euroki.org
Bash-скрипты, часть 4: ввод и вывод
В прошлый раз, в третьей части этой серии материалов по bash-скриптам, мы говорили о параметрах командной строки и ключах. Наша сегодняшняя тема — ввод, вывод, и всё, что с этим связано.
Вы уже знакомы с двумя методами работы с тем, что выводят сценарии командной строки:
- Отображение выводимых данных на экране.
- Перенаправление вывода в файл.
Стандартные дескрипторы файлов
Всё в Linux — это файлы, в том числе — ввод и вывод. Операционная система идентифицирует файлы с использованием дескрипторов.
Каждому процессу позволено иметь до девяти открытых дескрипторов файлов. Оболочка bash резервирует первые три дескриптора с идентификаторами 0, 1 и 2. Вот что они означают.
- 0 , STDIN — стандартный поток ввода.
- 1 , STDOUT — стандартный поток вывода.
- 2 , STDERR — стандартный поток ошибок.
STDIN
STDIN — это стандартный поток ввода оболочки. Для терминала стандартный ввод — это клавиатура. Когда в сценариях используют символ перенаправления ввода — < , Linux заменяет дескриптор файла стандартного ввода на тот, который указан в команде. Система читает файл и обрабатывает данные так, будто они введены с клавиатуры.
Многие команды bash принимают ввод из STDIN , если в командной строке не указан файл, из которого надо брать данные. Например, это справедливо для команды cat .
Когда вы вводите команду cat в командной строке, не задавая параметров, она принимает ввод из STDIN . После того, как вы вводите очередную строку, cat просто выводит её на экран.
STDOUT
STDOUT — стандартный поток вывода оболочки. По умолчанию это — экран. Большинство bash-команд выводят данные в STDOUT , что приводит к их появлению в консоли. Данные можно перенаправить в файл, присоединяя их к его содержимому, для этого служит команда >> .
Итак, у нас есть некий файл с данными, к которому мы можем добавить другие данные с помощью этой команды:
pwd >> myfile
То, что выведет pwd , будет добавлено к файлу myfile , при этом уже имеющиеся в нём данные никуда не денутся.
Перенаправление вывода команды в файл
Пока всё хорошо, но что если попытаться выполнить что-то вроде показанного ниже, обратившись к несуществующему файлу xfile , задумывая всё это для того, чтобы в файл myfile попало сообщение об ошибке.
ls –l xfile > myfile
После выполнения этой команды мы увидим сообщения об ошибках на экране.
Попытка обращения к несуществующему файлу
При попытке обращения к несуществующему файлу генерируется ошибка, но оболочка не перенаправила сообщения об ошибках в файл, выведя их на экран. Но мы-то хотели, чтобы сообщения об ошибках попали в файл. Что делать? Ответ прост — воспользоваться третьим стандартным дескриптором.
STDERR
STDERR представляет собой стандартный поток ошибок оболочки. По умолчанию этот дескриптор указывает на то же самое, на что указывает STDOUT , именно поэтому при возникновении ошибки мы видим сообщение на экране.
Итак, предположим, что надо перенаправить сообщения об ошибках, скажем, в лог-файл, или куда-нибудь ещё, вместо того, чтобы выводить их на экран.
▍Перенаправление потока ошибок
Как вы уже знаете, дескриптор файла STDERR — 2. Мы можем перенаправить ошибки, разместив этот дескриптор перед командой перенаправления:
ls -l xfile 2>myfile cat ./myfile
Сообщение об ошибке теперь попадёт в файл myfile .
Перенаправление сообщения об ошибке в файл
▍Перенаправление потоков ошибок и вывода
При написании сценариев командной строки может возникнуть ситуация, когда нужно организовать и перенаправление сообщений об ошибках, и перенаправление стандартного вывода. Для того, чтобы этого добиться, нужно использовать команды перенаправления для соответствующих дескрипторов с указанием файлов, куда должны попадать ошибки и стандартный вывод:
ls –l myfile xfile anotherfile 2> errorcontent 1> correctcontent
Перенаправление ошибок и стандартного вывода
Оболочка перенаправит то, что команда ls обычно отправляет в STDOUT , в файл correctcontent благодаря конструкции 1> . Сообщения об ошибках, которые попали бы в STDERR , оказываются в файле errorcontent из-за команды перенаправления 2> .
Если надо, и STDERR , и STDOUT можно перенаправить в один и тот же файл, воспользовавшись командой :
Перенаправление STDERR и STDOUT в один и тот же файл
После выполнения команды то, что предназначено для STDERR и STDOUT , оказывается в файле content .
Перенаправление вывода в скриптах
Существует два метода перенаправления вывода в сценариях командной строки:
- Временное перенаправление, или перенаправление вывода одной строки.
- Постоянное перенаправление, или перенаправление всего вывода в скрипте либо в какой-то его части.
▍Временное перенаправление вывода
В скрипте можно перенаправить вывод отдельной строки в STDERR . Для того, чтобы это сделать, достаточно использовать команду перенаправления, указав дескриптор STDERR , при этом перед номером дескриптора надо поставить символ амперсанда ( This is an error» >This is normal output»
Если запустить скрипт, обе строки попадут на экран, так как, как вы уже знаете, по умолчанию ошибки выводятся туда же, куда и обычные данные.
Временное перенаправление
Запустим скрипт так, чтобы вывод STDERR попадал в файл.
./myscript 2> myfile
Как видно, теперь обычный вывод делается в консоль, а сообщения об ошибках попадают в файл.
Сообщения об ошибках записываются в файл
▍Постоянное перенаправление вывода
Если в скрипте нужно перенаправлять много выводимых на экран данных, добавлять соответствующую команду к каждому вызову echo неудобно. Вместо этого можно задать перенаправление вывода в определённый дескриптор на время выполнения скрипта, воспользовавшись командой exec :
#!/bin/bash exec 1>outfile echo «This is a test of redirecting all output» echo «from a shell script to another file.» echo «without having to redirect every line»
Перенаправление всего вывода в файл
Если просмотреть файл, указанный в команде перенаправления вывода, окажется, что всё, что выводилось командами echo , попало в этот файл.
Команду exec можно использовать не только в начале скрипта, но и в других местах:
#!/bin/bash exec 2>myerror echo «This is the start of the script» echo «now redirecting all output to another location» exec 1>myfile echo «This should go to the myfile file» echo «and this should go to the myerror file» > myfile
Эта команда указывает оболочке на то, что источником вводимых данных должен стать файл myfile , а не обычный STDIN . Посмотрим на перенаправление ввода в действии:
#!/bin/bash exec 0< testfile count=1 while read line do echo «Line #$count: $line» count=$(( $count + 1 )) done
Вот что появится на экране после запуска скрипта.
Перенаправление ввода
В одном из предыдущих материалов вы узнали о том, как использовать команду read для чтения данных, вводимых пользователем с клавиатуры. Если перенаправить ввод, сделав источником данных файл, то команда read , при попытке прочитать данные из STDIN , будет читать их из файла, а не с клавиатуры.
Некоторые администраторы Linux используют этот подход для чтения и последующей обработки лог-файлов.
Создание собственного перенаправления вывода
Перенаправляя ввод и вывод в сценариях, вы не ограничены тремя стандартными дескрипторами файлов. Как уже говорилось, можно иметь до девяти открытых дескрипторов. Остальные шесть, с номерами от 3 до 8, можно использовать для перенаправления ввода или вывода. Любой из них можно назначить файлу и использовать в коде скрипта.
Назначить дескриптор для вывода данных можно, используя команду exec :
#!/bin/bash exec 3>myfile echo «This should display on the screen» echo «and this should be stored in the file» >And this should be back on the screen»
После запуска скрипта часть вывода попадёт на экран, часть — в файл с дескриптором 3 .
Перенаправление вывода, используя собственный дескриптор
Создание дескрипторов файлов для ввода данных
Перенаправить ввод в скрипте можно точно так же, как и вывод. Сохраните STDIN в другом дескрипторе, прежде чем перенаправлять ввод данных.
После окончания чтения файла можно восстановить STDIN и пользоваться им как обычно:
#!/bin/bash exec 6
Перенаправление ввода
В этом примере дескриптор файла 6 использовался для хранения ссылки на STDIN . Затем было сделано перенаправление ввода, источником данных для STDIN стал файл. После этого входные данные для команды read поступали из перенаправленного STDIN , то есть из файла.
После чтения файла мы возвращаем STDIN в исходное состояние, перенаправляя его в дескриптор 6 . Теперь, для того, чтобы проверить, что всё работает правильно, скрипт задаёт пользователю вопрос, ожидает ввода с клавиатуры и обрабатывает то, что введено.
Закрытие дескрипторов файлов
Оболочка автоматически закрывает дескрипторы файлов после завершения работы скрипта. Однако, в некоторых случаях нужно закрывать дескрипторы вручную, до того, как скрипт закончит работу. Для того, чтобы закрыть дескриптор, его нужно перенаправить в myfile echo «This is a test line of data» >This won’t work» > myfile1 exec 6> myfile2 exec 7< myfile3 lsof -a -p $$ -d 0,1,2,3,6,7
Вот что получится, если этот скрипт запустить.
Просмотр дескрипторов файлов, открытых скриптом
Скрипт открыл два дескриптора для вывода ( 3 и 6 ) и один — для ввода ( 7 ). Тут же показаны и пути к файлам, использованных для настройки дескрипторов.
Подавление вывода
Иногда надо сделать так, чтобы команды в скрипте, который, например, может исполняться как фоновый процесс, ничего не выводили на экран. Для этого можно перенаправить вывод в /dev/null . Это — что-то вроде «чёрной дыры».
Вот, например, как подавить вывод сообщений об ошибках:
ls -al badfile anotherfile 2> /dev/null
Тот же подход используется, если, например, надо очистить файл, не удаляя его:
cat /dev/null > myfile
Итоги
Сегодня вы узнали о том, как в сценариях командной строки работают ввод и вывод. Теперь вы умеете обращаться с дескрипторами файлов, создавать, просматривать и закрывать их, знаете о перенаправлении потоков ввода, вывода и ошибок. Всё это очень важно в деле разработки bash-скриптов.
В следующий раз поговорим о сигналах Linux, о том, как обрабатывать их в сценариях, о запуске заданий по расписанию и о фоновых задачах.
Уважаемые читатели! В этом материале даны основы работы с потоками ввода, вывода и ошибок. Уверены, среди вас есть профессионалы, которые могут рассказать обо всём этом то, что приходит лишь с опытом. Если так — передаём слово вам.
- Блог компании RUVDS.com
- Настройка Linux
- Серверное администрирование
Источник: habr.com