Компьютер — самый необычный инструмент из всех придуманных человеком. Он используется не в материальной, а в умственной, интеллектуальной деятельности людей разных профессий: экономистов, конструкторов, переводчиков, психологов, физиков, художников...
Возможности своего интеллектуального человек постоянно старается расширить. Для этого не только совершенствуется оборудование, «железо» компьютера, но и создаются новые компьютерные программы, программные средства. Эти программы составляются программистами — специалистами в области информатики.
Зачем нужны компьютерные программы? Компьютер часто называют «умной» машиной, однако он не обладает человеческим разумом. Человек действует, когда захочет этого сам, или по заданию других людей. Компьютер ничего не делает «по собственному хотению». Все действия он выполняет только по заданию человека. Для управления действиями компьютера и предназначены компьютерные программы.
Могут ли программисты составлять компьютерные программы без участия других специалистов? Пусть, например, программа предназначена для авиаконструктора или модельера-парикмахера, тогда программисту потребуется представителей этих профессий. Только специалисты смогут подробно рассказать, с какими предметами, персонажами и явлениями они имеют дело в своей работе, что может происходить со всеми этими объектами, как принимаются решения. На месте такого специалиста может оказаться в будущем любой из вас, какую бы профессию он ни выбрал.
Может ли человек, не изучавший информатику, рассказать о своей работе, учебе или любимой игре? Наверное, да. Но одно дело, когда рассказ предназначен для другого человека, и совсем другое, когда сведения нужны для создания компьютерной программы. Объясняя что-то людям, мы можем не вдаваться в какие-то подробности, полагаясь на их опыт, знания, сообразительность. В описаниях, которые составляются при создании компьютерных программ, не должно быть ничего лишнего, но в то же время они не могут полагаться на чей-то опыт или смекалку.
И еще: эти описания нужно представить не в форме устного рассказа или повести, а в виде наглядных и компактных схем, таблиц, списков. Составлению таких «компьютерных» описаний нужно специально учиться — изучать информатику. Полученные знания и умения можно использовать не только при создании компьютерных программ. Они пригодятся всем, кому приходится составлять описания, инструкции, объяснения. А ведь делать это приходится практически каждому человеку — в любом возрасте и в самых различных ситуациях.
// PascalABC.NET 3.3, сборка 1634 от 14.02.2018 // Внимание! Если программа не работает, обновите версию!
begin var a:=ArrRandom(ReadInteger('n='),-11,11); a.Println; // 1 begin var s:=a.Where(t->t<0); if s.Count=0 then Writeln('1. Нет отрицательных элементов') else Writeln('1. Первый отрицательный элемент номер ', a.IndexOf(s.First)+1) end; // 2 begin var s:=a.Select((v,i)->(v,i)).Where(t->(t[0]>0) and t[0].IsEven); if s.Count=0 then Writeln('2. Нет четных положительных элементов') else begin var r:=s.Last; Writeln('2. Последний четный положительный элемент номер ',r[1]+1, ', значение ',r[0]) end end; // 3 begin var s:=a.Select((v,i)->(v,i)).Where(t->t[0] mod 5=0); if s.Count<2 then Writeln('3. Нет двух элементов, кратных 5') else Writeln('3. Номер второго элемента, кратного 5, равен ', (s.Skip(1).Take(1)).First[1]+1) end; // 4 begin var s:=a.Select((v,i)->(v,i)).Where(t->t[0]=0); if s.Count<3 then Writeln('4. Нет трех нулевых элементов') else begin s:=s.Skip(1).Take(2); Writeln('4. Количество положительных элементов между ', 'вторым и третьим нулевыми элементами равно ', a[s.First[1]+1:s.Last[1]].Where(t->t>0).Count) end end; // 5 begin var s:=a.IndexesOf(t->t>0).Take(4).Select(t->t+1); if s.Count<4 then Writeln('5. Нет четырех положительных элементов') else begin Write('5. Номера первых четырех положительных элементов: '); s.Println end end; // 6 begin var s:=a.IndexesOf(t->t<0); if s.Count=0 then Writeln('6. Нет отрицательных элементов') else Writeln('6. Номера первого и последнего отрицательных элементов: ', s.First+1,' ',s.Last+1) end; // 7 begin var s:=a.IndexesOf(t->t>0); if s.Count=0 then Writeln('7. Нет положительных элементов') else begin var i1:=s.First; s:=a.IndexesOf(t->t<0); if s.Count=0 then Writeln('7. Нет отрицательных элементов') else begin var i2:=s.Last; Writeln('7. Количество четных элементов между первым ', 'положительным и последним отрицательными элементами: ', a?[i1+1:i2].Where(t->t.IsEven).Count) end end end end.