월~토까지 C# 에 대해서 그룹스터디를 진행하는 과제를 부여받았습니다.
녹록치 않은 멤버들이라 터프한 스터디 일정이 잡혔습니다.
분명 많은 분량이지만 아주 못따라갈 정도는 아니고 열심히 하면 할 수 있을 것 같은 느낌이 듭니다.
또한 아직 저는 부족한게 많지만, 그래도 믿고 맡겨주신 일이 있으니 잘 완수해보도록 하겠습니다.
[스터디 일정]
월 : C# 기초 문법 (비주얼스튜디오 설치, 변수, 자료형, 문자열, 입출력, 배열, 함수, 조건문 (if, switch), 반복문 (while, for), Exception, Class & Object, Constructor, Getter & Setter, Static Class, 상속)
화 : 로그인, 회원가입, 숫자야구 + PostgreSQL 곁들여서 구현
수 : 윈폼 활용하여 로그인, 회원가입, 숫자야구 구현
목 아침까지 팀원 서로에게 제출할 문제 인당 3문제씩 제출
목~토 : -> 총 15문제 됨 // 하루에 3문제씩 선택해서 풀기
C# 은 .Net Framework 기반에서 구동되는 현대적 객체지향, type-safe 프로그래밍 언어
C, C++ 을 기반으로하는 C family 언어
OOP 이면서 Component-oriented programming language 라는 것
Garbage collection을 지원, Nullable types guard 지원, Exception handling 지원, Lambda Expression 지원
LINQ(Language Integrated Query) 문법 지원, asynchronous operations 지원, object oriented 된 unified type system 지원
유저 정의 reference types 와 value types 지원, 인라인 동적 할당, 다양한 내장 함수, version관리되는 프로그램들과 라이브라리
virtual과 ovveride 연산자, overload, interface 방식 지원되는 특징을 갖는다.
.Net architecture는
virtual execution system(가상환경 구동)으로써 이를 기반으로 C#이 구동된다. (JAVA의 JVM과 비슷)
이는 common language runtime (이하 CLR) 이라고 부르며, 여러가지 라이브러리를 제공한다.
마이크로소프트가 제작했으며, 이는 국제 표준으로 작동하고 있다.
CLR 상에서 구동되는 프로그램들은 언어가 다르더라도 공통 라이브러리를 기반하고 있기 때문에 서로 매끄럽게 구동될 수 있는 장점이 있다.
C#으로 작성된 언어들은 IL(Intermediate language)를 통해 컴파일 되고 있기 때문에, bitmap이나 string들이 assembly로 저장되어 정보를 제공한다. (.dll 확장자 류)
C# 프로그래밍이 실행되면, CLR로 적재되어 Just In Time(JIT) 즉시 IL code 를 통해 번역되고, 자동적으로 가비지 컬랙터, 예외 처리, 리소스 관리가 수행되어 프로그래머의 수고를 덜을 수 있다.
닷넷 프레임 워크 기반 언어들(F#, Visual Basic, C++) 끼리 서로 상호작용이 가능하고 현재 20가지 이상의 Common Type Specification(CTS) 언어들이 제공되고 있다.
런타임 동안 제공되는 서비스(가비지 컬랙터 같은 것들)을 더불어 닷넷은 광범위한 라이브러리르 제공하고, namespace로 작성된 다양한 기능들을 지원하고 있다. 유용한 기능들이 많고 무료이며, 보안이면 보안, 성능이면 성능 다양한 잠재력을 가지고 있다.
.Net architecture 와 JVM 의 차이 (OpenAI기반 셀프 번역, 틀릴 수 있음)
1. 플랫폼과 언어
-> 닷넷은 마이크로소프트 윈도우 기반이지만, .Net Core 가 발표된 이후, macOS 와 Linux 도 지원하고 있음, C# 외에 Visual Basic, F# 같은 언어들 지원함.
-> JVM 이 지원하는 운영체제면 모두 사용가능하도록 설계됨, Oracle 회사(Sun Microsystem)에서 개발되었고, Kotlin, Scala, Groovy 언어를 지원함.
2. 언어와 상호작용
-> 닷넷은 CLR(Common Language Runtime) 이라는 시스템을 이용하여, object를 생성하면 다른 언어에서도 이를 활용할 수 있음
-> JVM은 JVM에서 돌아가는 언어면, Java bytecode를 통해서 상호 작용 가능함
(-> 방식은 다르지만, 가상환경 구축을 통해 프로그램끼리 객체를 가져다가 쓸 수 있다는 의미인 것 같음)
3. 기초 라이브러리
-> 닷넷은 BCL(Base Class Library)를 제공하여, 미리 제작된 클래스와 프로그래밍 업무들을 제공함
-> 자바는 JSL(Java Standard Library)를 제공하여 마찬가지로 미리 설계된 클래스와 업무들을 제공함
4. 모바일 개발
-> 닷넷은 Xamarin을 사용하여 개발자들로 하여금, Android, iOS 를 크로스 플랫폼 빌드를 가능하게 함
-> JVM은 안드로이드 특화되어 Java bytecode로 변환하여 Android device에 적용할 수 있게함
5. 프로그래밍 생테계
-> 닷넷은 마이크로소프트 주도의 닷넷 생태계가 강력하고 빠르게 성장했으며, 이 또한 마이크로소프트가 지원해주고 있음
-> JVM은 워낙 사용해온지가 오래되었기 때문에 방대하고 성숙한 생태계가 구성되어있음. Third party library가 이미 즐비하다.
6. 오픈소스
-> 닷넷은 .NET Core 의 발표 이후 오픈소스 개발을 내세워 gIt hub에서 코드들을 확인할 수 있다.
-> JVM은 오픈소스들은 아니지만, 이미 많은 JVM based 언어와 라이브러리들이 오픈 소스로 존재하고 있다.
둘은 비슷하면서도 차이가 존재하기 때문에, 어느 한쪽이 옳다가 아니라, 상황과 전략에 따라 선택이 필요할 것으로 보인다.
"Hello, World"
using System;
class Hello
{
static void Main()
{
// This line prints "Hello, World"
Console.WriteLine("Hello, World");
}
}
Hello, World
using이라는 예약어를 통해 System이라는 namespace를 참조한다. 그리하여 System.Console.WriteLine("something...");
를 위처럼 줄여쓸 수 있다.
static이라고 선언한 Main Method는 "this"라는 예약어 없이도 사용가능하게 하여, C# 프로그램을 구동시키는 Entry Point가 된다.
// 를 통해 주석을 달 수 있으며, /* */ 를 통해 문단도 주석 가능
System namespace의 Console 클래스의 WriteLine 메서드를 통해 우리는 콘솔에 "Hello, World"를 출력할 수 있었다.
자료형과 변수
C#에는 값을 저장하는 value type 과 instance를 가리키는 reference type 두가지가 존재함 (파이썬, mutable vs immutable과 비슷)
identifier(구별자)라고 변수의 이름을 지칭하며, 빈칸이 없는 유니코드 글자들로 지정할 수 있으며 @를 붙이면 다른 언어들과 상호작용 가능한 변수로 사용할 수 있게 된다.
value 타입들은 더 세분화하여 simple / enum / struct / nullable / tuple 로 구분가능하며, reference 타입들은 class type, interface type, array type, delgate type으로 구분할 수 있다.
코드들
namespace Gwang
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
Console.WriteLine(" /|");
Console.WriteLine(" / |");
Console.WriteLine(" / |");
Console.WriteLine(" / |");
Console.WriteLine("/____|");
Console.ReadLine();
}
}
}
namespace Gwang
{
class Program
{
static void Main(string[] args)
{
string characterName = "John";
int characterAge;
characterAge = 35;
Console.WriteLine("There once was a man named" + characterAge);
Console.WriteLine("He was " + characterAge + " years old");
Console.WriteLine("He really liked the name " + characterName);
Console.WriteLine(string.Format("But didn't like being {0}.", characterAge));
Console.ReadLine();
}
}
}
namespace Gwang
{
class Program
{
static void Main(string[] args)
{
string phrase = "Park's Solution";
char grade = 'e';
int age = 30;
int minus_num = -220;
double gpa = 3.3;
bool isMale = false;
bool hasAlive = true;
Console.WriteLine("Hello!\n");
Console.ReadLine();
}
}
}
자료형, 형변환


