COURSEWARE

คู่มือการเขียนโปรแกรมภาษาC ฉบับผู้เริ่มต้น ของสำนักพิมพ์ DEV BOOK

จำนวน 323 หน้า แต่งโดย ประภาพร ช่างไม้ ราคาปก 250 บาท

มีเนื้อหาทั้งหมด 14 บท โจทย์ฝึกหัดท้ายบท พร้อมเฉลยท้ายเล่ม

———————————————————————————–

PDF FILE จำนวน 144 หน้า พร้อมตัวอย่าง source code

C++ Language Tutorial

Written by: Juan Soulié , Last revision: June, 2007

Available online at: http://www.cplusplus.com/doc/tutorial/ 

——————————————————————————

PDF FILE จำนวน 295 หน้า พร้อมตัวอย่าง source code

The C programming Language

By Brian W. Kernighan and Dennis M. Ritchie.

Published by Prentice-Hall in 1988

ISBN 0-13-110362-8 (paperback)

ISBN 0-13-110370-9

http://freebooks.by.ru/view/CProgrammingLanguage/appc.html

———————————————————————————–

PDF FILE จำนวน 85 หน้า พร้อมตัวอย่าง source code

Oxford University Computing Services

Programming in C

Languages l9.2/2

———————————————————————————–

PDF FILE จำนวน 45 หน้า พร้อมตัวอย่าง source code

Stanford CS Education Library This is document #101, Essential C, in the Stanford

CS Education Library. This and other educational materials are available for free at

http://cslibrary.stanford.edu/. This article is free to be used, reproduced, excerpted,

retransmitted, or sold so long as this notice is clearly reproduced at its beginning.

———————————————————————————–

PDF FILE จำนวน 124 หน้า พร้อมตัวอย่าง source code

C Language Tutorial

Version 0.042 March, 1999

Original MS-DOS tutorial by Gordon Dodrill, Coronado Enterprises.

Applix 1616 microcomputer project, Applix Pty Ltd

———————————————————————————–

PDF FILE จำนวน 187 หน้า พร้อมตัวอย่าง source code

The cplusplus.com tutorial

Complete C++ language tutorial

Written by Juan Soulié for the C++ Resources Network (www.cplusplus.com).

English revision: Mitchell Markin.

© The C++ Resources Network, 2000-2001 – All rights reserved

———————————————————————————–

PDF FILE จำนวน 50 หน้า พร้อมตัวอย่าง source code

Programming in C in 7 days!” includes only the first 7 lessons of the more complete e-book

Quickly Learn Programming in C”.

You can obtain the more complete e-book on Learnem.com website.

Support for the free e-book “Programming in C in 7 days!” is provided on Learnem.com

2000-2008 Learn’em Educational (Learnem.com) By: Siamak Sarmady

———————————————————————————–

PDF FILE จำนวน 94 หน้า พร้อมตัวอย่าง source code

Introduction to C Programming

This document is © Rob Miles 2001 Department of Computer Science, The University of Hull All rights reserved. No reproduction, copy or transmission of this publication may be made without written permission.

———————————————————————————–

WORD FILE จำนวน 61 หน้า พร้อมตัวอย่าง source code

การเขียนโปรแกรมภาษา C เบื้องต้น (Introduction to C Programming)

บทเรียนอย่างง่าย เพื่อเพิ่มความรู้และความเข้าใจ ที่จำเป็นต่อการเป็นโปรแกรมเมอร์มืออาชีพในอนาคต

คนที่จะมีใจรัก ที่จะก้าวไปบนถนนแห่งการพัฒนาฝีมือและฝึกฝนการเขียนโปรแกรมด้วยตัวเอง

ผู้เขียน: ดร. จันทร์จิรา สินทนะโยธิน, วิศรุต พลสิทธิ

สำนักงานพัฒนาวิทยาศาสตร์และเทคโนโลยีแห่งชาติ (สวทช)

———————————————————————————–

The Asia-Pacific Informatics Olympiad (APIO) is an IOI-like competition for delegations within the South Asian / Western Pacific region. The contest will be held online, with students competiting at contest sites within their own country or area.

Asia-Pacific Informatics Olympiad

การแข่งขันคอมพิวเตอร์โอลิมปิกเอเซียแปซิฟก ๒๕๕๐

ระยะเวลาการสอบ ๕ ชั่วโมง จํานวนโจทย์ ๓ ข้อ

โมบาย (Mobiles) ,สำรองข้อมูล(Backup) ,สวนสตว์ (ZOO)

————————————————————————

Asia-Pacific Informatics Olympiad

คอมพิวเตอร์โอลิมปิกเอเชียแปซิฟิก ๑๐ พฤษภาคม ๒๕๕๑

ระยะเวลาการสอบ ๕ ชั่วโมง จํานวนโจทย์ ๓ ข้อ

ลูกแก้ว (BEADS), ถนน (ROADS) สายพันธุกรรม (DNA)

