Сэтгэх чадварын олимпиад 2013-хавар

Манай хамт олон

*** IDaalt club| Хамтдаа хүчтэй ***

Сэтгэх чадварын олимпиад 2013-хавар

ШУТИС-н бүх салбар сургуулиудын дунд сэтгэх чадварын олимпиад зохион байгуулсан билээ.

*** IDaalt club| Хамтдаа хүчтэй ***

Thursday, November 21, 2013

CS200 давтлага

30 онооны шалгалтанд бэлтгэх сургалтанд бүртгэж байна.
CS200 дээрх болоогүй сургалтын өмнөөс хүлцэл өчье. Шинэ гишүүн маань хариуцлага муутай байлаа. 
30 Онооны шалгалтанд бэлдэх сургалтанд бүртгэж байна. Гэхдээ 1,2 удаа л орох учираас бүртгүүлэээд холбоотой байгаарай.Бүртгэлийг 10 хүүхдээр таслана. Манай клубын сургалт үнэ төлбөргүй байдаг шүү. 

Бүртгэлийг:
https://docs.google.com/forms/d/1SwX2zdOVNGL9K5sXAhT80HKM-GgvUan-MY4_zsM3vFE/viewform форм бөглөж бүртгүүлнэ үү.

Saturday, November 9, 2013

iOS хөгжүүлэлтийн хичээл #5

Энэ 7 хоногийн хичээлээр та бүхэндээ өгөгдлийн сантай ажиллах талаар заана.

iPhone хөгжүүлэлтэнд өгөгдлийн сантай ажиллах нь бусад програмчлалын хэлнээс илүү хялбар. Өөрийнх нь CoreData гэдэг framework-ийн тусламжтайгаар хэрхэн шийдэхийг энэ хичээлээрээ орууллаа. Мөн динамик хуудастай жижиг аппликэшн хавсаргав.





Эхлээд уламжлал ёсоор төслөө үүсгэнэ. xCode --> New project гээд  empty project гэдгийг сонгоно.


use core data-г чагтлах хэрэгтэй (ингэж хийвэл их амар).



Бид coredata.framework-ийг ашиглана. Зүүн дээд хэсэгт байгаа төслийн нэр дээрээ дарж байгаад General ->  Linked frameworks and libraries хэсэгт өөрийн ашиглах framework library-г ашиг + тэмдэг дарснаар оруулна.


Зурагт харагдаж байгаачлан frameworks хэсэгт орсон байна. Зүүн хэсэгт байгаа төслийнНэр.xcdatamodelid нь өгөгдлийн загварчлал хийх GUI юм. 


төслийнНэр.xcdatamodelid энд дарснаар иймэрхүү GUI харагдана. Add entity гэдгийг дарснаар өөрийн column үүсгэх юм. Тэгээд attribute-ийг параметрийн төрөлтэй хамт оруулна.


Харагдах interface-ийг сольход editor style сегментээр сольж харах боломжтой.

Entity гээ оруулж дуусаад төслийнНэр.xcdatamodelid дээр mouse2 дараад new file... --> Core data гэдгээс (зүүн хэсэгт байгаа iOS хэсгийн Core data) сонгоод дараах байдлаар class аа үүсгэнэ.


databaseTest -ээр entity жагсаалтууд гарж ирнэ.


Бүгдий нь чагтлаад Next...

Үүссэн классд ингэж орж ирнэ. Aнхнаасаа use coredata чагталсан бол автоматаар Appdelegate классд холбогдож кодууд орно.


Appdelegate.m

Энэ автоматаар төслийн нэртэй sqlite файл үүсгээд тэндээ утгаа хадгалдаг.




1. Өөрийн класстайгаа холбох...

Өөрийн ажиллах гэж байгаа ViewController .h-д 

@property (nonatomic, retain) NSManagedObjectContext *managedObjectContext;

ViewController-ийн .m файлд нь  дараах кодыг бичнэ. Appdelegate нь үндсэн холбож байгаа класс. Apple.h нь entity-с үүссэн class.
@property гэж зарласан бол @synthesize гэж холбож өгөх шаардлагатай. 
[self addEntity] нь дараагийн утга оруулах функц юм.
за ингээд холболоо.

2. column даа өгөгдөл оруулах


иймэрхүү байдлаар оруулна. product_id нь NSNumber гэж зарласан учир заавар NSNumber-ийг агуулах ёстой. 

3. Оруулсан утгаа харах.


Иймэрхүү байдлаар утгуудаа авах юм.

Өгөгдлийн сантай холбогдох динамик аппликэшн


Screenshots:

Home View Controller

Detail View Controller

Enjoy learning guys!



Sunday, November 3, 2013

iOS хөгжүүлэлтийн хичээл #4

Энэ 7 хоногийн хичээлээр Orientation үзэх байсан ч хэд хэдэн шалтгааны улмаас хэд хэдэн зураг сонгоод зөөдөгөөр хийж орууллаа.

     Эхнийх нь 3 ширхэг UIImageView оруулаад чирхэд таарсан зурагийг хурууны өндөгөөр зөөдөгөөр хийв. Дараагийнх нь эхэлж дарагдсан зурагийг дарж дуусхад анимэшнтэй гүйдэгээр хийв. 

1. Зөөгддөг imageview

Эхний ээлжинд прожект оо үүсгээд эхэлж харуулах viewcontroller оо заасны дараагаар тэр классдаа зурагаа өөр өөр функц дээр ашиглахын тулд глобалаар зарлаж өгсөн. Би глобал хувьсагчууддаа доогуур зураас нэмж бичдэг, ингэж бичих нь хооронд нь ялгахад дөхөмтэй ;)

Дараагийн удаад эдгээр хувьсагчуудаа шаардагдах утгуудыг бичиж өгнө. viewcontroller дуудхад хамгийн түрүүнд дуудагддсаг функц бол -(void)viewDidLoad юм. Энэ функцдээ параметрүүдийг тодорхойлов. Эхлээд зурагаа оруулах хэрэгтэй.


ингээд чирж оруулна. xcode нь төсөл үүсгэхдээ хавтас үүсгээд тэндээ бүх файл код нтрээ багтаадаг. Тиймээс зурагнуудаа тухайн хавтсандаа хуулах нь зөв юм. Тэгхийн тулд хамгийн дээр байгаа copy гэснийг нь чагтлах хэрэгтэй.


Код нь иймэрхүү байна. imageview-н тухайн эхлээд frame буюу хэмжээ орох байршилийг зааж байна, дараагийнх нь image буюу зурагийг оруулж байна. userInteractiveEnabled буюу touch event авах эсэхийг заасны дараагаар өөрийн классын харагдацдаа оруулж байна.

touchesMoved гэдэг функц нь өөрийнх нь touch event авдаг функц юм. touchLocation ашиглаж хэрэглэгчийн дарсан хэсгийг авна. дарагдсан хэсгээ танихийн тулд баахан нөхцөл шалгасан.



2. Анимэшнтэй хөдөлдөг imageview

Анимэшн оруулж өгхийн тулд эхлээд сонгогдсон зурагийг тогтоогоод дарж дууссан үед сүүлд дарагдсан хэсэг рүү шилжүүлэе. Эхэлж дарсан зурагийг мэдхийн тулд дарсан зурагаа индексжүүлье. 


int утгатай хувьсагчийг глобалаар зарлалаа.

.m классдаа функцүүдээ доор харагдаж байгаагаар бичив.

 touchesBegan функцээр дамжуулж дарагдсан зурагийг тогтоов.


touchesEnded функцэд дарж дуусхад дарагдсан зурагийн индекээс 0.5 секундийн интервалаар шилжихээр тохируулав.



enjoy coding!





Wednesday, October 30, 2013

Android development Хичээл #3

Энэ удаагийн андройдийн хичээл бид нар ORMLite Database болон Custom Adapterийн анх жишээг үзсэн билээ.
Жишээгээр Оюутны нэр код харуулдаг app хийсэн билээ.


1.Анх Project-ээ үүсгэсний дараа ORMLite-ийн  2 library-ийг /libs гэсэн folder рүү хуулна.

















2.Өөрийнхөө package дээрээ DatabaseHelper болон Student гэсэн модел классаа үүсгэнэ.
Student.class

package mn.csms.databasetest;

import com.j256.ormlite.field.DatabaseField;
import com.j256.ormlite.table.DatabaseTable;

@DatabaseTable
public class Student {
@DatabaseField(generatedId=true)
public int id;
@DatabaseField(unique=true,canBeNull=false)
public String code;
@DatabaseField
public String name;
}
DatabaseHelper.class
package mn.csms.databasetest;

import java.sql.SQLException;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;

import com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper;
import com.j256.ormlite.dao.Dao;
import com.j256.ormlite.support.ConnectionSource;
import com.j256.ormlite.table.TableUtils;

