PROGRAMOWANIE IMPERATYWNE JĘZYK C

Podobne dokumenty
#include <stdio.h> #include <stdlib.h> // standardowe biblioteki

1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja. 2. Schemat blokowy przedstawia algorytm obliczania

Wstęp do Programowania, laboratorium 02

Warsztaty dla nauczycieli

Programowanie strukturalne i obiektowe. Funkcje

LISTA 5. C++ PETLE for, while, do while

ALGORYTMY I STRUKTURY DANYCH

Zadania język C++ Zad. 1. Napisz program wczytujący z klawiatury wiek dwóch studentów i wypisujący informację o tym, który z nich jest starszy.

I. Podstawy języka C powtórka

do instrukcja while (wyrażenie);

ĆWICZENIE NR 1 WPROWADZENIE DO INFORMATYKI

Język C zajęcia nr 7. Uwagi dotyczące stylu programowania

1. Napisz program, który wyświetli Twoje dane jako napis Witaj, Imię Nazwisko. 2. Napisz program, który wyświetli wizytówkę postaci:

4. Funkcje. Przykłady

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 2. Karol Tarnowski A-1 p.

C++ wprowadzanie zmiennych

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

Praca domowa nr 1. a a b a b ; b c. c a bc d ef gh. 2) Napisz kod sprawdzający poniższe warunki sformułowane w języku naturalnym:

KURS WSPOMAGAJĄCY PRZYGOTOWANIA DO MATURY Z MATEMATYKI ZDAJ MATMĘ NA MAKSA. przyjmuje wartości większe od funkcji dokładnie w przedziale

Proste programy w C++ zadania

Pzetestuj działanie pętli while i do...while na poniższym przykładzie:

Algorytmy i złożoności Wykład 5. Haszowanie (hashowanie, mieszanie)

WPROWADZENIE DO ALGORYTMÓW Zadania

Jerzy Nawrocki, Wprowadzenie do informatyki

IX. Wskaźniki.(3 godz.)

Pomorski Czarodziej 2016 Zadania. Kategoria C

Jerzy Nawrocki, Wprowadzenie do informatyki

Schematy blokowe I. 1. Dostępne bloki: 2. Prosty program drukujący tekst.

1 Podstawy c++ w pigułce.

Temat 1: Podstawowe pojęcia: program, kompilacja, kod

Matematyka z kluczem. Szkoła podstawowa nr 18 w Sosnowcu. Przedmiotowe zasady oceniania klasa 7

Tablice są typem pochodnym. Poniżej mamy przykłady deklaracji różnych tablic:

if (wyrażenie ) instrukcja

Konkursy w województwie podkarpackim w roku szkolnym 2013/2014

1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami

1. LICZBY DZIAŁ Z PODRĘCZNIKA L.P. NaCoBeZu kryteria sukcesu w języku ucznia

WYMAGANIA NA POSZCZEGÓLNE OCENY MATEMATYKA KL.VII

Rozwiązanie. #include <cstdlib> #include <iostream> using namespace std;

Liczby. Wymagania programowe kl. VII. Dział

Wymagania edukacyjne z matematyki w klasie VII szkoły podstawowej

Podstawowe typy zmiennych

EGZAMIN MATURALNY Z INFORMATYKI 17 MAJA 2016 POZIOM PODSTAWOWY. Godzina rozpoczęcia: 14:00 CZĘŚĆ I WYBRANE: Czas pracy: 75 minut

Wymagania edukacyjne matematyka klasa 1 zakres podstawowy 1. LICZBY RZECZYWISTE

Programowanie - instrukcje sterujące

Algorytm. a programowanie -

Akademia Górniczo-Hutnicza im. Stanisława Staszica w Krakowie Olimpiada O Diamentowy Indeks AGH 2017/18. Informatyka Etap III

Podstawy programowania C. dr. Krystyna Łapin

Programowanie - wykład 4

C z y p a m i ę t a s z?

3. Instrukcje warunkowe


Zadanie 1. Suma silni (11 pkt)

ZADANIA ZAMKNIETE W zadaniach 1-25 wybierz i zaznacz na karcie odpowiedzi poprawna

WYKŁAD 8. Funkcje i algorytmy rekurencyjne Proste przykłady. Programy: c3_1.c..., c3_6.c. Tomasz Zieliński

WYMAGANIA EDUKACYJNE Z MATEMATYKI KLASA VII

Rekurencja (rekursja)

Dział I FUNKCJE I ICH WŁASNOŚCI

Pojęcia, wymagania i przykładowe zadania na egzamin poprawkowy dla klas II w roku szkolnym 2016/2017 w Zespole Szkół Ekonomicznych w Zielonej Górze