namespace Gwang
{
class Program
{
static void Main(string[] args)
{
string phrase = "Giffraffe\n\"Academ'y'\"" + " is cool.";
// Console.WriteLine(phrase);
Console.WriteLine(phrase.Length);
Console.WriteLine(phrase.ToUpper());
Console.WriteLine(phrase.Contains("cool"));
Console.WriteLine(phrase[0]);
Console.WriteLine();
string phrase_1 = Console.ReadLine();
Console.WriteLine(phrase_1);
}
}
}
namespace Gwang
{
class Program
{
static void Main(string[] args)
{
int num = 8;
Console.WriteLine(num);
Console.WriteLine(Math.Abs(-111));
Console.WriteLine(Math.Max(3,2));
Console.WriteLine(Math.Min(128, 3.5));
Console.WriteLine(Math.Sqrt(64));
Console.WriteLine(4 + 50 / 2);
}
}
}
namespace Gwang
{
class Program
{
static void Main(string[] args)
{
Console.Write("Enter your name: ");
string name = Console.ReadLine();
Console.Write("Enter your age: ");
string age = Console.ReadLine();
Console.WriteLine("Hello " + name + ", you are " + age + ".");
Console.ReadLine();
}
}
}
namespace Gwang
{
class Program
{
static void Main(string[] args)
{
int num = Convert.ToInt32("45");
Console.WriteLine(num + 6);
Console.Write("Enter a number: ");
double num1 = Convert.ToDouble(Console.ReadLine());
Console.Write("Enter a another number: ");
double num2 = Convert.ToDouble(Console.ReadLine());
Console.WriteLine(num1 + num2);
}
}
}
namespace Gwang
{
class Program
{
static void Main(string[] args)
{
string color, pluralNoun, celebrity;
Console.Write("Enter a color: ");
color = Console.ReadLine();
Console.Write("Enter a plural noun: ");
pluralNoun = Console.ReadLine();
Console.Write("Enter celebrity: ");
celebrity = Console.ReadLine();
// Madlib
Console.WriteLine("Roses are {0}.", color);
Console.WriteLine("{0} are blue.", pluralNoun);
Console.WriteLine("I love {0}. ",celebrity);
}
}
}
감사합니다.
'광주인력개발원' 카테고리의 다른 글
| 미니 의료 정보 시스템 | - 5일차 - | 개발완료보고서 [2023-07-22 학습일지] (0) | 2023.09.04 |
---|---|
| 미니 의료 정보 시스템 | - 4일차 - | 개발일지 [2023-07-21 학습일지] (0) | 2023.09.04 |
| 미니 의료 정보 시스템 | - 3일차 - | 개발일지 [2023-07-20 학습일지] (0) | 2023.07.30 |
| 미니 의료 정보 시스템 | - 1일차 - | 개발일지 [2023-07-17 학습일지] (0) | 2023.07.30 |
| 미니 의료 정보 시스템 | - 0일차 - | 개발계획서 및 개발일지 [2023-07-17 학습일지] (0) | 2023.07.30 |