public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
 public static String databaseName = "student.db";
 public static int databaseVersion = 1;
 Dao<Student, Integer> studentDao = null;

 public DatabaseHelper(Context context) {
  super(context, databaseName, null, databaseVersion);
  // TODO Auto-generated constructor stub
 }

 @Override
 public void onCreate(SQLiteDatabase arg0, ConnectionSource arg1) {
  // TODO Auto-generated method stub
  try {
   TableUtils.createTableIfNotExists(connectionSource, Student.class);
  } catch (SQLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }

 @Override
 public void onUpgrade(SQLiteDatabase database, ConnectionSource arg1,
   int arg2, int arg3) {
  // TODO Auto-generated method stub
  try {
   TableUtils.createTable(connectionSource, Student.class);
//   onCreate(database);
  } catch (SQLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }

 public Dao<Student, Integer> getStudentDao() throws SQLException {
  if (studentDao == null){
   studentDao = getDao(Student.class);}
  return studentDao;
 }

 @Override
 public void close() {
  // TODO Auto-generated method stub
  super.close();
  studentDao = null;
 }

}
Дараа нь activity_main.xml class дээрээ ListView view нэмнэ энгэснээр listview дээ бид нар custom adapter тавина.
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >
    <ListView
        android:id="@+id/studentList"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >
    </ListView>
</RelativeLayout>

Тэгээд adapter дээрээ ашиглах шинэ student_list_item.xml гэсэн xml layout үүсгэнэ.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal"
    android:padding="5dp" >
    <TextView
        android:id="@+id/studentName"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:textColor="@android:color/black"
        android:textAppearance="?android:attr/textAppearanceSmall" />
    <TextView
        android:id="@+id/studentCode"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:textAppearance="?android:attr/textAppearanceSmall" />
    <Button
        android:id="@+id/delete"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="5dp"
        android:layout_weight="1"
        android:text="Delete" />
</LinearLayout>



Үүний дараа MainActivity.class

package mn.csms.databasetest;

import java.sql.SQLException;
import java.util.List;

import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {
 private DatabaseHelper helper;
 private String[] studentName = { "Jargal", "Uguumur", "Alge", "Tseegii" };
 private String[] studentCode = { "D.SW10D00" };
 private List<Student> students;
 private ListView lv;
 private StudentAdapter adapter;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  lv = (ListView) findViewById(R.id.studentList);
  helper = new DatabaseHelper(this);
  try {
   students = helper.getStudentDao().queryForAll();
  } catch (SQLException e1) {
   // TODO Auto-generated catch block
   e1.printStackTrace();
  }
  //herev database hooson bol shine ugugluudee nemne
  if (students.size()==0) {
   for (int i = 0; i < studentName.length; i++) {
    Student student = new Student();
    student.name = studentName[i];
    student.code = studentCode[0] + i;
    Log.i("student", student.code);
    try {
     //helper class iig ashiglaj nemj bna 
     helper.getStudentDao().create(student);
    } catch (SQLException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }
   }
  }
  try {
   //Database iin buh ugudliig List<Student> turultei avch bna 
   students = helper.getStudentDao().queryForAll();
  } catch (SQLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  Log.i("size", students.size()+"");
  //custom adapter buyu student-d zoriulsan adapter classiig duudaj bna 
  adapter=new StudentAdapter(getApplicationContext(),0, 0, students);
  lv.setAdapter(adapter);
 }
//Custom adapter class
 private class StudentAdapter extends ArrayAdapter<Student> {

  public StudentAdapter(Context context, int resource,int text,
    List<Student> objects) {
   super(context, resource, text,objects);
  }

  @Override
  public View getView(int position, View view, ViewGroup parent) {
   // TODO Auto-generated method stub
   Holder holder = null;
   final Student student = getItem(position);
   if (view == null) {
    //R.layout.student_list_item layoutiig inflate hiij oruulj irj bna 
    LayoutInflater inflater = getLayoutInflater();
    view = inflater.inflate(R.layout.student_list_item, null);
    holder = new Holder();
    holder.name = (TextView) view.findViewById(R.id.studentName);
    holder.code = (TextView) view.findViewById(R.id.studentCode);
    holder.delete = (Button) view.findViewById(R.id.delete);
    view.setTag(holder);
   } else {
    holder = (Holder) view.getTag();
   }
   holder.name.setText(student.name);
   holder.code.setText(student.code);
   holder.delete.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
     // TODO Auto-generated method stub
     //delete buttong darahad 
     
      adapter.remove(student);
      Toast.makeText(getApplicationContext(), student.name+" ugugdul amjilttai ustlaa", Toast.LENGTH_SHORT);

    
     
    }
   });
   return view;
  }
 }
 //studented zoriulsan viewiig class turultei zarlaj uguh heregtei
 class Holder {
  TextView name;
  TextView code;
  Button delete;
 }

 @Override
 public boolean onCreateOptionsMenu(Menu menu) {
  // Inflate the menu; this adds items to the action bar if it is present.
  getMenuInflater().inflate(R.menu.main, menu);
  return true;
 }

}


Screenshot:

Заз тэгээд миний хичээл дууслаа source кодийг нь энэ линкээр татаж аваарай :)

Saturday, October 26, 2013

iOS хөгжүүлэлтийн хичээл #3

Өнөөдөрийн сэдвийн дагуу хэрэглэгчийг шийдвэр гаргахад туслах хуудас, сануулгийг хэрхэн ашиглах талаар үзэх байсан ч 202-н проектер эвдэрсэн, самбар дээр бичээд цаг авсан зэргээс болоод actionsheet, alertView үзэх байсан ч alertView ээ үзээд завсарлачлаа. :/

Заза энэ ч яахав гол хичээл дээрээ орье

1. UIAlertView 


setAlertView функц нь alertView (буюу анхааруулагийн хуудас) дуудаж харуулах хуудас, энэ удаагийнх дээр анхааруулах хуудас хэрэглэгчийн нэр, нууц үг оруулдагаар хийсэн болхоор өмнө үзсэн UITextField ашиглав.
[alertView show]; нь анхааруулагийн хуудсаа харуулах функц юм.


Харагдац нь иймэрхүү


2. UIActionSheet

Эхлээд код бичиж байгаа класс-н .h (header file.д ) <UIActionSheetDelegate>
гэж оруулж өгнө.
Дараа нь .m буюу implement class даа дараах кодыг бичиж өгнө


UIActionsheet -н хувьд бол [actionSheet showInView:(UIView)];
гэж орно. self гэдэг нь өөрийн класс-г view гэдэг нь энэ өөрөө viewcontroller учир өөрийн view тэй тэр үндсэн view дээ харуулна.

Харагдац нь иймэрхүү



"Дараагийн хичээлд ирэхдээ энийг болон өмнөх хичээлүүдээ сайн хийгээд яваарай"

За бүүр болохгүй бол энд код татахаар тавьлаа. Бэлэн код тавьсан ч гэсэн битгий залхуураарай залуусаа ;)
FACEBOOK GROUP дээ идэвхитэй байгаарай

Thursday, October 24, 2013

CS204 - hashtable ( week9 )

Лаборатори жишээ

Зөвхөн хичээлд суусан хүүхдүүд нээх нууц үгийг мэдэж байгаа. Хичээлд суугаагүй бол үзэх боломжгүй.

Хичээл бэлдсэн: О.Өгөөмөр

Үзэх линк

Wednesday, October 23, 2013

iOS суралцагчидад macintosh суулгах

Та бүхэндээ iDaalt клубээс явуулж байгаа iOS iphone хөгжүүлэлтийн сургалтанд шаардагдах macintosh үйлдлийн системийг virtual -р /буюу өөрийн үйлдлийн системд давхар ажилуулах горим/ суулгах талаар tutorial оруулав.
  • Эхлээд virtual box буюу өөрийн үйлдлийн системд тодорхой санах ой зай эзлэн суух өөр үйлдлийн систем давхар ажилуулахад зориулсан програм   энд дарж татаж авна уу
  • Бид xCode програм дээр ажиллах учир хамгийн сүүлийн үеийн xcode програм нь xcode 5 macintosh 10.8.5 д сууна. Тийм болхоор update хийх хэрэгтэй. Update.г энд дарж torrent ашиглан татна уу
  • За ингээд суулгасан бол хамгийн хүнд үеээ давсан гэж үзээд appstore ашиглан xcode үнэгүй татаж аваад суулгаарай apple id нэхэх байх шүү
Би энэ удаад virtual аар суулгахыг орууллаа. hard аа хуваагаад windows шиг давхар үйлдлийн систем суулгахыг сайн мэдэхгүй учир юмыг яаж мэдхэв гээд youtube видео орууллаа. 



Нэмж хэлхэд бид програмчлалын ангийн оюутанууд байнга хувьсан өөрчлөгддөг зүйл. Ялангуяа mobile application development -ийн хувьд. Тэгхээр нэг бичигдсэн номноос бүх юмаа сураад дуусчихгүй, манай сургалт хязгаартай тул байнга заах боломжгүй өөрсдөө сайн google дэж сурах хэрэгтэй шүү ;) 
за залуусаа АМЖИЛТ!!! 

Tuesday, October 22, 2013

Магадлалын онол статистик

Магадлал статистик
Магадлал статистик
Бие даалт 3 -н түүвэр тоолох программ

Энэхүү програм нь магадлалын бие даалт 3-г бодоход маш их хэрэг болно. Гурван түүврийг тоолоод шинэ хүснэгтийг байгуулж өгч байгаа.

Та бүхэн Register-г татсанаар B,C түүврийг тоолох боломжтой. Учир нь өмнөх жилүүдэд энэхүү програм нь зарагдаж байсан. харин энэ жил үнэгүй тавихаар шийдлээ.

татах линк

Програм-г: Татах

Register-г Татах