Funkcje wymierne. Jerzy Rutkowski. Działania dodawania i mnożenia funkcji wymiernych określa się wzorami: g h + k l g h k.

START. Wprowadź (v, t) S:=v*t. Wyprowadź (S) KONIEC

Algorytmy i złożoności. Wykład 3. Listy jednokierunkowe

Programowanie 3 - Funkcje, pliki i klasy

Ćwiczenie 4 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania. Zofia Kruczkiewicz

WYMAGANIA EDUKACYJNE Z MATEMATYKI dla klasy I ba Rok szk. 2012/2013

1. Wprowadzenie do C/C++

Excel. Zadania. Nazwisko:

PROGRAMOWANIE W PYTHONIE OD PIERWSZYCH KROKÓW

ZESPÓŁ SZKÓŁ W OBRZYCKU

Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka

ALGORYTMY MATEMATYCZNE Ćwiczenie 1 Na podstawie schematu blokowego pewnego algorytmu (rys 1), napisz listę kroków tego algorytmu:

1 Podstawy c++ w pigułce.

Wskaźniki i dynamiczna alokacja pamięci. Spotkanie 4. Wskaźniki. Dynamiczna alokacja pamięci. Przykłady

Przedmiotowe zasady oceniania i wymagania edukacyjne z matematyki dla klasy drugiej gimnazjum

EGZAMIN MATURALNY Z MATEMATYKI

Powtórka algorytmów. Wprowadzenie do języka Java.

Algorytmy i struktury danych. Wykład 4

6. Pętle while. Przykłady

ARKUSZ DIAGNOSTYCZNY Z MATEMATYKI

Programowanie w C/C++ Instrukcje - konstrukcje powtórka. LABORKA Piotr Ciskowski

WHILE (wyrażenie) instrukcja;

Zajęcia nr 1 (1h) Dwumian Newtona. Indukcja. Zajęcia nr 2 i 3 (4h) Trygonometria

Technikum Nr 2 im. gen. Mieczysława Smorawińskiego w Zespole Szkół Ekonomicznych w Kaliszu

Pytanie 1. Pytanie 2. Pytanie 3 WOJEWÓDZKI KONKURS INFORMATYCZNY. Treść pytania

Podprogramy. Procedury

1. Informatyka - dyscyplina naukowa i techniczna zajmująca się przetwarzaniem informacji.

Język C, tablice i funkcje (laboratorium, EE1-DI)

Język C, instrukcje sterujące (laboratorium)