————————————————————————————-

Asia-Pacific Informatics Olympiad

Saturday, 9 May, 2009

ระยะเวลาการสอบ ๕ ชั่วโมง จํานวนโจทย์ ๓ ข้อ

Oil, Convention, ATM

———————————————————————————–

PDF FILE โจทย์การแข่งขันประจำปี

CROATIAN OLYMPIAD IN INFORMATICS 2010

HRASTOVI, KOLO, LOZA

——————————————————————————–

CROATIAN OLYMPIAD IN INFORMATICS 2009

Online contest, 28th March 2009

IZBORI, OTOCI, PLAHTE

————————————————————————————

CROATIAN OLYMPIAD IN INFORMATICS 2008

Online contest, April 26

GLASNICI, KOLEKCIJA, TAMNICA, UMNOZAK

———————————————————————————-

Croatian Olympiad in Informatics 2007

Online contest, April 28

PATRIK, POLICIJA, SABOR

———————————————————————————–

โจทย์การแข่งขันออนไลน์ประมาณ 40+30+30 ข้อ

http://www.programming.in.th

สำนักงานส่งเสริมการสอนวิทยาศาสตร์และเทคโนโลยี (สสวท)

PDF FILE โจทย์การแข่งขันเขียนโปรแกรม

Young Thai Online Programming Competition (YTOPC)

Young Thai Online Programming Competition (YTOPC)

เป็นการแข่งขันเขียนโปรแกรมสำหรับนักเรียนระดับชั้นไม่เกินมัธยมศึกษา

เพื่อเตรียมความพร้อมเข้าสู่การแข่งขันคอมพิวเตอร์โอลิมปิก การแข่งขันนี้สนับสนุนโดย

สถาบันส่งเสริมการสอนวิทยาศาสตร์และเทคโนโลยี (สสวท.) อย่างเป็นทางการ

การแข่งขัน YTOPC ครั้งที่ 1 วันเสาร์ที่ 10 พฤษภาคม พ.. 2551

การแข่งขัน YTOPC ครั้งที่ 2 วันเสาร์ที่ 20 ธันวาคม พ.. 2551

การแข่งขัน YTOPC ครั้งที่ 3 วันเสาร์ที่ 7 กุมภาพันธ์ พ.. 2552

———————————————————————————–

Strings

http://cermics.enpc.fr/~ts/C/FUNCTIONS/function.ref.html(look at string.h section)

Memory management

http://www2.sis.pitt.edu/~ir/KS/Data/RMiles/c13.html

files

http://www.cprogramming.com/tutorial/cfileio.html

vergil.chemistry.gatech.edu/resources/programming/c­tutorial/io.html

Command Line Arguments

http://www.eskimo.com/~scs/cclass/notes/sx13.html

http://juicystudio.com/tutorial/c/command.asp

Process Control

http://jan.netcomp.monash.edu.au/ssw/processes/unix.html

http://www.cs.uleth.ca/~holzmann/C/system/pipeforkexec.html

http://www.dgp.toronto.edu/~ajr/209/notes/proc.html

General

http://www2.sis.pitt.edu/~ir/KS/Data/RMiles/contents.html

http://www.physics.drexel.edu/courses/Comp_Phys/General/C_basics/

http://www.its.strath.ac.uk/courses/c/

Sorting algorithm

http://en.wikipedia.org/wiki/Sorting_algorithm

Selection sort

Main article: Selection sort

Selection sort is a sorting algorithm, specifically an in-place comparison sort. It has O(n2) complexity, making it inefficient on large lists, and generally performs worse than the similar insertion sort. Selection sort is noted for its simplicity, and also has performance advantages over more complicated algorithms in certain situations. The algorithm finds the minimum value, swaps it with the value in the first position, and repeats these steps for the remainder of the list.

Insertion sort

Main article: Insertion sort

Insertion sort is a simple sorting algorithm that is relatively efficient for small lists and mostly-sorted lists, and often is used as part of more sophisticated algorithms. It works by taking elements from the list one by one and inserting them in their correct position into a new sorted list. In arrays, the new list and the remaining elements can share the array’s space, but insertion is expensive, requiring shifting all following elements over by one. Shell sort (see below) is a variant of insertion sort that is more efficient for larger lists.

Shell sort

Main article: Shell sort

Shell sort was invented by Donald Shell in 1959. It improves upon bubble sort and insertion sort by moving out of order elements more than one position at a time. One implementation can be described as arranging the data sequence in a two-dimensional array and then sorting the columns of the array using insertion sort.

Comb sort

Main article: Comb sort

Comb sort is a relatively simplistic sorting algorithm originally designed by Wlodzimierz Dobosiewicz in 1980. Later it was rediscovered and popularized by Stephen Lacey and Richard Box with a Byte Magazine article published in April 1991. Comb sort improves on bubble sort, and rivals algorithms like Quicksort. The basic idea is to eliminate turtles, or small values near the end of the list, since in a bubble sort these slow the sorting down tremendously. (Rabbits, large values around the beginning of the list, do not pose a problem in bubble sort.).

