Определите что будет напечатано в результате следующей программы var s k integer begin s 0

Например, возврат закэшированного результата, или ValueTask.FromCancelled с переданным CancellationToken .

Но нет предела оптимизациям и одним ранним выходом теперь не обойтись. Поэтому был добавлен IValueTaskSource .

В ValueTask можно создать не только передав готовый результат или Task , но
и упомянутый выше IValueTaskSource .

// Конструкторы public ValueTask(IValueTaskSource source, short token); public ValueTask(Task task); public ValueTask(T result);

Что это такое мы с вами сейчас и узнаем.

Устройство и алгоритм работы IValueTaskSource

Интерфейс IValueTaskSource — набор из 3 методов:

public interface IValueTaskSource < // Получить статус выполнения текущей операции ValueTaskSourceStatus GetStatus(short token); // Запланировать продолжение на выполнение при завершении работы, // если на момент проверки работа не завершена void OnCompleted( Actioncontinuation, object? state, short token, ValueTaskSourceOnCompletedFlags flags); // Получить готовый результат операции TResult GetResult(short token); >

GetStatus — получает статус выполнения.

Задание 6_ ОГЭ информатика 2020

Статус представляется перечислением ValueTaskSourceStatus

public enum ValueTaskSourceStatus < // В процессе Pending, // Успешно завершилась Succeeded, // Завершилась ошибкой (исключением) Faulted, // Отменена Canceled, >

Этот метод вызывается 1 раз, после создания ValueTask .

Если операция уже завершилась, то вызывается GetResult для получения результата.

Если операция в процессе, то вызывается OnCompleted для регистирования продолжения на выполнение.

OnCompleted — регистрирует переданное продолжение на выполнение по окончании операции.

Вызывается после GetStatus .

На вход ему подаются:

  • Action continuation — само продолжение
  • object state — объект состояния, который передается continuation
  • ValueTaskSourceOnCompletedFlags flags — специальные флаги, указывающие поведение при вызове продолжения

Флаги представляются перечислением ValueTaskSourceOnCompletedFlags :

[Flags] public enum ValueTaskSourceOnCompletedFlags < // Без указаний None = 0, // Необходимо использовать текущий SynchronizationContext для продолжения UseSchedulingContext = 1, // В продолжении нужно использовать текущий ExecutionContext FlowExecutionContext = 2, >

Между вызовом GetStatus и OnCompleted может пройти какое-то время и операция завершится.

Поэтому во время выполнения OnCompleted работа может быть уже закончена.
В таких случаях, продолжение обычно выполняется тут же.

GetResult — получает результат операции.

Этот метод вызывается 1 раз при завершении работы для получения результата: возвращаемый объект или исключение.

Он должен быть вызван тогда, когда операция только завершилась.

Моей ошибкой во время первой реализации было то, что я использовать семафор для ожидания выполнения.

Но из-за неправильных вызовов случился дедлок:

Фоновый поток завершил операцию и выставил результат.

В этот момент вызвалось продолжение.

Продолжение зашло в GetResult и остановилось на семафоре.

Информатика ОГЭ. Задания 9. Простейший циклический алгоритм, записанный на алгоритмическом языке

Фоновый поток не получил обратно управление, т.к. продолжение было вызвано, но семафор еще не выставлен.

Также во всех методах присутствует token . Это специальное значение для обнаружения множественных await . Зачем они нужны поговорим далее.