FUNKCJA KWADRATOWA. Zad 1 Przedstaw funkcję kwadratową w postaci ogólnej. Postać ogólna funkcji kwadratowej to: y = ax + bx + c;(

Metody i analiza danych

EGZAMIN MATURALNY 2011 INFORMATYKA

Zadeklarowanie tablicy przypomina analogiczną operację dla zwykłych (skalarnych) zmiennych. Może zatem wyglądać na przykład tak:

Funkcja kwadratowa. f(x) = ax 2 + bx + c,

Wstęp do Informatyki zadania ze złożoności obliczeniowej z rozwiązaniami

WYMAGANIA EDUKACYJNE KLASA I Pogrubieniem oznaczono wymagania, które wykraczają poza podstawę programową dla zakresu podstawowego.

1 Powtórzenie wiadomości

Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Ćwiczenie 1. Podstawy. Wprowadzenie do programowania w języku C. Katedra Metrologii AGH

Transkrypt:

J.NAWROCKI, M. ANTCZAK, H. DWIEK, W. FROHMBERG, A. HOFFA, M. KIERZYNKA, S. WĄSIK PROGRAMOWANIE IMPERATYWNE JĘZYK C ZAD. 1. Należy napisad w języku C, skompilowad i wstępnie przetestowad następujące programy: a) Program generujący napis Bitwa pod Akcjum. Poeksperymentuj z tym programem i zobacz, jak będzie reagował kompilator, gdy takich znaków jak cudzysłów, średnik, nawias, czy \n będzie brakowad lub gdy będą w nadmiarze w stosunku do wersji ze slajdu nr 9. b) Program generujący sumę liczb 18 i 2. c) Program generujący sumę dowolnych dwóch liczb całkowitych. d) Program generujący liczbę równą minimum z dwóch liczb całkowitych. e) Program generujący wartośd bezwzględną podanej liczby całkowitej. f) Program obliczający liczbę cyfr dziesiętnych podanej liczby naturalnej (0, 1, 2,...). Program F napisz metodą przyrostową, tzn. zacznij od wprowadzenia i skompilowania pnia programu (ang. stub) w wersji ze slajdu wykładowego nr 145 i dokładaj kolejne fragmenty pokazane na slajdach nr 148, 150, 152. ZAD. 2. Symboliczne wykonanie algorytmu określonego schematem blokowym polega na przechodzeniu przez bloki tego schematu i obserwowaniu oddziaływania instrukcji na wartości zmiennych (slajdy wykładowe od 105 do 142). Symboliczne wykonanie algorytmu zapisanego w języku C, polega na: 1. Instrumentalizacji programu, czyli wstawieniu między oryginalne instrukcje programu dodatkowych instrukcji printf(...), które pozwalają obserwowad wartości wybranych zmiennych. 2. Wykonaniu tak przygotowanego programu. Jest to bardzo prosta forma tzw. debuggingu. Załóżmy, że dany jest program: Nr linii Instrukcja języka C 1 int main() { 2 int X; 3 Scanf("%d", &X); 4 If ( X < 0 ) { 5 X = -X;

6 7 printf("%d \n", X); 8 return; 9 Oto jego zinstrumentalizowana postad pozwalająca obserwowad wartośd zmiennej X (instrumentalizujące fragmenty kodu zaznaczono kolorem czerwonym): int main() { int X; printf("--- 2---: X=%d \n", X); scanf("%d", &X); printf("--- 3---: X=%d \n", X); if ( X < 0 ) { X = -X; printf("--- 5---: X=%d \n", X); printf("%d \n", X); return; Należy utworzyd zinstrumentalizowaną postad programu z zadania 1F i na tej podstawie (poprzez wykonanie zinstrumentalizowanego programu dla wybranych danych) zweryfikowad poprawne działanie programu. ZAD. 3. Liczba automorficzna to taka, która znajduje się na koocu swojego kwadratu. Na przykład 5, 6, 25 są liczbami automorficznymi, bo 5 2 = 25, 6 2 = 36, 25 2 = 625. Napisz program, który sprawdza, czy dana liczba N jest liczbą automorficzną. Zastosuj podejście przyrostowe (patrz komentarz na koocu zadania 1.). Dokonaj instrumentalizacji kodu pozwalającej obserwowad wartości zmiennych występujących w programie. Uwaga 1. W języku C wartością wyrażenia a/b, gdzie a i b są typu całkowitego, jest częśd całkowita z dzielenia, a wartością wyrażenia a%b jest reszta z dzielenia. Uwaga 2. Przy realizacji tego zadania dobrym pomysłem może byd zaprogramowanie sobie pomocniczej funkcji Rzad, która oblicza rząd liczby zdefiniowany następująco: Rzad(n) jest to najmniejsza liczba 10 k taka, że n < 10 k. Na przykład Rzad(1) = Rzad (9) = 10, Rzad(10) = Rzad(99) = 100 itd. ZAD. 4. Na podstawie rozwiązania zadania 3. napisz program, który generuje wszystkie liczby automorficzne w podanym przedziale A, B. Napisz i wykorzystaj funkcję Automorf(n), która sprawdza, czy n jest liczbą automorficzną.

We wszystkich poniższych zadaniach domowych: 1. Opracuj zbiór przypadków testowych, które doprecyzują interfejs użytkownika. 2. Narysuj schemat blokowy dla proponowanego rozwiązania. 3. Przelicz (metodą ręcznej symulacji, która była prezentowana na wykładzie) wybrane przypadki testowe na schemacie, by sprawdzid jego poprawnośd. 4. Napisz program w C. 5. Przelicz na nim wybrane przypadki testowe metodą ręcznej symulacji. ZAD. 5(*). Napisz program czytania trzech liczb naturalnych i drukowania ich średniej arytmetycznej. ZAD. 6(*). Napisz program czytania trzech liczb i sprawdzania, czy mogą byd one długościami boków jakiegoś trójkąta. Wskazówka: b-c <a<b+c. ZAD. 7(*). Napisz program obliczania wartości funkcji n! (silnia) dla n będących liczbami naturalnymi (0, 1, 2,.. 8). ZAD. 8(*). Napisz program obliczania sumy cyfr dziesiętnych podanej liczby naturalnej n (np.: suma cyfr liczby 0 jest równa 0, a suma cyfr dziesiętnych liczby 99 jest równa 18). ZAD. 9(*). Napisz program obliczania wartośd funkcji potęgowej a b dla a, b będących liczbami naturalnymi (0,1, 2,..). ZAD. 10(*). Napisz program czytania skooczonego ciągu liczb całkowitych i drukowania tego ciągu w odwrotnej kolejności (np.: 10 liczb). ZAD. 11(*). Napisz program znajdowania najmniejszej liczby w skooczonym ciągu liczb naturalnych (np.: 10 liczb). ZAD. 12(*). Napisz program obliczania sumy liczb podanego, skooczonego ciągu liczb całkowitych ((*)rzeczywistych) (np.: 10 liczb). ZAD. 13(*). Napisz program obliczania wartości średniej podanego, skooczonego ciągu liczb naturalnych (rzeczywistych) (np.: 10 liczb). Należy zmodyfikowad odpowiednio rozwiązanie, które zostało zaproponowane dla zadania 11. ZAD. 14(*). Napisz program czytania rozmiaru n (skooczona liczba naturalna) i rysowania macierzy o rozmiarach n x n typu lewa-dolna. Macierz lewa-dolna zawiera na głównej przekątnej i pod tą przekątną znaki X, natomiast powyżej głównej przekątnej są znaki spacji. Oto przykład macierzy lewa-dolna dla n=4: X XX XXX XXXX ZAD. 15(*). Napisz program czytania rozmiaru n i rysowania macierzy o rozmiarach n x n typu prawa-górna. Macierz prawa-górna zawiera na głównej przekątnej i nad tą przekątną znaki X, natomiast poniżej głównej przekątnej są znaki spacji. Oto przykład takiej macierzy dla n=4:

XXXX XXX XX X ZAD. 16(*). Napisz program rozwiązywania równania kwadratowego ax 2 + bx + c = 0. Uwzględnij wszystkie możliwe przypadki wartości współczynników a, b, c. ZAD. 17(*). Napisz program sprawdzania, czy podana liczba naturalna jest liczbą pierwszą. Wskazówka: wykorzystaj metodę sita Eratostenesa. ZAD. 18(*). Napisz program wyszukiwania wszystkich liczb pierwszych w podanym przedziale <A, B>. Zastosuj funkcję sprawdzającą, czy dana liczba jest liczbą pierwszą z poprzedniego zadania. ZAD. 19(*). Napisz program obliczania największego wspólnego podzielnika (NWP) dwóch liczb naturalnych. ZAD. 20(*). Napisz program obliczania NWP dla skooczonego zbioru liczb naturalnych (np.: 10 liczb). ZAD. 21(*). Napisz program obliczania najmniejszej wspólnej wielokrotności (NWW) dwóch liczb naturalnych. ZAD. 22(*). Napisz program obliczania NWW dla skooczonego zbioru liczb naturalnych (np.: 10 liczb). ZAD. 23(*). Napisz program wyszukiwania w podanym przedziale <D, G> wszystkich liczb naturalnych a, b, dla których istnieje liczba naturalna c spełniająca warunek a 2 + b 2 = c 2 (np.: 3 2 + 4 2 = 5 2 ). ZAD. 24(*). Napisz program wyznaczania n-tego wyrazu ciągu Fibonacciego. ZAD. 25(*). Napisz program sortujący ciąg liczb naturalnych metodą przez wymianę/wybór (selectionsort). ZAD. 26(*). Napisz program scalania ciągów, który polega na łączeniu kilku (co najmniej dwóch) posortowanych ciągów w jeden ciąg posortowany. ZAD. 27(*). Napisz program mnożenia macierzy kwadratowych. ZAD. 28(*). Napisz program sprawdzający współliniowośd trzech punktów. ZADANIA NIEOBOWIĄZKOWE DLA ZAAWANSOWANYCH ZAD. 29. Programy, które na ekran wypisują dokładną kopię swojego własnego kodu, to tzw. quine programs, nazwane od nazwiska logika Willarda van Orman Quine a. Przeanalizuj znajdujące się poniżej quine y i postaraj zrozumied jak działają. A Ty umiesz napisad jakiś inny samodzielnie? Uwaga w poniższym programie druga i trzecia linijka powinny byd wpisane w jednej linii. #include<stdio.h> char *program="#include<stdio.h>%cchar *program=%c%s%c;%cvoid main()%c{%cprintf(program,10,34,program,34,10, 10,10,10);%c"; void main()

{ printf(program,10,34,program,34,10,10,10,10); A tu trochę krótsza wersja: p="p=%c%s%c;main(){printf(p,34,p,34);";main(){printf(p,34,p,34); ZAD. 30. Napisz jak najkrótszy program, który scala trzy posortowane ciągi o długości n w posortowany ciąg o długości 3*n. Program powinien wczytad z wejścia liczbę n, a następnie trzy ciągi wejściowe. Wynik powinien byd wypisany na ekran. Program powinien działad w czasie liniowym, to znaczy przeglądad każdy ciąg tylko raz. Długośd kodu powinna byd zmierzona liczbą bajtów użytą do zapisania pliku (podawaną we właściwościach pliku). Przykładowe wejście: 4 1 4 7 8 3 3 5 10 2 7 9 11 Oczekiwane wyjście: 1 2 3 3 4 5 7 7 8 9 11 Podpowiedź: Twój program w czasie kompilacji może generowad ostrzeżenia. Lepiej zastosuj język C niż C++, bo jest on zdecydowanie mniej restrykcyjny.