Skip to content
Snippets Groups Projects
Commit d2b1d93d authored by Peter Gerwinski's avatar Peter Gerwinski
Browse files

Wintersemester 2023/24

parent ae93ac07
Branches
No related tags found
No related merge requests found
Showing with 0 additions and 318 deletions
.file "hello-01.c"
.text
.section .rodata.str1.1,"aMS",@progbits,1
.LC0:
.string "Hello, world!"
.text
.globl main
.type main, @function
main:
.LFB11:
.cfi_startproc
subq $8, %rsp
.cfi_def_cfa_offset 16
leaq .LC0(%rip), %rdi
call puts@PLT
movl $0, %eax
addq $8, %rsp
.cfi_def_cfa_offset 8
ret
.cfi_endproc
.LFE11:
.size main, .-main
.ident "GCC: (Debian 8.3.0-6) 8.3.0"
.section .note.GNU-stack,"",@progbits
#include <stdio.h>
int main (void)
{
printf ("Hello, world!\n");
return 0;
}
.file "hello-01.c"
.text
.section .rodata
.LC0:
.string "Hello, world!"
.text
.globl main
.type main, @function
main:
.LFB0:
.cfi_startproc ; .cfi_startproc
pushq %rbp ; subq $8, %rsp
.cfi_def_cfa_offset 16 ; .cfi_def_cfa_offset 16
.cfi_offset 6, -16 ; leaq .LC0(%rip), %rdi
movq %rsp, %rbp ; call puts@PLT
.cfi_def_cfa_register 6 ; movl $0, %eax
leaq .LC0(%rip), %rdi ; addq $8, %rsp
call puts@PLT ; .cfi_def_cfa_offset 8
movl $0, %eax ; ret
popq %rbp ; .cfi_endproc
.cfi_def_cfa 7, 8
ret
.cfi_endproc
.LFE0:
.size main, .-main
.ident "GCC: (Debian 8.3.0-6) 8.3.0"
.section .note.GNU-stack,"",@progbits
#include <stdio.h>
int main (void)
{
printf ("Hello, world!");
return 0;
}
#include <stdio.h>
int main (void)
{
printf ("Die Antwort lautet: ");
printf (42);
printf ("\n");
return 0;
}
#include <stdio.h>
int main (void)
{
printf ("Die Antwort lautet: ");
printf ("42");
printf ("\n");
return 0;
}
#include <stdio.h>
int main (void)
{
printf ("Die Antwort lautet: %d\n", 42);
return 0;
}
#include <stdio.h>
int main (void)
{
int answer = 42;
printf ("Die Antwort lautet: %d\n", answer);
return 0;
}
#include <gtk/gtk.h>
int main (int argc, char **argv)
{
gtk_init (&argc, &argv);
GtkWidget *window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_title (GTK_WINDOW (window), "Hello");
g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL);
GtkWidget *vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 5);
gtk_container_add (GTK_CONTAINER (window), vbox);
gtk_container_set_border_width (GTK_CONTAINER (vbox), 10);
GtkWidget *label = gtk_label_new ("Hello, world!");
gtk_container_add (GTK_CONTAINER (vbox), label);
GtkWidget *button = gtk_button_new_with_label ("Quit");
g_signal_connect (button, "clicked", G_CALLBACK (gtk_main_quit), NULL);
gtk_container_add (GTK_CONTAINER (vbox), button);
gtk_widget_show (button);
gtk_widget_show (label);
gtk_widget_show (vbox);
gtk_widget_show (window);
gtk_main ();
return 0;
}
#include <stdio.h>
int main (void)
{
printf ("Hello, world!\n");
return 0;
}
File deleted
% hp-uebung-20220926.pdf - Exercises on Low-Level Programming / Applied Computer Sciences
% Copyright (C) 2013, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 Peter Gerwinski
%
% This document is free software: you can redistribute it and/or
% modify it either under the terms of the Creative Commons
% Attribution-ShareAlike 3.0 License, or under the terms of the
% GNU General Public License as published by the Free Software
% Foundation, either version 3 of the License, or (at your option)
% any later version.
%
% This document is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
% GNU General Public License for more details.
%
% You should have received a copy of the GNU General Public License
% along with this document. If not, see <http://www.gnu.org/licenses/>.
%
% You should have received a copy of the Creative Commons
% Attribution-ShareAlike 3.0 Unported License along with this
% document. If not, see <http://creativecommons.org/licenses/>.
% README: Hello-World-Programme, Schaltjahr ermitteln, Maximum berechnen
\documentclass[a4paper]{article}
\usepackage{pgscript}
\thispagestyle{empty}
\begin{document}
\thispagestyle{empty}
\section*{Hardwarenahe Programmierung\\
Übungsaufgaben -- 26.\ September 2022}
\exercise{Hello, world!}
Unter \url{https://gitlab.cvh-server.de/pgerwinski/hp/tree/2022ws/20220926}
können Sie
\href{https://gitlab.cvh-server.de/pgerwinski/hp/raw/2021ws/20211004/hp-uebung-20220926.pdf}%
{diesen Übungszettel als PDF-Datei}
herunterladen sowie die folgenden Beispielprogramme:
\begin{enumerate}[\quad(a)]
\item \gitfile{hp}{2022ws/20220926}{hello.c}
\item \gitfile{hp}{2022ws/20220926}{hello-gtk.c}
\end{enumerate}
Bringen Sie diese Programme auf Ihrem eigenen Rechner
und/oder auf einem Rechner der Hochschule
unter einem Betriebssystem Ihrer Wahl zum Laufen.
\file{hello.c} ist das klassische "`Hello, world!"'-Programm;
\file{hello-gtk} erzeugt ein Fenster mit einem Button zum Schließen.
(Wie diese Programme im einzelnen funktionieren,
wird im Laufe der Lehrveranstaltung erklärt werden.
In dieser Übung geht es nur darum,
sich mit dem Compilieren von C-Programmen vertraut zu machen.)
\textbf{Hinweis 0:} Diese PDF-Datei enthält Links zu den jeweiligen Dateien.
Durch Anklicken können Sie diese direkt herunterladen.
\textbf{Hinweis 1:} Für (b) benötigen Sie die Bibliothek GTK+.
Diese finden Sie -- einschließlich Dokumentation -- als freie Software im Internet.
\textbf{Hinweis 2:} Unter Unix mit \lstinline[style=cmd]{gcc}
funktioniert das Compilieren und Starten der Programme folgendermaßen:
\begin{lstlisting}[style=cmd]
gcc -Wall -O hello.c -o hello
./hello
gcc -Wall -O $(pkg-config --cflags gtk+-3.0) hello-gtk.c \
$(pkg-config --libs gtk+-3.0) -o hello-gtk
./hello-gtk
\end{lstlisting}
\exercise{Schaltjahr ermitteln}
Schreiben Sie ein Programm in einer beliebigen Programmiersprache
(z.\,B.\ C, Java, Python, Shell-Skript),
das eine Jahreszahl erfragt und ausgibt, ob es sich um ein Schaltjahr handelt.
\begin{itemize}
\item Wenn die Jahreszahl durch 4 teilbar ist, ist das Jahr zunächst einmal ein Schaltjahr.
\item Ausnahme: Wenn die Jahreszahl durch 100 teilbar ist, ist das Jahr kein Schaltjahr.
\item Ausnahme von der Ausnahme: Wenn die Jahreszahl durch 400 teilbar ist,\\
ist das Jahr doch wieder ein Schaltjahr.
\end{itemize}
\exercise{Maximum berechnen}
Schreiben Sie ein Programm in einer beliebigen Programmiersprache,
das 5 Zahlen erfragt und anschließend die größte dieser Zahlen ausgibt.
\end{document}
#include <stdio.h>
int main (void)
{
int a = 9;
int b = 2;
if (b != 0)
printf ("%d\n", a / b);
return 0;
}
#include <stdio.h>
int main (void)
{
int a = 9;
int b = 2;
if (b != 0)
printf ("%d\n", a % b);
return 0;
}
#include <stdio.h>
int main (void)
{
int a = 9;
int b = 2;
if (b)
printf ("%d\n", a / b);
return 0;
}
#include <stdio.h>
int main (void)
{
int a = 9;
int b = 0;
if (b)
printf ("%d\n", a / b);
else
printf ("Bitte nicht durch 0 dividieren.\n");
return 0;
}
#include <stdio.h>
int main (void)
{
int a = 9;
int b = 0;
if (b)
printf ("%d\n", a / b);
else
printf ("Bitte nicht durch 0 dividieren.\n");
printf ("Das tut man nicht.\n");
return 0;
}
#include <stdio.h>
int main (void)
{
int a = 9;
int b = 2;
if (b)
printf ("%d\n", a / b);
else
printf ("Bitte nicht durch 0 dividieren.\n");
printf ("Das tut man nicht.\n");
return 0;
}
#include <stdio.h>
int main (void)
{
int a = 9;
int b = 2;
if (b)
printf ("%d\n", a / b);
else
{
printf ("Bitte nicht durch 0 dividieren.\n");
printf ("Das tut man nicht.\n");
}
return 0;
}
#include <stdio.h>
int main (void)
{
int a = 9;
int b = 2;
if (b) {
printf ("%d\n", a / b);
} else {
printf ("Bitte nicht durch 0 dividieren.\n");
printf ("Das tut man nicht.\n");
}
return 0;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment