Pobierz - Informacje dla uzytkowników serwera antenor.pol.lublin.pl
Transkrypt
Pobierz - Informacje dla uzytkowników serwera antenor.pol.lublin.pl
SKA EL E HN B P O LI T C IKA LU 5 LABORATORIUM INFORMATYKI Programowanie C# Instrukcje iteracyjne (p tle) For while for(instrukcja; warunek while(warunek) powtarzania;instrukcja instrukcja przy obrocie) instrukcja for(int i=0;i<n;i++) Console.WriteLine(i); do { Do while instrukcja } while(warunek); int i=0; while(i<n) Console.WriteLine(i++); Zadanie do wykonania: 1. Uruchomi poni szy program 2. Zmierzy czas wyszukiwania liczb pierwszych dla ró nych zakresów. Dobra tak aby czas wyszukiwania był nie mniejszy ni 1 minuta. 3. Zmodyfikowa funkcj bool CzyPierwsza(long x) wg wzoru bool CzyPierwsza(long x) { bool CzyPierwsza = true; long y = x >> 1; for (int i = 2; i <= y; i++) CzyPierwsza = CzyPierwsza && (x % i) != 0; } return CzyPierwsza; Zmierzy czas wyszukiwania przy pomocy nowej wersji funkcji dla zakresu ustalonego w p. 2. Porówna wyniki z p. 2. Co jest przyczyn zaistniałych ró nic? 4. Zmodyfikowa funkcj bool CzyPierwsza(long x) wg wzoru bool CzyPierwsza(long x) { bool CzyPierwsza = true; long y = x >> 1; int i = 2; while (CzyPierwsza && i <= y) CzyPierwsza = CzyPierwsza && (x % i++) != 0; } return CzyPierwsza; Zmierzy czas wyszukiwania przy pomocy nowej wersji funkcji dla zakresu ustalonego w p. 2. Porówna wyniki z p. 2. Co jest przyczyn zaistniałych ró nic? Program: using System; namespace LiczPierw { class LiczbyPierwsze { bool CzyPierwsza(long x) { bool CzyPierwsza = true; for (int i = 2; i < x - 1; i++) CzyPierwsza = CzyPierwsza && (x % i) != 0; return CzyPierwsza; } SKA EL E HN B P O LI T C IKA LU LABORATORIUM INFORMATYKI 5 Programowanie C# // public void Wyswietl(long n) { DateTime start = new DateTime(); DateTime stop = new DateTime(); Console.WriteLine(); start = DateTime.Now; for (long i = 1; i < n; i++) if (CzyPierwsza(i)) Console.Write("{0,8}", i); stop = DateTime.Now; Console.WriteLine(); Console.WriteLine("{0} {1} {2}", start.TimeOfDay.ToString(), stop.TimeOfDay.ToString(), (stop.TimeOfDay - start.TimeOfDay).ToString()); } // public static void Main(string[] args) { LiczbyPierwsze lp = new LiczbyPierwsze(); Console.Write("Zakres: "); long x = Convert.ToInt64(Console.ReadLine()); lp.Wyswietl(x); Console.Write("Naci nij <ENTER> aby zako czy ."); Console.ReadLine(); } } } Zadanie do wykonania: 1. Uruchomi poni szy program wy wietlaj cy kolejne wyrazy ci gu arytmetycznego 2. Zmodyfikowa program, aby dodatkowo obliczał sum i iloczyn tego ci gu 3. Zast p instrukcj for instrukcj While Program: using System; class Program { static void Main() { Console.WriteLine("Podaj pierwszy wyraz ci gu:"); int a = Convert.ToInt16(Console.ReadLine()); Console.WriteLine("Podaj liczb wyrazów ci gu:"); int n = Convert.ToInt16(Console.ReadLine()); Console.WriteLine("Podaj ró nic pomi dzy wyrazami w ci gu:"); int r = Convert.ToInt16(Console.ReadLine()); Console.WriteLine(); for (int i = 1; i <= n; i++) { Console.Write("{0} ", a); a = a + r; } Console.WriteLine(); Console.ReadLine(); } }