Алгоритм работы зависит от GetStatus :

  • Pending — операция не завершилась, поэтому нужно запланировать дальнейшее выполнение:
    1. GetStatus
    2. OnCompleted
    3. GetResult
    4. В остальных случаях выполнение уже завершилось, поэтому получаем результат сразу же:
      1. GetStatus
      2. GetResult

      Здесь можно провести аналогию с тем, как работает магия async/await и ее машины состояний. Грубо говоря, мы создали свой собственный Task с блэкджеком, но пока не такой эффективный.

      Реализуем своими руками

      Теперь сделаем свою реализацию.

      Представим, перед нами задача получения статистики ПК.

      У нас есть класс PcMonitor , отдающий эту статистику.

      Он вызывается очень часто, поэтому для оптимизации мы решили:

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

      Статистика представляется структурой PcStatistics .
      Пока там только температура процессора, но вы придумайте, что туда еще можно добавить.

      public readonly record struct PcStatistics(double CpuTemperature);

      В реализации используется класс ValueTaskSourcePcMonitor .

      Сбор статистики реализован с помощью System.Threading.Timers.Timer ,
      который с определенным интервалом кладет в кэш новое значение и обновляет время сбора.

      Время сбора представляет TimeSpan , получаемый с помощью Stopwatch (не самая лучшая идея, но сойдет).

      Наша реализация IValueTaskSource представляется классом ManualValueTaskSource .

      Он хранит в себе необходимые для работы данные.

      public class ManualValueTaskSource: IValueTaskSource < // Результат работы private CancellationToken _cancellationToken; private PcStatistics _cachedResult = new(); private Exception? _exception; // Инфраструтура для работы IValueTaskSource private object? _state; private object? _scheduler; private Action? _continuation; private short _version; private ExecutionContext? _ec; // Инфраструктура бизнес-логики private readonly Timer _timer; private TimeSpan _lastMeasurementTime = TimeSpan.Zero; private CustomPcMonitor? _monitor; >

      Пожалуй, его реализация самая простая

      public ValueTaskSourceStatus GetStatus(short token) < CheckVersion(token); if (_exception is not null) < return ValueTaskSourceStatus.Faulted; >if (_cachedResult != default) < // Предположим, что настоящий результат не должен быть default return ValueTaskSourceStatus.Succeeded; >return ValueTaskSourceStatus.Pending; >
      public void OnCompleted(Action continuation, object? state, short token, ValueTaskSourceOnCompletedFlags flags) < CheckVersion(token); if (UseExecutionContext()) < _ec = ExecutionContext.Capture(); >if (UseSchedulingContext() GetScheduler() is <> scheduler) < _scheduler = scheduler; >// Здесь может быть состояние гонки, когда // результат выставляется быстрее, чем заканчивается вызов OnCompleted. // В нашем случае, такое может случиться, когда время ожидания таймера было очень мало _state = state; var prev = Interlocked.CompareExchange(ref _continuation, continuation, null); if (prev is null) < return; >_state = null; // Sentinel — маркер, выставляемый, когда операция завершилась, // но колбэк еще не был выставлен if (!ReferenceEquals(prev, Sentinel)) < throw new InvalidOperationException(«Обнаружено множественное ожидание»); >// Вызываем продолжение синхронно, т.к. уже результат уже готов InvokeContinuation(continuation, state, synchronously: true); bool UseExecutionContext() => ( flags bool UseSchedulingContext() => ( flags object GetScheduler() => ( object? ) SynchronizationContext.Current ?? TaskScheduler.Current; >

      Читайте также:
      Где хранятся прикладные программы

      Теперь доходим до реализации GetResult

      public PcStatistics GetResult(short version) < CheckVersion(version); if (_exception is not null) < throw _exception; >if (_cachedResult == default) < // Результат еще не готов throw new InvalidOperationException(«Работа еще не завершена»); >return _cachedResult; >

      Все приведенные выше методы довольно просты в реализации, но на прод их не принесешь:

      • Нет поддержки отмены
      • Плохая работа с конкурентностью
      • ExecutionContext не используется

      private void InvokeContinuation(Action? continuation, object? state, bool synchronously) < if (continuation is null) < return; >if (_scheduler is not null) < if (_scheduler is SynchronizationContext sc) < sc.Post(s =>< var t = ( Tuple ) s!; t.Item1(t.Item2); >, Tuple.Create(continuation, state)); > else < var ts = ( TaskScheduler ) _scheduler; Task.Factory.StartNew(continuation, state, CancellationToken.None, TaskCreationOptions.DenyChildAttach, ts); >> else if (synchronously) < continuation(state); >else < ThreadPool.QueueUserWorkItem(continuation, state, true); >>

      Добавляем ManualResetValueTaskSourceCore

      Реализацию написали. Мы молодцы. А теперь все выбрасываем, так как реализация за нас уже сделана — ManualResetValueTaskSourceCore .

      Она реализует все выше приведенные методы логики IValueTaskSource .

      Теперь перепишем старые методы с его использованием.

      public PcStatistics GetResult(short token) < return _source.GetResult(token); >public ValueTaskSourceStatus GetStatus(short token) < return _source.GetStatus(token); >public void OnCompleted(Action continuation, object? state, short token, ValueTaskSourceOnCompletedFlags flags)

      Благодаря этому, можно писать свои ValueTaskSource и задумываться, только о бизнес-логике.

      Добавляем пулинг + почему нельзя заново await’ить

      Теперь время для оптимизаций.

      Заметим, что GetResult вызывается только 1 раз, причем самым последним и наш IValueTaskSource после этого трогать не должны.

      Почему бы не переиспользовать создаваемые ValueTaskSource и возвращать их обратно при вызове GetResult .

      В PcMonitor добавим пул этих объектов: при вызове GetStatisticsAsync берем из, а в GetResult будем возвращать обратно в.

      // PcStatisticsManualResetValueTaskSource private ObjectPool? _pool; public PcStatistics GetResult(short token) < try < var result = _source.GetResult(token); Reset(); return result; >catch (Exception e) when (e is not InvalidOperationException) < Reset(); throw; >void Reset() < // Возвращаем в пул _pool!.Return(this); // Перетираем состояние, чтобы переиспользовать _source.Reset(); >> // PcMonitor private ObjectPool _pool; public ValueTask GetStatisticsAsync(CancellationToken token = default)

      Теперь мы можем создать ограниченное количество ValueTaskSource и постоянно их переиспользовать без лишних аллокаций памяти!

      Но что, если кто-то попытается за await ‘ить ValueTask несколько раз?

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

      Но даже если эти вызовы были крайне близки во времени, никто не гарантирует, что за это время тот же самый IValueTaskSource не будет передан в другой ValueTask и будет хранить новое значение.

      Вот тут и нужен short token , передававшийся в любой метод.

      Он призван проверять, что вызвавший код, обращается к ValueTask , в которой находится актуальный IValueTaskSource .

      В ManualResetValueTaskSourceCore он реализован в виде простого счетчика, поэтому там он называется Version . Но в общем случае это не обязательно — сойдет любое неповторяющееся значение.

      Этот токен задается в самом начале и не изменяется в процессе работы ValueTask

      public ValueTask Start(ValueTaskSourcePcMonitor monitor, ObjectPool pool, CancellationToken token = default) < // . // ManualResetValueTaskSourceCore.Version — токен, который инкрементируется при вызове Reset() return new ValueTask(this, _source.Version); >

      Использование в .NET

      Когда кто-то представляет IValueTaskSource , почти всегда в пример приводят сокет.
      Я не буду исключением.

      Читать или писать в сокет можно только одним потоком (только один или читает или пишет).
      Растратно каждый раз создавать новые Task ‘и на каждый чих (особенно учитывая что «Сеть надежна»).

      Поэтому внутри себя сокет содержит 2 буфера IValueTaskSource — для чтения и записи

      public partial class Socket < /// Cached instance for receive operations that return «/>. Also used for ConnectAsync operations. private AwaitableSocketAsyncEventArgs? _singleBufferReceiveEventArgs; /// Cached instance for send operations that return «/>. Also used for AcceptAsync operations. private AwaitableSocketAsyncEventArgs? _singleBufferSendEventArgs; // . internal sealed class AwaitableSocketAsyncEventArgs : SocketAsyncEventArgs, IValueTaskSource, IValueTaskSource, IValueTaskSource, IValueTaskSource, IValueTaskSource < // . >>

      Например, при чтении из сокета буфер используется таким образом:

      internal ValueTask ReceiveAsync(Memory buffer, SocketFlags socketFlags, bool fromNetworkStream, CancellationToken cancellationToken) < // Получаем закэшированный IValueTaskSource или создаем новый (потом положим обратно в кэш) AwaitableSocketAsyncEventArgs saea = Interlocked.Exchange(ref _singleBufferReceiveEventArgs, null) ?? new AwaitableSocketAsyncEventArgs(this, isReceiveForCaching: true); // Обновляем состояние IValueTaskSource для новой работы saea.SetBuffer(buffer); saea.SocketFlags = socketFlags; saea.WrapExceptionsForNetworkStream = fromNetworkStream; // Запускаем асинхронную операцию return saea.ReceiveAsync(this, cancellationToken); >internal sealed class AwaitableSocketAsyncEventArgs < public ValueTaskReceiveAsync(Socket socket, CancellationToken cancellationToken) < if (socket.ReceiveAsync(this, cancellationToken)) < // Операция не завершена синхронно — запускаем асинхронную операцию _cancellationToken = cancellationToken; return new ValueTask(this, _token); > // . // Операция завершилась синхронно return error == SocketError.Success ? new ValueTask(bytesTransferred) : ValueTask.FromException(CreateException(error)); > >

      IValueTaskSource используется также в Channel ‘ах.

      Он используется как в Bounded так и в Unbounded , но пример сделаю на Bounded .

      Читайте также:
      Как называется Новая американская лунная пилотируемая программа

      В BoundedChannel есть следующие поля

      internal sealed class BoundedChannel : Channel, IDebugEnumerable < /// Readers waiting to read from the channel private readonly Deque _blockedReaders = new Deque(); /// Writers waiting to write to the channel. private readonly Deque _blockedWriters = new Deque(); /// Linked list of WaitToReadAsync waiters. private AsyncOperation? _waitingReadersTail; /// Linked list of WaitToWriteAsync waiters. private AsyncOperation? _waitingWritersTail; // . >

      Как можно заметить, здесь есть поля, использующие AsyncOperation — тот самый IValueTaskSource и в нем есть уже знакомые поля:

      internal partial class AsyncOperation : AsyncOperation, IValueTaskSource, IValueTaskSource < // Предназначен ли для пулинга private readonly bool _pooled; // Асинхронное продолжение private readonly bool _runContinuationsAsynchronously; // Результат операции private TResult? _result; // Исключение в процессе работы private ExceptionDispatchInfo? _error; // continuation из OnCompleted private Action? _continuation; // state из OnCompleted private object? _continuationState; // SynchronizationContext или TaskScheduler private object? _schedulingContext; private ExecutionContext? _executionContext; // token private short _currentId; >

      Для чтения из канала используется ValueTask ReadAsync :

      public override ValueTask ReadAsync(CancellationToken cancellationToken) < BoundedChannelparent = _parent; lock (parent.SyncObj) < // Если есть свободные элементы — вернуть их if (!parent._items.IsEmpty) < return new ValueTask(DequeueItemAndPostProcess()); > // Используем закэшированный IValueTaskSource if (!cancellationToken.CanBeCanceled) < AsyncOperationsingleton = _readerSingleton; if (singleton.TryOwnAndReset()) < parent._blockedReaders.EnqueueTail(singleton); return singleton.ValueTaskOfT; >> // Возвращаем новый IValueTaskSource var reader = new AsyncOperation(parent._runContinuationsAsynchronously | cancellationToken.CanBeCanceled, cancellationToken); parent._blockedReaders.EnqueueTail(reader); return reader.ValueTaskOfT; > >

      Для записи — ValueTask WriteAsync :

      public override ValueTask WriteAsync(T item, CancellationToken cancellationToken) < // Количество элемент в очереди int count = parent._items.Count; if (count == 0) < // Добавляем элемент в свободную очередь или заблокированного читателя >else if (count < parent._bufferedCapacity) < // Синхронно добавляем элемент в свободную очередь >else if (parent._mode == BoundedChannelFullMode.Wait) < // Очередь полна, создаем асинхронную операцию записи // Используем закэшированный IValueTaskSource if (!cancellationToken.CanBeCanceled) < VoidAsyncOperationWithDatasingleton = _writerSingleton; if (singleton.TryOwnAndReset()) < singleton.Item = item; parent._blockedWriters.EnqueueTail(singleton); return singleton.ValueTask; >> // Создаем новый IValueTaskSource var writer = new VoidAsyncOperationWithData(runContinuationsAsynchronously: true, cancellationToken); writer.Item = item; parent._blockedWriters.EnqueueTail(writer); return writer.ValueTask; > else if (parent._mode == BoundedChannelFullMode.DropWrite) < // Отбрасываем элемент, т.к. очередь полна >else < // Удаляем последний/первый элемент в очереди и записываем новый >return default; >

      Надеюсь, теперь стало понятно, как работают IValueTaskSource и почему пере await ‘ить ValueTask плохая затея.

      Если кому-то стала интересна эта тема, то прилагаю полезные ссылки:

      • Немного про ValueTask
      • Проект из примера
      • ManualResetValueTaskSourceCore
      • AwaitableSocketAsyncEventArgs
      • AsyncOperation
      • Статья, с которой скопировал реализацию

      Источник: habr.com

      Презентация на тему «Решение задач 1 части ЕГЭ на тему «Программирование»»
      презентация к уроку по информатике и икт (11 класс) по теме

      Вашему вниманию предлагается презентация на тему «Решение задач 1 части ЕГЭ на тему «Программирование»», в которой подробно разобраны задачи демоверсии 2015 на эту тему, а также приведены аналогичные задачи из предыдущих демверсий и из открытого банка заданий ФИПИ. Презентация может быть использована при повторении темы «Программирование», при подготовке выпускников к ЕГЭ, а также на предэкзаменационной консультации.

      Скачать:

      ВложениеРазмер
      Файлreshenie_zadach_1_chasti_programmirovanie.rar 112.15 КБ

      Подписи к слайдам:

      Задача
      B
      5 из демоверсии 2014
      Решение:
      Здесь, конечно, проще рассчитать – за каждый цикл
      s
      увеличивается на 10, из цикла мы выйдем тогда и только тогда, когда
      s
      > 325, то есть когда
      s
      = 330, значит, цикл будет выполнен 33 раза. Вспоминаем таблицу умножения и рассчитываем
      n
      = 0 + 33 * 3 = 99
      Ответ:
      99
      Паскаль
      var
      n, s: integer;
      begin
      n := 0;
      s := 0;
      while s 0 do
      begin
      c := x mod 2;
      if c=0 then a := a+1
      else b := b+1;
      x := x div 10;
      end;

      readln
      (x);
      a := 0; b := 0;
      while x>0 do
      begin
      c := x mod 2;
      if c=0 then a := a+1
      else b := b+1;
      x := x div 10;
      end;

      readln
      (x);
      a := 0; b := 10;
      while x>0 do
      begin
      c := x mod 10;
      a :=
      a+c
      ;
      if c x := x div 10;
      end;

      readln
      (x);
      a := 0; b := 10;
      while x>0 do
      begin
      c := x mod 10;
      a :=
      a+c
      ;
      if c x := x div 10;
      end;

      writeln
      (a); write(b);
      end
      .
      Получив
      на вход число
      x
      ,
      эти алгоритмы печатают
      два числа:
      a
      и
      b
      .
      Допускается
      диапазон значений для величин целого типа: от –2
      31
      до 2
      31
      – 1.

      http://new.fipi.ru/ege-i-gve-11/demoversii-specifikacii-kodifikatory
      Демоверсия ЕГЭ по информатике 2014

      http://new.fipi.ru/ege-i-gve-11/demoversii-specifikacii-kodifikatory
      Демоверсия ЕГЭ по информатике 2012
      http://egeigia.ru/all-ege/demoversii-ege/informatika/721-demo-ege-2012-informatika
      Блог

      http://galinabogacheva.livejournal.com/
      Задача
      B
      5 из демоверсии 2014 (аналогично)
      Запишите число, которое будет напечатано в результате выполнения программы. Для Вашего удобства программа представлена на пяти языках программирования.
      Бейсик
      Паскаль
      DIM N, S AS INTEGER
      N = 0
      S = 0
      WHILE S
      void main()

      int
      n, s;
      n = 0;
      s = 0;
      while (s 0
      C = X MOD 10
      A = A + C
      IF C 0 do
      begin
      c := x mod 10;
      a :=
      a+c
      ;
      if c x := x div 10;
      end;

      кон
      Ответ:
      58
      Решение задач части 1 ЕГЭ по информатике на тему «Программирование»
      Учитель – Богачёва Г.В.
      Лицей № 144 Санкт-Петербурга
      Задача 20 из демоверсии 2015
      Решение:
      Анализируем алгоритм – на экран сначала выведется
      a
      = 2 (значит, команды в цикле будут повторены 2 раза), затем
      b
      = 15. Команда
      b
      :=
      b
      *(
      x

      mod
      10) находит произведение
      b
      и последней цифры числа
      x
      (
      mod
      – остаток от деления на 10). Команда
      x
      :=
      x

      div
      10 отбрасывает последнюю цифру от числа
      x
      (
      div
      – деление нацело). Так как цикл повторяется до тех пор, пока
      x
      >0 (то есть выходим из цикла, как только х=0) и мы знаем, что он будет повторён 2 раза (
      a
      =2), то отсюда
      x
      – двузначное число. Множители числа 15: 3, 5. Наименьшее двузначное число, которое из них можно составить, 35.
      Ответ:
      35
      Паскаль
      var
      x, a, b: integer;
      begin
      readln
      (x);
      a:=0; b:=1;
      while x>0 do
      begin
      a:=a+1;
      b:=b*(x mod 10);
      x:= x div 10
      end;
      writeln
      (a); write(b)
      end
      .
      Задача 21 из демоверсии 2015
      Решение:
      Анализируем алгоритм – функция возвращает квадрат числа
      i
      ,
      i
      уменьшается от 12 на 1 до тех пор, пока не станет меньше или равно 0 или квадрат
      i
      не станет меньше 64, то есть при
      n
      =64 эта программа напечатает 7. Надо ответить на вопрос, сколько значений
      n
      дадут такой же результат. Подставляем 65, получаем 8, 7
      2
      =49, подставляем 49, получаем 6, нужные нам числа находятся в диапазоне [50;64], т.е. 15 чисел.
      Ответ:
      15
      Паскаль
      var
      k,
      i
      :
      longint
      ;
      function f(n:
      longint
      ) :
      longint
      ;
      begin
      f := n * n
      end;
      begin
      readln
      (k);
      i
      := 12;
      while (
      i
      >0) and (f(
      i
      )>=k)
      do
      i
      := i-1;
      writeln
      (
      i
      )
      end.
      Аналогично (демоверсия 2012)
      Определите, что будет напечатано в результате работы следующего фрагмента программы:
      Бейсик
      Паскаль
      Dim k, s As Integer
      s = 0
      k = 0
      While s 0 do
      begin
      s := s – 7;
      n := n * 3
      end;
      writeln
      (n)
      end.
      Решение
      Трассируем программу:
      Номер команды
      s
      n
      1
      33
      1
      2
      26
      3
      3
      19
      9
      4
      12
      27
      5
      5
      81
      6
      -2
      243
      7

      Читайте также:
      Программ для компьютера которую еще не придумали

      243
      Задача 20 из демоверсии 2015
      Ниже на пяти языках программирования записан алгоритм. Получив на вход число
      x
      , этот алгоритм печатает два числа:
      a

      n
      )
      нач
      знач
      :=
      n
      *
      n
      кон
      var
      k,
      i
      :
      longint
      ;
      function f(n:
      longint
      ) :
      longint
      ;
      begin
      f := n * n
      end;
      begin
      readln
      (k);
      i
      := 12;
      while (
      i
      >0) and (f(
      i
      )>=k)
      do
      i
      := i-1;
      writeln
      (
      i
      )
      end.
      Задача 8 из демоверсии 2015
      Запишите число, которое будет напечатано в результате выполнения программы. Для Вашего удобства программа представлена на пяти языках программирования.
      Бейсик
      Python
      DIM S, N AS INTEGER
      S = 33
      N = 1
      WHILE S > 0
      S = S – 7
      N = N * 3
      WEND
      PRINT(N)
      s = 33
      n = 1
      while s > 0:
      s = s — 7
      n
      =
      n
      * 3
      print
      (
      n
      )
      Алгоритмический язык
      Паскаль
      алг
      нач
      цел
      s, n
      s := 33
      n := 1
      нцпока
      s > 0
      s := s — 7
      n := n * 3
      кц
      вывод
      n
      кон
      var
      s, n: integer;
      begin
      s := 33;
      n := 1;
      while s > 0 do
      begin
      s := s – 7;
      n := n * 3
      end;
      writeln
      (n)
      end.
      Си
      #include
      int
      main(void)
      <
      int
      s, n;
      s = 33;
      n = 1;
      while (s > 0) s = s – 7;
      n = n * 3;
      >
      printf
      («%dn», n);
      >
      аналогично
      Паскаль
      Паскаль
      Паскаль
      Паскаль
      var
      n, s: integer;
      begin
      n := 0;
      s := 0;
      while s 0 do
      begin
      s := s — 10;
      n := n + 2
      end;
      write(n)
      end
      .
      var
      n, s: integer;
      begin
      n := 0;
      s := 301;
      while s > 0 do
      begin
      s := s — 10;
      n := n + 3
      end;
      write(n)
      end
      .
      Ответы
      Запишите число, которое будет напечатано в результате выполнения каждой из следующих программ.

      A[10-i]:=A[i];
      end
      ;
      Ответы
      В
      программах
      описаны одномерный целочисленный массив A с индексами от 0 до
      10
      и целочисленные переменные i и t. Ниже
      представлены фрагменты этих.
      Чему окажутся равны элементы этого массива после выполнения
      фрагментов программ?
      1 2 3 4 5 6 7 8 9
      10 0 0
      1 2 3 4 5 6 7 8 9
      10
      1
      2 3 4 5 6 7 8 9
      10 0
      10
      9 8 7 6 5 6 7 8
      9 10

      По теме: методические разработки, презентации и конспекты

      Презентация по теме : Решение задач с пропорциональными величинами»

      Презентация предназначена для использования при изучении темы «Методика обучения решению задач с пропорциональными величинами» по учебной дисциплине «Методика преподавания нн.

      Презентация по теме «Решение задач по теме «Вероятность»

      Эта презентация может быть использована при подготовке ЕГЭ по математике. и на уроках повторения темы «Вероятность».

      Презентация по теме » Решение задач по теме » Расчет пути, времени, скорости» 7 класс

      С помощью данной пр езентации можно обучать решению задач по теме » Расчет пути, времени и скорости» в 7 классе.

      Методическая разработка (презентация) на тему: «Решение задач на по теме «Кодирование графической информации»

      В разработке дан теоретический материал, необходимый для решения задач по теме «Кодирование графической информации». Разобраны основные выди задач на эту тему.

      Презентация по теме «Решение задач на части, проценты»

      Пезентация по теме «Решение задач на части, проценты» предназначена для студентов, обучающихся по профессиям 43.01.09 Повар, кондитер, 19.01.04 Пекарь.

      презентация на тему «Решение задач по теме «Закон сохранения энергии»»

      Дана программа на языке Паскаль: var s, t: integer

      ГДЗ информатика 8 класс

      var
      s, t: integer;
      begin
      read(s);
      read(t);
      if (s >= 10) or (t > 10) then
      write(‘Да’)
      else
      write(‘Нет’)
      end.

      Было проведено 9 запусков программы, во время которых в качестве значений переменных s и t вводились следу ющие пары чисел: (1, 2); (11, 2); (1, 12); (11, 12); (–11, –12); (–11, 12); (–12, 11); (10, 10); (10, 5). Не запуская программу на выполнение, выясните, сколько было запусков, при которых программа вывела «Да». Для анализа алгоритма и исходных данных начертите в рабочей тетради и заполните следующую таблицу:

      ГДЗ по Информатике 8 класс. Босова. Программирование разветвляющихся алгоритмов

      Ответ

      s t Вывод
      1 2 Нет
      11 2 Да
      1 12 Да
      11 12 Да
      -11 -12 Нет
      -11 12 Нет
      -12 11 Нет
      10 10 Да
      10 5 Да
      В таблице я указал, какой вывод будет при разных значениях переменных s и t, в соответствии с условием программы.

      Теперь я могу посчитать, сколько раз программа вывела «Да». По таблице видно, что программа вывела «Да» в следующих случаях: (11, 2), (1, 12), (11, 12), (10, 10), (10, 5). Итого 5 раз.

      Источник: murnik.ru

      Рейтинг
      ( Пока оценок нет )
      Загрузка ...
      EFT-Soft.ru