Merge sort

Main article: Merge sort

Merge sort takes advantage of the ease of merging already sorted lists into a new sorted list. It starts by comparing every two elements (i.e., 1 with 2, then 3 with 4…) and swapping them if the first should come after the second. It then merges each of the resulting lists of two into lists of four, then merges those lists of four, and so on; until at last two lists are merged into the final sorted list. Of the algorithms described here, this is the first that scales well to very large lists, because its worst-case running time is O(n log n). Merge sort has seen a relatively recent surge in popularity for practical implementations, being used for the standard sort routine in the programming languages Perl[5], Python (as timsort[6]), and Java (also uses timsort as of JDK7[7]), among others. Merge sort has been used in Java at least since 2000 in JDK1.3.[8][9]

Heapsort

Main article: Heapsort

Heapsort is a much more efficient version of selection sort. It also works by determining the largest (or smallest) element of the list, placing that at the end (or beginning) of the list, then continuing with the rest of the list, but accomplishes this task efficiently by using a data structure called a heap, a special type of binary tree. Once the data list has been made into a heap, the root node is guaranteed to be the largest (or smallest) element. When it is removed and placed at the end of the list, the heap is rearranged so the largest element remaining moves to the root. Using the heap, finding the next largest element takes O(log n) time, instead of O(n) for a linear scan as in simple selection sort. This allows Heapsort to run in O(n log n) time, and this is also the worst case complexity.

Quicksort

Main article: Quicksort

Quicksort is a divide and conquer algorithm which relies on a partition operation: to partition an array, we choose an element, called a pivot, move all smaller elements before the pivot, and move all greater elements after it. This can be done efficiently in linear time and in-place. We then recursively sort the lesser and greater sublists. Efficient implementations of quicksort (with in-place partitioning) are typically unstable sorts and somewhat complex, but are among the fastest sorting algorithms in practice. Together with its modest O(log n) space usage, this makes quicksort one of the most popular sorting algorithms, available in many standard libraries. The most complex issue in quicksort is choosing a good pivot element; consistently poor choices of pivots can result in drastically slower O(n²) performance, but if at each step we choose the median as the pivot then it works in O(n log n). Finding the median, however, is an O(n) operation on unsorted lists, and therefore exacts its own penalty.

Counting Sort

Main article: Counting sort

Counting sort is applicable when each input is known to belong to a particular set, S, of possibilities. The algorithm runs in O(|S| + n) time and O(|S|) memory where n is the length of the input. It works by creating an integer array of size |S| and using the ith bin to count the occurrences of the ith member of S in the input. Each input is then counted by incrementing the value of its corresponding bin. Afterward, the counting array is looped through to arrange all of the inputs in order. This sorting algorithm cannot often be used because S needs to be reasonably small for it to be efficient, but the algorithm is extremely fast and demonstrates great asymptotic behavior as n increases. It also can be modified to provide stable behavior.

Bucket sort

Main article: Bucket sort

Bucket sort is a divide and conquer sorting algorithm that generalizes Counting sort by partitioning an array into a finite number of buckets. Each bucket is then sorted individually, either using a different sorting algorithm, or by recursively applying the bucket sorting algorithm. A variation of this method called the single buffered count sort is faster than quicksort and takes about the same time to run on any set of data.[citation needed]

Due to the fact that bucket sort must use a limited number of buckets it is best suited to be used on data sets of a limited scope. Bucket sort would be unsuitable for data such as social security numbers – which have a lot of variation.

Radix sort

Main article: Radix sort

Radix sort is an algorithm that sorts numbers by processing individual digits. n numbers consisting of k digits each are sorted in O(n · k) time. Radix sort can either process digits of each number starting from the least significant digit (LSD) or the most significant digit (MSD). The LSD algorithm first sorts the list by the least significant digit while preserving their relative order using a stable sort. Then it sorts them by the next digit, and so on from the least significant to the most significant, ending up with a sorted list. While the LSD radix sort requires the use of a stable sort, the MSD radix sort algorithm does not (unless stable sorting is desired). In-place MSD radix sort is not stable. It is common for the counting sort algorithm to be used internally by the radix sort. Hybrid sorting approach, such as using insertion sort for small bins improves performance of radix sort significantly.

Distribution sort

Distribution sort refers to any sorting algorithm where data is distributed from its input to multiple intermediate structures which are then gathered and placed on the output. See Bucket sort.

==============================================

C Tutorial – C Made Easy

http://www.cprogramming.com/tutorial.html#ctutorial

This tutorial is based on the above tutorial, but uses only standard C language features.

===============================================================

C Sample Code Source Code Examples

http://www.c.happycodings.com/


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s